Modbus通讯和串口通信校验位说明

电子说

1.2w人已加入

描述

  串口通讯modbus协议

  串口通讯

  常用的有RS232和RS485

  RS232:

  全双工,电缆最长15.2m发送TXD;接收RXD

  逻辑1(MARK)=-3V~-15V逻辑0(SPACE)=+3~+15V

  RS485:

  半双工,电缆最长1200m线制:两线,A、B

  多台设备连接:所有A并联,所有B并联

  RS485转USB。安装完驱动后会多一个串口(COM口),可在属性=》高级中修改串口号COMN。

  串口(及modbus)配置

串口通信

  停止位有校验时1Bit,无校验时2Bit其他

  TTL(晶体管-晶体管逻辑电平)电平信号。+5V等价于逻辑“1”,0V等价于逻辑“0”

  modbus-RTU协议:

  RS485是硬件,modbus-RTU是协议。一般RS485上跑的也就是modbus-RTU,所以被混为一谈。

  MODBUS协议在一根通讯线上使用主从应答式连接(半双工)主机查询,从机回应

  modbus-RTU帧结构

串口通信

  一般主机查询

串口通信

  常用功能码

串口通信

  数据 设备不同,数据位数不同 起始地址:0001

  默认情况下先发地位,后发高位

  错误校验(CRC) 用串口调试软件计算

  有的通讯CRC高字节在前,有的通讯CRC高字节在后

  Modbus通讯和串口通信校验位

串口通信

  利用Modbus协议可以实现设备间的数据交换。Modbus通讯理论上支持4种ModiconPLC地址,即0*、1*、3*和4*四种,分别表示开出(中间线圈)、开入、模入、模出(中间寄存器)等数据地址。与西门子或其它设备中的开入、开出、模入、模出地址完全不对应。可以理解为0*和1*对应位地址的读写操作,3*和4*字地址的读写操作。

  此处0*、1*、3*和4*表示长度有的为5位数字、有的为6位,其实和Modbus通讯无关,只是和软件的表示方式有关。

  按照Modbus通讯时最常用的是RTU读请求格式:

  从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)

  可见,只需设置起始从站数据区起始地址和通讯长度即可。

  特别注意,Modbus地址遵从IEC1的地址标准(最小地址为*1),西门子遵从IEC0的标准(最小地址为0,如M0.0)。因此,不同标准的地址做通讯时需要做地址变换,即加1的操作。

  在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分