西门子6ES7222-1EF22-0XA0详细解读
本文以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[I];
//读串口缓冲区数据并写入数组
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、引言
传统的远程监控只具备数据采集功能,在需要实时控制和数据处理时,会显得力不从心。PLC 作为工业控制的核心部件,其在网络、通信等方面的能力越来越强,具备远程监控要求的数据采集、实时控制和数据处理功能。随着国产 PLC 市场占有量的提升,PLC 的价格也比以前更具优势,使用 PLC 做 DAS系统或者用 PLC 平台开发数据采集系统将是大势所趋或者说相当有吸引力的选择。德维森公司的 V80 小型 PLC 在供热、交通监控、楼宇监控等行业有许多的成功应用.
下面以其在东北某供热网监控为例说明 PLC 在数据采集和远程监控行业中的应用。
2、远程监控系统
供热网远程监控系统的示意图如下:
图 1 供热网远程监控系统示意图
V80 系列 PLC 采集现场每个换热子站的温度、压力、流量,并根据采集数据进行供热流量的控制,以达到节能的目的。根据室外气温的变化,通过调节一级管网电动阀门的开度来及时控制二级管网的回水温度,通过调度给定的控制曲线,保证每个换热站的运行参数始终在给定的范围内。同时,中央监控室根据需要调度和遥控子站的电动阀门,调整运行参数。系统配置 GPRS DTU,可以实现温度的控制、补水泵变频的远程控制。上位机选用组态王组态软件,与数据库结合起来,对所有数据进行存储和分析,并可以配合优化软件进行优先控制。
3、PLC 特点
图 2 V80 系统结构示意图
针对前面提到的各种问题,本文提出了一个更为优胜的方案,其特点如下:
1、 网络通信功能
V80 系列 PLC 可同时支持 2 个以上的通信口,可利用 RS485 通信口组建控制网络,把多台 V80 小型 PLC 组进同一个现场总线网络内,主控 PLC 上连接一个 GPRSDTU 模块,为监控网络提供透明的上网通道。选用 GPRS DTU 代替无线 RTU 可以大大降低成本,在敷设了电话线的地方可选用 Modem,使整个系统的造价达到优。
2、CPU 模块功能
M32DT 模块是 16 路数字量输入和 16 路晶体管输出的 CPU 模块,本身带有两个通信口,一个 RS232 和一个 RS485,内部带 MODBUS 主从通信协议和 FREE 通信协议,可以与各种 HMI 或者各种组态软件通信,通信协议库文件使各厂商自行开发上位机软件提供了诸多便利。
M32DT 内带 FLASH 存储器,可将各种参数存储在本地,还带有掉电保持功能,从而保证使用的可靠性和便利性。高速运算速度和完备数学运算能力使其更适合通信和模拟量处理环境。
3、抗干扰能力强
整个系统的宽温和宽电源供电设计使其可以在恶劣的环境中游刃有余,V80 系列产品已通过 CE 认证。
4、 编程简单方便
V80 系列 PLC 的编程语言支持 IEC61131-3 标准,可以方便编程。同时,支持在线编程,也就是在运行态下可以进行程序修改和调试,为监控现场的在线升级和扩展提供方便。
5、
V80 系列 PLC 比同样点数的数采模块具有价格优势,而且其图形化编程功能使其成为一个强有力的分布式监控平台。
4、结论
本文以供热网的远程监控为例,介绍了 V80 系列 PLC 联网、通信协议与第三方产品集成特点,说明 V80 系列 PLC 在数据采集和远程监控行业中的应用,实际运行结果表明 V80系列 PLC 是客户将采集、控制、远程监控合而为一的理想选择。