Modbus通信协议深入

       Modbus协议是一种单主/多从的通信协议,其特点是在同一时间,总线上只能有一个主设备,但可以有一个或者多个(最多247个)从设备。Modbus通信总是由主设备发起,当从设备没有收到来自主设备的请求时,不会主动发送数据。从设备之间不能相互通信,主设备同时只能启动一个Modbus访问事务处理。
       主设备可以采用两种方式向从设备发送Modbus请求报文,即主设备可以对指定的单个从设备或者线路上所有的从设备发送请求报文,而从设备只能被动接收请求报文后给出响应报文即应答。这两种模式分别如下:
962b190835a74e35a7aacd977e161584.png
• 单播模式:主设备仅仅寻址单个从设备。从设备接收并处理完请求之后,向主设备返回一个响应报文,即应答。在这种模式下,一个Modbus事务处理包含两个报文:一个是主设备的请求报文,一个是从设备的响应报文。
       每个从设备必须有唯一的地址(地址范围1~247),这样才能区别于其他从设备从而可以独立被寻址,而主设备不占用地址。
• 广播模式:此种模式下,主设备可以向所有的从设备发送请求指令。而从设备在接收到广播指令后,仅仅进行相关指令的事务处理而不要求返回应答。广播模式下,请求指令必须是Modbus标准功能中的写指令。
        根据Modbus标准协议的要求,所有从设备必须接收广播模式下的写指令,且地址0被保留用来识别广播通信。

1.请求
       主设备发送的请求报文主要包括从设备地址(或者广播地址0)、功能码、传输的数据以及差错检测字段。
       查询消息中的功能码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03要求从设备读保持寄存器并返回其内容。
       数据段必须包含要告之从设备的信息:从何寄存器开始读取及要读取的寄存器数量。差错检测域为从设备提供了一种验证消息内容是否正确的方法。

2.应答
       从设备的应答报文包括地址、功能码、差错检测域等。
       如果从设备产生一个正常的回应,则在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据,如寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。差错检测域允许主设备确认消息内容是否可用。
       对于串行链路来说,又存在两种传输帧模式:ASCII(American Standard Code for Information Interchange,美国标准信息交换码)模式和RTU(Remote Terminal Unit)模式。但是,对于同一网络或链路来说,所有的设备必须保持统一,要么统一为ASCII模式,要么统一为RTU模式,不可共存。相对来说,RTU模式传输效率更高,因此,在当前普遍的生产环境中RTU模式获得了广泛应用,而ASCII模式只作为特殊情况下的可选项。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小枭码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值