目的: 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 に続く)。
EPICS の Channel Access は、 各 update に severity (alarm level) + status (alarm 原因) を 常に付与する。 これが 40 年 大型実験制御を支えた 中核 semantics。 Rei D-FUMT₈ verdict と 自然対応:
| EPICS severity | D-FUMT₈ verdict | 意味 |
|---|---|---|
| NO_ALARM | TRUE | healthy、 正常値域内 |
| MINOR_ALARM | NEITHER | warning、 保留 discipline |
| MAJOR_ALARM | FALSE | critical、 緊急対応 |
| INVALID | ZERO | data 無効 (計算失敗、 conversion error) |
| UDF (undefined) | ZERO | uninitialized |
| Disconnected | ZERO | network 切断 (STEP 1571 sensor pattern) |
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
| section | test |
|---|---|
| 1. PV lifecycle | create + update + disconnect (最終値保持) |
| 2. severity → verdict | 5 severity + disconnected = 全 mapping |
| 3. aggregate | 全 healthy TRUE / 1 warn NEITHER / 1 crit FALSE / 1 disconn ZERO / duplicate BOTH / empty ZERO |
| 4. STEP 1571 bridge | healthy → null、 disconnected → SensorNoDataResult、 INVALID → SensorNoDataResult |