一招教会你用Modbus通讯协议

单片机相关 徐 自远 670℃

一招教会你用Modbus通讯协议

原创 哒哒与达达 2018-10-11 10:27:00

哒哒老师最近忙于工作,没有更新文章,很抱歉,今天讲解一下Modbus通讯协议,学完会有所收获,感谢大家您的关注就是我前进的动力

Modbus通讯协议

历史

最初工厂通过所谓的大型微处理器的系统控制的“分布式控制系统”或“DCS”。一个中央控制系统控制的整个系统(在控制室)。所有传感器和执行器的通过点到点的连线方式连接到控制系统。或者在网络拓扑中添加

为了减少成本Modicon公司(施耐德大型PLC的前身)发明了最完整的可编程逻辑控制器PLC

因为PLC需要共享数据,所以, Modicon 在1979 创造一个通讯协议: Modicon + fieldbus = MODBUS

Modbus协议基础

Modbus协议

有不同类型Modbus协议(MODBUS ASCII,Modbus RTU,MODBUS TCP/ IP,Modbus Plus, Modbus Pemex…)

此培训文档主要介绍RTU和TCP / IP

Modbus 的分类

一种模式是ASCII(美国信息交换码),

另一种模式是RTU(远程终端设备)。

施耐德电气最常用的是串口协议是Modbus RTU

Modbus RTU最常用的串口设备包括:RS232、RS422、RS485

RS232

由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现

RS232主要的缺点只能点到点通讯.

传输速度最大10 M位/s.

电缆的理论长度为15米。在实践中,通过使用质量好的电缆,有可能超过这个长度。只需使用屏蔽电缆(普通,或更好的双绞线)能够将通讯双方的距离延长到25-30米。

RS422

RS-422(EIA RS-422-A标准)是历史上的苹果Macintosh计算机使用的串行连接。RS-422使用差分电信号,而不像RS-232对样使用对地不平衡的信号。差分传输的发送和接收都使用两根线,具有更好的抗噪性和更长的距离的信号。这些优势使得RS-422更适合工业应用。

由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许最多可接10个节点。即一个主设备(主),多个从设备(从),从设备之间不能通信,支持点对多的双向通信。最大传输速率10 M位/s.

通讯线长度和最高速度关系

12m = 10 M位s/sec

120m = 1 M位s/sec

1200m = 100 k位s/sec

RS485

RS485标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下可以有效传输信号。RS-485使得廉价本地网络以及多支路通信链路的配置成为可能。

RS485现在多采用的是两线制接线方式,这种接线方式为总线式拓扑结构,只需两根数据线和一个地线*。

对于主与多个从设备通讯,RS485是迄今为止最流行的方法。在无中继器最多可支持32个节点,长度约1200米。

一个串行Modbus网络有一个主设备和多个从设备,该通信是半双工。

在不加重发器repeater的情况下,每个段最多32个站。

在干扰恶劣的环境下还应采用铠装型双绞屏蔽电缆

在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来,而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,原因1是共模干扰:RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了,但容易忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7到+12V,只有满足上述条件,整个网络才能正常工作;当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口;原因二是EMI的问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

RS485的终端电阻和极化电阻

建议在通讯网络的两端加终端电阻120欧姆1nF,保证阻抗匹配。

极化电阻加在主站侧,可有效提高主站带从站的能力,一般在从站比较多的时候采用。

设备少距离短的情况下不加终端负载电阻整个网络能很好的工作,但随着距离的增加性能将降低。理论上,在每个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握,美国MAXIM公司有篇文章提到一条经验性的原则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿总线单向传输所需时间的3倍以上时就可以不加匹配。

一般终端匹配采用终端电阻方法,RS-485应在总线电缆的开始和末端都并接终端电阻。终端电阻在RS-485网络中取120Ω。相当于电缆特性阻抗的电阻,因为大多数双绞线电缆特性阻抗大约在100~120Ω。这种匹配方法简单有效,但有一个缺点,匹配电阻要消耗较大功率,对于功耗限制比较严格的系统不太适合。另外一种比较省电的匹配方式是RC匹配。利用一只电容C隔断直流成分可以节省大部分功率。

RS485的串口配置

RS485总线上的每个设备都需要配置一些参数,TM241使用SoMachine配置,TM221要使用SoMachine basic的软件。

Modbus从站地址在一条总线上不能重复,对于一些从站设备比如变频器ATV320、340、伺服等还要求修改后重新上电!

RS485总线上所有设备的波特率、数据位、停止位、校验方式必须都相同!

波特率是指单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。

数据位是指通信中实际数据位的参数,标准的值是5、6、7和8位。RTU自动是8位,其它设置是给ASII码使用的

停止位是用来表示单个包的最后一位。典型的值为1,1.5和2位。停止位

校验位在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。没有校验位也是可以的。

Modbus数据帧格式

MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS协议映射能够在应用数据单元(ADU)上引入一些附加域。

地址码:第一个字节,每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址,地址码为0时是广播模式。

功能码:通讯传送的第二个字节。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。

数据区:数据区是根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。

差错校验:使用 CRC码,它是二字节的错误检测码。

Modbus地址和数值

所有的电子设备的内部存储区用于存储不同类型的数据。它最初开发用于PLC与其他设备进行Modbus通信。在通常情况下,使用四个类型的连接传感器和执行设备。

PLC需要存储数据以便进行操作.

每个存储区存储不同的数值

Modbus的功能码

功能码:主机发送的功能码告诉从机执行什么任务。

Modbus的校验码

校验码:Modbus通讯采用CRC-16循环冗余错误校验 ,冗余循环码CRC包含2个字节,即16位二进制。

CRC计算方法是:

1、 加载一值为0XFFFF的16位寄存器,此寄存器为CRC寄存器。

2、 把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的相异或,异或的结果仍存放于该CRC寄存器中。

3、 把CRC寄存器的内容右移一位,用0填补最高位,并检测移出位是0还是1。

4、 如果移出位为零,则重复第三步(再次右移一位);如果移出位为1,CRC寄存器与0XA001进行异或。

5、 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。

6、 重复步骤2和5,进行通讯信息帧下一个字节的处理。

7、 将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换

8、 最后得到的CRC寄存器内容即为:CRC校验码。

 

一招教会你用Modbus通讯协议http://t.jinritoutiao.js.cn/dTWjeH/

转载请注明:徐自远的乱七八糟小站 » 一招教会你用Modbus通讯协议

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号