6ES7214-2AD23-0XB8实体经营
本文以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射频识别技术在我国工业自动化等领域的应用才刚刚开始,前景非常广阔。本文对于促进该技术的推广应用具有一定的积极意义。
1、引言
水处理是长期以来倍受关注的领域之一,它是改善居民生活环境、提高人民健康水平的重要手段。旋转流管式膜微滤水处理装置是一种新的水处理工艺,它采用OMRONPLC对整个工艺流程进行控制,采用Inbbblution公司的FIX6.1组态软件对整个工艺流程进行动态实时显示,实现了对流量和压力瞬时值的数据采集、显示及曲线记录,以及各种事故的报警控制等功能。
2、系统工艺流程及控制要求
(1)工艺流程
旋转流管式膜微滤水处理工艺流程如图1所示,被控系统有两套净化装置,这两套净化装置不允许工作,当一套处于净化状态时,另一套应处于反冲状态或备用状态。净化时,进水加压泵M1工作;反冲时,反冲加压泵M2工作。不论是在净化状态还是在反冲状态,均有相应的仪表对流量和压力信号进行检测和记录。
(2)系统的控制要求
根据工艺流程,对所设计的控制系统提出以下要求:
①将开关SA打到微机控制状态,在微机控制界面上起动Ⅰ套净化装置,由接触器KM1控制进水加压泵M1(由变频器控制)工作,电磁阀YVX11及YV112、YV113、YV114(后三个阀由KM1通过中间继电器KA1控制)打开,控制Ⅰ套的净化工作。
②Ⅰ套进行净化工作时,通过压力表PIT1、PIT2,流量计FIT1、FIT2、FIT5对其管道中的压力与流量进行监测。当流量计FIT5所检测到的流量值小于某一给定的流量值时,说明Ⅰ套的净化装置由于杂质堵塞而效率过低,此时应使Ⅰ套停止净化,加压泵M1停止工作,电磁阀YVX11、YV112、YV113、YV114关闭;进行Ⅰ套反冲洗,由KM2控制的反冲泵M2工作,电磁阀YVX21、YV122和YV123打开(反冲工作一段时间后自动停止);Ⅰ套反冲洗的起动Ⅱ套净化装置进行净化。
③Ⅱ套装置净化时,由接触器KM1控制的进水加压泵M1(由变频器控制)工作,电磁阀YVX11及YV212、YV213、YV214(后三个阀由KM1通过中间继电器KA3控制)打开,通过压力表PIT3、PIT4,流量计FIT3、FIT4、FIT5对其管道中的压力和流量进行监测,当流量计FIT5所检测到的流量值小于某一给定的流量值时,说明Ⅱ套的净化装置由于杂质堵塞而效率过低,此时应使Ⅱ套停止净化,加压泵M1停止工作,电磁阀YVX11及YV212、YV213、YV214关闭;进行Ⅱ套反冲,由KM2控制的反冲泵M2工作,电磁阀YVX21、YV222和YV223打开(反冲工作一段时间后自动停止);Ⅱ套反冲洗的起动Ⅰ套净化装置进行净化,如此反复循环。
④Ⅰ套和Ⅱ套装置在工作的过程中可通过微机界面上的停止按钮随时可以停止工作,Ⅰ套和Ⅱ套装置也可以单独地进行反冲。
⑤进水加压泵M1通过模拟量输出模块对变频器进行变频调速。
⑥当M1、M2过载或变频器故障时,进行声、光报警,以提示操作人员进行处理。
⑦变频器故障时可给PLC提供相应的控制信号。
⑧必要时,可将电磁阀YVX15打开,使净化装置断水。
⑨考虑到电动机的惯性,系统停止工作时,先停止水泵,短暂延时后再关闭阀门。
图1旋转流管式膜微滤水处理工艺流程图
3、控制系统的设计
(1)控制系统的结构
根据工艺要求,考虑到系统中处理的主要是开关量信号,采用PLC来实现对整个系统的控制;采用组态软件对系统进行显示和监控。
(2)PLC系统设计
本系统采用OMRONC200HE系列的PLC,从系统的输入/输出点数考虑,PLC系统构成如图2所示。
图2PLC控制系统结构
PLC控制系统中包括:8槽CPU底板(C200HW-BCO81-V1)一块,通过内置的总线将各模块连接在系统中;电源模块(PA204)一块;CPU(CPU42-E)一块;16点开关量输入模块(ID212)一块;16点开关量输出模块(OC225)一块;8路模拟量输入模块(AD003)两块,分别对Ⅰ套和Ⅱ套净化装置的压力和流量进行采集;8路模拟量输出模块(DA004)一块,对变频器进行控制,从而对进水加压泵进行控制。
编程软件采用OMRON公司SYSMAC-CPT通用软件包,它可对C200HE系列及其它系列进行编程。SYSMAC-CPT是基于bbbbbbs环境下的编程软件,将它装入上位计算机中,用RS-232通信线和PLC连接,采用梯形图直接对PLC编程和监控,编制的程序可在PLC和计算机之间相互传送或存储在磁盘上。
(3)上位机监控组态软件
本系统采用美国Inbbblution公司的FIX6.1工业控制组态软件,通过RS-232串行通讯口使PC机与C200HE系列的PLC进行通讯。
通过FIX组态软件可以对工艺过程进行实时监控。FIX组态软件是以块为基础的,不同类型的块可以定义多种不同的节点,每个节点承担了一定的控制功能,在整个水处理的工作过程中,要用到模拟数值输入/输出块、数字数值输入/输出块、计算块等。上位机对电磁阀的控制就必须通过数字数值输出块来进行,每个阀门的控制对应了相应的数字输出节点。上位机不仅能接受来自PLC的控制信号并以动画的形式进行显示,还能够通过通讯端口向PLC发出控制命令,对现场进行控制。通过模拟块,上位机通过通讯端口可以从PLC上读取来自控制现场的仪表所采集到的压力和流量的实时数据,再经过计算块的转换,在上位机上将数值实时地显示出来,并对系统出现的故障能及时报警。旋转流管式膜微滤监控界面如图3所示,数据的实时曲线和历史曲线如图4所示。
图3旋转流管式膜微滤监控系统界面
图4数据的实时采集曲线
4、结语
旋转流管式膜微滤是一种新的污水处理工艺,采用本文所设计的控制方案对其进行自动控制,各项指标均达到工艺要求,取得了较好的控制效果。目前,控制系统已调试完毕并投运,运行情况良好。