运行态
GET /api/status 是诊断入口。先看 state / connected / alarmCount,再决定要不要打开 诊断 或 报警。
GET /api/status HTTP/1.1
Host: 127.0.0.1
字段
| 字段 | 说明 |
|---|---|
serviceName | Windows 服务名(DarraPnSService) |
version | 产品版本 |
state | 见下表 |
connected | 是否已与 IO 控制器建立周期数据交换 |
everConnected | 是否曾经连接过。待机 = false;掉线后仍为 true |
errorCode | 最近错误码(0 = 无) |
statusMessage | 状态详情。ConfigError 时带原因;正常态为空 |
alarmCount / criticalAlarmCount | 活动报警数 / 其中 Critical 数 |
ioEpoch | 过程映像世代(每次发布 +1,用来判断数据是否在流动) |
masterAssignedIp / masterAssignedMask / masterAssignedGateway | 控制器经 DCP Set 分配的地址(空 = 未分配 / 从站未启动) |
masterStationName | 控制器分配的站点名 |
dcpIpApplied | 分配值是否已应用到本机 |
dcpIpApplyMessage | 应用结果(成功 = "已应用";失败 = 原因;空 = 尚无变化) |
timestamp | 快照本地时间 |
state
服务状态机只落下列值(序列化为字符串):
| 值 | 含义 |
|---|---|
Unknown | 未初始化 |
Stopped | 已停止或初始化失败 |
Initialized | 已初始化,等待控制器连接 |
ConfigError | 配置 / 数据面降级(无可用网口或数据面打开失败)。进程仍存活,控制面可用。原因见 statusMessage |
DataExchange | 周期数据交换中 |
Aborted | 连接被控制器中止 |
connected=true 对应正在交换。判别待机与掉线:everConnected=false 是待机;everConnected=true 且 connected=false 是曾连接后断开。
示例
{
"serviceName": "DarraPnSService",
"version": "1.0.0",
"state": "DataExchange",
"connected": true,
"errorCode": 0,
"ioEpoch": 1204,
"criticalAlarmCount": 0,
"alarmCount": 0,
"timestamp": "…",
"everConnected": true,
"statusMessage": "",
"masterAssignedIp": "192.168.0.10",
"masterAssignedMask": "255.255.255.0",
"masterAssignedGateway": "0.0.0.0",
"masterStationName": "darra-pns-slave",
"dcpIpApplied": true,
"dcpIpApplyMessage": "已应用"
}
ConfigError 恢复路径:检查网卡 / 驱动 → POST /api/config/reload → POST /api/start。