本文将重点介绍工业自动化硬件解决方案CK-FR01-A01读写器|读卡器存器地址分配与RFID标签地址分配,可以让编程工程师快速了解CK-FR01-A01读写器|读卡器的工作流程与识别应用。
一、读卡器寄存器地址分配
工业自动化硬件解决方案CK-FR01-A01读卡器部分寄存器用于设置设备地址、通信波特率、通信校验方法以及读卡器的工作模式,部分寄存器用于显示RFID卡检测状态以及显示命令执行是否正常。
工业自动化硬件解决方案CK-FR01-A01读卡器可设置的寄存器设置后设置值掉电保存,读卡器重新上电后将以当前设置值工作。
1、 设备地址寄存器add=0x0000
寄存器0x0000用于保存设备的Slave ID,当要改变设备地址时,向寄存器写入相应的ID号,比如设备地址为0x01,则写入0x01。
ID=0为广播地址,任何设备都可以接收ID。
如果该寄存器的数据为0xffff,则为默认的的出厂设备地址0x02。
使用MODUBUS功能码:03 06 16,其他功能码返回错误码。
出厂默认值:Slave ID =0x0002.
2、波特率设置寄存器add=0x0001
向该寄存器写入不同数值以改变不同波特率,波特率与数值的对用关系为:
表1 波特率与寄存器设置值对应表
| 波特率 | 寄存器数值(H) |
|---|---|
| 4800 | 0001 |
| 9600 | 0002 |
| 19200 | 0003 |
| 38400 | 0004 |
| 115200 | 0005 |
| 115200 | FFFF |
| 无效 | 其他值 |
如果该寄存器的数据为0xffff,则为默认的出厂波特率115200。
使用MODUBUS功能码:03 06 16,其他功能码返回错误码。
出厂默认值:波特率=115200pbs。
3、奇偶校验位设置寄存器add=0x0002
向该寄存器写入不同数值以设置校验方式,校验方式与数值的对用关系为:
表2 奇偶校验与寄存器设置值对应表
| 校验方法 | 寄存器数值(H) |
|---|---|
| 无校验 | 0001 |
| 偶校验 | 0002 |
| 奇校验 | 0003 |
| 无校验 | FFFF |
| 无效 | 其他值 |
使用MODUBUS功能码:03 06 16,其他功能码返回错误码。
出厂默认值:无校验位。
4、读卡模式寄存器add=0x0003
向该寄存器写入不同数值以设置不同的模式,模式与数值的对用关系为:
表 3 读卡器工作模式与设置值对应表
| 读卡模式 | 寄存器数值(H) |
|---|---|
| 标准MODBUS | 0001 |
| Continue Read Mode | 0003 |
| Read Once Mode | 0004 |
| 标准MODBUS | FFFF |
| 无效 | 其他值 |
模式功能定义:
标准 MODBUS:标准的MODBUS RTU通信模式,一应一答
Continue Read Mode:设置为这种模式后,从设备只要收到一次MODBUS查询指令,从设备会一直执行该指令,并且从设备将会发送成功读取到的数据,直到发命令改变这种模式。
Read Once Mode:设置为这种模式后,从设备只要收到一次MODBUS查询指令,从设备会一直执行该指令,并且从设备将会发送成功读取到的数据,直到发命令改变这种模式。但同一张RFID卡只能连续读取一次,即读取到A卡,发送读取到数据,再读取A卡,不再发送数据,直到读取B卡后,方可继续读取A卡。
使用MODUBUS功能码:03 06 16,其他功能码返回错误码。
出厂默认值模式:标准MODBUS
6、RFID标签状态标志寄存器 add=0x0004
表 4 RFID标签状态寄存器
| RFID状态 | 寄存器数值(H) |
|---|---|
| 读卡范围内存在标签 | 0001 |
| 读卡范围内没有标签 | 0000 |
标签状态标志寄存器用于快速查询读卡器的感应范围内是否存在可读的RFID标签。
如果该寄存器值为0x0001,则读卡器感应区内有标签;
如果寄存器值为0x0000,则读卡器感应范围内没有标签。
注:在感应范围内没有标签时,如果对标签进行读写操作,读卡器将无法正常完成操作。如没有标签时,读操作后会返回的寄存器数值为0。
7、读写状态寄存器add=0x0005
表 5 读写状态寄存器
| 读写状态 | 寄存器数值(H) |
|---|---|
| 读写操作无误 | 0000 |
| 读操作出错 | 0001 |
| 写操作出错 | 0002 |
读写状态寄存器用于显示读写操作后的状态变化,该寄存器只读。如果进行读操作,读操作过程出错则该寄存器值为0x0001,如果进行写操作,写操作过程出错则寄存器值为0x0002。如果读写操作过程均无误,则寄存器值为0x0000。
其中,单独发送读写操作查询命令(02 03 00 05 00 01 94 38),即只查询该寄存器时,读卡器返回的寄存器状态为上一次读写操作的状态,而不显示该查询命令的读写状态。
表 6 读写状态查询命令
| 操作 | 状态 | 寄存器数值(HEX格式) |
|---|---|---|
| 发送 | 查询命令 | 02 03 00 05 00 01 94 38 |
| 接收 | 读错误 | 02 03 02 00 01 3D 84 |
| 写错误 | 02 03 02 00 02 7D 85 | |
| 读写无误 | 02 03 02 00 00 FC 44 |
当读操作错误时,返回的寄存器数值均为0,如发送指令02 03 00 06 00 04 A4 3B查询卡ID时,如果无卡则为02 03 08 00 00 00 00 00 00 00 00 9A 93。
其中当读操作中包含读写状态寄存器时,返回的数值中,读写状态寄存器状态为上一次读写操作(非读写操作查询命令操作)的状态。 相关的读操作查询读写状态寄存器流程如下:
图1 读操作查询读写状态寄存器流程
在进行相关的读操作时,接收回来的数据在若为0,则存在读操作产生错误,或者所读取的数据本身为0两种情况。通过发送查询读写状态寄存器状态指令,根据读取状态寄存器的值判断上一次读操作是否正确,读写状态寄存器值为0x00则表明读操作无误,值为0x01则表明读操作出现错误。 相关的写操作查询读写状态寄存器流程如下:
图 2 写操作查询读写状态寄存器流程
用户进行写数据操作时,接收读卡器应答后,可发送读写状态寄存器指令来获取上一次写操作是否正确执行,读写状态寄存器值为0x00则表明写操作无误,值为0x02则表明写操作出现错误。
二、RFID标签地址分配
RFID标签数据地址分配如下表:
表1 RFID标签数据地址分配表
| UID地址 | addr=0x0006 | addr=0x 0007 | 只读 |
|---|---|---|---|
| addr=0x 0008 | addr=0x 0009 | ||
| 用 户 数 据 | addr=0x 000A | addr=0x 000B | 读写 |
| addr=0x 000C | addr=0x 000D | ||
| ... | ... | ||
| ... | ... | ||
| addr=0x 4103 | addr=0x 4104 | ||
| addr=0x 4105 | addr=0x 4106 |
注:
最大可支持8K Byte容量标签的读写操作。标签根据不同型号有不同的容量值,具体可参考标签的数据手册。
UID数据区RFID标签的出厂ID存放区,数据为只读,UID长度为8bytes,地址范围0x0006~0x0009。
地址addr=0x000A至addr=0x4106为用户数据寄存器,用户可对这些寄存器进行读写操作。