边缘设备读取与上传数值的原理
网关要做的核心事情就三件——读取 · 存储 · 上传。理解了这三者如何配合,就能确定从何处入手排查“数值不见了”的问题。
PLC ──① 읽는다──▶ 엣지 ──② 담는다──▶ 로컬 Cassandra (PE)
│
└──③ 올린다──▶ 상위 플랫폼
(전송 큐 → 막히면 디스크 큐)
连接 · 标签 — 决定读取内容的两层
| 是什么 | 示例 | |
|---|---|---|
| 连接 | 连接到哪个设备,使用什么协议 | OPC_LS_XGI_0001 — LS, <PLC-IP>:2004 |
| 标签 | 读取该设备的“哪个地址”、“多久一次” | D0800, 1000ms |
一个连接下可以挂多个标签。知道地址是成功的一半,不同协议的地址表示方式不同 → PLC 地址输入参考。
① 读取 — 周期性询问
边缘设备会按照采集周期向 PLC 发起询问(轮询)。默认是 1000ms,对于变化快的数值,适合用 500;变化慢的数值,用 5000 比较合适。
缩短周期并非没有代价
周期是施加在 PLC 上的负载。设为 100ms 就相当于每秒询问十次,如果标签有数百个,PLC 会先撑不住。请先确认数值是否真的以这种速度在变化——如果某个值每秒才变一次,用 100ms 去读,只是在多收到九次相同的值而已。
② 存储 — 网关内部自带存储
边缘设备将读取到的值存入本地 Cassandra(127.0.0.1:9042,键空间 PE)。
这与上层平台的 Cassandra(pp)是不同的。
🔴 正因为有了这个本地存储,即使与上层断开,采集也不会中断。 即使现场线路中断,网关也能继续独立读取并存储,待恢复后上传积压的数据。
→ 数据库模型
③ 上传 — 传输队列反映状态
待上传的值会先进入传输队列,再发送出去。首页上的 대기 큐(queue_size)就是该队列的大小。
| 队列状态 | 含义 |
|---|---|
| 0 ~ 数十 | 正常。数据立即发送 |
| 持续增长 | 外部传输受阻 — 请检查上层通信 |
溢出到磁盘队列(queue_disk_size) | 内存队列已满。表示断连时间较长 |
排查“数值未上传”的第一检查点
如果待处理队列接近 0,但平台上仍看不到数值,说明传输正常,问题出在平台侧。 如果队列在持续增长,则表示边缘设备到上层的链路被阻塞了。
排查阻塞位置时
| 症状 | 查看顺序 |
|---|---|
| 标签值完全没有 | ① 是否能连通 PLC — Test connection, ping |
| 数值停留在旧值不变 | ① 地址是否正确 · 是否出现读取错误 |
| 边缘设备上有,但平台上没有 | ③ 待处理队列是否在增长 |
| 几天前的数据一次性上传 | ②③ 断连后恢复所致。属于正常现象 |
相关文档
- 单个数值到达界面的路径 — 包含平台在内的完整路径
- 驱动概述 — 协议是如何实现的
- 完整连接一台 PLC