通用性城轨计算机联锁仿真平台的设计与开发
2018-10-09黄龙
黄 龙
(西南交通大学 信息科学与技术学院,成都 610031)
计算机联锁系统是信号系统中关键的安全防护系统。其核心功能就是对车站内的道岔、信号机以及轨道电路屏蔽门、防淹门进行实时检查及控制,保证车站作业顺利执行[1-2]。主要涉及采集设备状态信息、人员的操作信息,在进行联锁逻辑运算后,输出控制命令对设备进行驱动[9]。
根据实际线路,参考VPI型双机热备型计算机联锁系统,本文考虑通用性城轨计算机联锁仿真系统设计开发,对一些关键技术进行了探讨,提出解决方案。主要内容包括:
利用SQL sever2014具有大容量数据存储的特点,存储信号机、轨道电路、道岔以及进路等线路静态数据,在一定程度上提高了线路设备存储的规范性和通用性;基于VS2013软件开发平台,采用C#语言设计系统底层软件,实现对计算机联锁线路的建模和逻辑运算,阐述了建模的方法和步骤;采用传输控制协议(TCP)构建通信系统。
1 城轨计算机联锁系统框架
城轨计算机联锁和传统计算机联锁一样,按照系统层次结构分类,可以分为3个层次,即联锁上位机 (人机会话层)、联锁逻辑运算层和采集驱动层[3]。
仿真平台能根据线路设备静态数据编制数据库,绘制平面布置图,并生成进路表。点击上位机设备生成操作命令,传输至联锁逻辑层进行联锁逻辑判断,并生成驱动信息传至驱动板驱动设备,并使对应设备驱动表示灯闪烁3 s。采集驱动仿真平台中采集板时刻采集上位机的设备状态,点亮对应设备表示灯,并将设备状态信息回传给联锁运算层。软件实现中通过TCP通信接口实现上位机操作命令、驱动命令以及采集信息的互联互通。系统整体框架如图1所示。
图1 计算机联锁系统结构
2 通信系统设计
2.1 TCP/UDP通信协议介绍
TCP/UDP协议由数据链路层、网络层、传输层和应用层4层结构组成。
其中TCP是面向连接的协议,在收发数据之前需要进行3次握手,成功后才能建立可靠连接。确保了通信数据可靠、顺序到达目的地。针对不同的链接分配独立缓冲区,进一步减少可能的丢包问题[4-5]。
UDP协议面向无连接通信,可能出现丢失、乱序到达的问题,同样由于没有流控制,如果开发控制不当,可能导致数据风暴问题[4-5]。
本文采用TCP通信,以保证计算机联锁系统数据传输的实时性、有效性、可靠性。
2.2 TCP通信系统设计
在本设计中,需要将联锁上位机,联锁逻辑层和采集驱动系统建立通信。采用同一IP地址绑定多个端口的方法,实现不同设备操作命令和驱动信息的独立传输,使信息传输高效可靠。在本系统中,IP地址统一设置为127.0.0.1,采用4个端口分别传输信息。联锁上位机与采集驱动系统TCP通信设计与实现原理图如图2所示。(1)端口号8888,以该端口实现联锁上位机的设备状态信息传输和进路办理;(2)端口号8889,以该端口实现信号机操作命令和驱动信息的传输;(3)端口号8890,以该端口实现轨道电路操作命令和驱动信息的传输;(4)端口号8891,以该端口实现道岔操作命令和驱动信息的传输。
图2 TCP通信设计与实现原理图
3 数据结构及数据库设计
联锁数据由静态数据和动态数据两部分共同组成,两种数据相互关联、缺一不可[6]。
计算机联锁线路中需要存储道岔、信号机、轨道区段、进路等大量数据,采用数据库存储有利于数据的规范、扩展和增强配置数据通用性。若要对不同的联锁区进行相关设计,只需要按照实际线路的设备数据在数据库中重新配置即可。
3.1 静态数据及其结构模块
“进路表”和“站场形”是联锁软件两种不同形式的静态数据结构。进路表方式较站场形数据结构方式而言,实现起来较为简易且搜索过程简单。站场形方式一旦指针发生错误,则会产生一些程序搜索问题,很难发现和找到问题所在。故本文采用进路表方式静态数据结构。把信号机、道岔、轨道电路、绝缘节、进路的静态数据分类存放到数据库中[6]。
联锁数据中的静态数据指不发生变化的数据。信号机静态数据包括编号、名称、类型、方向、内方第一区段、防护方向,横坐标以及纵坐标;轨道电路静态数据包括编号、名称,始端横坐标和纵坐标、终端横坐标与纵坐标、轨道类型、名称位置等静态数据;道岔静态数据包括编号、名称、岔心横纵坐标,道岔类型,名称位置等数据。
在软件实现中,每个静态数据都定义一个变量来存储数据库中对应的信息,形成设备静态数据模块。以信号机为例,其数据模块如表1所示。
表1 信号机静态数据模块
3.2 动态数据结构
仿真系统动态数据包括操作变量、状态变量、控制变量。
操作变量为操作人员点击按钮需要的变量,操作人员在联锁上位机完成点击操作之后,上位机程序将会对操作指令信息进行处理,形成一条合法的操作命令,传送至联锁逻辑运算模块进行处理。
仿真系统控制变量,用于存储经逻辑处理后的设备驱动命令,控制信号机的开放、关闭和道岔的定位、反位动作以及轨道的占用出清。
状态变量用于存储上位机设备状态信息,反映信号机、道岔、轨道电路目前工作状态。状态信息的传输刷新周期设置为1.5 s。设置timer将上位机状态信息发送至采集驱动系统和联锁逻辑层,以便实时检测设备状态信息及下一次对操作命令的处理。
以道岔动态数据结构为例,定义布尔变量包反映道岔定操、反操、挤岔、单锁以及单解等。其动态数据结构为:
3.3 SQL Server数据库设计
SQL Server 是由 Microsoft 开发和推广的,具有开放、操作简单、安全性高,可伸缩性和可扩展性好以及与相关软件集成程度高等优点,为关系型数据和结构化数据提供了更安全可靠的存储功能[7]。
本文数据库共包含8个数据表,每一个数据表均可供程序调用。数据表对象的设计视图与静态数据模块设计结构相一致。
以信号机为例,信号机表:用于存放信号机的名称、编号、类型、坐标、信号机方向、信号机防护方向和内方第一区段信息。数据库的实现如图3所示。
图3 数据库的实现实例
4 计算机联锁上位机实现
联锁上位机界面主要包括界面显示模块和功能实现模块。
4.1 上位机界面显示模块
界面显示主要包括界面初始化显示以及驱动显示,显示设备主要包括信号机、轨道电路、道岔、绝缘节以及联锁区特殊设备及按钮。为了系统的通用性及可扩展性,界面布置中利用hScrollBar1_Scroll和vScrollBar1_Scroll控件自定义滚动条,通过滚动滚动条实现整条线路的布置。
对于界面初始化显示,这里主要介绍信号机、轨道电路、道岔以及绝缘节的绘制过程。界面初始化流程图和初始化界面如图4和图5所示。
对于界面驱动显示,根据经联锁逻辑回传的驱动命令,改变站场设备的动态数据(布尔值),在界面中设置timer定时器,采用GDI+技术根据设备最新布尔值对设备进行刷新重绘。
图4 界面初始化流程图
图5 初始化界面
4.2 计算机联锁功能实现模块
联锁系统的功能主要包括轨道电路信息处理、进路控制、道岔控制、信号显示以及跟其他系统接口交换信息等[8]。
本文的联锁功能全部使用对应功能按钮实现,操作人员必须首先点击相关功能按钮,功能操作变量存储功能按钮类别,根据功能操作变量类别再采用坐标位置匹配的方式查找到对应设备鼠标右击,这一过程都在Form1_MouseClick(object sender, MouseEvent-Args e)函数中执行。部分功能按钮如图6所示。
图6 计算机联锁功能按钮
坐标位置匹配是指利用鼠标左键点击时的坐标位置,去循环匹配线路中设备的坐标位置,找到对应功能操作的设备,并发送对应的操作命令。操作命令基本格式:功能标识(包头)+设备标识+设备编号+设备名称,设备标识分为4类,如表2所示。
信号机:作为进路始、终端,发送数据包头部“0x00”。对其单独操作,包括信号重开,灯断丝,信号封锁操作,发送数据包头部“0x01”。
表2 操作命令分类
轨道区段:对其单独操作,包括轨道电路“占用”“出清”操作,发送数据包头部“0x02”。
道岔:对其单独操作,包括道岔定位操作,反位操作,单锁,单解等操作,发送数据包头部“0x03”。
点击设备功能按钮,将带有标识的数据包发送至联锁逻辑运算层,联锁逻辑运算模块根据数据包头类型,分别进行布尔表达式运算,并将驱动信息经采集驱动层回传至联锁上位机驱动设备。
以进路和道岔控制为例,功能实现结构如图7所示。
5 采集驱动仿真系统
采集驱动仿真系统采用A机和B机双机热备,正常情况下由A机参与,故障时切换至B机。系统由采集模块,驱动模块以及数据传输模块组成。采集模块实时采集设备状态信息,并将对应的表示灯点亮。驱动模块接收进逻辑运算后的驱动命令,并开放驱动通道,表现为驱动设备对应的表示灯闪烁3 s后停止。数据传输模块由3部分组成:设备动态数据布尔表达式显示;操作命令显示;驱动命令显示。以采集板为例,组成如图8所示。
6 系统测试
系统测试过程在实验室中进行,系统采用从数据库中获取静态数据,初始化界面。然后通过点击设备发送操作命令,经由逻辑判断后驱动设备。最后将驱动数据和设备状态信息反映道采集驱动仿真系统中。以办理基本进路为例,对系统进行功能测试。
图7 进路和道岔控制结构图
图8 采集板组成实例
6.1 预办理进路
点击办理进路按钮,然后点击始端信号机按钮,使能以此信号机为始端办理进路的终端信号机闪烁。系统显示如图9所示。
图9 预办理进路显示
6.2 成功办理进路
点击上位机终端信号机按钮,成功办理侧线进路并锁闭,始端信号机显示黄色。此时采集驱动仿真系统中采集板采集到设备状态信息,驱动板显示驱动设备,数据传输记录过程数据。如图10、图11和图12所示。
图10 上位机显示
图11 采集板显示
图12 数据传输记录
6 结束语
本文通过数据库存储线路信息,绘制站场图,利用功能按钮和鼠标点击坐标匹配方式,判断操作人员进行的操作。根据操作设备的不同,经由不同的传输端口,发送不同的操作命令给联锁逻辑层。逻辑层进行对应的逻辑处理并回传驱动信息,以达到驱动设备目的。整个系统只需要设计人员在数据库中正确输入线路的设备信息,利用底层软件就可以实现不同线路计算机联锁系统设计。本文联锁系统设计的通用性研究主要通过数据库实现,还未得到应用,有一定局限性和缺陷,有待改善。