EC机器人MODBUS_RTU

2025-09-08

1.  简介

ModBus是一种串行通信协议,一种标准的工业通信协议,同时是目前工业电子设备之间常用的连接方式。

艾利特机器人分别支持ModBus主、从站功能,从通讯的形式上分为MoBus TCP和ModBus RTU,其中ModBus从站功能通过配置即可。

通过ModBus主站功能,机器人可以向外部设备读取写入数据,已达到数据交互和逻辑控制的用途。

艾利特机器人的ModBus主站同时也支持ModBus RTU 和 ModBus TCP,其中ModBus TCP功能需要连接以太网接口,而ModBus RTU的硬件接口形式分为控制器485口,工具末端485口。

ModBus主站功能通过lua脚本实现,可以参考EC-lua手册进行使用。其中MODBUS MASTER为已经封装的接口,用户只需传入相应参数即可;如有其他特殊协议要求,可以使用TCP/UDP通讯、485通讯、TCI通讯(工具末端485)和232通讯等。


2.接线方法

在控制柜接口处我们可以看到RS485接口,该接口就是我们的485接口,modbus_rtu时用到该接口,其中针脚3对应485-,针脚4对应485+,如下图。

详细接线方法参考以下流程:

1、焊接对应针脚

2、将针脚之间用绝缘胶带或者热缩管进行隔离开,防止粘连。

3、  插回控制柜。


3.modbus_rtu主站使用方法

3-1.指令介绍

ModBus Master接口常用获取modbus、连接modbus、关闭modbus、设置slave、读取单个线圈、写入单个/多个线圈、读取单个寄存器、写入单个寄存器等指令,本文主要讲解以上指令,具体指令详解如下图所示,其他指令也可参考EC-lua手册ModBus Master章节

以下为读取写入相关指令

modbus_read_bits 读取线圈指令,功能码01

modbus_write_bit 写单个线圈指令,功能码05

modbus_write_bits 写多个线圈指令,功能码15

modbus_read_register 读单个寄存器数值。功能码03

modbus_write_register 写单个寄存区数值,功能码06


3-2.操作流程

本文以机器人作为主站与网络助手进行ModBus_RTU通讯为示例,进行详细操作讲解


3-2-1.机器人端配置

将机器人端485线接好,目前设置波特率为115200,将机器人脚本配置好,如下图所示


3-2-2.助手配置连接


3-2-3.连接成功提示


3-2-4.读取线圈

读取600开始的5个线圈,分别将线圈数值存入虚拟输入M920-M924中

助手中将线圈600、602、604分别置为1

示教器中查看对应的M920、M922、M924分别状态为1

读取线圈功能及指令正常


3-2-5.写入线圈

写入线圈指令及定义如下脚本所示

写入单个和多个线圈指令,定义将M530数值写入到线圈530,M531-M534数值分别写入线圈531-534中

机器人端将虚拟输出M530、M531、M533、M534置为1

助手中可以查看到线圈530、531、533、534状态都为1

写入线圈功能及指令正常


3-2-6.读取寄存器

读取寄存器指令及定义如下脚本所示

读取400开始的5个寄存器,分别将寄存器数值存入全局变量I000-I004中

助手端将400寄存器设置为123,401寄存器设置为23,402寄存器设置为-345,403寄存器设置为-876,404寄存器设置为2345

机器人端可在全局变量中查看I000-I004与寄存器400-404数值一致

读取寄存器功能及指令正常


3-2-7.写入寄存器

写入寄存器指令及定义如下脚本所示

机器人端I010-I014的5个全局变量,分别将数值写入到寄存器500-504中

机器人端分别将I010-I014全局变量设置为:236,-659,589,489,-3528

助手端可查看500-504的寄存器数值,同时与全局变量I010-I014数值一致

写入寄存器功能及指令正常


4.  modbus_rtu从站使用方法

4-1.modbus_rtu从站介绍

艾利特机器人支持ModBus TCP从站以及ModBus RTU从站,均可通过示教器界面直接进行配置。

目前Elite机器人支持对虚拟变量M的操作,M为BIT型变量。单个M变量为线圈,多个连续的M变量可为寄存器 。

其中M变量支持的功能码如下图:

ModBus RTU物理层接口为串口形式。

艾利特控制器 485 端口为特殊的接插件,针脚定义为:2 为 GND,4 为 485+,3 为 485-,连接参数上需要设置从站号、波特率、数据位长度、校验方式和停止位长度,以上参数可通过示教器界面进行配置。可通过示教器扩展-Modbus从站中进行配置选择,如下图所示

4-2.使用技巧

1. M0-M527,M1472-M1535为系统使用,只能读取状态,通过示教器可

输入的 M 变量范围为 528-799。

2. M 变量的线圈地址即为变量的序号地址。

3. 兼容模式中勾选ModBus:M 变量的寄存器地址从M0 开始,每连续 的16个 M 变量形成一个寄存器地址,例如M0-M15,寄存器地址为 0x0000;M16-M31,寄存器地址为0x0001,以此类推; 兼容模式中不勾选ModBus:M 变量的寄存器地址从M0 开始,每连 续的 8个 M 变量形成一个寄存器地址,例如M0-M7,寄存器地址为0x0000;M8-M15,寄存器地址为 0x0001,以此类推。

4. ModBus 协议中一个寄存器为 16 位变量,因此对 M 变量的一个寄存

器地址进行操作,实际操作的是连续的 16 个 M 变量。

5.在数据多为小数时,为方便数据的处理,可以将数据进行整体扩大一定倍数后进行传输


4-3.操作流程

本文以机器人作为从站与网络助手进行ModBus RTU通讯为示例,进行详细操作讲解


4-3-1.助手配置、通讯

将机器人端485线接好,目前波特率为115200,助手端连接对应设置参数即可,如下图所示

连接成功后,如下图所示


4-3-2.虚拟M变量读写

通讯成功后进行M变量的读写,无需其他设置,可直接通过对应线圈地址读取写入

示例1:机器人M变量写入,助手线圈读取

定义机器人虚拟输出M528及M534写入为1

网络助手端直接读取528及534当前状态为1

示例2:机器人M变量读取,助手线圈写入

定义网络助手端线圈912-917写入为1

机器人端虚拟输入M912-M917此时状态都为1


4-3-3.寄存器读写

1.机器人作为从站可通过脚本直接读取写入寄存器数值,可将数值转化为全局变量,在示教器上进行显示或者调用

2.脚本指令分为两种,第1种是对应获取接口0-191,设置接口66-191,此接口可控制虚拟输入输出M变量,如下图所示


3.第2种读取额外接口192-575,设置接口300-477,具体寄存器地址可参考通讯手册


4.第1种指令和第2种指令,建议用户使用第2种指令更方便快捷,第1种指令可直接控制M变量,艾利特modbus寄存器分为8位和16位,需要在兼容模式下更改,否则容易将机器人寄存器地址和网络助手地址混淆。第2种指令本身设置就是16位寄存器,无需考虑兼容模式下的更改情况


5.下面以第2种寄存器为示例脚本进行数据的读写

机器人读取寄存器300-304寄存器数值同时存入到I0-I4寄存器中,脚本如下

通过助手向寄存器300-304赋值,可通过示教器查看I0-I4数值,确实数值是否正确,如下图所示



6.机器人通过全局变量I10-I14,将数据写入寄存器320-324,脚本如下所示

通过机器人向I10-I14全局变量赋值,可将数值存入到320-324寄存器中,网络助手可直接在此寄存器直接读取,如下图所示


5.  常见问题解答

5-1.问:通讯收发数值不正确或者连接不上

答:检查一下485接头是否接好,焊接地方有没有粘连,使用环境是否存在电磁干扰。或者把485线缆调换一下。

5-2.问:寄存器能否支持带小数点位数值

答:modbus协议寄存器都是整数类型的,需要进行带小数点的数据传输可以先将数值乘以一个倍数,传输后再进行整除。

6.附录

modbus_slave.lua

modbus_master.lua




download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

准备好突破增长瓶颈,开启智能制造了吗?
了解我们的机器人如何帮助您的业务增长
欢迎下载艾利特机器人资料

我已阅读并同意艾利特《隐私政策》《法律声明》

我已知晓并同意艾利特通过电子邮件发送相关资料

提交