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。
根据寄存器类型不同而自动设定。
版权声明:本文标题:Modbus报文详解 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1721178539a864347.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论