龙空技术网

自控行业最常用协议MODBUS-RTU的报文定义及常用调试软件记录

王征明35 695

前言:

而今我们对“scan协议”大致比较注意,我们都想要了解一些“scan协议”的相关内容。那么小编同时在网络上网罗了一些有关“scan协议””的相关资讯,希望兄弟们能喜欢,同学们快快来了解一下吧!

MODBUS协议由Modicon公司(现在的施耐德电气 Schneider Electric)于1979年发表。

MODBUS协议有以下几种功能:

功能码:读取输出线圈--01H,读取输入线圈--02H,读取保持寄存器--03H,读取输入寄存器--04H,强制单个线圈--05H,预置单个寄存器--06H,强制多个线圈--0FH,预置多个寄存器--10H,而其中最常用的功能码为 03H。

MODBUS最常用的硬件连接就是485接口方式,为半双工的方式,即数据为一发一收,最大从站数量255,当从站数量多的时候,需要在两端加上120欧的终端电阻。一般工程中从站数量都不会很多,所以一般情况下不需要增加终端电阻。

一个485网络中,是无法保持所有设备都是正常的,所以可以看到很多MODBUS通讯参数设置时,有重试次数和超时时间,理解:当超过时间未收到从站应答报文时,主站会尝试再次发送报文,当超过重试次数时,主站会跳过该报文,进行下一条报文的发送。

网络上发现有些项目采用MODBUS通讯方式控制变频器,个人认为有很大的弊端,虽然在硬件线路上可以节约电缆,但是MODBUS采用的是轮询的方式进行控制,当遇到紧急情况下,等待主站一个一个轮询的去停止变频器,可能会延迟较长时间停机,可能人员和财产已经受损。

MODBUS通讯的一次收或者一次发的内容,称为一个报文,也叫一帧数据。

一个主站询问报文 一般包含有:从机地址、功能码、数据地址、数据数量、CRC校验。

一个从站应答报文 一般包含有:从站地址、功能码、字节数、数据内容、CRC校验。( 以03H功能码为例,不同的功能码应答的报文有部分差异,不了解可自行百度)

功能码示例,读取从站地址1 的0001寄存器的1个字的数据

01 03 00 01 00 01 D5 CA 主站询问报文

从机地址 功能号 数据地址 读取数据个数 CRC校验

01 03 02 00 17 F8 4A 主站应答报文

从机地址 功能号 数据字节个数 两个字节数据 CRC校验

MODBUS的地址分为:寄存器PLC地址与寄存器modbus协议地址

寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以是触摸屏,或是文本显示器。PLC地址一般采用10进制描述,共有5位,其中第一位代码寄存器类型,PLC地址例如40001、30002等。寄存器modbus协议地址指通信时使用的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。

介绍几款常用的调试软件 ,个人认为Modscan32和ModSim32更好用、更稳定。

主站:Modscan32 Modbus Poll

从站:ModSim32 Modbus Slave

PLC程序编写MODBUS指令需要采用轮询的方式来读写数据,编写比较麻烦,所以如果只是读取一些从站的数据存储或显示到中控组态软件的画面中时,推荐使用智能网关。推荐一款用过,并且感觉不错的智能网关,光因GY-300,设置简单方便。

标签: #scan协议