概述
Modbus TCP通讯协议是由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。
Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,从而使得Modbus协议在全球得到了广泛的应用。
Modbus通信协议具有多个变种,其具有支持串口(主要是RS-485总线),以太网多个版本。
本期我们来注重介绍一下如何使用Superisys RFID Modbus TCP总线网关与台达AX系列PLC进行通讯读写。
IACM-P4工业网关


Superisys IACM-P4-EN总线模块是一种提供标准工业总线协议的RFID控制器,支持MODBUS TCP协议;包含2个M12 T CODE电源供电接口,1个M12 D CODE 4-PIN 总线接口,4个M12 A CODE RFID读写头接口;外壳采用坚固的锌合金金属材料,具有连接范围厂、通信能力强、环境适应好、防护等级高等特点。
可同时连接4个RFID读写头进行独立操作;
IP67的防护等级,能够适应油污、粉尘、潮湿等恶劣工况;
单网口,可组星型网络;
电源输入带反接保护和3000W浪涌保护,RFID端口带防反接和过压过流保护。
02
硬件架构介绍

RFID架构系统主要组成如下:
控制器
(PLC)
下发命令控制读写头进行操作;
网关总线
控制器
PLC与网关总线控制器进行通讯,间接控制读写头;
读写头
(超高频
/高频)
获取控制器的命令,执行对载码体的读/写数据操作;
载码体
(超高频
/高频)
存储数据的载体,数据存储区域划分如下:
高频标签有UID区(通常只有8 byte/只读且唯一)、USER区(一次最大2000 byte(实际内存大小因标签类型而异)/可读可写);
01
✦EN总线协议模块参数设置
✦
1.1 IP地址设置
★ 打开“RfidController”Demo软件,点击“工具”栏下的“RFID搜索”工具,在弹出的“IP地址搜索”对话框中的“网络列表”中选择对应的本地网卡。点击“搜索”按钮,网络正常连接的情况下,即可搜索出来EN总线协议模块的IP地址(默认192.168.0.10),如下图所示:

双击搜索出来的模块,在弹出的“IP地址设置”对话框中输入要修改的模块IP地址(一般网关会同步修改成同一个网段的地址),点击“设置”按钮,下方状态显示“Set Ok!”后,针对模块断电重启即可生效,如下图所示,将EN总线网关的IP地址修改成PLC同一个网段的IP地址:

1.2 PLC的通讯配置
打开“DIADesigner”编程软件,在“网络配置”项目下新增以太网网络,然后在“Etherent_1”,以太网网络下,右键选择“添加设备”,分别添加“Modbus TCP主站”和“Modbus TCP从站设备”(注意要选择带“Delta”前缀的Modbus TCP主从站)如下图所示:

双击“Delta_Modbus_TCP_Slave_1”从站,在“通用”栏下,修改从站(EN总线协议网关)的IP地址,如下图所示:

点击选择“Modbus 从站通道”,分别新增配置两个循环的读写寄存器命令通道参数,如下图所示:
备注:通道的使能选项一定要勾选才能正常执行。

点击选择“Delta Modbus_TCP Slave I/O映射”,可查看读写寄存器的I/O映射地址,如下图所示:
备注:此处需要跟程序的全局变量的“RFID端口IO地址映射”想关联匹配。

02
✦ 功能块应用介绍
✦
2.1 RFID程序介绍
★ RFID读写功能块介绍
提供的程序:
全局变量:”GVL_RFID”—— RFID端口IO地址映射;
功能块:“RFID_RW”—— RFID读头读写功能块程序调用;
2.2 RFID通讯功能说明
“GVL_RFID”——全局变量通过指针的方式来指向EN总线协议网关的内存映射地址,分别指向4个RFID端口的输入输出内存映射地址,如下图所示:

一个“RFID_RW_FB”功能块实例调用对应一个读写头的通讯连接,功能块详解如下
每个功能块实例对应一个读写头,功能块引脚定义及功能如下:


所有命令信号互斥,同一时间只能有一个命令信号为高电平,功能块只会执行第一个检测到的有效信号。
2.3 RFID读写头输入输出地址填充
本例程中,EN总线协议网关的4个RFID端口分别通过不同的IO内存地址来区分,4个端口RFID分别占用不同的4个内存区域,可以实现同时独立读写操作,多次调用“RFID_RW”功能块,在输入输出地址栏,分别填充对应的地址映射变量,即可实现不同端口RFID的调用,如下图所示:

03
✦读写头读/写功能示例
✦
3.1 命令执行时序
在执行读写标签内存数据命令时,需要先填写好读写的参数(读写标签内存的起始地址,字节长度,写入的数据填充区数据内容等),然后再触发读写命令,具体的命令执行时序如下图所示:

命令的执行以xRead或xWrite上升沿信号开始,在给Trigger信号置位之前,先将命令/参数/数据填充好。在命令执行期间保持xRead或xWrite信号置位,若取消当前命令的执行,将xRead或xWrite复位即可。命令执行装填可根据xDone或xError信号来判断,命令执行完后可从Read datas/Errcode取命令执行的结果。
3.2命令执行参数
★ 从标签读取数据
当标签在读取范围时,通过读取功能可从标签指定起始地址读取特定长度的数据。命令的执行以”xRead”引脚上升沿触发,在进行读取时,需要先填充部分引脚参数,涉及到的参数如下:

★ 写入数据至标签
当标签静止在读取范围时,通过写入功能可以向一个标签指定的地址写入特定长度的数据。命令的执行以”xWrite”引脚上升沿触发,在命令触发前,需要填写以下参数:

3.3 标签ID数据
★ 操作步骤如下(数据存储在arrUIDData):
a) 标签靠近读写器,读写器自动感应标签,标签到位信号“xTP”变为“TRUE”;
b) 自动获取所靠近标签的UID数据,固定长度8个字节,可在arrUIDData0查看;

3.4写标签内存数据区
★ 操作步骤如下(数据填充在arrWriteData):
a) 标签靠近读写头;
b) 设置wWriteAddress值为0,设置读写起始地址为0;
c) 设置iWriteLength值为8,读写8个寄存器数据(起始地址以及长度参数不能超过标签的最大内存区);
d) 在arrWriteData [0]~ arrWriteData [7]中填充要写入的数据内容;
e) 使能xWrite值为TRUE,触发写入USER区数据;
等待xWriteDone或xWriteError信号,当xWriteError为TRUE时,写入失败,可通过对应的wErrorCode查看对应的错误代码,分析错误原因,当xWriteDone为TRUE时,表明写入成功,可读取查看arrReadUserData(标签内存数据)是否正确写入。
触发写入标签USER内存数据示意如下图所示:

3.5 读标签内存数据区
★ 操作步骤如下(数据存储在arrReadData):
a) 标签靠近读写头;
b) 设置wReadAddress值为0,设置读写起始地址为0;
c) 设置iReadLength值为8,读写8个寄存器数据(起始地址以及长度参数不能超过标签的最大内存区域)
d) 使能xRead值为TRUE,触发读USER区数据;
e) 等待xReadDone或xReadError信号,当xReadError为TRUE时,读取失败,可通过对应的wErrCode查看对应的错误代码,分析错误原因,当xReadDone为TRUE时,表明读取成功。
读USER区数据参数示意:

与上文写入数据比较一致,证明写入成功
04
✦错误码
✦
4.1 错误码详细定义
总线工作模式下功能块自定义错误码(命令执行错误时):

读写头自定义错误码(命令执行错误时):

© 2023 苏培(武汉)智能科技有限公司 版权所有鄂ICP备2022019679号-1


