机器人做ModbusTcp从站

 

1. 简介

在工业自动化中Modbus TCP是常见的一种常见的工业总线协议,艾利特控机器人支持Modbus TCP 从站,本文以modbus poll调试软件跟机器人建立通讯为范例,介绍艾利特机器人Modbus TCP 从站的配置操作步骤

2. 操作流程

机器人做modbus TCP从站,可以使用机器人控制柜的FB1网口或FB2网口(两个都可以用,任选一个,B1柜跟MINI柜已经将两个网口合并到一个网口),本文以FB1为例

2.1 网络配置

2.1.1将网线分别连接电脑的网口跟控制柜的FB1网口,点击示教器右上角【logo】,点击【系统】-【网络】可进行ip设置
同时需要将电脑网口IP设置为与机器人FB1同一网段,打开电脑终端ping aaa.bbb.ccc.ddd一下检查网络是否连接正常
2.1.2打开第三方调试软件modbus poll,点击【connection】-【connect】,选择modbus tcp/ip,ip地址栏输入机器人的ip,端口默认502,最后点击ok
2.1.3对话框不显示【No connection 】就表明调试软件已连上cs机器人

2.1 机器人Modbus寄存器定义

机器人支持对线圈和整形寄存器的写入,但部分线圈跟寄存器已经系统功能做的绑定,具体定义可参考数据定义表格,用户客户自定义使用线圈和寄存器如下
用户可使用线圈(软件版本<=2.14.5不支持):
128个输入,地址:300-427
128个输出,地址:500-627
用户可使用寄存器:
128个输入输出:地址:256-383
48个输入:地址:600-647 (软件版本<=2.14.5不支持)
48个输出:地址:700-747 (软件版本<=2.14.5不支持)

2.3 读写机器人机器寄存器

2.3.1读取控制柜输入

功能码选择 02 Read Discrete inputs ,地址格式十进制,起始地址0,读写数量24,其中0-15是标准数字输入,16-23是可配置输入
上图显示输入4为1与下图示教器显示匹配,线圈读取成功
 

2.3.2读取标准数字输出

功能码选择 02 Read Discrete Inputs ,地址格式十进制,起始地址 32,读写数量24个,其中32-47是标准数字输出,48-55是可配置输出
由图可见32与41为1,与机器人modbus slave界面显示标准数字输出0和标准数字输出显示的数据一样,可见读取成功
 

2.3.3写入标准数字输出

点击setup--read/write definition中可以先择 01 read coils(0x)读取线圈方便在modbus poll上观察
点击functions--选择功能码15:write multiple coils(写多个线圈),勾选所需的coil,点击send,回复respons ok 即可输出信号
 

2.3.4读取整型寄存器

setup--read/write definition中可以先择 功能码04read input registers,十进制,起始地址 97,
读写数量 10(根据实际需求修改)
 

2.3.5写入整型寄存器

可以在setup--read/write definition 选择04 read input register,地址address256,数量10,先读这些可读可写的寄存器方便我们观察变化
 
第一种方法:直接双击poll表格里的地址,修改value值来写入(对应功能码06 写单个输出寄存器
第二种方法:点击functions --16:write multiple registers,双击图中显示列表来修改寄存器值
 
 
 

2.4 Modbus客户端的使用,增加布尔寄存器跟整形寄存器在IO配置中的使用方式

为方便在modbus信号在程序中方便配置和使用,可以在【配置】--【通讯】--【modbus】创建连接机器人自己作为主站,IP地址填写127.0.0.1内部广播地址
如上图所示,下述以数字输入,地址32;数字输出,地址33;寄存输入,地址266;寄存器输出,地址277为例

2.4.1任务中读取(等待)线圈值

当线圈m_a为高是弹出弹窗信息1
 

2.4.2任务中设置(给出)线圈值

 
机器人中如上图设置,点击运行,调试助手中显示为1,即成功
 

2.4.3任务中读取(等待)寄存器值

运行机器人程序,在poll中地址66输入44,机器人弹窗提示1,即ok
 
 

2.4.4任务中设置(给出)寄存器值

运行机器人程序,poll中地址277显示为值897即ok

3. 常见问题解答

1. 机器人支持浮点型寄存器吗?
暂时不支持,如果需要写入小数点可以将浮点数x100、x1000倍数,放大成整数数后写入
2. 连接端口支持修改成其他的吗?
软件版本2.15.0以后支持在界面直接修改
3. 寄存器支持写入负数吗?
支持,但是使用Modbus客户时,寄存器的值会默认解析成无符号整数,可以使用脚本命令读取解析成有符号整数read_port_register(256,True)

4. 附录