STEP 1581 — EPICS Channel Access primitive v0.1

目的: EPICS (Experimental Physics and Industrial Control System、 1988 開始、 ANL 起源、 40+ 年 加速器/大型実験制御 asset) の PV (Process Variable) + severity/status semantics を Rei stack 内で 使える primitive として抽出。 STEP 1569 design-import register の 6 ecosystem の 4 番目 (Ophyd + Tango + Bluesky に続く)。

核 concept: PV + severity

EPICS の Channel Access は、 各 update に severity (alarm level) + status (alarm 原因) を 常に付与する。 これが 40 年 大型実験制御を支えた 中核 semantics。 Rei D-FUMT₈ verdict と 自然対応:

EPICS severityD-FUMT₈ verdict意味
NO_ALARMTRUEhealthy、 正常値域内
MINOR_ALARMNEITHERwarning、 保留 discipline
MAJOR_ALARMFALSEcritical、 緊急対応
INVALIDZEROdata 無効 (計算失敗、 conversion error)
UDF (undefined)ZEROuninitialized
DisconnectedZEROnetwork 切断 (STEP 1571 sensor pattern)

API

createPV<T>(name: string): PV<T>
updatePV(pv, {value, timestamp, severity, status}): PV
disconnectPV(pv): PV                          // 最終値保持 + severity → UDF (EPICS 標準挙動)
severityToVerdict(pv): D8Verdict              // 単体 PV
aggregatePVs(pvs): PVVerdict                  // 複数 PV 集約 (最悪優先 + duplicate BOTH)
pvToNoDataResult(pv): SensorNoDataResult|null // STEP 1571 bridge

aggregatePVs semantics

test 結果 (27/27 PASS)

sectiontest
1. PV lifecyclecreate + update + disconnect (最終値保持)
2. severity → verdict5 severity + disconnected = 全 mapping
3. aggregate全 healthy TRUE / 1 warn NEITHER / 1 crit FALSE / 1 disconn ZERO / duplicate BOTH / empty ZERO
4. STEP 1571 bridgehealthy → null、 disconnected → SensorNoDataResult、 INVALID → SensorNoDataResult

Honest scope

Prior art