APP下载

基于自定义实体的联锁表自动生成软件设计与实现

2023-10-11姚维文

铁路计算机应用 2023年9期
关键词:平面布置信号机轨道电路

姚维文,杨 扬

(西南交通大学 信息科学与技术学院,成都 611756)

联锁表是体现站场信号设备间联锁关系的图表,根据其展现的进路中道岔、信号机、轨道电路间的制约关系,可实现对站场联锁关系的检查[1]。因此,联锁表对确保行车安全,提高行车效率具有重要意义,是轨道交通信号设计领域中的关键一环。随着我国轨道交通事业的蓬勃发展,其信号设计领域的工作量和设计难度与日俱增,迫切需要计算机软件来辅助提高设计工作的效率与质量。

联锁表的生成需要以一张准确规范的站场信号设备布置图为数据源。目前,国内各大设计院都在升级传统的制图方式,不再单纯依靠拼接AutoCAD中定义好的图块进行绘图,而是通过ObjectArx 对AutoCAD 进行二次开发,将站场信号设备布置图中的设备封装成自定义实体[2],再对其进行拼接,实现平面布置图的绘制。

本文研发基于自定义实体的联锁表自动生成软件,利用ObjectARX 对AutoCAD 进行二次开发,在AutoCAD 运行环境下,直接以由自定义实体绘制的站场信号设备平面布置图作为数据输入[3];同时,软件通过直接访问AutoCAD 数据库[4],调用其中的图形与文字实体,绘制联锁表,从而提高联锁表的编制效率及准确性。

1 软件架构

本文研发的基于自定义实体的联锁表自动生成。软件架构分为数据预处理、联锁逻辑运算和人机交互3 个模块,模块间数据互通,又相对独立,如图1 所示。

图1 联锁表自动生成软件架构

1.1 数据预处理模块

该模块从信号设备平面布置图中获取生成联锁表所需要的信号设备自定义实体的数据,检查数据的合法性,并利用读取的数据生成站场型数据结构。

1.2 联锁逻辑运算模块

该模块在站场型数据结构上利用深度优先算法,搜索各种可能存在的进路,再根据联锁表编制原则对搜索到的进路数据进行差异化处理,并自动生成列车进路、调车进路、延续进路、组合进路、引导进路等5 类联锁表。其中,列车进路、调车进路、组合进路在铁路车站和地铁车辆段中具有各自独特的联锁需求及数据表现形式,而延续进路联锁表仅在铁路车站中生成,引导进路联锁表仅在地铁车辆段中生成。

1.3 人机交互模块

该模块可对图纸不能提供的站场信息进行补充,实现在高速铁路(简称:高铁)车站、普速铁路(简称:普铁)车站、地铁车辆段等3 种工作模式之间切换,可设置接近锁闭区段闭塞分区数目,并提供修改自定义实体数据及联锁表数据的显示界面与操作接口。该模块使得自动生成的联锁表数据更加可靠,且能够根据站场功能特点实现某些特殊的联锁表生成需求。

2 软件功能

2.1 数据预处理

在AutoCAD 中使用自定义实体绘制的站场信号设备平面布置图是联锁表自动生成软件的数据源与基础。为保证软件功能的实现,需要从站场信号设备平面布置图中获取相关数据,如表1 所示。

表1 站场信号设备平面布置图提供的数据

本文将站场信号设备平面布置图中的轨道电路、信号机、绝缘节、道岔封装为对应的自定义实体,存放于AutoCAD 数据库中,而文本信息和块参照属性也可通过AutoCAD 数据库直接访问,它们都对应一个唯一的身份标识号码,即AcDbObjectId。软件通过寻找AcDbObjectId 来访问对应的对象[5]。

由自定义实体绘制出的站场设备信号平面布置图能提供更加规范的数据格式。但根据实际项目中的经验,站场工作人员在设计图纸时存在很多不确定的因素,如信号设备名称重复或数据缺失等。为保证后续联锁表数据的准确性,软件在读取站场信号设备平面布置图后,需要进行数据的合法性检查,筛除无效数据,并在人机交互界面上提示错误信息。

2.2 站场型数据结构建立

2.2.1 信号设备抽象表示

站场型数据结构是描述站场中信号设备左右位置关系及连接关系的拓扑图,是进路搜索的基础。本文软件将站场中每一个信号设备抽象表示为一个数据节点[6]。在每个信号机和轨道电路对象中封装有一个左指针(pW)指向左边连接设备的信息,一个右指针(pE)指向右边连接设备的信息;在每个道岔对象中封装有前支指针(pF)、定位指针(pN)、反位指针(pR)分别指向道岔前支、定位和反位连接设备的信息,如图2 所示。

图2 自定义实体数据节点

2.2.2 数据节点关联算法

本文软件利用由自定义实体绘制的站场信号设备平面布置图中读取的坐标数据,生成站场型数据结构,其步骤如下。

(1)将各个轨道电路与两侧绝缘节相关联:遍历图纸中所有绝缘节实体,以绝缘节基点坐标为中心,创建一个边长为1 的矩形区域对象Rect。如果轨道区段两端端点的坐标落在Rect 之中,则将此绝缘节信息存入符合条件的轨道电路自定义实体中,如图3 所示。IAG 轨道电路实体的2 个端点的坐标分别在以JY0 与JY1 为基点创造的矩形区域对象Rect 中,因此,在IAG 实体中记录其左端绝缘节为JY0,右端绝缘节为JY1。

图3 轨道电路与绝缘节关联示意

(2)将轨道电路与信号机相关联:对信号设备平面布置图中所有信号机实体,以信号机基点为中心,创建一个边长为1 的封闭多段线实体pPolyLine。遍历图纸中的轨道电路实体,以多段线实体pPolyLine 和某一轨道电路实体为参数,若2 个实体相交,则返回交点坐标,否则继续判断其他轨道电路实体与pPolyLine 的相交关系。每个信号机与2 条轨道电路分别产生交点pt1 和pt2,通过对pt1、pt2及信号机D1 基点坐标的横坐标相比较,可得出轨道电路与信号机左侧或是右侧相连,并将信息记录在轨道电路实体与信号机实体中,如图4 所示。图4 中,pt1 在D1 基点坐标ptSig 的左侧,说明IAG 连接的是D1 信号机左侧。

图4 轨道电路与信号机关联示意

(3)将轨道电路与道岔相关连:对于图纸中所有道岔实体,以道岔基点为中心创建一个边长为1的封闭多段线实体pPolyLine,调用ObjectARX 来判断pPolyLine 与轨道电路实体是否相交,并求出交点,如图5 所示。图5 中,3 号道岔产生的多段线实体与3DG 产生了2 个交点pt1 与pt2,与另一条轨道电路产生一个交点pt3; 道岔侧向的轨道电路与pPolyLine 仅相交于一点,因此,pt3 代表3 号道岔反位;计算pt3 与pt1、pt3 与pt2 间的距离,离pt3 距离近的点表示道岔定位,离pt3 距离远的点表示道岔前支。

图5 轨道电路与道岔关联示意

(4)遍历轨道电路实体,进行区段内部设备位置连接:经过前3 个步骤,每个轨道电路内部都记录下了其关联的信号设备及信号设备的具体位置信息。根据这些信息,在轨道电路实体内部从左到右进行信号设备的互相连接。如图5 中,3DG 内部“D1 右”的右侧是“#3 定位”,由此可得出D1 信号机右侧连接3 号道岔定位。

上述步骤完毕后,站场信号设备平面布置图即可抽象表示为站场型数据结构,如图6 所示。

图6 站场信号设备平面图转换为站场型数据结构示例

2.3 进路搜索

2.3.1 进路搜索的基本原理

为不遗漏站场中任何一条可能存在的进路数据,确保生成联锁表数据的完整性,本文软件基于深度优先搜索(DFS, Depth First Search)算法进行进路搜索。DFS 算法从起点开始,不断处理最新遇到的节点,并按照一个方向穷尽式搜索,当沿着该方向无法继续向前搜索时,返回最近一次搜索路径分岔处,沿着另一方向继续搜索,该过程类似于列车在进路中从始端信号机出发,不断经过轨道区段、道岔,最终停止于进路终端的过程。因此,DFS 算法符合进路的生成逻辑。

因联锁表中需要记录基本进路与变通进路的信息,而基本进路一般编写在变更进路之前,且一般为走道岔直股的进路,所以,为减少对基本进路与变通进路间的排序,本文软件在搜索进路的过程中,遇到对向道岔而需要选择搜索方向时,会优先完成道岔直股方向的进路搜索,使基本进路在进路列表中处于变通进路之前。以图7 为例,搜索以X 为始端信号机的进路,经过5 号道岔处时,路线产生了分叉,本文软件会继续沿着5 号道岔直股方向前进,搜索至SI 信号机处才会结束此方向搜索,并回到5号道岔处,进行侧向进路搜索。

图7 进路搜索算法图示

图8 进路搜索流程

2.3.2 进路搜索流程

基于DFS 算法思想,在成功建立起站场型数据结构后,进行进路搜索时的流程如8 所示。

(1)选择进路始端信号机,遍历存放信号机数据信息的容器(vector),并判断选中的信号机是否满足作为进路始端信号机的条件[7]。

(2)按照始端信号机的朝向搜索下一个设备(NextObj),并将NextObj 写入当前进路的数据中。

(3)判断NextObj 是否为某个道岔的前支,若是,则需要递归调用进路搜索算法,先完成道岔直股方向的进路搜索,再将NxetObj 更新为当前道岔反位连接的设备,恢复递归前进路数据后,将道岔反位连接的设备写入进路数据之中,并重复本步骤;若NextObj 不是道岔前支,则继续向下运行。

(4)判断Nextobj 是否满足作为进路终端的条件,若不满足,则返回步骤(2);若满足,则当前进路搜索完成。

(5)判断是否已遍历完当前站场中所有信号机,若还未遍历结束,则返回步骤(1);若已全部遍历,则当前站场所有进路搜索完毕。

2.4 联锁表自动绘制

本文软件依据中国国家铁路集团有限公司(简称:国铁集团)颁布的Q/CR 654-2018《计算机联锁车站联锁图表编制原则》[8]及车辆段联锁表编制原则,输出DWG 格式的图纸[9]。每个DWG 文件的全部信息都包括在AutoCAD 数据库中,AutoCAD 数据库结构如图9 所示。DWG 图纸中显示的直线、圆、文字等AutoCAD 中预先定义好的实体,以及通过AutoCAD二次开发设计出的自定义实体都记录在AutoCAD 数据库块表中的块表记录内。因此,自动绘制联锁表的步骤如下。

图9 AutoCAD 的数据库结构

2.4.1 确定联锁表的绘制格式

联锁表数据存放在一个二维字符串数组中,数组的列数与编制原则中联锁表列数一一对应,行数代表当前站场的进路总数。先设定每张联锁表最多编制的进路数目,再利用当前站场中搜索到的进路总数除以每张联锁表中规定的进路数目,即可确定需要绘制多少张联锁表;设置字体格式并结合每列联锁表数据量的大小,确定每栏联锁表宽度;根据联锁表张数及每栏数据的宽度,计算多段线与文字实体在图纸中的坐标。

2.4.2 绘制联锁表

通过getBlockTable 函数获取当前AutoCAD 数据库中的块表,利用getAt 函数获取当前块表的块表记录;根据由联锁表数据生成的坐标、宽度、字体格式等数据,在AutoCAD 数据库中创建多段线实体(AcDbPolyline)绘制联锁表的框架,创建文字实体(AcDbText)绘制联锁表的具体内容,并利用appendAcDbEntity 函数将创建的实体对象添加到数据库类对象的块表记录中,实现联锁表的自动绘制。

2.5 人机数据交互

本文软件的人机交互界面是基于微软基础类库(MFC,Microsoft Foundation Classes)中的对话框基类(CAcUiDialog)设计的非模态对话框[10]。非模态对话框允许用户在该对话框和AutoCAD 界面间自由切换焦点,使用场景丰富,界面反应迅速。可在对话框中添加Button 控件来选择实现不同的功能, 添加Combo-box 控件提供可供修改的数据选项,添加List 控件用于显示读取的各类数据及软件使用过程中出现的错误信息。人机数据交互功能包括以下3 个部分。

(1)补充输入不能从信号设备平面图读取的数据,如当前站场的性质、列车控制系统等级、进站信号机接发车制式等信息。

(2)显示读取的信号设备自定义实体数据,并提供相应的数据修改接口。

(3)在功能不能正常使用时,提供错误的原因,并在使用过程中给予当前状态提醒及操作提示。

3 软件界面设计

软件界面分为站场数据输入、联锁逻辑运算、数据显示/修改、软件状态提示共4 个部分,如图10所示。每个部分设置了相应的功能按钮来实现各部分的功能。在用户使用过程中,软件状态提示部分会记录下用户已操作的所有步骤,并给出下一步操作提示;当用户操作出现错误时,给出对应的错误提醒,确保软件正常运行。

图10 软件界面

站场属性设置界面如图11 所示,用户可根据当前站场类型选择生成普铁、高铁或地铁车辆段的联锁表图纸。用户通过该界面与图纸中自定义实体进行数据交互。以修改信号机自定义实体属性为例,界面如图12 所示,通过List 控件展示所有信号机自定义实体属性,在每列属性栏中使用combo-box 控件提供相应的选项来修改实体数据,方便用户在AutoCAD 图纸数据出错时及时修正。

图11 站场属性设置界面

图12 信号机实体属性修改界面

4 软件实现

4.1 软件配置文件与运行环境

本文软件采用Microsoft Visual Studio 2012 作为开发平台,以C++为基础进行面向对象的程序设计[10],基于自定义实体的交互逻辑进行开发,预留出与自定义实体适配的管理类,软件配置文件与运行环境如图13 所示。为确保软件在AutoCAD 中能够与由自定义实体绘制的站场信号设备平面布置图正常交互,需要信号设计方提供信号设备自定义实体的头文件与实现实体功能的静态链接库。头文件和静态链接库中定义了每种自定义实体的交互接口,通过自定义实体的交互接口与软件的自定义实体管理类互相配合,搭建起软件与信号设备平面布置图之间的双向数据通道,实现信号设备平面布置图和软件的实时交互,并使软件能够在AutoCAD 环境中与由自定义实体绘制的信号设备平面布置图一体化运行。

图13 软件配置文件与运行环境

4.2 软件试用情况

在普铁/高铁模式下,本文软件在读取使用自定义实体绘制的站场信号设备平面布置图后,可生成列车进路联锁表、调车进路联锁表、组合进路联锁表、延续进路联锁表、非调车进路联锁表共5 类联锁表;在地铁车辆段模式下,软件能生成列车进路联锁表、调车进路联锁表、组合进路联锁表、引导进路联锁表共4 类联锁表。本文选择了5 个普铁车站、3 个高铁车站、2 个地铁车辆段对软件的通用性与准确性进行测试,并将软件自动生成的联锁表与经过设计院核对的联锁表数据进行对比,实验结果如表2 所示。

实验结果表明,自动生成的联锁表准确率超过99%,且具有较高的通用性,可适应普铁车站、高铁车站、地铁车辆段等3 种工作模式。

5 结束语

本文研发的基于自定义实体的联锁表自动生成软件,通过直接访问AutoCAD 数据库的方式读取由自定义实体绘制的站场信号设备平面布置图的数据,运用实体的坐标数据自动建立站场型数据结构,搜索站场进路信息,根据标准的联锁表编制原则处理获取到的进路数据,并且直接调用AutoCAD 数据库中多段线及文字实体生成联锁表图纸。该软件不仅能提高联锁表自动生成的速度,且能检测信号设备平面布置图中的设计错误,通过友好的人机交互界面,实现用户操作与站场信号设备平面布置图间的数据互联互通,提高轨道交通信号设计人员的工作效率。

猜你喜欢

平面布置信号机轨道电路
探讨高层建筑总平面布局和消防设计平面布置
基于HHT及LCS的轨道电路传输变化识别探讨
驼峰信号机与驼峰辅助信号机显示不一致问题分析
四显示自动闭塞通过信号机在TDCS/CTC采集电路中存在的问题及改进
基于仿真技术的信号平面布置验证
JXG-50S型相敏轨道电路接收器自动测试台
ZPW-2000客专轨道电路掉码故障分析
110kV户外GIS变电站总平面布置优化
半自动闭塞总出发信号机非正常关闭解决方案
25Hz相敏轨道电路的计算和仿真