CS机器人ModBusTCP通讯
1. 简介
Modbus是一种串行通讯协议,是Modicon公司于1979年为使用可编程逻辑控制器通信而发表。Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。
CS系列机器人支持modbus tcp,机器人既可以做主站也可以做从站,在某些情况下我们可以通过modbus poll即第三方通讯助手来测试该通讯。
CS 系列支持的,可使用 Modbus 协议读写的数据类型为布尔型与无符号短整型(16 位)两种,
每种类型分别包含一组输入和一组输出寄存器,因此 Modbus 共有 4 组寄存器可被主站访问。其中,
输入型寄存器只允许读操作,输出型寄存器可读可写。有关寄存器协议接口的详细说明,请登陆官网:
www.elibot.com,进入“服务与支持 > 技术资料”板块,选择“CS_用户手册_V2.11.0_附件”进行
查询
1. 布尔型寄存器(8 位):主要用于操作数字 IO,CS 系列目前可访问的输入/输出数字 IO 寄存器
的有效地址范围为 0-63,虽然其值的类型为 bool,但每个 IO 仍会占用一个字节的空间,所以数字 IO
共占 2*64 字节。
2. 无符号短整型(16 位):用于保存和修改机器人的版本,TCP,系统状态等信息;也用于映射
数字 IO。CS 系列目前可访问的输入/输出寄存器的有效地址范围为 0-415。
工具 Modbus 主站设备可通过以下功能码读/写从站寄存器:
1. 0x01: 读一个或者多个输出数字信号 (read output bits)
2. 0x02: 读一个或者多个输入数字信号 (read input bits)
3. 0x03: 读一个或者多个输出寄存器 (read output registers)
4. 0x04: 读一个或者多个输入寄存器 (read input registers)
5. 0x05: 写单个输出数字信号 (write output bit)
6. 0x06: 写单个输出寄存器 (write output register)
7. 0x0F: 连续写多个输出数字信号 (write multiple output bits)
8. 0x10: 连续写多个输出寄存器 (write multiple output registers)
2. 操作流程
2.1机器人做从站
机器人做从站,modbus通讯使用机器人控制柜FB1网口或FB2网口,连接控制柜和电脑,
机器人Ip设置:
电脑设置为机器人的同一网段后可以ping一下查看网络是否连接正常
打开第三方网络调试助手modbus poll,--connection--connect,选择modbus tcp/ip,ip地址栏输入机器人的ip,端口默认502,最后点击ok
只要对话框不显示noconnection 就表明调试软件已连上cs机器人
接下来我们可以用modbus poll来:
写入标准数字输出
读取标准数字输出
读取标准数字输入
读取寄存器
写入寄存器
2.1.1读取标准数字输入
功能码选择 02 Read Discrete inputs ,地址格式十进制,起始地址 0,读写数量 24(机器人输入地址 0-23,共 24 个)
上图显示输入4为1与下图示教器显示匹配,可见读取成功
2.1.2读取标准数字输出
功能码选择 02 Read Discrete Inputs ,地址格式十进制,起始地址 32,(机器人输出地址 32-59,共 28 个),读写数量可选择 28 即全部读取
由图可见32与41为1,与机器人modbus slave界面显示标准数字输出0和标准数字输出显示的数据一样,可见读取成功
2.1.3写入标准数字输出
setup--read/write definition中可以先择 01 read coils(0x)读取线圈方便在modbus poll上观察
点击functions--选择功能码15:write multiple coils(写多个线圈),勾选所需的coil,点击send,回复respons ok 即可输出信号
2.1.4读取寄存器
setup--read/write definition中可以先择 功能码04read input registers,十进制,起始地址 97,
读写数量 10(根据实际需求修改)
2.1.5写入寄存器
可以在setup--read/write definition 选择04 read input register,地址address256,数量10,先读这些可读可写的寄存器方便我们观察变化
第一种方法:直接双击poll表格里的地址,修改value值来写入(对应功能码06 写单个输出寄存器)
第二种方法:点击functions --16:write multiple registers,双击图中显示列表来修改寄存器值
2.2机器人做主站
机器人做主站,modbus通讯使用机器人控制柜FB2网口,连接控制柜和电脑
查看电脑ip,这边为192.168.1.205
打开 modbus slave 调试助手,点击 connection--connect,如下图设置后点击ok
点击机器人示教器配置--通讯--modbus--添加modbus设备,输入ip(此处ip为主站ip)
2.2.1读线圈
打开modbus slave调试助手,右击名为“mbalave1”窗口,点击slave definition,
输入下图的id,功能码,地址,数量,点击ok
点击示教器页面,输入类型-数字输入 地址为0从站地址可为1,频率10(可选),当图标变为绿色即ok
打开modbus slave调试助手,双击对应地址,修改值,即可发现机器人示教器界面的值也改变
2.2.2写线圈
打开modbus slave,可点击File--new,会出来一根新的监视表,
右击其选择Slave Definition,
输入id 功能码 地址和数量,注意地址不要与上一步设置重复
机器人示教器上点击添加信号,如下图设置:
在该界面点击值,可在modbus slave,查看到
2.2.3读寄存器
打开modbus slave,可点击File--new,会出来一个新的监视表
右击其选择Slave Definition,
输入id 1,功能码04,地址20,数量5(自定义),点击ok
在机器人示教器界面点击添加信号,输入下列数据,圆形图标变绿色表明连接成功
可在modbus slave界面,点击对应地址输入数值,
在示教器界面可查看对应数值
2.2.4写寄存器
打开modbus slave,可点击File--new,会出来一个新的监视表
右击其选择Slave Definition,
选择id 1,function03,地址30,数量5(自定义),点击ok
在示教器界面点击添加信号--输入下图对应信息,圆形图标变绿色表明连接成功
点击值,输入数据,即可在modbus slave上查看到写入的值
3. 程序中操作
3.1机器人做从站
为方便在modbus信号在程序中方便配置和使用,可以在配置--通讯--modbus连接机器人自己作为主站
如上图所示,下述以数字输入,地址32;数字输出,地址33;寄存输入,地址266;寄存器输出,地址277为例
3.1.1任务中读取(等待)线圈值
当线圈m_a为高是弹出弹窗信息1
3.1.2任务中设置(给出)线圈值
机器人中如上图设置,点击运行,调试助手中显示为1,即成功
3.1.3任务中读取(等待)寄存器值
运行机器人程序,在poll中地址66输入44,机器人弹窗提示1,即ok
3.1.4任务中设置(给出)寄存器值
运行机器人程序,poll中地址277显示为值897即ok
3.2机器人做主站
确定按照上述步骤客户端io设置完成
3.2.1任务中读取(等待)线圈值
运行任务,当从站的信号modbus=高 时 ,页面弹出窗口提示“1”,代表已获取到该mosbus
3.2.2任务中设置写入线圈值
先检查助手里面准备写入得地址是否为0
如图在任务里添加设置
点击运行任务,助手中值变化
3.2.3任务中读取(等待)寄存器值
运行任务,当从站的信号modbus_2=3 时 ,页面弹出窗口提示“1”,代表已获取到该寄存器的值
3.2.4任务中写入从站的寄存器值
先检查助手里面准备写入得地址是否为0
如图在任务里添加设置
点击运行任务,助手中值变化