报警
本机报警列表是诊断系统的第二面:GET /api/diag 给计数器和事件簿,本页给可确认的活动记录。上控制器分两条路,不要混用:
| 通道 | 端点 | 用途 |
|---|---|---|
| 标准通道诊断 | POST /api/diag | 模块 / 通道故障,进控制器诊断 |
| 过程报警 | POST /api/alarm | 设备→控制器过程报警,一次一条在途 |
活动列表元素
GET /api/alarms 与 GET /api/alarms/history 共用同一元素契约。
{
"id": "PnS.LinkDown",
"severity": "Critical",
"message": "链路掉线 (Connected=0, 驱动看门狗超时), 过程映像 IOPS/IOCS 已置 BAD (安全侧语义)",
"occurredAt": "…",
"count": 1,
"source": "PnSRuntime"
}
| 字段 | 说明 |
|---|---|
id | 类型标识,确认时原样回传 |
severity | Info / Warning / Error / Critical。Info 只写日志,不进列表 |
message | 事实描述 |
occurredAt | 最近一次发生(本地时间) |
count | 去重窗口内次数(默认 5 秒;Critical 不合并) |
source | 来源模块 |
活动列表按严重度降序、再按时间降序。历史上限 500 条,时间升序。Critical 在活跃列表中永不淘汰。
服务会上报的标识(不完全枚举,以现场列表为准):
id | 级别 | 含义 |
|---|---|---|
PnS.LinkDown | Critical | 曾连接后看门狗掉线 |
PnS.Driver.Safe | Critical | 曾连接后进入 SAFE |
PnS.Driver.Faulted | Critical | 驱动进入 FAULTED |
PnS.AlarmSend.Failed | Error | 过程报警发送失败 |
PnS.Io.<模块名> | Error | IO 模块打开 / 读写失败 |
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=true,acknowledgedCount=0。
{ "ok": true, "message": "已确认全部报警: 2 条", "acknowledgedCount": 2, "timestamp": "…" }
POST /api/alarm
过程报警(设备→控制器)。一次一条在途;上一条未获控制器确认则拒发下一条。
{ "slot": 1, "subslot": 1, "usi": 1, "data": "A1B2" }
| 字段 | 说明 |
|---|---|
slot / subslot | 0–65534 |
usi | 0 = 无负载(此时 data 必须空);1–0x7FFF = 厂商 USI |
data | 可选 hex,偶数长度;负载 ≤ 1408 字节 |
成功:
{ "ok": true, "slot": 1, "subslot": 1, "usi": 1, "length": 2, "timestamp": "…" }
失败 HTTP 400:从站未启动、上一条在途未确认、无应用关系、或参数非法。errorCode 为栈返回码。