EC机器人ModbusTCP通讯

2024-10-31

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.  操作流程

2-1. 配置机器人MODBUS_TCP

2-1-1. 接入控制柜网口,如下图。

2-1-2. 配置机器人IP地址:

登录管理员模式:密码333333--------点击系统-----系统配置-------网络配置-----设置IP--点设置

2-1-3. 配置电脑IP

2-1-4. 启用示教器中modbusTCP设置

2-2. modbus_TCP从站使用方法

2-2-1. 作为从站并通过以太网连接各种 Modbus TCP 主站设备进行通信,协议的帧

规格如下图所示:

modbus功能码:

2-2-2. 机器人与通讯助手通讯

配置通讯助手

2-2-3. 读写线圈操作:

机器人M400变量的数据

2-2-4. 读写机器人寄存器操作:

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寄存器中,网络助手可直接在此寄存器直接读取,如下图所示

2-3. modbus_TCP主站使用方法

2-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

2-3-2.操作流程

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

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

将机器人脚本配置好,如下图所示

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

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

2-3-3-4.读取线圈

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

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

示教器中查看对应的M920、M922、M924分别状态为1,读取线圈功能及指令正常

2-3-2-5.写入线圈

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

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

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

助手中可以查看到线圈530、531、533、534状态都为1,写入线圈功能及指令正常

2-3-2-6.读取寄存器

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

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

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

机器人端可在全局变量中查看I000-I004与寄存器400-404数值一致,读取寄存器功能及指令正常

2-3-2-7.写入寄存器

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

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

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

助手端可查看500-504的寄存器数值,同时与全局变量I010-I014数值一致,写入寄存器功能及指令正常

3.  常见问题解答

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.在数据多为小数时,为方便数据的处理,可以将数据进行整体扩大一定倍数后进行传输


download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

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

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

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

提交