西门子6ES7223-1BL22-0XA8正规授权
本文以EMS(EscortMemorySystems)的RFID射频识别读写器LRP830为例,分别介绍了可编程控制器及微机与RFID射频识别读写器进行串行通讯,从而读取标识数据的具体实现方法:PLC通过串行I/O通讯协议与RFID读写器实现串行通讯,PC通过bbbbbbs多线程技术与RFID读写器实现串行通讯。文中给出了实例。RFID射频识别在我国的应用才刚刚开始,前景非常广阔。本文所述方法具有一定代表性,对于推动RFID射频识别技术在工业自动化等领域的应用,具有一定的积极意义。
RFID射频识别系统简介
RFID的全称是RadioFrequencyIdentification,即射频识别,它利用无线电射频实现可编程控制器(PLC)或微机(PC)与标识间的数据传输,从而实现非接触式目标识别与跟踪。
一个典型的RFID射频识别系统包括四部分:标识、天线、控制器和主机(PLC或PC),系统结构图见图1。
图1RFID射频识别系统结构图
标识一般固定在跟踪识别对象上,如托盘、货架、小车、集装箱,在标识中可以存储一定字节的数据,用于记录识别对象的重要信息。当标识随识别对象移动时,标识就成为一个移动的数据载体。以RFID在计算机组装线上的应用为例,标识中可以记录机箱的类型(立式还是卧式)、所需配件及型号(主板、硬盘、CD-ROM等)、需要完成的工序等。又如在邮包的自动分拣和跟踪应用中,可以在标识中存储邮包的始发地、目的地、路由等信息。
天线的作用是通过无线电磁波从标识中读数据或写数据到标识中。天线形状大小各异,大的可以做成货仓出口的门或通道,小的可以小到1mm。
控制器用于控制天线与PLC或PC间的数据通信,有的控制器还带有数字量输入输出,可以直接用于控制。控制器与天线合称读写器。
PLC或PC根据读写器捕捉到的标识中的数据完成相应的过程控制,或进行数据分析、显示和存储。
本文即以具有代表性的美国EMS(EscortMemorySystems)公司的13.56MHz无源RFID射频识别读写器LRP830为例,介绍了PLC及PC与RFID读写器进行串行通讯,从而获取标识数据,用于控制或数据处理的具体实现方法。
RFID射频识别读写器的命令集及串行通讯协议
以LRP830读写器为例,LRP830是EMS13.56MHz无源系列射频读写器中的一种,它的标识和天线可以在水下或高温腐蚀环境中正常工作,可以一次读写99个标识,大读写距离63.5cm。它带有两个串口,一个DeviceNet接口,4个DI隔离输入,4个DI隔离输出,保护等级IP66,NEMA4封装,非常适合于在工业自动化中应用。
LRP830读写器上的串口是合在一起的,通过专用电缆可以分接出COM1和COM2两个串口,两个串口作用不同,COM1用作通讯口,从PLC或PC接收命令并返回响应数据,可以配置为RS232、RS422或DeviceNet接口。COM2用于配置系统参数(如读写模式、波特率等)或下载系统升级程序。
LRP830可以与所有EMS的FastTrackTM系列无源标识结合使用,每个标识中可以存储48个字节的数据,另外还有8个字节用于存储只读的唯一的序列号(出厂前由厂方设定)。
LRP830提供了单标识读写命令集(见表1),多标识读写命令与此类似。
表1单标识命令集
每种命令可以有三种通讯协议:ABxS、ABxF、ABxASCII。表2是ABxS通讯协议持续读单标识命令的一个例子,其它命令与此类似。
表2ABxS协议持续读单标识命令举例
RFID读写器与PLC串行通讯
以EMSRFID读写器LRP830与GEFanucVersaMaxPLC的串行通讯为例。VersaMaxPLC的RS232串口与LRP830的COM1接线对应关系见表3。
表3VersaMax与LRP830读写器的串口接线对应关系
通过PLC控制RFID读写器读写标识数据的实现流程如图2所示。
图2PLC读写RFID标识数据的程序结构框图
以下是具体实现时要注意的技术细节:
1)LRP830与VersaMaxPLC的串口相连时,信号线要错线,即VersaMaxRS232口的TXD/RXD要接LRP830的COM1的RXD/TXD,LRP830与PC连接时则是直通的。
2)PLC使用串行I/O通讯协议与RFID读写器通讯。串口初始化、设置缓冲区、清除缓冲区、写串口、读串口状态等操作都是先通过一组BLKMOVWORD指令给COMMREQ的数据块赋值,然后执行COMMREQ指令完成的。例如,以下语句(见图3)通过RFID读写器写10个FF(46H)到标识中,从个字节写起。
图3PLC与RFID读写器串行通讯例程
3)要注意PLC写标识数据只需要执行写串口命令就可以了,而PLC读标识数据的过程则包含两步:一是PLC执行写串口命令,即写读标识命令到RFID读写器;二是PLC执行读串口命令,捕捉RFID读写器返回的数据。这是由于RFID读写器在接到读标识命令后,会返回读命令的响应信息到串口缓冲区,其中包含了读到的标识数据。
4)使用ABxS协议时,要注意命令字的MSB和LSB的顺序问题。RFID读写器与PLC通讯时,要将读写器指令的MSB和LSB颠倒一下,即LSB在前,MSB在后。例如图3中,第二个BLKMOVWORD指令的第三个输入IN3应为16#4AA,而非16#AA04。
5)利用读写器指示灯的变化辅助PLC程序调试。LRP830读写器的面板上有两排LED指示灯,其中,当“ANT”亮时,表示天线在执行读写操作;“COM1”亮时,表示串口1执行了写命令,“RF”亮时,表示有标识被读写且仍在读写范围内。
RFID读写器与PC串行通讯
仍以EMSRFID读写器LRP830为例。与PC机相连时,LRP830的COM1/COM2与PC机的9针串口
COM1/COM2的连接对应关系见表4。
表4LRP830的串口与PC串口连接对应关系
在PC机上开发串口通讯程序,可以使用现有的通讯控件(如VB的Mscomm),也可以使用编程语言结合bbbbbbsAPI实现。本文用Delphi6在bbbbbbs2000环境中,应用多线程技术实现了PC与RFID读写器间的串行通信。使用Delphi的优点是,Delphi对许多bbbbbbs底层API函数作了封装,简化了程序代码。使用多线程的优点是,程序编写比较灵活,而且串口监听线程不影响主线程其它任务的执行。程序结构框图见图4。
图4PC与RFID读写器串行通信程序框图
在具体实现上述思路时,要注意以下技术细节:
1)根据RFID读写器通讯协议的特点,读写器每执行一个主机发来的指令,无论是读标识还是写标识,都会返回一定字节的响应数据,用以确认命令已执行或返回标识中存储的数据。因此,主机读或写标识数据都需要先写(串口命令)后读(返回的串口数据)。
2)为了使程序体现模块化的设计思想,易于调试和维护,可以把各种RFID命令预先存入命令数组中,而把主机对RFID串口的命令和捕捉RFID读写器命令响应编制成单独的子程序,在调用它之前,先调用命令字赋值子程序。
3)对主线程的说明:在主线程中用CreateFile函数建立串口事件,设置缓冲区和通信参数,创建串口监听线程。用WriteFile写串口函数完成通过RFID读写器写数据到标识中。部分程序如下:
hcom:=CreateFile(pchar(Whichcom),GENERIC_WRITEOrGENERIC_READ,
0,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);//产生串口事件
setupcomm(hcom,TOTALBYTES,TOTALBYTES);//设置缓冲区
getcommstate(hcom,lpdcb);
lpdcb.BaudRate:=BAUDRATE;//波特率
lpdcb.StopBits:=STOPBIT;//停止位
lpdcb.ByteSize:=BYTESIZE;//每字节有几位
lpdcb.Parity:=PARITY;//奇偶校验
setcommstate(hcom,lpdcb);//设置串口
Mycomm:=Tcomm2.Create(False);//创建串口监听线程
WriteFile(hcom,WriteBuffer,sizeof(WriteBuffer),lpBytesSent,0);//写标识命令
……
4)对串口监听线程的说明:
程序中用到的方法主要有Synchronize和Terminate。Synchronize是Delphi提供的一种安全调用线程的方法,它把线程的调用权交给了主线程,从而避免了线程间的冲突,这是一种简单的线程间同步的方法,可以省去用其它语言编程时需要调用的多个bbbbbbsAPI函数,例如createEvent(创建同步事件),Waitforsinglebbbbbb(等待同步事件置位),resetevent(同步事件复位),PostMessage(向主线程发送消息)等。用Delphi编写多线程通讯程序的优点是显而易见的。例如以下语句即可实现串口监听线程:
While(notTerminated)do//如果终止属性不为真
Begin
dwEvtMask:=0;
Wait:=WaitCommEvent(hcom,dwevtmask,lpol);//等待串口事件
ifWaitThen
begin
Synchronize(DataProcessing);//同步串口事件
end;
end;
上述程序一旦检测到串口事件,就调用DataProcessing方法读串口数据,并写入数组,供程序其它部分调用,另外还要检测何时退出线程,程序如下:
procedureTmainbbbb.DataProcessing
begin
bbbbb:=bbbbbCOMMERROR(hcom,lperrors,@comms);//清除串口错误
ifbbbbbThen
Begin//处理接收数据
ReadFile(hcom,ReadBuffer,Comms.cbInQue,LPReadNumber,0);
ReceBytes[I+ArrayOffset]:=ReadBuffer;
//读串口缓冲区数据并写入数组
gameover:=(ReceBytes[I+ArrayOffset-1]=Byte($FF))
and(ReceBytes[I+ArrayOffset]=Byte($FF));//终止条件
ifgameoverthenterminate;//退出线程
……
End;
End;
其中,Terminate将线程的Terminated属性设置为True。线程一旦检测到Terminated属性为True,就会结束线程,去执行Onterminate事件,在Onterminate事件中对采集到的RFID标识数据进行处理。由于RFID读写器的ABxS协议的命令响应的后两个字节都是FF,所以可以将收到连续的两个FF作为终止线程的条件之一。
程序应用举例:
以持续读标识中所有48字节数据命令为例,在程序中用WriteBuffer数组保存该命令,对WriteBuffer数组的各个元素赋值如下:
WriteBuffer[0]:=Byte($AA);WriteBuffer[1]:=Byte($0D);//连续读标识命令字头
WriteBuffer[2]:=Byte($00);WriteBuffer[3]:=Byte($00);//从个字节开始读
WriteBuffer[4]:=Byte($00);WriteBuffer[5]:=Byte($30);//读48个字节数据
WriteBuffer[6]:=Byte($00);WriteBuffer[7]:=Byte($02);//延时2秒
WriteBuffer[8]:=Byte($ff);WriteBuffer[9]:=Byte($ff);//连续读标识命令字
执行持续读标识命令后,程序以WriteBuffer数组写串口,RFID读写器执行此命令,并返回响应数据。
图5持续读标识命令执行结果
从图5窗口中可以看到,前4个字节AAODFFFF就是LRP830读写器对持续读命令的确认信息,然后是数据报文头AAOD和标识中48个字节的数据(每字节数据前加00),后是数据报文尾FFFF。
结束语
本文介绍了可编程控制器及微机与RFID射频识别读写器进行串行通讯,从而获取标识中的数据的具体实现方法:PLC通过串行I/O通讯协议与RFID读写器实现串行通讯,PC通过bbbbbbs多线程技术与RFID读写器实现串行通讯。本文所述方法具有通用性,对于其它厂家的PLC和RFID系统也有一定的参考价值。RFID射频识别技术在我国工业自动化等领域的应用才刚刚开始,前景非常广阔。本文对于促进该技术的推广应用具有一定的积极意义。
摘要:随着科学技术的发展,可编程序控制器PLC在工业控制中的广泛应用,它的可靠性直接关系到工业企业的安全生产和经济运行.而PLC控制系统的抵抗干扰的能力是整个生产系统可靠运行的关键.目前,各种类型的可编程序控制器PLC一般集中安装在集控室或是生产现场,它们大都处在强电电路和强电设备所形成的恶劣电磁环境中.所以,要提高PLC控制系统的可靠性,一是需要PLC生产厂家提高PLC硬件的抗干扰能力,二是需要工程设计人员充分利用PLC组态软件来消除干扰,这样才能有效地增强系统的抗干扰的性能.
关键字:抗干扰的方法
引言:
PLC控制系统由于具有功能强、程序设计简单、扩展性好、维护方便、可靠性高、能适应比较恶劣的工业环境的特点,因此在工业企业广泛应用.但是由于工业环境条件恶劣,以及各种工业电磁,辐射干扰等,影响PLC控制系统的正常工作,因此必须重视PLC控制系统的抗干扰设计.为防止干扰,可以采用硬件和软件相结合的抗干扰方法. 防止硬件干扰的方法有:1采用性能优良的电源来抑制电网引入的干扰2电缆的选择与铺设来降低电磁干扰3完善接地系统4采用光电隔离来抑制输入输出电路引入的干扰等.而利用PLC软件来减少干扰是PLC控制系统正常、稳定工作的重要环节.下面主要分析在生产实践中应用的利用PLC组态软件来减少干扰的方法:
一、减少数字量输入扰动的方法
1、 计数器法
CON—计数器
NOT—非门
RS—复位优先触发器
IN—输入
OUT—输出
N—脉冲采样个数
注释:当外部有信号输入时,控制系统采集连续的N个脉冲使RS触发器输出为“1”,只有当外部输入信号由“1”变成“0”时,RS触发器的复位端为“1”,将RS触发器的输出复位成“0”。而当有瞬间干扰脉冲时,CON计数器将采集不到连续的N个脉冲,CON计数器无法输出,这就起到了减少干扰的作用。(N一般情况下取2)
优点:响应速度快,对周期性的瞬时干扰起到了一定的抑制作用。
缺点:不能消除超过CON计数器采样时间的干扰。
2、延迟输入法
IN—输入
OUT—输出
TIME(ET)—延时时间
TON—延时输出(其曲线如下图)
注释:当输入IN=1时,启动计数器直到计时时间(PT)=延时时间,OUT=1。当计数器计时时间〈延时时间,OUT=0。延时时间好取1S以内。
优点:消除了短时的周期干扰。
缺点:响应速度慢,不利于信号的快速传输。
二、减少模拟量输入扰动的方法
1、限幅法
MOVE—移动保持指令(使能端EN=1,OUT=IN。EN=0,OUT保持前次值)
GE—大于等于指令(OUT=1,IF IN1≥IN2)
LE—小于等于指令(OUT=1,IF IN1≤IN2)
HL—上限设定值
LL—下限设定值
注释:当模拟量输入信号在HL和LL之间时,OUT=IN。当IN-AI信号超出或等于HL或LL时,GE或LE判断IN-AI信号,使OUT1或OUT2输出“1”去封锁MOVE,从而保持MOVE的输出为HL或LL的设定值。也就起到了限幅的作用。
优点:能有效克服因偶然因素引起的脉冲干扰。
缺点:平滑度差。
2、延迟滤波限幅法
MOVE—移动保持指令(使能端EN=1,OUT=IN。EN=0,OUT保持前次值)
GE—大于等于指令(OUT=1,IF IN1≥IN2)
LE—小于等于指令(OUT=1,IF IN1≤IN2)
HL—上限设定值
LL—下限设定值
LG—延迟滤波指令(其曲线如下图)
TIME—延迟滤波时间
注释:功能基本和限幅法相同,只是在输入端增加了一个延迟滤波器,对输入信号起到了延迟缓冲的滤波。
优点:有效地抑制了周期性的脉冲干扰。平滑度比限幅法有所改善。
缺点:信号响应速度减缓。
3、延迟滤波比较法
LG—延迟滤波器
SUB—减法指令
ABS—值指令
GE—大于等于指令
HL—大偏差值
TIME—延迟滤波时间
注释:正常情况输入信号IN-AI经过一阶延迟滤波后直接输出,OUT=IN-AI的值;当有突变信号时,输入信号IN-AI经过一阶延迟滤波后与含有突变信号的输入信号IN-AI相减取值(无论出现正偏差还是负偏差),与HL值比较,若大于等于HL的预设值,OUT1=1,将LG—延迟滤波器切换成跟踪状态,此时OUT就保持了输入信号IN-AI突变前的值。直到突变信号减弱,OUT1=0,OUT=IN-AI。
优点:对周期性干扰具有良好的抑制作用。平滑度高。
缺点:灵敏度取决于TIME—延迟滤波时间的大小。
4、积分消抖滤波法
LG—延迟滤波器
SUB—减法指令
GE—大于等于指令
LE—小于等于指令
OR—或门(自做的DFB功能块)
NOT—非门
TON—延时输出
EOR—异或门
MOV—移动保持指令
PI—比例积分调节器
HL—大正向偏差值
LL—大负向偏差值
TIME—延迟滤波时间
TIME1—延迟输出时间
TIME2—延迟滤波时间
注释:参数设置:LG(TIME=1S),TON(TIME1=10S),LG1(TIME=30S),HL=0.2,LL=-0.2 ,PI(TI=10S,将P放开封锁成为纯积分调节器)
一、 小信号在变化幅度中变化时
1、 终状态:此时为稳态,输入与输出相近。OR输出为“0”,NOT=1,TON时间已超出10S,EOR=0,MOV不保持,PI不积分,SUB=0,信号走PI的跟踪回路,LG1滤波后输出。正常的信号流向:IN→LG→PI的跟踪→LG1(滤波30S)→输出
2、 小信号的暂态变化:(在TON=10S之前)OR=0,NOT=1,TON未到10S,EOR=1,MOV保持,PI积分作用,LG1未起作用,输出跨越LG1(TIME=30S),直接到输出端,此时为线性跟踪滤波状态。
二、 信号大幅度变化时(≥HL,≤LL)
OR=1,NOT=0,TON不起作用,EOR=0,所以LG1(TIME=30S)不起作用,PI不起作用走跟踪。正常的信号流向:IN→LG→PI的跟踪→LG1的跟踪→输出
三、 总结:
1、 小信号在10秒之内,经过LG(TIME=1S),PI的积分作用,跳过LG1(TIME=30S),直接输出,实现输入信号的滤波和跟踪状态。
2、 小信号在10秒之后,经过LG(TIME=1S),PI的跟踪和LG1(TIME=30S)跟踪输入。
3、 大信号变化时,LG(TIME=1S)作用,LG1(TIME=30S)不起作用,此时为输出快速跟踪。
优点: 对于被测参数有较好的滤波效果, 对周期性干扰具有良好的抑制作用,平滑度高。
缺点: 对于变化缓慢的输入信号响应慢。
结束语
上述所分析的方法,均在生产实际中得到检验,取得了一定的效果,并随着生产实际的需要和经验的积累,不断完善其对干扰的软件处理方法。
另付:积分消抖滤波法利用Concept2.6的编程。并且本论文涉及的功能指令块各管脚的用法均参考下图及Concept2.6中文手册。