【清易观察】ModBus RTU问题整理

发表于:2026-10-26 14:05:32|本帖共 1,602 字 1871
       一、ModBus RTU通讯协议与ModBus通讯协议有什么区别?
  ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。
  ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三种通信方式:
  1.以太网,对应的通信模式是MODBUSTCP。
  2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUSRTU或MODBUSASCII。
  3.高速令牌传递网络,对应的通信模式是ModbusPLUS。
  二、关于ModBus RTU通讯协议的提问?
  ModBus主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验,
  三、ModBus、RTU、ModBus RTU分别是什么?
  ModBus协议是工控行业的标准协议,前身为康所写,现已被施奈德收购。
  而ModBus分为两种协议:即串口协议(ModBus rtu)和网口协议(ModBus tcp)协议,一般的工控机只支持rs232或者RS485的串口模式,这个时候工控机的协议栈里就只有modbusRTU协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用modbusTCP协议进行传输,则需要使用带有网口的PLC。
  具体的帧格式如下:
  ModBus RTU 地址域功能码数据差错校验
  ModBus TCP 目的地址协议id 长度单元号功能码数据
  简单的说 tcp是由RTU加工而来的,而RTU则是另外一种概念,不包含在ModBus协议内,是工控行业对监控设备的简称。
  四、关于modbus_RTU协议主机发送的命令的一些问题
  01 读保持线圈状态(Read coilstatus)
  02 读输入线圈状态(Readinput status)
  03 读保持寄存器(Readholding register)
  04 读输入寄存器(Readinput register)
  05 写单个线圈(Forcesingle coil)
  06 写单个寄存器(Presetsingle register)
  15 写多个线圈(Forcemultiple coils)
  16 写多个寄存器(Presetmultiple registers)
  这些都是什么意思
  答:01 读取逻辑线圈组状态
  02 读取离散量线圈组状态
  03 读取一个或多个保持寄存器的二进制值
  04 读取一个或多个输入寄存器的二进制值
  05 改变逻辑线圈状态
  06 改变单个寄存器的二进制值
  15 改变多个寄存器的二进制值
  16 指定多个操持寄存器的二进制值
  五、OPC转modbusRTU方式我现在有一个OPC服务器,里面很多tag,tag是AB里出来的,怎么将tag连到ModBus?
  Profibus、Fielbus、Modbus、CC-link等等是各种PLC硬件支持的通讯协议,这个是各厂商的硬件属性一样.只是现在计算机组态软件都支持很多种协议的PLC.你理解反了。
  Profibus、Fielbus、Modbus、CC-link这些协议,是一种通讯协议,一般不需要你去编程,就好像你使用计算机,你不需要编写IP协议一样,只是要遵循它。
  遵循的意思就是,你必须按照该厂家所支持的协议在PLC或者DCS硬件组态的时候按照该通讯协议设置硬件.其实这个很简单.这里简单指的是,你学编程,重点是编写执行控制的动作的程序,硬件通讯协议不需要你自己动手写。
  来源:技成培训微信公众号
  本文内容综合自网络,故本公司不对以上内容负任何法律责任及其他潜在责任与义务,如果侵害了您的合法权益,请您及时与我们联系,我们会在**时间删除相关内容。
收藏
送赞
分享

发表回复