发那科通信之MODBUSTCP(一)

        我们搞工控的,每次用到新的知识点难免会遇到一些挫折。

        今年碰巧项目用到发那科机器人165F型,项目中机器人与PLC通信必然少不了的,记得之前做项目用到川崎的机器人,当时自己通信的知识不是太好,当时机器人与欧姆龙PLC之间的交互就采用的IO方式,也是第一次用到二进制转换方式让交互的数据不收限制。

        最近几年PLC通信用的较多了,自认为比较熟悉了,本项目机器人与PLC的通信方式就采用了MODBUSTCP.

        这里需要提示下,发那科机器人目前常见的通信协议都支持,唯独MODBUSTCP是免费的。。。

        好了言归正传,能够让发那科机器人与汇川EasyPLC通过MODBUSTCP方式进行通信,我们需要了解PLC的通信配置,机器人的通信配置,机器人通信IO的分配(每个品牌的工控设备对于MODBUS对应自身寄存器的分配均不一样,但都会遵循MODBUS的协议)。

Modbus协议是应用于电子控制器上的一种通用语言,通过此协议,控制器相互之间、控制器与其它设备之间都可进行通讯,此协议是请求/应答的协议,采用主从通讯模式,Modbus支持RS-232、RS-422、RS-485和Ethernet设备。Modbus主要包含Modbus TCP、Modbus RTU与Modbus ASCII三种,本篇文章采用Modbus TCP作为主要讲解内容,其余两者使用的是RS-串口通讯,在报文、数据帧上略有不同。

Modbus TCP本篇文章只涉及I/O信号的读写。

一、Modbus TCP数据的组成                 (此处只做简单介绍,部分内容也是借鉴于网络)

1、Modbus TCP = 表头 + 功能码 + 数据区  方便简写:RO-只读,WO-只写,RW-读写

表1-1 MPAB(报文头)

名称
 

标识
 

标志协议
 

长度
 

单元标识符
 

字节
 

2 Byte
 

2 Byte
 

2 Byte
 

1Byte
 

含义
 

报文序号(任意)
 

固定为00 00
 

数据位长度
 

设备地址
 

 表1-2 PDU(帧结构)

功能代码
 

功能码
 

对应机器人
 

单位<信号>权限
 

01
 

线圈寄存器读取
 

1位<DI>RO
 

02
 

分离输入寄存器读取
 

1位<DO>RO
 

03
 

保持寄存器读取
 

16位<DO/DI>RO
 

04
 

输入寄存器读取
 

16位<DO>RO
 

05
 

线圈寄存器写入(1Bit)
 

1位<DI>WO
 

06
 

保持寄存器写入(1Bit)
 

1位<GO/GI>WO
 

16
 

多保持寄存器写
 

16位<GO/GI>WO
 

23
 

多保持寄存器读写
 

16位<GO/GI>RW

 2、MODBUS功能码简单介绍

线圈寄存器:开关量,支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。对应上面的功能码:0105

离散输入寄存器:相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,功能码:02

保持寄存器:单位为两个byte,可以存放具体的数据量,并且可读写。比写也分为单个写和多个写,功能码有对应的三个:03061623

输入寄存器:和保持寄存器类似,只支持读。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值。对功能码:04

表1-3 数据位组成结构

MPAB
 

PDU
 

请求
 

标识
 

Modbus
 

长度
 

设备地址
 

功能
 

起始地址
 

点数
 

字节数
 

2
 

2
 

2
 

1
 

1
 

2
 

2
 

响应
 

标识
 

Modbus
 

长度
 

设备地址
 

功能
 

字节数
 

数据1
 

....
 

数据2
 

字节数

2
 

2
 

2
 

1
 

1
 

1
 

1
 

1
 

 3、发那科机机器人IO地址范围,目前使用后的结论,此对应内容基本用不到。

表1-4 发那科机器人地址范围

离散输入寄存器

地址
 

Robot I/O
 

0
 

DO[1]
 

1
 

DO[2]
 

2
 

DO[3]
 

...
 

...
 

线圈寄存器
 

0
 

DI[1]
 

1
 

DI[2]
 

2
 

DI[3]
 

...
 

...
 

保持寄存器
 

0
 

DI[1] - DI[16]
 

1
 

DI[17] - DI[32]
 

2
 

DI[33] - DI[48]
 

...
 

...
 

保持寄存器
 

10000(RO)
 

DI[17] - DI[32]
 

10001(RO)
 

DI[33] - DI[48]
 

10002(RO)
 

...
 

二、通讯测试  

二(1)Modbus TCP机器人只能作为服务端,在进行测试时需要对机器人进行网络配置:

通信配置打开步骤:>>点击菜单MENU>>选择设置>>选择主机通信>>确认ENTER >>进入通信设定界面>>给机器人设定自己规划的IP地址即可。其他项根据需要选择设定。

二(2)Modbus TCP配置   依次按下  MENU - IO - Modbus TCP进入tcp配置界面: 

二(3)机器人IO分配   依次按下  MENU - IO - 数字  进入IO监控配置界面-按下分配进入IO分配界面-利用IN/OUT进行切换DI和DO。

第4栏  状态  显示黄色PEND  代表配置正常,需要系统重新启动。状态显示ACTIV表示激活中。

二(4)利用ModbusPoll测试工具  进行ModbusTcp/IP测试读取数据,这里我已经配置了机器人组通信(一个组==16个位),就没有测试单个的IO读写,其他的需求小伙伴们自己动手测试吧。

 

  • 39
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼儿小鱼儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值