1.Kepserver 定义
kepserver 核心功能是协议网关功能(与互联网api 网关有类似但又不同), 网关连接的是工业协议与IT的通用API接口协议。
当然随着KepServer 产品迭代,有更多功能模块在新版本加入,例如历史数据库Datalog等,但是核心基础还是网关。
2.业务场景modbus TCP to opc UA
上面说过kepserver 核心功能是网关,该场景就是下位工业协议Modbus-tcp 经过Kepserver 网关后变成opc -ua;
3. 问题由来;
同一批质量数据,有的能正常显示,有的不能显示,为什么呢?Modbus tcp to kepserver 数据都已经传输完成,kepserver opc client 可以监控到,但是在Tco Application里面就是显示空白
排查方向:
- a.超出Tco 设定的数据字符容量,排查没有任何限制
- b.传输数据中有特殊字符导致无法解析被丢弃,SR_08/09经查里面没有特殊字符,都是可以被显示的
- c.找不到原因,后来偶然发现,kepserver item 标签的顺序是反的。
4.问题的解决
TCO 等上位应用主要是引用OPC 类库, C# 是dll , java 是Package 类似, opc 的操作方式都是以item 顺序排列, 所以下例中ST3的数据是ST3_1+ST3_2+ST3_3+ST3_..+ST3_14的顺序拼接。
但是工业协议Modbus-tcp是以400001-465535的Word array 排序,下例中modbus -tcp 写入没有问题,问题在ST3_11、ST3_12、ST3_13、ST3_14、ST3_15 对应字节序因为不仔细原因导致对应modbus-tcp 的地址错乱,所以在OPC拼接中,数据也是乱的,SR08/SR09刚好对应就是错误数据组的【0.0.0.0.0.0.0.0.0.0】
这其实是一种思维固化,总以为数据是以Modbus -tcp的顺序传输的,但是kepserver opc 的item设置中忽略了这个问题,甚至出现问题后不好排查,以后要谨记!!!
---------------------------------------------------------------------------------------------------------------------------------
This is the COCKPIT01.ws96710.PDE3_ST3_14 interactive table
I find COCKPIT01.ws96710.PDE3_ST3_14 OPC item have the value;
The image below shows the time of the reading, but is missing the value of SR_08 SR_09
t