跳到主要内容

报警

本机报警列表是诊断系统的第二面:GET /api/diag 给计数器和事件簿,本页给可确认的活动记录。上控制器分两条路,不要混用:

通道端点用途
标准通道诊断POST /api/diag模块 / 通道故障,进控制器诊断
过程报警POST /api/alarm设备→控制器过程报警,一次一条在途

活动列表元素

GET /api/alarmsGET /api/alarms/history 共用同一元素契约。

{
"id": "PnS.LinkDown",
"severity": "Critical",
"message": "链路掉线 (Connected=0, 驱动看门狗超时), 过程映像 IOPS/IOCS 已置 BAD (安全侧语义)",
"occurredAt": "…",
"count": 1,
"source": "PnSRuntime"
}
字段说明
id类型标识,确认时原样回传
severityInfo / Warning / Error / CriticalInfo 只写日志,不进列表
message事实描述
occurredAt最近一次发生(本地时间)
count去重窗口内次数(默认 5 秒;Critical 不合并)
source来源模块

活动列表按严重度降序、再按时间降序。历史上限 500 条,时间升序。Critical 在活跃列表中永不淘汰。

服务会上报的标识(不完全枚举,以现场列表为准):

id级别含义
PnS.LinkDownCritical曾连接后看门狗掉线
PnS.Driver.SafeCritical曾连接后进入 SAFE
PnS.Driver.FaultedCritical驱动进入 FAULTED
PnS.AlarmSend.FailedError过程报警发送失败
PnS.Io.<模块名>ErrorIO 模块打开 / 读写失败
PnS.ControllerAlarm.<slot>.<subslot>.<type>Warning收到控制器报警

PnS.LinkDown.Recovered / PnS.Driver.Recovered 为 Info,只写日志。


GET /api/alarms

活动报警数组。无活动报警 → []

GET /api/alarms HTTP/1.1
Host: 127.0.0.1

GET /api/alarms/history

最近 500 条,时间升序。元素契约与活动列表相同。

GET /api/alarms/history HTTP/1.1
Host: 127.0.0.1

POST /api/alarms/ack

确认单条活动报警。id 取自 GET /api/alarms。无此活动记录 → HTTP 404。

{ "id": "PnS.LinkDown" }
{ "ok": true, "message": "报警已确认: PnS.LinkDown", "timestamp": "…" }

POST /api/alarms/ack-all

确认全部活动报警。无请求体。无活动报警时仍 ok=trueacknowledgedCount=0

{ "ok": true, "message": "已确认全部报警: 2 条", "acknowledgedCount": 2, "timestamp": "…" }

POST /api/alarm

过程报警(设备→控制器)。一次一条在途;上一条未获控制器确认则拒发下一条。

{ "slot": 1, "subslot": 1, "usi": 1, "data": "A1B2" }
字段说明
slot / subslot065534
usi0 = 无负载(此时 data 必须空);10x7FFF = 厂商 USI
data可选 hex,偶数长度;负载 ≤ 1408 字节

成功:

{ "ok": true, "slot": 1, "subslot": 1, "usi": 1, "length": 2, "timestamp": "…" }

失败 HTTP 400:从站未启动、上一条在途未确认、无应用关系、或参数非法。errorCode 为栈返回码。