ModBus通信

1.概述  

    所谓现场总线是应用在生产现场与微机化测量控制设备之间实现双向串行多节点通信的系统也称为开放式。我们知道由于工业领域自身的特殊性,造就了众多的总线协议。目前世界上依然存在的协议依然有40余种,比如我们常见的西门子的ProfiBus,施耐德的ModBus,博世的CANOPEN等等。ModBus相比较于其他协议应用更加的广泛有以下几点原因:

  • 协议简单易于应用和维护

  • 无版权要求

  • 协议可以应用在多种电气接口上

2.ModBus物理层

  ModBus物理层可以使用RS232/RS485的硬件电路去进行通讯。本文章以RS485通信为例进行说明。485的特点包含以下方面:

  • AB总线上逻辑"1"电压为+(2V~6V),逻辑"0"电压为-(2V-6V)

  • 传输速率高,10M通讯时传输速率最高可达35Mbps

  • 抗干扰强,采用查分信号进行数据发送和接受,抗共模干扰能力强

  • 一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点,最大的可以支持到 400 个节点。

   图中 A、 B 总线接口,用于连接 485 总线。RO 是接收输出端, DI 是发送数据收入端, RE是接收使能信号(低电平有效), DE 是发送使能信号(高电平有效)。 

3.ModBus分类

  具体如下图所示:

    我们在工业中常用RTU格式进行通讯,RTU是一种紧凑,采用二进制表示数据的方式;因此我们可以使用一些数据校验方式让通信更加稳定,比如常用的CRC校验。ASCII模式一般在物理通讯电路或者设备的功能不允许符合RTU计时器管理要求时使用。TCP从字面是指一般用于TCP/IP网络上运行的。Plus指扩展版本,一般需要特殊的处理器进行处理。

4.ModBus协议层

  ModBus是主从通信方式,在总线通信时规定了主机和多个从机,一般是主机启动发送,从机应答,从机不能主动发送。

 请求帧一般由主机进行发送,一帧数据主要包括地址,功能码,数据以及校   验(以RTU模式为例)。

  • 地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。

  • 功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。

  • 数据:根据功能码不同,有不同结构,在下面的实例中有说明。

  • 校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。

主机发送数据解析

从机应答数据解析:

功能码一般有:

  •   0x03     读多个寄存器

  •   0x06     写单个寄存器

  •   0x10     写多个寄存器

同时我们也可以根据需求自己定义特殊的功能码,满足自己的需求。

5.总结

本文主要讲述了ModBus协议的物理层以及协议层,包括ModBus的分类以及特点进行阐述,同时对于工业中常用的RTU模式进行讲解。如需要做到熟练和精通还需在实际应用中多去实践。

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值