接入规范

目前AEP仅支持通过TCP承载的RTU通讯模式。

Modbus在一个数据链路上只能处理247个地址。支持01~F7(247个从机地址)。

Modbus共24个功能点。本期仅支持1~6的平台编码解析,其他功能点仅根据从机地址+功能点按照时间先后顺序做对应,数据内容经bsae64后透传。

设备注册

在平台上完成设备注册后,设备主机上电,发送TCP登录报文到设备云接入服务器进行鉴权,接入地址为modbus.ctwing.cn:8502。

登陆报文及响应如下:

例:

设备在平台上注册后,平台生成deviceId为100132311,password为FVBH4W4tE6BIAfPqDRPn6zuYXbNZjueFKJ7XmbDf344,则设备应首先发送登录报文格式为(16进制):

FF FF 01 00 09 31 30 30 31 33 32 33 31 31 00 2B 46 56 42 48 34 57 34 74 45 36 42 49 41 66 50 71 44 52 50 6E 36 7A 75 59 58 62 4E 5A 6A 75 65 46 4B 4A 37 58 6D 62 44 66 33 34 34 00 03 35 38 34

平台收到登录报文后,认证设备的合法性,并回复认证结果为(16进制):

FF FF 02 00 00

设备心跳

设备主机需发送心跳报文至平台,以保持在线状态。平台超过10分钟未接收到心跳包,将自动断开TCP链。

心跳报文及响应如下:

指令下发——平台编码

01~04功能点

指令请求:

用户在平台上点击指令下发,选择平台编码:01~04,根据要求依次在空格内以16进制形式填写从机地址、起始地址、数据长度。平台会根据用户填写的数据自动计算出CRC结果,下发至主机设备。

指令响应:

主机将从机实际返回结果上报至平台。

平台收到结果后,首先计算CRC结果的正确性,然后将实际上报的结果解析为int类型字符串,经统一格式后推送至消息队列。

对于01~02功能点,平台展示为从起始地址开始的,int类型字符串:

例:

[{"resultCode": “SUCCESSFUL”}, {"resultDetail": {“196”: “172, 219, 53”}}]

对于03~04功能点,平台展示为各个寄存器的结果:

例:

[{"resultCode": “SUCCESSFUL”}, {"resultDetail": {“104”: "22", "105": "0", "106": "99"}}]

05~06功能点

指令请求:

用户在平台上点击指令下发,选择平台编码:05~06,根据要求依次在空格内以16进制形式填写从机地址、强制地址、强制数据。平台会根据用户填写的数据自动计算出CRC结果,下发至主机设备。

指令响应:

主机将从机实际返回结果上报至平台。

平台收到结果后,首先计算CRC结果的正确性,并根据实际上报结果分析,经统一格式后推送至消息队列:

[{"resultCode": “SUCCESSFUL”}, {"resultDetail": "Set up successfully"}]

注:05功能点强制数据仅支持0xFF00及0x0000

例:

需要读取从机17保持寄存器(功能点03)从第108个寄存器(寻址地址为0x006B)开始的3个寄存器的值,则指令下发时在门户上填写为:

经平台计算CRC后,主机设备实际收到的指令为:11 03 00 6B 00 03 76 87

主机将指令推送至从机后,将从机结果返回至平台,响应结果为:11 03 06 02 2B 00 00 00 64 C8 BA

平台解析结果为:[{"resultCode": “SUCCESSFUL”}, {"resultDetail": {“108”: "55", "109": "0", "110": "100"}}]

指令下发——自编码

平台目前仅支持01~06功能点平台编码解析,其他功能点暂时仅支持自编码。

用户在平台上做指令下发时,选择自编码,并在空格里填入完整的指令内容(从机地址~CRC校验码)。平台收到后,经检验CRC正确后下发至主机设备。

主机将指令推送至从机后,将从机结果返回至平台。响应结果到达平台后,平台仅校验响应的CRC计算正确,将响应整体进行base64编码后推送至消息队列。

例:

用户请求读取从机17的通讯事件计数器(功能点11):

经平台校验CRC正确后,主机设备实际收到的指令为:11 0B 4C 27

主机将指令推送至从机后,将从机结果返回至平台,响应结果为:11 0B FF FF 01 08 A6 E9

平台解析结果显示为:[{"resultCode": “SUCCESSFUL”}, {"resultDetail": “EQv//wEIpuk=”}]

不正常响应

平台支持对所有功能点不正常响应的解析,并将解析结果推送至消息队列。

[{"resultCode": “FAILURE”}, {"resultDetail": "%错误代码%"}]

指令下发成功3分钟后若未收到设备回复的响应,则认为指令执行超时,并推送结果至消息队列。

[{"resultCode", “FAILURE”}, {"resultDetail", “awaiting response timeout”}]

搜索结果 ""

    没有搜索结果 ""