“数采仪显示连接成功,平台上就是没数据。”上周一位运维工程师发来这句话,紧跟着又补了一句更具体的:“我们进出口各一台pH,平台上就一条曲线,还老在6和9之间跳。”追问下去发现,问题既不在网络,也不是pH计坏了,而是他从没想过要问一句:pH要不要唯一标识码。
直接给结论:要。但这里说的“唯一标识码”,不是要在HJ 212报文里给pH单加一个字段,而是要保证MN、污染物编码、仪器序列号这三样在现场一一对齐。这位工程师的两台pH计,485从站地址都设成了1,接在同一台数采仪上,上传时污染物编码又都填了w01001。平台按“MN+污染物编码”做唯一键入库,两台表的数据互相覆盖,曲线看起来当然在跳。
一、你要的“唯一标识码”其实是三样东西
很多人在问pH要不要唯一标识码时,脑子里想的是“给这台仪器编个号”。实际上在三层上是三件不同的事,混在一起就排查不下去。
- 报文层:HJ 212报文里的MN,24位设备唯一标识,代表“哪一台现场机”。一台数采仪只有一个MN,它下面挂的所有仪表共用。
- 参数层:污染物编码。pH值对应w01001,水温是另一个码。平台靠“MN+w01001”这组键判断“这是某站点某台设备的pH”。
- 设备层:仪器出厂序列号或安装位置码,比如“进口pH-1”“出口pH-2”。它不进HJ 212报文,但要写进数采仪的点表配置和平台的设备档案里。
所以pH要不要唯一标识码,答案取决于你在哪一层问。报文层不需要新增字段,MN加编码已经够用;设备层必须有,尤其是同一站点挂两台以上同类仪表的时候。
二、按四层拆:数据串了、丢了、跳了分别是谁的问题
- 协议层:两台pH用同一个污染物编码;MN填错或与相邻站点重复;数据段里DataTime时间戳格式写成yyyy-mm-dd;缺省值用了-9999但平台不认;Flag标记位全填N,超量程也当正常值上传;CRC16校验算错导致整包被丢弃。
- 网络层:心跳CN=1000没有按周期发,平台判定离线后主动断开;NTP没同步,数采仪时间和平台差几分钟,分钟数据被归到错误的时间片;IP或端口通但TCP被中间设备空闲超时断开,表现就是“连接成功、没有数据”。
- 设备层:这是本次故障的真正原因。两台pH的Modbus从站地址相同,数采仪轮询时后一台覆盖前一台的寄存器值;或者一台表接在485总线上但没做终端匹配,读数偶尔漂移,看起来像曲线在跳。
- 平台层:设备档案里两台pH填了同一个序列号,或者只建了一条设备记录;换表后没更新档案,新表的数据挂在旧设备名下;部分省份的自动监控平台要求设备档案里填仪器出厂编号,缺了会在数据审核环节被标异常。
三、排查顺序:先看报文,再看总线,最后看平台
顺序本身就是知识。很多人的第一反应是登录平台看设备列表,这一步要放到最后,因为平台只展示结果,不告诉你原因。正确的顺序是:先抓数采仪的上行报文,确认MN和污染物编码对不对;再回到现场看485地址和接线;然后才登平台核对设备档案;网络放在最后,因为它最容易验证——能登录、能心跳,基本就没大问题。
抓报文时重点看三个位置:包头##后面的四位长度、数据段里的CN命令码、以及数据段末尾的CRC16。2xxx段是上位机下发的取数命令(如2051取分钟数据),3xxx段是现场机上传(如3020上传分钟数据),方向搞反了会看半天。数据段形如DataTime=20240514103000;w01001-Avg=7.02,w01001-Flag=N,两台pH如果都报w01001,平台侧只会保留最后到达的那一条。
四、每一步的判断标准和处置动作
报文层:登录包和心跳包能收到,说明链路通;如果只有心跳没有3020上传包,问题在数采仪的采集配置,不在网络。处置是把两台pH的编码改成w01001和另一个独立参数编码,或者干脆分成两个MN分别上报。
设备层:断开其中一台pH的485线,看另一台的数值是否恢复正常。如果恢复正常,基本可以确定是从站地址冲突。处置是把从站地址改成1和2,点表里分别绑定,并在数采仪配置里给每台表加一个位置备注。
平台层:在设备档案里核对序列号和安装位置,确认两条曲线分别对应进口和出口。换过表的,把新序列号补录进去,旧记录做停用而不是删除,否则历史数据会断。
网络层:看数采仪系统时间与平台时间差是否在允许范围内,看心跳间隔是否符合平台要求。这两项正常,就可以把网络排除掉。
五、三个容易误判的坑
第一个坑:把“连接成功”当成“平台收到数据”。连接成功只说明TCP建立、登录包被接受,后面的数据包可能因为编码重复被覆盖,也可能因为校验失败被整包丢弃。
第二个坑:以为pH的污染物编码随便填一个就行,甚至把pH和温度填成同一个码。平台的唯一键就是MN加编码,编码重复等于自己把两条数据塞进一个格子。
第三个坑:以为仪器序列号只是给售后看的,跟联网无关。换表不更新档案,数据就挂在报废设备名下,事后追溯量值溯源记录时会很麻烦。
FAQ
问:我这个情况到底要不要传唯一标识码?答:一台数采仪只挂一台pH、点位唯一,报文层不用另加;同站点有两台以上同类仪表,就必须在设备层区分开。
问:pH要不要唯一标识码,是不是平台要求填序列号才要?答:平台要求是外部约束,真正的理由是数据要能对得上账。即使平台不要求,点表里也该写清楚哪台表装在哪个位置。
问:我把两台pH编成同一个码,平台上看曲线不是也有数据吗?答:有数据,但是两条曲线叠在一起,你无法判断哪个是进口哪个是出口,数据审核时会被挑出来。
问:换了一台pH,MN要不要改?答:MN跟的是数采仪,不是仪表,不用改;要改的是数采仪点表里的从站地址和平台设备档案里的序列号。