西门子PLC与RFID读写器的串行通信

2020-05-18 09:11冯韶霞
机械工程与自动化 2020年2期
关键词:读卡器读写器字段

冯韶霞

(山西机电职业技术学院 数控工程系,山西 长治 046000)

0 引言

射频识别(Radio Frequency Identification,RFID)技术是一种利用射频通信技术实现的非接触式自动识别技术。与传统的条形码、磁卡等接触式识别技术相比,RFID可实现非可视、多目标识别,其突出优点是防磁、寿命长、容量大、信息可加密、内容可更改。如今RFID 技术已经广泛应用于人们的日常生活和生产制造中。PLC作为一类可靠性高的控制器,可以与RFID进行通信,从而实现各种控制功能。

1 RFID系统的组成

一个完整的RFID系统是由标签、读写器、主机(上位机、工控机、服务器、PLC)组成的,如图1所示。其中,标签存储数据及信息,通常放置在被识别的物体上;读写器包括读或者读/写装置,一般带有附加的接口,如USB、RS232、RS485等,方便将所获得的数据传输给主机系统;主机通常使用PLC控制器与读写器通信,根据控制要求,控制读写器对标签内的信息进行读或写操作,并实现数据交换。

图1 射频识别系统的基本组成

RFID系统根据工作频率的不同可分为低频、高频、超高频系统。低频系统主要包括125 kHz和134 kHz两种,用于短距离传输,如门禁卡、校园卡。高频系统主要是13.56 MHz,是目前被广泛使用的频段,用于生产管理、运输、图书。超高频系统主要包括915 MHz、2.4 GHz、5.8 GHz等,可应用于需要较长读写距离的场合,如高速公路收费等系统中。

2 RFID读写器的命令集及串行通信协议

本文以思谷SG-HR-I2读写器为例,该读写器是一款一体式的高频RFID读写设备,其工作频率为13.56 MHz,符合ISO-15693标准,支持RS-485/RS-232通信(本文以RS485通信为例),能够操作遵守ISO-15693协议的电子标签。读写器与主机之间的控制指令均为一次性执行,读写器接收到控制指令后,无论执行结果如何,均会返回消息以确认指令的执行情况。

2.1 RFID高频读写器的命令集

思谷高频读写器通过访问不同的命令码,从而实现不同的指令,并返回相应的数据,其命令码如表1所示。

表1 高频读写器命令码

表1中,UID 数据区为RFID标签的出厂ID存放区,数据为只读,UID长度为 8 byte,地址范围 0x800E~0x8 011。

2.2 读写器与主机之间数据传输格式

主机与读写器之间通信遵循的协议如表2所示。

表2 主机与读写器通信协议

协议的字段说明如下:

(1) 帧头(Header):长度为1 byte,取固定值0xFF。

(2) 包长度(Len):长度为1 byte,包含Len、Cmd、Data字段。

(3) 命令码(Cmd):长度为1 byte,参照表1。

(4) 用户数据(Data):长度为Nbyte。

(5) CRC校验:长度为2 byte,含Header、Len、Cmd、Data字段的CRC校验。其中Data格式如表3所示。

对Data段的说明如下:

(1) CtrlFlg:为2 byte,其中Bit0表示ReaderID,Bit1~Bit14默认取0,Bit15置位,表示此帧为响应帧,Bit15复位,表示此帧为请求帧。

(2) CtrlFlg 参数包括:

Status:为1 byte, 表示命令执行状态, 当CtrlFlg 的Bit15置位,此字段出现,此帧为响应帧,如果请求指令发送成功,则该字段取值为0x00, 请求指令发送失败,该字段取值为非0x00; Bit15复位,此字段不出现,此帧为请求帧。

ReaderID:为1 byte,Bit0:ReaderID 置位,此字段出现,此时只有读写器 ID 与 ReaderID 一致, 读写器才响应; Bit0:ReaderID 复位,此字段不出现,读写器ID与ReaderID默认值为0x00。

(3) 命令参数:Mbyte,根据各个功能来定义。

主机到读写器的指令为请求帧,读写器到主机的指令为响应帧,在响应帧指令中CtrlFlg除最高位置位,其他与请求帧保持一致,ReaderID同样与请求帧一致。

表3 Data格式

2.3 读写器与主机之间读写命令

2.3.1 主机读取UID值

命令编码:0x01。

功能说明:读取天线场范围内标签的UID,不支持多标签读取。

(1) 首先主机向读写器发送读取请求指令,格式如下:

FF 05 01 0001 00 78D8

其中: FF表示帧头;05表示包长度;01表示命令码;0001表示CtrlFlg;00表示ReaderID;78D8表示CRC校验码。

(2) 命令执行完成,读写器响应数据的格式为:

FF 0E 01 8001 00(成功) 00 (797FBB39500104E0) 7D79

FF 06 01 8001 80(失败) 00 6930

其中:FF/FF表示帧头;0E/06表示包长度;01/01表示命令码;8001/8001表示CtrlFlg;00(成功)/ 80(失败)表示Status;00/00表示ReaderID;797FBB39500104E0表示UID值;7D79/6930表示CRC校验码。

2.3.2 主机按字节读取数据

命令编码:0x11。

功能:按照字节读取标签内存,需要配置字节的起始地址和字节数量。

(1) 首先主机向读写器发送读取请求指令,读地址 01 长度为 8 的请求数据,格式如下:

FF 08 11 0001 00 0001 06 3572

其中:0001为2 byte,表示读取寄存器的起始地址;06为1 byte,表示读取的字节数量。

(2) 命令执行完成,读写器返回的指令格式为:

FF 0C 11 8001 00(成功) 00 (AA AA AA AA AA AA) 9AB5

FF 06 11 8001 80(失败) 00 AAF1

其中:AAAAAAAAAAAA表示请求的数据。

2.3.3 主机按字节写入数据

命令编码:0x12。

功能:按字节的形式写标签内存。

(1) 首先主机向读写器发送写数据指令,从 0 地址开始写 5 个字节数据,格式如下:

FF 0D 12 0001 00 0000 05 (0001020304)66ED

其中:0000表示写入寄存器的起始地址;05表示写入的字节数量;0001020304表示需写入的数据。

(2) 命令执行完成,读写器返回的指令格式为:

FF 06 12 8001 00(成功) 00 6AD4

FF 06 12 8001 80(失败) 00 AAB5

3 RFID读写器与PLC串行通信

本文使用西门子S7-1200型号为1215C的PLC作为主机与思谷SG-HR-I2读写器进行RS-485通信,通信板使用CM 1241。博途软件包中包含串行通信指令:Port_Config、Send_P2P、Receive_P2P。

在博途的硬件目录下选择 1215C 型号的 CPU 和 CM 1241 通信板进行硬件组态。双击 CM 1241 通信板查看其硬件标识符为271。配置Port_Config、Send_P2P、Receive_P2P的参数,新建全局数据块DB102和DB104,DB102用于直接与读写器传输数据,DB104用于给DB102赋值。Port_Config指令模块如图2所示。

图2 Port_Config指令模块

从DB102.DBB22~DB102.DBB42共21个字节,表示需要发送给RFID读写器的数据,如图3所示。

图3 发送数据模块

从DB102.DBB0~DB102.DBB20共21个字节,表示RFID读写器响应的数据需要存储的数据块地址,如图4所示。

从DB104.DBB0~DB102.DBB20共21个字节,表示PLC发送给读卡器读取标签UID值的指令,如图5所示。其中DB104.DBB0~DB102.DBB7对应发送指令为:

FF 05 01 0001 00 78D8

从DB104.DBB22~DB102.DBB42共21个字节,表示PLC发送给读卡器需要读取标签寄存器值的指令,如图6所示。其中DB104.DBB22~DB102.DBB32对应发送指令为:

FF 08 11 0001 00 0000 0A 64F2

图4 接收数据模块

图5 PLC发送给读卡器读取标签UID值的指令

从DB104.DBB44~DB102.DBB64共21个字节,表示PLC需要写入到读卡器中值的指令,如图7所示。其中DB104.DBB44~DB102.DBB53对应发送指令为:

FF 12 12 0001 00 00000A

(00010203040506070809) 66ED

4 结束语

本文介绍通过RS-485串口,在PLC与RFID之间实现通信的方法,重点介绍了对RFID读卡器中数据的读写功能,这种通信方式简单,灵敏度高,抗干扰能力强,广泛应用于工业领域中。

图6 PLC发送给读卡器需要读取标签寄存器值的指令

图7 PLC需要写入到读卡器中值的指令

猜你喜欢
读卡器读写器字段
图书馆中文图书编目外包数据质量控制分析
与淘汰命运抗争 看懂笔记本的读卡器
基于EMV非接通信规范的非接触读卡器设计
多合一读卡器
为二维码识别的献礼之作——评测平治二维码门禁读卡器
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
基于视频抓拍读写器的高速公路防倒卡研究
关于CNMARC的3--字段改革的必要性与可行性研究
基于随机时隙的RFID读写器防冲突方法