冯兴林
(云南省交通科学研究所,云南 昆明 650011)
在高速公路监控中,数据采集分为两种方式,即:自动采集方式和非自动事件检测方式。自动采集方式是在后台自动进行的数据采集,不需要人工干预,采集过程对于监控人员来说是透明的。非自动事件检测方式是指监控人员通过道路监视或紧急电话等确认交通事件,或交利用人工观测的方式获得气象情况,并在前台人机交互界面输入交通事件信息和气象信息,存入到数据库业中去。因为非自动事件检测方式较为简单,本文就不再详述,下面将详细介绍数据自动采集方式。数据自动采集,一般主要涉及的设备有:外场设备、通信设备、串口设备和通信计算机。在一般高速公路监控系统中,外场设备主要有车辆检测器、气象检测器、能见度检测器、可变信息标志 (包括小型可变信息标志)、可变限速标志等;通信设备一般采用MODEM(调制解调器)和其它数据传输设备;串口设备一般采用多串口卡。
高速公路交通流参数实时数据的采集主要是通过车辆检测器来实现的。车辆检测器的环行线圈埋设在道路表面下,并与车辆检测器控制器相连;当车辆通过时,通过线圈电磁场的变化来对车辆进行检测;来自传感器的信号由设置在路旁的微处理器进行计算,得出各个车道的平均车速、最高车速、最低车速、车流量、车道占有率和车头时距等。
气象检测器由多种传感器(温度、湿度、风向、风速、雨量、能见度、路面状况)、数据采集器和控制器等组成,各种传感器由敏感元件和转换电路组成。数据采集器是一种智能性采集器,它采集各种传感器的电信号。气象检测器控制器进行数据的预处理。能见度检测器与气象检测器数据采集过程相同,但它只能检测能见度。
可变信息标志是高速公路监控系统向过往车辆发布交通信息、通告的主要设备。可变信息标志分为大型可变信息标志和小型可变信息标志,其中大型可变信息标志模组数一般为10或12,安装在高速公路上方的龙门架上,可显示图形和文字;小型信息标志体积较小,安装在路旁,可显示1个图形或4个汉字。可变信息标志的控制器采集当前显示信息和故障信息。
可变限速标志安装在高速公路的路旁,当天气恶劣、发生交通事故或其它异常情况时,控制室及时发布限速标志的显示内容,限制车速,确保高速公路行车安全和交通流畅;同时,可变限速标志的控制器可反馈显示内容及故障信息。
上述外场设备采集到自身检测出的数据后,控制器先进行处理,然后通过控制器上的RS232、485、422等接口,经通信系统将数据上传至监控室的通信计算机。
数据传输和采集设备一般主要包括MODEM、子速率板和串口设备等。
在高速公路监控中一般应采用专线MODEM。MODEM主要是用以延伸计算机数字信号传输的距离。
MOEDM将计算机送来的数字信号调制成载波信号(模拟信号),调制后的载波信号通过通讯信道送到控制室,由上位MODEM将接收到的载波信号解调成数字信号,最后送给通信计算机处理。
若外场设备和通信计算机之间的距离较小,外场设备和通信计算机之间直接用一对MODEM就可以 实现数据传输;若距离超出了MODEM的最大传输距离,这时必须添加其它数据传输设备,例如子速率板。子速率板也是成对使用的,上位端一般在监控室附近的通信机房,下位端在通信站。外场设备一般位于某个立交(收费站)附近,距离立交一般在几公里以内,可在立交附近可设立通信站。一对子速率板可提供多个数据传输通道,一般采用异步传输模式。串口设备一般采用多串口卡。多串口卡技术较为成熟,且多串口卡成本较低,便于维护。多串口卡安 装在通信计算机PCI插槽里,外接串口盒。每块多串口卡一般最多支持32个串口或64个串口。
软件功能及实现
3.1 数据采集软件的主要功能
数据采集软件实现的主要功能有:外场设备数据轮询、控制命令的执行、更改轮询周期、进程的开启关闭、通信配置等。数据采集软件运行在通信计算机上。
外场设备数据轮询模块主要对外场设备进行数据采集。所谓轮询是指依次通过串行口与外场设备通信,取得外场设备采集的数据的过程。轮询周期是指相邻两次轮询开始时刻的时间间隔。数据轮询模块以轮询周期为时间间隔进行外场设备数据的采集,取得外场设备的故障信息、当前信息和校时信息,并且存人数据库中。
控制命令的执行模块在一个通信端口监测着多媒体计算机发送过来的控制命令,若接收到控制命令,数据验证合格后,向相关设备发送控制命令,主要是可变信息标志、可变限速标志的开启、关闭、编辑、调光等,以及所有外场设备的故障检测,并将处理结果返回给发送方。
更改轮询周期模块设置套接字,监听下发的系统参数。如收到更改轮询周期的有关数据,则对轮询周期进行相应的处理,并将处理结果返回给发送方。
进程的开启关闭。采用Windows NT的多进程服务机制,将轮询模块作为Windows NT的服务进行启动和运行。服务程序在系统安装时向windows NT服务管理器注册,所有服务进程均采用手工启动的方式。监控人员可通过人机交互界面发出开启与关闭服务进程命令来实现,也可使用windowsNT服务管理器来控制进程的开启与关闭。
通信配置模块提供一个人机交互界面,通过该界面可完成对数据采集系统的通信配置,配置内容有:串口行、波特率、数据位、停止位、奇偶校验、外场设备代码等。
3.2 软件实现
数据采集软件在设计和开发中,除考虑满足业务需求外,着重考虑稳定性和高效性。在系统分析与设计方法上,采用面向对象的分析与设计方法,这样降低了系统结构的复杂度,提高了代码的可重用性和可维护性。通信计算机采取的操作系统为广泛使用的Windows NT操作系统,数据库采用大型关系数据库,网络通信协议采用TCP/IP协议。
在数据采集系统中,外场设备数据轮询模块是最重要、也是开发难度最大的模块,因此下面将主要介绍该模块的软件实现,以及数据采集系统中的关键技术、开发工具的选择。
外场设备数据轮询模块的实现。外场设备数据轮询模块首先初始化轮询对象列表,用于保存关于轮询对象(外场设备)信息的表;创建定时器,并从数据库中取得轮询周期赋予定时器;等待时间为轮询周期时,定时器启动,通信计算机向外场设备依次发送数据上传指令;发出的指令主要有读取故障信息、读取当前信息和更改设备时间等,其中读取故障信息和读取当前主交通数据命令是在每次轮询都要进行,更改设备时间只在零点进行。发出读取数据指令后,按照设置的等待时间进行等待;接收到数据后,软件进行数据解包,通过数据合法性校验的数据进入数据库,若未通过合法性校验,则给出提示信息,并记录到日志中。在轮询结束时,发送轮询结束事件,以便监控系统处理其它业务。
软件实现中的关键技术。数据采集软件主要采用了如下技术和策略:
1)Win32串口通信技术
Win32下串口通信与16位串口通信有很大的区别。在Win32下,可以使用两种编程方式实现串口通信,其一是调用Windows的API函数,其二是使用串口通信类或ActiveX控件。在本文的数据采集中采取调用Windows的API函数方式。使用API函数调用,需要清楚地掌握串口通信的机制,熟悉各种配置,对软件开发人员的开发能力要求较高,但可以自由灵活地实现串口通信。
2)Socket网络编程技术
在更改论询周期和控制命令执行模块中,采用Socket网络编程技术,分别在不同端口监听数据,一旦接收到数据就对数据进行及时处理。在轮询结束时,也利用Socket网络编程,发送轮询结束信息,从而让服务器及时进行数据发送和自动控制的执行。Socket网络编程技术保证了在不同计算机上运行的多个进程之间的相互通信,从而及时进行相业务的处理,使整个监控系统成为有机的一个整体。
3)注册表技术
注册表是为Windows NT等所有32位硬件驱动和32位应用程序设计的数据文件。运行一个应用程序时,可以从注册表中获得配置信息。在注册表中设置通信配置信息具有读取速度快、配置灵活等优点。因此,数据采集系统通过通信配置界面,将每个串口的配置信息记录在注册表的相应位置,包括设备代码、设备种类、波特率、校验位、数据位、停止位、等待时间等。注册表技术的应用,提高了程序的运行效率。
4)多线程机制与线程同步
在Win32操作系统中,每个进程可以同时执行多个线程,进程中的线程是并行执行的,每个线程占
用CPU的时间由系统划分,系统不停的在各个线程之间切换。由于系统为每个线程划分的时间片很小(20毫秒左右),所以看上去好象是多个线程在同时运行。数据采集采用多线程机制,将实时数据轮询、更改轮询周期、控制命令的执行等几个线程同时执行,只不过是更改轮询周期、控制命令的执行在大部分时间里是在相应端口等待数据的到来。
线程同步的目的是避免两个线程同时操作同一个共享资源。在数据采集中有很多地方需要线程同步,例如对串口操作部分、错误提示信息向操作界面的输出等。数据采集系统中使用的线程同步方法包括利用线程阻塞其自身执行的等待函数、冲突临界区、互斥量等。多线程机制与线程同步的运用,节省了系统资源,提高了数据采集的效率,同时保证了各种操作不会相互冲突。
5)计时器的使用
可等待的计时器是在特定时间或固定的时间间隔使自己有信号的内核对象。外场设备数据轮询程序创建可等待的计时器,对采样周期采用定时器进行精确定时。每次论询不仅需要等到定时器信号到来,同时需要上次轮询结束信号的到来,这样保证了相邻两次轮询不会出现冲突,并且使轮询时间控制得较为准确。
6)统一的接口协议
可变信息标志、可变限速标志、车辆检测器等外场设备可由多个供应商提供。在实施过程中,要求这些供应商的设备都执行统一的接口协议,这样系统就具有与设备无关性,系统的扩展性较强。
7)日志管理
日志包括操作日志和异常信息日志。各种操作都记录在日志中,便于日后明确责任。在数据采集过程中,可能有多种异常情况出现,例如设备未返回信息、返回的信息格式不正确或不完整、数据库无法连接等。在出现异常情况下,系统自动将异常信息记录到相应日志文件中,以备日后查询。
在软件开发中,选择一种合适的编程语言,可以大大加快工作效率,并且对软件开发的难易程度也有很大的影响。数据采集系统过去一般是在DOS操作系统下应用汇编语言开发的。Windows操作系统的普及应用,尤其是可视化开发软件Visual C++的出现,为软件开发提供了强大的图形界面功能,使得开发出来的应用程序具有良好的人机交互功能,并且程序运行速度快、效率高。因此,在进行高速公路监控系统时,可采用Visual C++来开发远程数据采集软件。
本文主要论述了高速公路监控系统中数据采集的方式、远程数据采集软件的功能及实现、应用效果等。应用实践表明:本文论述的远程数据采集系统是可行的、有效的,在高速公路监控领域具有较高的推广价值。