Modbus协议应用纪实

  • Modbus协议是一种单主/多从的通信协议,同一时间总线上只能有一个主设备,从设备最多可有247个。
    主设备可采用两种模式向从设备发送请求 文,从设备只能被动接收请求 文后给出响应 文,分别是单播模式和广播模式。
    通常情况下,主设备不占用地址,从设备地址必须为1~247中的一个,且同一 络中不允许重复。在广播模式下,从机只接收并执行事务处理,不进行应答,所以广播模式下请求指令必须是写指令,且将 文中的地址设为0x00表示广播 文。

Modbus传输帧模式

传输帧模式 帧格式
ASCII

|TCP| Modbus TCP协议则是在RTU协议上加一个MBAP 文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码。数据在TCP/IP以太 上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP数据帧包含 文头、功能代码和数据3部分,MBAP 文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,整个 文最大帧长度为260Byte。ModbusTCPIP服务器通常使用502端口建立连接。

  • 寄存器PLC地址

    寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是文本显示器。PLC地址一般采用10进制描述,共有5位,其中第一位代码寄存器类型。第一位数字和寄存器类型的对应关系如表1所示。PLC地址例如40001、30002等。

  • 寄存器协议地址

    寄存器协议地址指指通信时使用的寄存器地址,例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002,虽然两个PLC寄存器寄存器通信时使用相同的地址,但是需要使用不同的命令访问,所以访问时不存在冲突。

功能码

Modbus有功能码,校验码,异常功能码和错误代码;用户自定义功能代码有两组,分别为65~72和100~110,其他为标准功能码不能修改。
异常功能码和错误代码非常容易混淆,一般来说异常功能码指的是某个功能码执行的时候出现的相应异常功能码,一般都是在功能码的基础上加上0x80,比如03功能码出现的异常码是0x83异常功能码,16功能码对应出现的异常功能码则是0x90;而错误代码则是表示出现错误的具体情况,比如寄存器地址不存在,不管是读还是写,如果该寄存器地址不存在的话,错误代码为02。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月6日
下一篇 2021年5月6日

相关推荐