0. 引言
在大型生产线上,为了实现流水线自动化,PLC与RFID技术结合的应用不断增加。PLC作为一种高可靠性的控制装置,与RFID进行数据通信,不但可以实现对每一个生产过程的控制与管理,而且可以提高自动化生产流水线的生产效率。
欧姆龙公司的CPM2A/2C、CQM1H、C200Hα、CP1、CJ1及CS1等系列PLC都可以支持无协议通信功能。利用TXD和RXD等指令,通过串行通信端口,PLC与计算机之间、PLC与PLC之间、PLC与各种通信设备之间(如变频器、条形码读入器和串行打印机等)可以进行数据交换,实现通信[1]。本文选用欧姆龙CP1H型PLC,实现与与欧姆龙的V600系列RFID控制器的无协议通信。PLC作为上位机,RFID控制器作为下位机。
1. 系统结构
上位PLC与下位RFID控制器之间有1:1和1:N两种链接模式,1台PLC (上位机)只能连接32台RFID(下位机),本文介绍1:1链接模式。系统中PLC与RFID控制器之间通过RS-422总线连接。上位机与RFID控制器通信时,使用专用的SYSWAY通信协议,上位机优先发送通信指令,RFID控制器接收后,首先分析来自主机的命令,然后对RFID标签进行读写。通信结束后,RFID 控制器返回一个响应代码到主机。SYSWAY通信协议支持1:1和1:N通信。当主机与RFID控制器是1对1连接时,采用1:1方式通信;当连接主机的RFID控制器超过一个时,采用1:N方式通信。在1:N通信模式下,可以通过对RFID控制器设置来实现主机与RFID控制器的1:1通信。
主机CP1H作为上位机,由于PLC与RFID控制器之间选用RS-422方式进行通信,所以CP1H端口1选用插件CP1W-CIF11,为RS-422/485型。RFID(由V600-CA5D02 RFID控制器、V600-H07天线及V600-D23P66N无源标签三部分组成)作为下位机,V600-CA5D02 RFID控制器的机体上分别带有一个RS-232C与RS-422/485串行通信口,都支持与计算机、PLC等主机设备之间的通信。PLC与RFID控制器的接线如图1所示。
图1 PLC与RFID控制器接线
CP1W-CIF11有一组DIP开关,共有8个,SW1表示是否使用终端电阻;SW2、SW3表示通信的连接方式:422或485;SW4为空;SW5、SW6表示通信时有无RS控制。在使用其之前,根据通信的要求对DIP开关进行设定:SW1为ON,使用终端电阻;SW2、SW3为OFF,使用422连接方式;SW5、SW6为任意。
2. 无协议通信及其指令
无协议通信,即不使用重试处理、不经过数据格式的转换处理及具有对应接收的数据进行处理分支等的顺序通信协议。在无协议且无转换的条件下,通过通信端口的输入输出指令(TXD,RXD)发送和接收数据。无协议通信过程十分简单,只需在PLC系统设定中将串行端口的串行通信模式设定为无协议通信。根据无协议通信,PLC就可以与带有RS-232端口或者RS-422/485端口的外部设备,按照TXD和RXD指令进行单方的发送(数据流从PLC到通用外部设备)和接收数据(数据流从通用外部设备到PLC)[2]。无协议通信的实现步骤如图2所示。
图2 无协议通信的实现步骤
使用无协议通信发送和接收消息时,开始代码及结束代码之间的数据用TXD指令来发送,或者是将要插入开始代码及结束代码之间的数据用RXD指令来接收。使用TXD指令发送数据时,应先将数据从I/O存储器读取后发送,使用RXD指令接收数据时,顺序恰恰相反。TXD/RXD一次发送和接收的最大数据量为256个字节。无协议通信时,发送和接收的数据的开始代码和结束代码由用户在PLC系统设定中指定。图3为欧姆龙CP1H型PLC无协议通信的指令结构。
图3 无协议通信指令
TXD指令根据由S指定的发送数据开头CH编号,对由N指定的发送字节长度的数据进行无变换操作。随着PLC系统设定为无顺序模式时的开始代码/结束代码的指定,由C的位8~11输出到指定的串行通信选装件版的串行端口(无顺序模式)。但是只能在发送准备标志(串行端口1:A392.13、串行端口2:A392.05)为ON时才能发送。能发送字节数最大为259字节(数据部最大256字节,包括开始代码、结束代码)。
RXD指令在串行通信选装件板的串行端口(无顺序模式)中,从由D指定的接收数据保存开头CH编号开始,输出由N指定的相当于保存字节长度的接收结束数据。当接收结束数据不满由N所指定的保存字节长度时,输出实际存在的接收结束数据。但是当接收结束标志(串行端口1:A392.14、串行端口2:A392.06)为ON时,执行本指令来接收(来自接收缓冲器的)数据。接收可能字节数最大为259字节(数据部最大256字节,包括开始代码、结束代码)。
3. RFID控制器及其命令集和数据传输协议
V600系列RFID控制器拥有丰富的指令系统,共23条,可以非常灵活的应用于各种场合,其中包括通信命令、一般的通信子命令、主机命令等[3]。通信命令多用于执行与RFID标签的通信,例如,对静止或者是移动的RFID标签进行读写等。通信子命令一般用于取消某个命令的执行,而主机命令则用于主机设备控制 RFID控制器。在上位机与RFID 控制器通信过程中用到最多的是通信命令,常用通信命令的代码及其功能如表1。
表1 RFID常用通信命令表
在1:1的通信模式下,通信过程中不计算校验码,因此,只能通过响应代码来判断通信结果的正确性。图4给出了上位机与RFID控制器之间传输数据的格式。从上位机发送到RFID控制器的数据块为命令帧,反过来,从RFID控制器发送到上位机的数据块为响应帧。每个帧以指令代码开始,以结束符结束,响应帧中还包括反应执行结果的响应码。上位机与RFID 控制器之间可以传送十六进制或ASCII形式的数据,每一帧最大允许传送数据为271个字符。
如果传送的数据大于271个字符,可以将数据分成起始帧、若干中间帧、结束帧进行传送。起始帧必须包含命令码,读/写头号,开始地址等,否则通信的过程中将会有错误发生。上位机每发送完一帧时,在收到RFID 控制器返回的分界符(即“↙”)后再发送下一帧,只有当结束帧数据发送完毕时才返回响应代码。
图4 RFID控制器1:1数据传输格式
4. PLC与RFID控制器无协议通信的实现
4.1 CP1H通信端口设置
PLC与RFID控制器之间使用RS-422方式进行通信。根据RFID控制器通信规格要求,使用欧姆龙编程软件CX-Programmer7.1将CP1H串口1模式设置为“RS-232C”,通信波特率设置9600,数据格式为7、2、E,如图5所示
图5 CP1H通信端口设置
4.2 RFID控制器参数设置
RFID控制器通信参数设置应与PLC通信端口参数一致:波特率9600,偶校验方式,7位数据位,2位停止位。DIP开关SW6为ON,表示使用终端电阻。
4.3 通信举例
通过PLC与RFID控制器之间的通信,编程实现从RFID标签地址0100H开始的通道内读取四个数据,读取的数据存储到PLC的DM区内。根据通信数据传输格式,要发送的数据为RDA1001004*。将要发送的数据转化为16进制数“524441313030313030342A0D” ,存放到DM0开始的6个通道内。这6个通道对应值分别为:DM0:5244;DM1:4131;DM2:3030;DM3:3130;DM4:3034;DM5:2A0D。
PLC与RFID控制器无协议通信程序如图6所示。A392.13为发送允许标志位,当PLC的串口1准备好时,A392.13自动为ON,发送数据指示100.00变亮,则PLC可以通过此端口发送数据。当0.00为ON时,将DM0开始的6个通道的数据发送出去,RFID控制器接收到指令后做出响应。A392.14为接收允许标志位。串口准备好后,A392.14自动为ON,接收数据指示100.07变亮。PLC开始自动接收RFID控制器返回的响应数据,并自动存储到DM100开始的5个通道内。执行程序后查看从DM100开始的5个通道的内容,分别为:DM100:5244;DM101:3030;DM102:3131;DM103:3131;DM104:2A0D。所以接收的数据为:RD001111*,根据数据传输响应帧数据格式,可知从RFID标签读出的四个数为:1111。
图6 PLC与RFID控制器通信程序
5. 结束语
无协议通信是一种简便易行的通信方式,欧姆龙的CPM2A和CP系列等小型机都可以实现[4]。这种通信方式编程灵活,通信可靠性高,是一种比较理想的低成本通信方式。