Modbus是一种单主/多从的通信协议,即同一时间只能有一个主设备,但可以有一个或多个(最多247个)从设备。通信必须由主设备发起,从设备只有当收到主设备发来的请求,才会发送数据。从设备之间不能相互通信




主机设备或客户端创建Modbus ADU形成查询报文,其中功能码向从机设备或服务器端指示将执行哪种操作。功能码占用一个字节(1255,其中128255为异常响应保留),创建完毕向从机或服务器端发送报文,从机或服务器端接收到报文后,根据功能码做出相应的动作,并将响应报文发送回给主机或客户端(正确接收Modbus ADU,不出现与请求Modbus功能有关的差错则返回正常的响应报文,否则响应报文的功能码位将返回一个和原始功能码相同但是最高有效位设置为1的异常码)
主设备发送Modbus请求报文的两种方式

- 单播模式:主设备仅仅寻址单个从设备。从设备接收并处理完请求之后,向主设备返回一个响应报文,即应答。
- 多播模式:主设备可以向所有的从设备发送请求指令。从设备接收到广播指令之后,仅进行相关指令的事务处理而不要求返回应答。由此请求指令必须是Modbus标准功能中的写指令。广播地址0




Modbus规定了三种功能码,分别为:
- 公共功能码
- 用户自定义功能码
- 保留功能码
功能码可分为位操作和字操作两类。位操作的最小单位为一位,字操作的最小单位为两个字节
Modbus对于查询报文的四种处理反馈:
- 正常接收,正常处理,返回正常响应报文
- 因为通信错误等原因,造成从站设备没有接收到查询报文,主站报文将按超时处理
- 从站设备接收到的查询报文存在通信错误(例如LRC、CRC错误等),此时从站设备将丢弃报文不响应,主站设备将按超时处理
- 从站设备接触到正确的报文,但是超过处理范围(例如不存在的功能码或寄存器等),此时从站设备将返回包含异常码(Exception Code)的响应报文
异常响应报文由从站地址、功能码以及异常码构成,功能码最高有效位设为1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/201659.html