客户原话:屏幕上 pH 一直在跳,平台上就是空的
「数采仪屏幕上 pH 那一路数字一直在跳,平台上这个排口,pH 就是一直空着,别的因子都有数。」华东某印染厂的一位运维工程师打电话来,第一句就问:pH 要不要唯一标识码,是不是我们少配了一个号?
这个问题每天都有运维在问,答案其实不复杂,麻烦的是大部分人把「唯一标识码」理解成了设备出厂编号。
结论先放这儿:pH 要唯一标识码,但不是自己编一个
要。但 pH 的唯一标识码不是设备序列号,也不是仪表铭牌上的出厂编号,而是「设备编号 MN + 污染物编码」这一对组合。
pH 在 HJ 212 里的污染物编码是 w01001。数采仪采集到 pH 后,把它写进 CP 数据段,形如 w01001-Rtd=7.02,w01001-Flag=N,随 CN 指令(实时数据走 2011,历史补传走 2051,小时数据走 1014 一类)上传。平台端按 MN + w01001 去认这条数据流:MN 说这是哪台设备、哪个排口,w01001 说这是哪个因子。少一个、错一个、或者两台设备重复用了一个,数据都会出现「发出去了但落不了位」,现象就是平台上这个因子长期空白,其他因子照常出数。
所以「pH 要不要唯一标识码」的准确问法是三件事:你这个排口下的 pH,MN 是不是唯一?因子编码是不是 w01001?这两者在平台上是不是已经绑到了同一个排口?
分四层看,问题到底卡在哪一层
协议层:编码、大小写、标志位
- 因子编码没按 w01001 填,填成了 ph、PH1、011 这类自定义值,数采仪照发,平台照不认。
- 大小写不一致。W01001 和 w01001 在有些平台是两条完全不同的数据流,一条有数一条空白。
- Flag 标志位不是 N。设备处于维护、故障状态时打的标志,部分平台会直接过滤掉不显示。
- QN 时间戳格式不对、CRC 校验不过、长报文分包(QQ 字段)序号错乱,整包被丢弃,这一类在数采仪本地报文日志里能直接看到。
- CN 指令选错。实时数据用 2011 是常规做法,但补传时若走 2051 或 1014,编码字段的写法要和实时保持一致,否则平台按两条流处理。
平台层:因子没注册、排口没绑
- 这个排口下压根没注册 pH 这个因子,数据到了也找不到落点。
- 企业端改过 MN 或换过数采仪,平台侧备案信息没跟着改。
- 平台把 w01001 映射成了别的因子名,或者同一排口下挂了两条同名因子。
网络层:连上了不等于传上去了
- TCP 长连接被中间设备超时断开,数采仪显示连接成功,实际重连中。
- 端口被防火墙或 NAT 会话回收,短报文能过、长报文丢包。
- 心跳间隔设置过长,平台侧已判离线,数采仪界面还显示在线。
设备层:屏幕上有数,不代表上传值对
- pH 计走 4–20mA 接入时,量程换算填错,屏幕显示的是换算后的值,但单位或小数位与平台约定不一致。
- 走 RS485/Modbus 时从站地址冲突,多台表挂在同一条总线上,数采仪读到的其实是另一台的值。
- 温度补偿没开,冬天和夏天数据漂移,但编码和链路全是好的。
排查顺序:先分清「发出去没有」,再谈别的
顺序本身就是知识。很多人一上来就换探头、校 pH 计,这是最贵的做法,也是最容易白花钱的做法。
正确的第一步是调数采仪本地报文日志,看最近一次上传的 CP 数据段里有没有 w01001-Rtd 这个字段。有,说明协议层和网络层基本通了,问题在平台侧的绑定;没有,才往下查协议配置。
第二步看协议配置:因子编码、大小写、Flag、CN 指令四项逐一对。这四项改起来零成本,改完等一个上传周期就能验证。
第三步查平台侧:把 MN 和 w01001 报给平台运维,确认因子注册和排口绑定。这一步不用动现场任何设备。
第四步才是网络层,看心跳、看连接保持、看有没有中间设备掐会话。
最后才动设备层。因为设备层的坑最深——屏幕上数字跳得好好的,人会本能地认为设备没问题,反过来也一样,设备真有问题时人又先去怀疑平台。
| 现象 | 判断 | 动作 |
|---|---|---|
| 报文日志里有 w01001-Rtd,平台该排口仍空白 | 协议已发出,卡在平台绑定 | 把 MN 与 w01001 报平台,核对因子注册与排口关系 |
| 日志里是 ph 或 011 等自定义编码 | 因子编码不合规 | 改为 w01001,重启上传任务,等一个周期 |
| 同一 MN 下出现两条 w01001 | 设备层有两台表抢同一编码 | 拆开编码或拆开 MN,一台表对应一条流 |
| 日志里有包但 CRC 错、频繁分包 | 链路质量或参数问题 | 缩短心跳、检查中间设备会话保持 |
| 日志无任何上传记录,界面显示已连接 | 连接是假在线 | 抓包看 TCP 握手与心跳应答,别只看界面 |
| 编码对、平台有数,但数值恒定或跳变异常 | 回到设备层 | 查量程换算、Modbus 从站地址、温度补偿 |
三个最容易踩的坑
- 把屏幕显示当成上传值。 数采仪界面显示的是本地采集值,不是上传报文。屏幕有数只说明采集通了,不说明编码对、不说明平台收到了。
- 多台 pH 共用一个编码。 一个厂区两个排口、两台数采仪,图省事都配 w01001 又用了相近的 MN,平台按 MN+w01001 归档,结果只有一条能落库,另一条长期空白,查半天查不出。
- 以为改了编码历史数据会自动跟着改。 已上传的数据按当时的编码落的库,改配置不会回填。要补,得走补传流程重新上报,平台侧还要确认补传数据不被去重逻辑丢掉。
FAQ
1. 我这个 pH 到底要不要单独弄个唯一标识码?
要,但不用你另外发明一个。MN 唯一、因子编码填 w01001,这两件事做到,pH 的唯一标识就有了。别自己加后缀。
2. 编码填 w01001 还是 W01001,大小写有讲究吗?
按小写 w01001 填。部分平台对大小写敏感,改成大写会变成另一条流,前面传的就白传了。
3. 同一个数采仪下接两台 pH,编码还能一样吗?
不能。同一 MN 下同一编码只能对应一台表,要么分 MN,要么分编码,选一种并和平台说清楚。
4. 改了编码,之前传上去的数据会自己变过来吗?
不会。历史数据按旧编码存着,需要重新补传,且补传前先和平台确认去重规则。