一、适用型号
该笔记适用于标准Modbus协议产品(MA01系列、ME31系列、M31系列、ME15-AXAX8080)。
二、功能简介
功能说明:Modbus指令快速生成教程旨在帮助用户快速生成Modbus通信指令,实现设备之间的数据传输。通过确定通信方式、选择功能码、确定起始地址和数据长度等步骤,用户可以轻松生成符合Modbus协议规范的指令。
常用的功能码包括读取保持寄存器、写单个保持寄存器等,用于读取或写入设备的数据。通过本教程,用户可以快速了解如何生成Modbus指令,并在工业控制等领域中应用,实现设备间的高效通信与数据交换。
相关知识:
Modbus是一种主/从通讯模式,主站在Modbus网络上没有地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范围为1-247。
Modbus寄存器种类说明:
线圈状态:输出端口,可设定端口的输出状态,也可以读取该位的输出状态;
离散输入状态:输入端口,通过外部设定改变输入状态,可读但不可写;
保持寄存器:控制器运行时被设定的某些参数,可读可写;
输入寄存器:控制器运行时从外部设备获得的某些参数,可读不可写。
Modbus功能码:
三、功能应用
(1)软件清单
软件:UartAssist
(2)Modbus指令调试界面介绍
首先双击打开此软件,如图所示:
点击左上角图标,然后会出现新的菜单栏,选择点击工具,然后会继续出现新的菜单栏,选择点击Modbus调试器,在右侧就会出现一个Modbus指令生成框,如图所示:
(3)从页面中我们可以发现:
第一栏为协议类型选择,其中协议包含Modbus-RTU、Modbus-ASCII、Modbus-TCP,我们常用的协议为Modbus-RTU、Modbus-TCP,Modbus-RTU通常对应串口通讯使用,Modbus-TCP通常对应网口通讯使用;
第二栏为从设备ID,对应设备的Modbus地址;
第三栏为功能号选择,其中包含01功能码读线圈,02功能码读离散量输入,03功能码读保持寄存器,04功能码读输入寄存器,05功能码写单个线圈,06功能码写单个寄存器,15功能码写多个线圈,16功能码写多个寄存器;
第四栏是寄存器地址,相应寄存器地址可在手册寄存器章节查询;
第五栏根据不同的功能号,会出现不同的描述,具体可见指令生成章节。
注:输入地址和数值可以为十进制数或0x打头的十六进制形式。
四、指令生成
示例将以M31系列分布式IO为例,Modbus地址设置为1,协议类型选择Modbus RTU进行讲解。
(1)DI(1区)相关指令生成示例
读取DI状态指令:查询手册可知,DI的寄存器起始地址为0x0000(10001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:02读离散量输入
寄存器地址:0x0000(为寄存器起始地址,0就代表从第一路开始读取)
读数据长度:1(如果需要同时读取4路,将此值改为4即可)
填写相关数据后,点击更新。
(2)DO(0区)相关指令生成示例
读取DO状态指令:查询手册可知,DO的寄存器起始地址为0x0000(00001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:01读线圈
寄存器地址:0x0000(为寄存器起始地址)
读数据长度:1(如果需要同时读取4路,将此值改为4即可)
填写相关数据后,点击更新。
控制单个DO状态指令:查询手册可知,DO的寄存器起始地址为0x0000(00001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:05写单个线圈
寄存器地址:0x0000(为寄存器起始地址)
线圈状态值:On为打开,off为关闭
填写相关数据后,点击更新。
控制多个DO状态指令:查询手册可知,DO的寄存器起始地址为0x0000(00001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:15写多个线圈
寄存器地址:0x0000(为寄存器起始地址)
线圈状态值:1 0 1 0(1为打开,0为关闭,1 0 1 0表示控制1,3路打开,2,4路关闭;多个线圈的状态值用空格符分隔)
填写相关数据后,点击更新。
(3)AI(3区)相关指令生成示例
读取AI数据指令:查询手册可知,AI的工程量的寄存器起始地址为0x0000(30001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:04读输入寄存器
寄存器地址:0x0000(为寄存器起始地址)
读数据长度:1(如果需要同时读取4路,将此值改为4;如果需要同时读取4路浮点类型,将此值改为8)
填写相关数据后,点击更新。
(4)AO(4区)相关指令生成示例
读取AO数据指令:查询手册可知,AO的寄存器起始地址为0x0000(40001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:03读保持寄存器
寄存器地址:0x0000(为寄存器起始地址)
读数据长度:1(如果需要同时读取4路,将此值改为4;如果需要同时读取4路浮点类型,将此值改为8)
填写相关数据后,点击更新。
控制单个AO数据指令:查询手册可知,AO的寄存器起始地址为0x0000(40001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:06写单个寄存器
寄存器地址:0x0000(为寄存器起始地址)
寄存器数据:1(此值为修改AO的数据)
填写相关数据后,点击更新。
控制多个AO数据指令:查询手册可知,DO的寄存器起始地址为0x0000(00001),由此如图所示:
从设备ID号(Modbus地址):1(具体以现场使用而定)
功能号选择:16写多个寄存器
寄存器地址:0x0000(为寄存器起始地址)
寄存器数据:100 200 300 400(100 200 300 400表示修改AO的数据第一路为100,第二路200,第三路300,第四路400;多个寄存器数据用空格符分隔)
填写相关数据后,点击更新。