郑海成 谢云
(广东工业大学自动化学院)
随着我国社会经济的持续快速发展,长时间的站立排队已成为金融机构、电信、医院、政府办事大厅等场所的常见现象,以通信技术与计算机技术为基础的智能排队管理系统应运而生。而传统的排队系统中采用有线叫号终端,并且只有基本的呼叫票号功能,无法应对日益提升的客户功能需求。同时,由于传统叫号器采用都是较为落后的8位单片机处理器,无法应付大客户量、大通信量及复杂的任务调度的需求[1]。
因此,本文设计了一种基于嵌入式技术智能排队叫号终端,由32位处理器代替传统的8位处理器,并通过ZIGBEE通信模块实现无线叫号功能。相对传统叫号器增加票号转移、客户评价、VIP客户特呼等功能,较好的解决了排队系统中存在的几个实际问题。并通过嵌入式操作系统uC/OS-II进行银行任务调度,更好地进行复杂业务的管理。
每个叫号终端作为一个终端节点,通过ZIGBEE模块设置其节点地址,每个叫号终端有自己特定的物理 ID地址(UID、PID、GID、TID)。在主控系统中应用的通信模块选用中心节点模式,有自己唯一的中心节点地址。各个叫号终端通过主从模式与主控系统进行叫号业务通信[2],主控系统通过接收的数据体区分每个叫号终端的物理 ID,从而区分不同窗口发过来的请求信息,叫号终端与主控系统关系图如图1所示。
图1 叫号终端与主控系统关系图
叫号终端与外围设备连接框图如图2 所示。智能叫号终端主要包括处理器主控模块、键盘扫描模块、EEPROM存储模块、ZIGBEE通信模块和液晶显示模块等。
图2 叫号终端与外围设备连接框图
处理器通过UART0接口与ZIGBEE模块连接,与外界进行数据交互,并通过UART1接口与评价器连接,实现每次叫号服务后的评价服务。此外,本设计通过EEPROM的掉电存储功能,给每个叫号终端标识一个唯一的物理ID,每次上电前进行ID验证,此ID地址也在后续的通信格式上作为终端节点的区分地址,从而使主控系统能很好地识别不同窗口的叫号终端发过来的票号申请信息,从而更好地进行票号管理和调度。
如图 3所示,本文的主处理器选用 ST公司的STM32F103VBH6芯片,该芯片基于ARM Cortex-M3 32位的 RISC内核,工作频率最高可达 72MHz[3]。ZIGBEE通信模块选用顺舟科技的SZ05模块,处理器与通信模块通过USART1_TX和USART1_RX引脚连接,在叫号终端中应用的通信模块选用终端节点工作模式(即把通信模块上的DS引脚接地)。
图3 主处理器与外围设备通信电路设计
系统软件结构设计主要包括3部分:叫号终端任务状态优先级设计、叫号业务状态流程设计和叫号终端通信业务数据格式设计。
本设计中,基于uC/OS-II嵌入式操作系统的系统任务优先级划分如表1所示[4]。
表1 叫号终端系统任务优先级划分
由于在uC/OS-II中最多可以支持64个任务,分别对应优先级0~63,其中0为最高优先级,63为最低级。系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个,所以最高优先级任务从5开始。
本设计中,除了Task_Init和Task_Idle任务为系统自带,其他9个任务均由用户创建。Task_Init是系统的第一个任务,对系统时钟和底层设备进行初始化,创建所有事件和其他各项用户任务,并对系统进行监测;Task_Login任务主要完成银行柜台员工的身份登录和发送信息验证,当用户登录后,此任务将一直被挂起,直到有用户退出登录为止;Task_Uart1任务是叫号终端与主控系统进行业务通信,包括叫号、弃号、转移、VIP特呼等业务状态的申请;Task_Uart0相对Task_Uart1优先级略低,是因为此任务是有条件性的,在每次完成办理之后,才调用此任务把通信对象切换成叫号终端与评价器,客户通过评价器进行评价,完成最终业务办理。评价完毕后,此任务将一直被挂起直到下一次业务的办理结束;Task_Timer_QueNum任务主要是通过定时器,每隔十秒定时中断向主控系统发出申请更新排队人数;Task_Timer_Timout任务是在每次由叫号终端向主控系统发送命令申请时,若超过三秒未收到应答,则自动跳转到上一个系统状态;Task_Keyscan任务是整个叫号终端的核心,主要是进行键盘扫描和具体业务流程办理,此任务的具体功能实现将在下一节的业务状态流程进行详细分析;Task_LCD_Dis任务主要负责驱动 LCD16032进行排队人数和工作状态的实时更新;Task_LED任务主要是负责驱动4个LED(分别代表连接或未连接、已连上、通信中、通信完毕)进行当前工作状态的显示;Task_Stat主要负责业务信息的通信,包括客户的评价结果信息等。
本设计中,叫号终端的业务状态流程如图4所示。整个叫号业务共设定了14个全局系统状态变量,此14个系统状态与上述的9个用户任务嵌套运用。而主要的系统状态跳变都在 Task_Keyscan任务中进行。以下是具体系统状态在各任务中的划分:
在 Task_Init任务下,主要包括 SYS_POWER_ON、SYS_WAITING_MODIFY_SIGN、SYS_LID_MODIFYING、SYS_LID_MODIFY_ END四个系统状态,主要完成系统时钟、串口、定时器等初始化。并在此任务中等待三秒,若有任何按键按下,则跳入到修改硬件号中,此设计是为了直接修改不同叫号终端的物理ID,即通过对EEPROM存储器的读写,进行物理ID的更新。
在 Task_Login任务下,主要包括 SYS_CONNECTED_WAIT_LOGIN_UID、SYS_CONNECTED_WAIT_LOGIN_PSW和SYS_CONNECTED_LOGOUT_QUERY三个系统状态,主要负责员工的身份登录和退出操作。
在 Task_Keyscan任务中,主要包括 SYS_CONNECTED_LOGINED_C_UNPROCESS、SYS_CONNECTED_LOGINED_P、SYS_CONNECTED_LOGINED_MOVESERV、SYS_CONNECTED_LOGINED_C_PROCESSING、SYS_CONNECTED_LOGINE-D_SPCALL五个系统状态。主要包括叫号流程中的顺呼、重呼、VIP特呼、转移等功能的具体实现。
图4 叫号业务状态流程图
叫号终端与主控系统的通信数据格式如图 5所示,其中UID为无线网络中的入网设备唯一识别号;PID为端口号;GID为组编号,指明硬件所属组;TID为硬件类型号,这4个ID已被固化到每个叫号终端的EEPROM存储器中,作为不同叫号终端的区别标识号。每次发送数据将直接从存储器中进行读取[5]。
图5 叫号终端与主控系统的通信数据格式
而数据体部分则进一步细分为四位的消息类型和若干参数,消息类型代表不同的业务流程,而后续的参数为特定业务流程下要传输的数据体。例如在“用户登录验证”状态下,发送的数据体为“1001 |UserID | Pwd”。以下为不同业务流程下的数据体部分的具体命令格式,如表2所示。
表2 不同业务流程下的数据体具体命令格式
通信中断接收数据处理流程如图6所示,在通信中断接收部分,对收到的数据包进行校验。首先检测是否有缓冲区存储数据包,若无,则说明上一次中断接收数据未完成,不接收新数据;接着检测包长度是否正确,如果不正确,则说明不是一个完整的数据包,拒绝接收。最后进行帧头帧尾校验,本设计中设置的帧头为AA BB,帧尾为AA CC。经过此校验后进行四个ID的检测,以验证接收对象身份。若以上条件均通过,则为有效数据包,进行数据体存储判断。
图6 通信中断接收数据处理流程
叫号终端所用的主控系统如图7所示。PC机连接ZIGBEE PC终端,设置为中心节点模式;叫号终端接ZIGBEE模块,设置为终端节点模式[6]。
图7 主控系统软件界面示意图
(1)叫号终端根据不同的业务类型,以“消息类型+若干参数”的数据格式发送命令到主控系统;
(2)主控系统接收到叫号终端发送过来的数据后,进行消息类型分析和参数分析,并从数据库调用相关数据发送回叫号终端;
(3)叫号终端接收到主控系统的应答信号后,分析数据体并进行相应的系统状态跳变。
(1)叫号终端向主控系统发送数据体为:11 11 AA BB 05 00 00 00 01 00 02 00 01 00 01 00 01 00 01 00 15 31 30 30 31 7c 31 32 33 30 7c 31 32 33 30 00 AA CC。可分析消息类型为:1001 参数1:1230 参数2:1230。即在用户登录状态下,发送工名为1230,密码为1230的申请验证信息;
(2)主控系统接到数据后,给叫号终端返回应答数据体,具体格式为:2001 | 1 | 员工名称|窗口号|窗口名称;
(3)叫号器接收到主控系统的应答信号后,对数据体进行分离分析,并在LCD上显示员工名称、窗口号和窗口名称信息,如图8所示。并把系统状态跳转到“空闲”状态,从而可以开始叫号业务办理。
图8 叫号终端收到登录应答后的显示界面
本文设计了基于STM32的嵌入式银行排队系统智能叫号终端,并对其硬件电路和软件设计流程进行详细分析,经过与实际主控系统的联合调试和数个银行机构的实际应用表明:本文设计的智能叫号终端具有稳定性好、实时性高、抗干扰能力强的特点,适用于对业务功能和复杂度要求较高的场所,此外也能广泛应用于火车站、证券中心、医院等管理系统中。
[1]姜斯盈.嵌入式排队抽号控制系统设计[J].科学之友,2011,25(52):68-71.
[2]滕丽丽.基于单片机的银行排队系统的设计[J].信息科技,2010,22(9).
[3]STMicroelectronic.STM32F103VB HandBook.[EB/OL].[2011-8].http://www.st.com/internet/mcu/product/164493.jsp
[4]邵贝贝.嵌入式实时操作系统uc/os-II(第二版)[M].北京:北京航空航天大学出版社,2007:39-47.
[5]刘军.例说 STM32[M].北京:北京航空航天大学出版社,2011:220-265.
[6]ZIGBEE Alliance.ZIGBEE Home Automation Certified Products.[EB/OL].[2011-8].http://www.ZIGBEE.org/Products/CertifiedProducts/ZIGBEEHomeAutomation.aspx