8路通信协议说明个人修改.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8路通信协议说明个人修改

8路通信协议说明(Ver.3) 串口设置:波特率9600,8个数据位,一个停止位,无校验位。 数据帧:每个数据帧包含8个字节。分别是:数据头,地址,功能码,四个字节数据,校验和。 上位机发送(8个字节): 数据头 一字节 0x55 目标地址一字节 功能码一字节 0x13:按照实际发送 数据四个字节:先发送第一字节,然后第二,三,四个字节 校验和一字节,将前面的所有数据相加得到。 功能码说明: 0x13:数据中的第四个字节共8位代表16路,1:吸合0:断开 (按实际设置所有的继电器状态) 校验和 将前面的所有数据相加得到(对应位相加,注意进位) 下位机返回: 数据头 一字节 0x22 本机地址一字节 数据类型一字节0 数据四个字节: 数据0无意义 数据1无意义 数据2 为扩展16路使用 数据3代表8路继电器的当前状态 校验和 将前面的所有数据相加得到(对应位相加,注意进位) 举例说明(假设地址为1) 上位机发送: 55 01 13 00 00 00 00 69 断开全部8路继电器即:0B 0000 0000 (每一位代表一路) 吸合每一路就将对应的位写1 单独吸每一路的代码如下: 55 01 13 00 00 00 01 6A 吸合第一路继电器即:0B 0000 0001 (每一位代表一路) 55 01 13 00 00 00 02 6B 吸合第二路继电器即:0B 0000 0010 (每一位代表一路) 55 01 13 00 00 00 04 6D 吸合第三路继电器即:0B 0000 0100 (每一位代表一路) 55 01 13 00 00 00 08 71 吸合第四路继电器即:0B 0000 1000 (每一位代表一路) 55 01 13 00 00 00 10 79 吸合第五路继电器即:0B 0001 0000 (每一位代表一路) 55 01 13 00 00 00 20 89 吸合第六路继电器即:0B 0010 0000 (每一位代表一路) 55 01 13 00 00 00 40 A9 吸合第七路继电器即:0B 0100 0000 (每一位代表一路) 55 01 13 00 00 00 80 E9 吸合第八路继电器即:0B 1000 0000 (每一位代表一路) 如果吸合多路,比如:吸合1234路则为55 01 13 00 00 00 0F 78即:0B 0000 1111 比如:吸合5678路则为55 01 13 00 00 00 F0 59即:0B 1111 0000 如果断开某一路,就将对应的为写为0 即可; 比如1234路处于吸合的状态,即码数为55 01 13 00 00 00 0F 78;将第2路断开即要设置的状态为 0B 0000 1101 则发送55 01 13 00 00 00 0D 76 /************************************************************************/ 注意事项:代码可以使用上位机软件,也可以使用串口调试助手,由于使用的是MODBUS协议,检验位是发送前7个数据的加和,所以串口调试助手需要个人计算,较麻烦点,使用串口调试助手发送代码计算方法详细附后。 /************************************************************************/ 串口调试助手:计算方法:通过以上几路的代码数据可以得出:前6个代码是不变的即 55 01 13 00 00 00 那么这六个代码的加和是55+01+13+00+00+00=69,也就是两位数加法运算。第七个代码的数据是控制8路继电器的,假设这个数据我们发的代码是08,那么校验和(也就是第八个代码)就是08+69=6(8+9)=6(17):说明括号里为分解说明计算,由于是16进制的代码,逢16进1,所以08+69=(6+1)(17-16)=71,则8个代码为 55 01 13 00 00 00 08 71;再如我们第七个代码的数据是AB即(A=10)(B=11),则校验码是69+AB=69+(10)(11)=(6+10)(9+11)=(16)(20)=(16-16+1)(20-16)=14,这个地方要注意高位的16要进位但是我们只有8位数字,所以直接把进位的值舍去;则要发的代码为55 01 13 00 00 00 AB 14。 如果用上位机软件:上位机内部已经设置好,直接应用即可 下位机回答: 22 01 00 00 00 00 XX HH 地址为1的继电器板8个继电器的状态用XX代表 XX 代表8路继电器的实时状态 HH代表校验和 说明:协议中无意义的字节留作将来升级

您可能关注的文档

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档