admin管理员组

文章数量:1536139

2024年7月17日发(作者:)

Modbus

协议概述

Modbus作为在工业设备通讯上使用最多,应用最广的国际标准协议,在应

用层的协议定义上我们对其进行简单的介绍:

类型

描述

设备地址

对应通讯设备设定的1-255的任意一个数字地址号。

功能码

对应读取模拟量一般采用0304号功能码,对于读取开关

量一般采用0102号功能码。

起始地址

数据在通讯设备中的寄存器定义,一般由厂家提供点表。

数据格式

数据在寄存器中的格式,较多的为16位无符号,因为一个

寄存器就是一个16位的长度。

CRC校验

经过CRC校验算法后,添加CRC计算的值在协议传输帧的

最后面,主要是防止串口误码导致数据错误。

举一个最简单的例子,我们在SymLink中查看报文的时候可以看到:

SymLink发送:01 03 00 01 00 02 95 CB

01代表设备地址1

03代表读取保持寄存器的值

00 01代表采集点对应的寄存器号

00 02代表读取2个连续寄存器的值

95 CB为01 03 00 01 00 02计算所得的CRC值

SymLink接收:01 03 04 00 00 00 00 FA 33

01代表设备地址1

03代表读取保持寄存器的值

04代表设备返回的数据个数,字节为单位

00 00 00 00为数据返回的连续2个寄存器的值

FA 33为01 03 04 00 00 00 00计算所得的CRC值

SymLink在判断01、03、04这些反馈信息都合法,并且CRC校验无误的情况下,

就可以对00 00 00 00 所在的数据值进行规定数据格式的解析。

目前支持Modbus协议的设备越来越多,包括PLC、智能仪表、通讯模块等等,

如果厂家设备支持的通讯协议为标准格式的Modbus协议,那么在选择厂家的时

候就直接选择国际标准的Modbus。

准备工作

序号

名称

1

2

厂家设备

连接电缆

数量

任意

实际长度

备注

支持标准的Modbus协议

串口通讯为0.50.75规格的屏蔽双

绞线,长度建议不要超过100米。

以太网通讯为带隔离保护的标准网

线,长度建议不要超过50米。

3

4

Symlink工业智能机

设备说明书和点表

1

1

任意型号

说明书指导设置设备地址、波特率

等通讯参数。点表用来配置采集点

信息。

设备连接

RS485通讯,设备的A端子对应连接SymLink的A端子、设备的B端子对应

连接SymLink的B端子,需要注意的是一根线上接多个IED的情况,一个是

设备地址要唯一、波特率和其他串口参数要一致,另外接线的时候需要从一

台IED的AB端子跳接到下一台IED的AB端子,防止并联分散传输信号。

RS232通讯,设备的发送针对应连接SymLink的RX、设备的接收针对应连接

SymLink的TX、设备的接地针对应SymLink的GND。

以太网通讯,设备的网口对应连接到同一网段的SymLink LAN口,如果含多

台以太网设备通讯,需要加交换机。

设备配置

参考实际的设备说明书:

1)

选择协议,如果设备支持多种协议,需要在配置里面选择为ModbusRTU或

者ModbusAscii协议。

2)

定义通讯接口参数。串口定义传输波特率,数据位,停止位,奇偶检验。

以太网通讯定义IP地址,TCP端口号。

3)

定义设备地址。

4)

用厂家提供的设备点表和设备面板显示的数据进行简单的对应。

5)

用厂家提供的测试软件,或者第三方测试软件(modscan、ModbusPoll等)

对设备进行通讯测试。

通讯配置

选中工程下的“采集服务”,点右键后在菜单中选择“新建通道”。

在弹出的界面在定义通道名称,点击规约旁边的浏览按钮选择Modbus RTU驱动。

在左侧的分类中选择国标下的Modbus RTU,点确定按钮完成。

定义端口信息,Modbus RTU多采用串口通讯,在下方的端口参数中定义串口号,

波特率,数据位等通讯参数,定义完成后点击确定按钮完成。

通道的配置只是完成了协议选择及通讯的接口参数。还需要在通道下创建连接的

设备及设备参数后才算完成与具体设备的通讯配置。

选中新建的通道,点击右键,在右键菜单在选择“新建设备”

在设备配置面板中定义设备名称,设备地址(Modbus协议主要依靠设备地址来

识别一条总线上的多个设备)。

点击设备配置界面左下方的+号按钮,可以定义Modbus RTU协议的高级参数。

点击确定按钮就完成了通道及设备的通讯配置。

需要说明一下规约参数中的包最大长度,这里默认是32,代表组织协议的时候

一次最大可读取连续32个寄存器数据,如果点数较多并且通讯条件较好的情况

下,我们最大可以调整到128。

1.1.6. 数据连接

完成Modbus设备和通道的通讯配置后,并未采集到设备中具体的数据。如要对

设备的数据进行逐个的采集,需要在采集服务中的通道下的设备中创建一个一个

的IO点,并配置正确的IO连接参数。

在左侧导航中选择采集服务中的通道下的设备后,右侧视图为IO点的列表视图。

默认没有任何IO采集点。

在空白区域点击右键,在弹出的右键菜单在选择创建IO点。

弹出新建采集点对话框:

点击连接线右侧的浏览按钮,即可进入到具体的协议配置参数。

功能码

连接项说明

参考厂家协议说明,一般读取模拟量用0304号命令,

读取开关量用0102号命令。区分是04和02是只读区,

03和01类型的寄存器支持用06和05的命令码回写操

作。

数据地址

数据类型

位偏移

读写属性

参考厂家点表,我们SymLink的数据地址从0开始,要

注意厂家的点表是否是从1开始的,如果是可能需要减

1,另外是否是16进制的描述,如果是16进制则需转换

成10进制的进行填写,如010A的十进制是266。

数据格式选择,一个寄存器代表16位长度的数据,两个

寄存器就能代表32位长度格式的数据。需要注意的是

32位长度的数据格式,有可能需要选择对应的高低位,

默认都是从高到低。

如果用0304号命令码读取一个寄存器的16位数据,并

且需要取这16位数据中的每一个位,则选择数据类型

位,然后偏移由低到高为0-15。

根据寄存器类型不同而自动设定。

本文标签: 设备协议数据定义