长距离通信器S1503的应用编程原理
摘要:S1503是瑞典TagMaster AB公司生产的长距离通信器,在自动识别系统中有广泛的应用。本文重点介绍S1503系统结构和应用编程原理,并说明其特点和应用前景。
关键词:S1503 通信器 事件 射频识别
S1503是瑞典TagMaster AB公司生产的长距离通信器,工作频率为2.45GHz,具有圆极化天线波速的读/写工作站;用于读/定CONFIDENT系统中射频识别标签,在车辆收费管理、车场车辆进出口管理以及列车车次识别等系统中有广泛的应用。其主要特点是:①具有6m的长阅读距离;②能进行5m范围内的运动监测;③提供C、Delphi以及VB的驱动接口程序;④具有闪速EEPROM的数据库;⑤提供DTMF及LED接口;⑥提供与主机通信的RS232和2/4线制RS485接口;⑦具有抗EMI的DC/DC转换器;⑧采用24V/12V的工作电源。
javascript:window.open(this.src);" style="cursor:pointer;"/>
图1为S1503的内部结构示意图。
1 系统结构
(1)硬件结构
CONFIDENT自动识别系统一般包括标签(如S1251)、通信器(S1503)以及一台主机。通信器通过RS232/485与主机连接实现通信。通信器与标签 是通过微波实现通信的。
(2)软件结构
javascript:window.open(this.src);" style="cursor:pointer;"/>
图2为软件系统结构示意图。
Confilib:CONFIDENT函数库名。该库中包含几百个通信器管理函数以及ConfiTalk通信协议接口函数,同时提供适合于DOS、Windows3.1以及Windows 95/NT的不同平台要求的Confilib版本。PC平台的Confilib应用程序接口是以C/C++动态连接库DLL的形式提供的,同时也提供Visual Basic、Delphi语言接口,适用于通信器的Confilib是C语言库。这些函数库包含诸如阅读、写入、格式化标签,读、写、检索数据库,软、硬件设置,读、写I/O接口,发送、接收ConfiTalk命令,定时器,缓存区管理和邮件管理等函数。
ConfiTalk:标准通信协议。该协议规定通信器传送和接收数据、处理数据流、重复传送、校验以及数据透明的方式。该协议还可用于点对点通信和多点网络通信,并采用查询方式。信息帧结构为:
STX | ADR | MESSAGE | CS | ETX |
STX:起始符;ADR:地址及序列;MESSAGE:需要传送的数据;CS:校验和;ETX:结束符。
用户可自己编写通信协议来替代ConfiTalk。javascript:window.open(this.src);" style="cursor:pointer;"/>
Pyramid:S1503出厂时预装的标准应用程序。安装了Pyramid的S1503在阅读到标签或检测到运动时,能够自己作出判断和决定;同时S1503也可以通过串行接口接收并执行CohnfiTalk命令。Paramid有四个运动模式:On、Off、Read beep以及Program beep。在On模式下,S1503可单机运行,内置在S1503中的数据库保存着注册标签的信息,当阅读到标签或检测到运动时,应用程序改变继电器、发光管和蜂鸣器的状态。应用程度同时还可以将记录信息通过邮件发送到主机。Off模式时,通信器处于被动运行状态,这时由主机利用ConfiTalk命令控制通信器S1503,Pyramid总是听取主机的ConfiTalk命令和邮件信息。通信器不产生记录内容,不作任何动作。当需要主机通过串行口利用Confilib命令(远程函数调用)控制通信器时,采用这种模式。Read beep模式是用来在安装通信器时确定其阅读区域的。在Read beep模式下,通信器每读到一个标签,就发了同一个短暂的蜂鸣,但阅读的标签不会被记录。Program beep模式是用来确定通信器的写标签区域。在该模式下,Pyramid不断地尝试给标签写信息,每写完一组信息后,程序发出短暂的蜂鸣。
2 编程控制原理
开发S1503系统软件的工具包括编译器、装载器、驱动程序和函数库等。利用交叉编译器Conficomp,可以在PC平台上开发、调试通信器应用程序,然后利用Confiload下载软件,将通信器应用程序下载。PC机应用程序可以利用任何软件进行开发,包括使用Confilib函数库。
在CONFIDENT系统中,如何编程控制通信器是关键,有四种控制方式可供参考。
(1)通信器应用程序
该方式是用用户在Confilib库函数基础上编写的应用程序取代标准通信器应用程序Pyramid,所有逻辑判断均由用户所编写的通信器应用程序完成。主机可不定期地连接到通信器上读取通信器记录信息,并更新通信器数据库。该方式的优点是运行速度快,可单机运行;缺点是需要PROM写入器,缺少方便的界面。
(2)利用Confilib命令的主机应用程序
在该方式中,通信器S1503完全由利用Confilib库函数或其它软件开发的主机程序控制,系统智能部分在主机,通信器不做任何逻辑判断。当主机应用程序调用Confilib函数时,自动将Confilib命令翻译成ConfiTalk命令,然后传递给S1503。S1503根据该命令招待对应的Confilib命令。这种方式的优点是:与通信器应用程序Pyramid控制方式相比,拥有更加方便的界面,主机应用程序更加便于开发、调试;缺点是执行速度慢。
(3)主机应用程序与Pyramid通信javascript:window.open(this.src);" style="cursor:pointer;"/>
这种方式与第二种方式相似。主要区别在于主机与S1503的标准应用程序Pyramid通信,而不是直接同Confilib通信。主机程序与通信器标准应用程序通过互送邮件实现通信。采用这种方式的优点是:主机应用程序简单,部分逻辑判断可交给通信器应用程序,从而获得较快的运行速度;缺点是:Pyramid邮件不支持写标签和数据库管理功能,不过,这些功能可通过Confilib/Confitalk命令实现。
(4)用户协议
这种方式除了通信器中的Confilib之外,所有软件均由用户编写,当系统使用ConfiTalk以外的协议时,采用这种方式。该方式的优点是:可实现通信器ConfiTalk以外的协议通信;缺点是编写程序量大,开发周期长。
3 应用编程
事件是指正常程序运行以外不定期发生的事情。事件可来自外部(如按键),也可以来自内部(如定时器)。S1503程序库的核心是一个称作事件器的模块,其绝大部分应用是由事件驱动的。Confilib库中有七个模块产生事件,可能产生的事件包括:DTMF(双音多频接口输入)、Push_Button(通信器控制盘上的按键被按下)、Doppler_Radar(多谱勒雷达检测到运动物体)、Par_In(并行输入口输入)、Timer(设置的计时器到达时间)、Tag(成功阅读到一个标签)、Tamper_Switch(防护开关动作)、Null_Event(自上次查询后,没有事件发生)、Reset_Event(系统复位)。防护开关除外,其它所 有事件模块必须经过初始化后才能够产生事件。当事件产生时,系统及时响应并存入通信器事件处理器,应用程序通信调用Bsw_Event_Handler_Get_Event()从通信器读取事件;若有事件发生,调用以上函数返回其事件类型、相应数据;若无事件发生,返回Null_Event。因此,应用程序应是一个等待事件的死循环。当事件发生时,应用程序调用适当的事件处理程序来响应该事件。应用程序流程如图3所示。
4 通信编程
通信器S1503与主机进行通信交换信息,有三种方法:①利用CONFIDENT库函数所支持的动态缓冲区;②利用公司所提供的串行通信接口字节级设备驱动函数来自定义的通信协议;③利用CONFIDENT软件库提供的邮件交换系统。在S1503的实际应用中,邮件交换系统应用十分广泛。
javascript:window.open(this.src);" style="cursor:pointer;"/>