BRT安全门实时监控系统的设计与实现
1. 引言
城市快速公交系统(BRT)已成为解决城市交通拥堵问题的重要手段之一,作为西部大开发的重要民生工程--乌鲁木齐市BRT项目在2011年建设并投入使用。由于BRT采用专车专道的运行方式,乘客上下车采用安全门自动开关进行,作为调度中心实施掌握安全门的运行情况,能够及时处理安全门突发状况对于保证BRT系统安全运行有着重要的意义。目前国内BRT系统较少,可以借鉴的经验不多,笔者查阅了大量资料,结合实际测试对BRT安全门监控系统的设计与实现进行了探讨,就设计到的核心问题给出相应的解决方案。
2.系统分析
BRT安全门实时监控系统是对BRT站台所属所有泊位的每组安全门运行情况进行实时监控。其主要任务是通过信息调度中心与各站台安全门管理机进行通信,将管理机所传输的报文进行处理,以表格形式反应出安全门所处的状态,对于故障状态能够进行记录和跟踪,能够对安全门运行及故障情况进行统计分析,为合理调度公交车次提供数据支持。
3.系统设计与实现
3.1 系统总体设计
安全门实时监控系统分为服务器端和客户端两部分实现,分为四个功能模块:端口监听模块、安全门状态报文处理模块、安全门状态描述模块、安全门信息统计分析模块。服务器端始终处于运行状态,监听站台管理机与服务器端的通讯端口;收到报文后首先对报文进行解析,分析出报文的来源以确定安全门状态信息所属的站点,再对安全门报文信息进行分析,如果安全门状态与发生了变化,则更新数据库中安全门状态,否则丢弃报文。客户端可以运行在任何与服务器有物理连接的计算机上,进入系统选择需要监控的线路,系统每秒自动从服务器获取安全门最新状态信息,对于不同状态以不同颜色进行区分;通过统计分析模块对安全门运行及故障情况进行统计分析,将统计结果以Excel表格形式现实。
3.2 传输协议设计
安全门监控系统是在调度中心实时接收每个站台安全门的信息,需要与站台进行频繁通信。由于站台与调度中心传输距离长,传输环境复杂,实时稳定的通信是保证系统实现的基础。19世纪70年代MODBUS协议初次发布,至今已经在工业自动化领域广泛应用,其实现原理是将MDOBUS帧嵌入到TCP帧中,TCP/IP协议本身没有变化,但对报文的发送方式和速率作了改变,以满足工业应用的实时性需求。TCP/IP的请求/应答机制能和MODBUS本身的主/从机制很好的配合工作。MODBUS TCP/IP协议在应用层采用MODBUS信息定义,在传输层和网络层采用TCP/IP,用于以太网通讯。MODBUS TCP/IP协议和OSI各层之间的对应关系由下图表示:
TCP/IP上的ModBus应用数据单元、信息格式如下(其中PDU为协议数据单元):
MBAP报文头主要用于标示传送数据的序号、上下行标志和传输数据的长度,具体格式如下:事务ID(等于请求帧事务ID,2Byte)+协议标识符(0000H)+数据长度(0039H)+单元标识符(上行为00H、下行为01H)+功能代码(03H)+字节数(36H);功能码主要用于传输ModBus功能代码以及所用寄存器信息;数据信息用于传输每组安全门状态,由运行状态(2Byte)+故障状态1(2Byte)+故障状态2(2Byte)组成,具体长度根据站台安全门组数确定。
3.3 系统实现
对于众多网络协议其实现方法有很多,对于Windows平台来说Winsock是访问它们的首选接口。Delphi的Winsock接口是与协议无关的接口,可以读写各种协议的数据。对于网络通信中最普遍的客户机/服务器模式,Delphi提供了Serversocket和Clientsocket来实现。Serversocket用于监听指定的端口,对于客户端发送的请求进行响应,为客户端程序提供服务。Clientsocket用于向指定的服务器发送连接请求和数据报文。
在服务器端通过Serversocket控件来接收 站台管理机发送的数据。在Serversocket控件有两个主要事件,一个是read事件负责读取客户端报文信息,在read事件中对报文进行处理并存入数据库;二是error事件负责错误处理,使用Serversocket控件时受传输介质影响可能会发生无法预期错误,在error事件里对错误进行拦截和过滤以保证系统的稳定运行。服务器端核心代码如下:
var
recbuff:array of byte;
begin
len:=eLength
SetLength(recbuff,len);
eBuf(recbuff[0],len);
ip:=Address;
gxbrt1(ip,recbuff);
end;
gxbrt1(ip,recbuff)为自定义函数,用于对接收到的报文进行分析,将分析结果保存在数据库中,此函数为报文处理核心函数。
ADO是微软提供的用于存取数据源的COM组件,可以实现对数据库的快速、高效读写。在客户端利用ADO数据访问控件读取服务器端处理完成的数据;DBGridEh控件是在原生DBGrid控件基础上开发的第三方控件,其数据显示方式更加灵活和多样,使用DBGridEh控件以表格方式显示安全门状态,对于不同的状态以不同颜色进行区分;为保证数据实时性利用时间触发控件每秒动态更新数据;在对安全门运行信息进行统计分析时,所有数据最终已Excel文件显示,其核心代码如下:
var
excelapp:Variant;
begin
ExcelAppBb:= CreateOleObject( 'ation' );
e := True;
InNewWorkbook := 1;
;
['A1:E2'].:=2;
['A1:E2'].HorizontalAlignment:=xlCenter;
oks[1].Worksheets[1].s[1].columnwidth:=16;
['A1:E1'].Merge;
oks[1].Worksheets[1].Cells[1,1].:= 20;
oks[1].Worksheets[1].Cells[1,1].yle:='粗体';
oks[1].Worksheets[1].cells[1,1]:='BRT 安全门运行统计表';
End;
目前该系统在乌鲁木齐公交信息调度中心运行稳定,实现了对安全门的实时监控。但也存在一些不足,如当BRT线路增加时无法动态添加信息;在发生软硬件故障造成数据无法传输时无法补传数据,此功能需要安全门实时监控软件和安全门生产厂商协同完成。在后续研究中将重点考虑实现上述功能,使该系统更加完善。
4. 结论
通过安全门实时监控系统调度中心可以随时掌握BRT各站台安全门运行情况,对于确保BRT车辆正常运行、保证乘客安全有着重要意义。结果表明,安全门实时监控系统具有数据处理简洁高效、功能较为完善、信息统计查询方便、操作简单等优点,在实际生产中具有良好的推广与应用的价值。
参考文献
[1] 鲍敏 Delphi网络高级编程.人民邮电出版社
[2] 黄军 Delphi 串口通讯编程[M]. 人民邮电出版社 2001
[3] 郑先锋,毛景魁,张开拓. 基于Modbus协议的监控系统的改进方案[J]. 工矿自动化. 2009(05)
[4] 蒲靖荣,杜开勋,朱占清,闫纪峰. 基于网络和Modbus协议的远程监控系统[J]. 自动化仪表. 2009(07)
[5] 卢智嘉,王俊社,李玉萍. 基于Modbus远程监控系统的通信研究[J]. 微计算机信息. 2008(25)
[6] 朱小襄. ModBus通信协议及编程[J]. 电子工程师. 2005(07)
[7] 孙璐. Modbus/TCP协议在远程监测中的应用[J]. 计算技术与自动化. 2009(04)
下一篇:C++编程中对象生命周期管理