刘骥宇,王秋艳
(商丘师范学院 软件学院,河南 商丘,476000)
煤矿井下开采作业是危险系数较高的一项工作,由于长期以来煤矿安全投入明显不足,煤矿企业安全装备严重缺乏,安全管理手段极其落后,不能及时反映井下人员的情况。在事故发生时,不能及时、准确地得到井下人员的信息,从而无法做出正确的决策,以致抢险不及时,贻误了对生命的抢救。因此,国内外一些公司正在加紧进行人员自动定位系统的研发。
国内外的一些主流煤矿井下人员定位系统大多只关注了井上对井下人员的检测和考勤,这需要借助事先铺设好的线路,一旦发生矿难,这些线路很难得以保全,因此,急需一套便携系统,作为整个井下人员定位系统的辅助,在线路被毁坏的情况下,借助无线手段在井下进行矿工的精确定位和搜寻工作。
该便携系统以工程用PPC为基础进行二次开发而成。通过自行设计的数据采集PLC和上位机软件,完成对员工所携带的射频识别卡的搜索和呼叫。
PPC(Pocket PC)是一种基于 Windows CE 操作系统的掌上电脑,它具有体积小、携带方便、操作方便等优点,而且多数PPC配有串口,通过编写串口通信程序,可以使用PPC去控制数据采集PLC。在本便携系统中,PPC为上位机,数据采集PLC为下位机,他们之间的通信采用命令/响应方式,下位机不能主动发起与上位机的通信。采集的数据存储在嵌入式数据库SQLite中,搜索定位软件则使用EVC4.0进行开发,界面友好,便于操作。
Windows CE是专门为信息设备、嵌入式应用等设计的一种压缩的、高效的、可升级的操作系统。针对硬件资源有限,设计了多线程、多任务、全优先的操作环境。它具有Win32子集API,但是其中处理通信的API却很丰富,可以在Windows CE下开发优秀的通信软件。
需要注意的是,Windows CE不支持Windows下常用的串行通信重叠I/O,因此,不要从主线程读写大量的串行数据,这些线程还负责处理用于它们窗口的消息队列。不能因为读大量的串行数据而受到阻塞,所以应用单独的专有线程来读写串口。
本系统采用Windows CE下软件开发工具Embedded Visual C++(EVC)进行软件开发,EVC是Microsoft公司推出的Windows CE程序的可视化开发工具,是Embedded Visual Tools的重要组成部分。EVC与Visual C++具有很多相似之处,但在串口通信、线程处理上均有差异。
该便携系统是整个矿用人员定位安全管理系统的一个子系统(整个矿用人员定位安全管理系统的构成如图1所示)。除本子系统外,还主要包括:井上中心控制计算机系统、井下矿用人员定位分站、矿用人员定位射频识别卡、矿用射频定位器、系统传输通道等部分。
图1 矿用人员定位安全管理系统结构图
2.2.1 灾后人员搜索功能
一旦发生矿井坍塌事故,井下信息传输通道和电力往往不能维持畅通,这就无法正确判断井下人员的实时情况,也就无法进行及时的救援。而救援人员使用该便携系统能立即搜索到附近事故地点佩戴人员定位射频识别卡的人员数量、身份、位置等信息,有效提高了抢险效率,增强了救护效果。2.2.2 人员考勤和抽查功能
如果矿用人员定位安全管理系统发生故障,不能正常工作,可以使用该便携系统来对出入井人员进行统计,实现下井人员考勤记录,建立人员出入井的各种信息。检查人员还可携带该便携系统对井下员工佩戴射频识别卡情况进行抽查。
该便携系统可以调节搜索射频识别卡的距离,在进行考勤和抽查时,检查人员可以很方便地验证是否一人带多卡,是否带错卡,显示收取的所有卡信息(包括卡状态、定位器号等),还可以显示该卡号捆绑人员的信息。操作人员对验卡是否成功进行确认,如果成功,保存验卡成功记录,如果不成功,选择是多带卡或者是带错卡,并保存不成功记录。这可以督促和落实重要巡查人员是否按时、到位地进行了实地巡查、检测和处理,从而有效地防范人为因素造成的相关事故。
2.2.3 对指定人员进行搜索和呼叫功能
此便携系统可对指定人员进行搜索和呼叫,以确定该人员所处的位置。
2.2.4 人员信息查询功能
软件可以实时调用人员信息,进行浏览,包括一些基本数据统计,如信息库版本(通过日期体现)、人员总数等。
2.2.5 空间信号探测器功能
输入搜索频率,选择搜索类型(射频识别卡信号、定位器信号、分站呼叫信号等),开始搜索,并一直处于接收状态,收到信息后,依次显示出来。
PPC要向数据采集PLC发送控制指令达到操控数据采集PLC的目的,首先应按照通讯指令集(本便携系统使用自定义指令集)将相应指令按异步通讯编码要求进行封装,由于在异步通讯中硬件设备控制发送端与接收端不同步,因此,要保证数据的正确就要依靠通讯参数的一致性。通讯参数包括:(1)波特率,描述数字传输速度的单位;(2)数据位,7位或 8位;(3)奇偶校验,检查数据传输是否正确的一种方式;(4)停止位,1、1.5或2位。PPC的通信参数设置必须与数据采集PLC的参数保持一致,否则无法完成通信(本便携系统通讯参数依次为 1 200,7,e,1)。为了使系统能适用于不同设置的串口通信环境,软件提供交互界面让用户进行串口设置。程序里定义结构体保存串口设置信息,这样就可以很方便地实现串口设置的保存和修改。设置好通讯参数后即可使用PPC控制数据采集PLC,并与其进行双向通讯。
PPC与数据采集PLC之间的数据通讯采用了串行通讯技术中的异步通讯技术[2]。Windows CE串口通信函数与大多数Windows串口通信函数基本相同。但要注意Windows CE采用的是Unicode码,而数据采集PLC只能识别ANSI码,因此,要在ANSI和Unicode字符串之间进行转换。
在Windows CE系统中,串口与其他通信设备是作为文件进行处理的。串口打开、关闭、读取和写入所用的方法与操作文件的方法完全一致。一般步骤如下:(1)打开串口,获取串口资源句柄通信程序,从CreatFile()处指定串口设备及相关的操作属性,再返回一个句柄,该句柄将被用于后续的操作中,并贯穿于整个通信过程;(2)串口设备初始化串口打开后,对DCB中各参数进行设置,同时也要注意异步读写的超时控制设置,通过COMMTIMEOUTS结构设置超时,调用SetCommTimeouts()将其结果写入;(3)对串口进行读写操作;(4)关闭串口。串口通信的步骤如图2所示。
图2 串口通信的步骤
PPC通过串口与数据采集PLC进行通信,向串口进行读和写数据,这些数据包括射频识别卡信息、与射频识别卡绑定的人员信息、分站信息等。在主线程里读写大量的数据,有可能阻塞主线程的消息队列,使得其他窗口的请求不能及时得到响应,且Windows CE不支持重叠I/O,这使得数据的大量读写产生困难,可使用多线程的方法解决[3]。也就是当主线程忙时,使用单独线程来处理串口。这样软件系统的用户设计部分就由3个线程组成,即主线程和2个辅助线程。主线程主要负责与用户的交互和系统资源的管理,2个辅助线程负责PPC与数据采集PLC之间的串口通信。
除了使用用于读和写的单独线程以外,Windows CE还支持Win32的WaitCommEvent函数,该函数将线程阻塞,直到预先设定的串行通信事件中的一个发生。该函数一般与函数SetComm-Mask配合起来使用,SetCommMask设置WaitCommEvent要等待的串口事件。使用方法如下:
(1)调用SetCommMask函数设定要等待的串口事件,例如串口有数据到来(EV_RXCHAR)事件;(2)在读串口线程中调用WaitCommEvent阻塞线程,等待EV_RXCHAR事件的发生;(3)当等待的EV_RXCHAR事件发生时,调用ClearCommError函数清除通信错误信息,并且获取串口的当前状态,主要是获取串口接收缓冲区中的字节数;(4)调用ReadFile函数将接收缓冲区的数据全部读出;(5)调用PostMessage函数将这些数据发送给主线程进行处理。串口数据读、写线程的处理流程如图3所示。
图3 串口数据读、写线程的处理流程图
本文以Windows CE和EVC为开发环境设计和开发了便携式煤矿井下人员检测系统,该系统可用于对煤矿井下人员的定位、搜索和管理,为煤矿生产提供了有效的安全保障,以信息化手段提高了煤矿的安全生产能力。
[1]钱燕,张继锋.基于EVC环境的串口通信程序设计[J].科学技术与工程,2007(10).
[2]汪兵.EVC高级编程及其应用开发[M].北京:中国水利水电出版社,2005.
[3]傅曦,齐宇.嵌入式系统Windows CE开发技巧与实例[M].北京:化学工业出版社,2004.