AGV机器人RFID传感器CK-G06A是一款基于射频识别技术的低频RFID标签传感器,传感器工作频率为125KHZ,同时支持对EMID,FDX-B两种格式标签的读取。传感器内部集成了射频部分通信协议,用户只需通过RS232通信接口接收数据便能完成对标签的读取操作,而无需理解复杂的射频通信协议,CK-G06A型号的为RS485通讯接口。
传感器自带Auto-turning自动调谐电路,在不同环境中工作时能自动调节电路参数,使外部环境对读卡距离的影响降到最小,进一步增强了自身的抗干扰能力, 具有接收灵敏度高、性能稳定、可靠性强等特点。
传感器可广泛应用于物流,仓储管理,过程控制,AGV站点控制等领域机器人。
本文将重点介绍 AGV机器人RFID传感器CK-G06A与西门子1200 PLC的应用与调试!
一、CK-G06A通信连接
1、接线说明
CK-G06A接线说明:
VCC -- 读卡器24V电源
GND -- 读卡器0V
A -- RS485通信口A线
B -- RS485通信口B线
2、通信格式
通信接口:RS485
起始位:1个
数据位:8个
奇偶校验位:无
停止位:1个
波特率:9600
输出编码格式:ASCII码
3、数据格式
传感器同时支持EMID和FDX-B两种格式电子标签,信号输出数据格式如下:
【起始码】+【标签类型码】+【十进制卡号】+【RCC校验】+【结束码】
【起始码】 :1个字节,字符’$’
【标签类型码】:1个字节,’E’为EMID,’F’为FDX-B
【十进制卡号】:15字节,前3字节为国家代码,后12字节为卡号(高位在前)
【RCC校验】 :2个字节,高位在前,低位在后,为前16字节的异或值(不包括起始符’ $’)
【结束码】 :1一个字节,字符’#’
备注:EMID为10位数据编码格式,FDX-B为15位数据编码格式。例如:
1、 传感器输出” $E07300123456789070#”, ’E’是标签类型码,其中” 073”是国家代码,” 00”为补零数据,” 1234567890”为EMID格式编码数据,”70”是异或值
2、 传感器输出“$F91800001234678972#”,’F’是标签类型码,” 918000012346789”为标签编码数据,” 72”是异或值;
二、程序编写
1、硬件选型
PLC:西门子1211C AC/DC/RLY(6ES7211-1BE40-0XB0)
通信模块:西门子CB 1241 RS485 (6ES7241-1CH30-1XB0)
读卡器:CK-G06A
2、软件选型
编程组态软件:TIA Portal V14 SP1
PLC固件版本:V4.2
通信模块固件版本:V1.0
3、组态
3.1、 PLC选型
3.2、通信模块选型
4、参数配置
4.1、通信格式设置
在设备视图内选中CB1241通信板 右键选择属性 在常规选项内点击IO-Link 将其内部属性调整至和CK-G06A的属性一致即可
4.2、接收开始帧
展开组态所接收的消息 点击消息开始 将以任意字符开始 改为以特殊条件开始 选中通过单个字符识别消息开始 在消息开始字符(十六进制)内填入24 (十六进制24在ASCII字符中代表的是$号)
4.3、 接收结束帧
在消息结束选项框内 选中消息超时识别消息结束 再在下方的消息超时框内填入50(该值可根据自身实际情况进行调整)
再移动到下方的5字符消息结束序列 先勾选上方通过字符序列识别消息结束 再勾选检查字符1 填入23(十六进制23在ASCII码内是#号)
5、程序编写
在项目树内选中刚刚新建好的DB块 右键选择属性 在弹出来的窗口内再选中属性 将优化的块访问取消勾选 点击确定
本例程内主要用到的功能指令在 通信→通信处理器→点到点 和 扩展指令→字符串+字符
首先先放置一个PORT_CFG功能块,该功能块主要是初始化通信模块的参数,具体含义可选中功能块后按F1查看。
写完初始化功能块后,就可以进行读操作了,放入一个RCV_PTP功能块。
这里我们主要注意BUFFER参数这里,不能使用String的数据类型。
P#DB3.DBX34.0 BYTE 32代表的是 从DB3程序块内第34个Byte的第0位开始的32BYTE
这里指向的是ReadHex里的32Byte用做接收BUFFER的缓存
程序段3是将数据拷贝到出去准备进行异或校验,并去除掉帧头$帧尾#。
程序段4是获取数据帧中最后那两位RCC校验的值
先从16进制的ASCII码转换成String字符串,再从字符串型转换成16进制,这样就由0X31,0X37转成了0X17
接收完成标志位=TRUE的时候
给RccCheck清零
再FOR 循环15次
RccCheck异或ReadRCC数组进行计算
最后再把ReadOK给复位
将计算出来的RCC值与帧内的RCC值进行对比,一致的话说明传输过程中没有错数据。
再判断帧内FDX与EMID格式,将标志位置为不同的状态,再用上面用过的方法将ASCII码转成16进制进行输出,高位转换出来的时候由于只有7位所以要右移一下。
例:从1230_0450变为0123_0045
注:在该程序中EMID格式的中间两位00对应用没有造成影响,故不去除。各位可根据自己的实际情况将两位补偿的00给剔除掉。
在主函数内将其如图所示使用
REQ :使能端
ID :硬件标识符
EmidOrFdx :卡片格式判断 SET: EMID格式 RESET: FDX-B格式
OutDataL :卡片数据低位
OutDataH :卡片数据高位