Automatic generation software for interlocking table based on custom entity
-
摘要: 为提高联锁表编制效率和准确性,设计基于自定义实体的联锁表自动生成软件。使用AutoCAD二次开发接口,读取利用ObjectARX创建的信号设备自定义实体的数据信息;根据信号设备平面布置图的结构特点自动生成站场型数据结构;利用深度优先搜索(DFS, Depth First Search)算法搜索进路,并根据联锁表编制原则,处理进路数据和生成联锁数据。现场试用结果表明,该软件能与信号设备平面布置图实时交互,快速访问AutoCAD数据库,直接调用其中实体,生成标准格式的铁路车站联锁表及地铁车辆联锁表,准确率超过99%,且具有较高的通用性。Abstract: To improve the efficiency and accuracy of interlocking table compilation, this paper designed an automatic generation software for interlocking table based on custom entity. The paper used the AutoCAD secondary development interface to read the data information of customized entities of signal equipment created using Object ARX, automatically generated the station type data structure based on the structural characteristics of the signal equipment layout plan, used Deep First Search (DFS) algorithm to search for routes, and according to the principles of interlocking table compilation, processed route data and generated interlocking data. The on-site trial results show that the software can interact with the signal equipment layout plan in real-time and quickly access the AutoCAD database, directly call the entities in it, generate standard format railway station interlocking tables and subway vehicle interlocking tables with an accuracy rate of over 99% and high universality.
-
Keywords:
- custom entity /
- ObjectARX /
- route searching /
- automatic generation /
- interlocking table
-
联锁表是体现站场信号设备间联锁关系的图表,根据其展现的进路中道岔、信号机、轨道电路间的制约关系,可实现对站场联锁关系的检查[1]。因此,联锁表对确保行车安全,提高行车效率具有重要意义,是轨道交通信号设计领域中的关键一环。随着我国轨道交通事业的蓬勃发展,其信号设计领域的工作量和设计难度与日俱增,迫切需要计算机软件来辅助提高设计工作的效率与质量。
联锁表的生成需要以一张准确规范的站场信号设备布置图为数据源。目前,国内各大设计院都在升级传统的制图方式,不再单纯依靠拼接AutoCAD中定义好的图块进行绘图,而是通过ObjectArx对AutoCAD进行二次开发,将站场信号设备布置图中的设备封装成自定义实体[2],再对其进行拼接,实现平面布置图的绘制。
本文研发基于自定义实体的联锁表自动生成软件,利用ObjectARX对AutoCAD进行二次开发,在AutoCAD运行环境下,直接以由自定义实体绘制的站场信号设备平面布置图作为数据输入[3];同时,软件通过直接访问AutoCAD数据库[4],调用其中的图形与文字实体,绘制联锁表,从而提高联锁表的编制效率及准确性。
1 软件架构
本文研发的基于自定义实体的联锁表自动生成。软件架构分为数据预处理、联锁逻辑运算和人机交互3个模块,模块间数据互通,又相对独立,如图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 数据节点关联算法
本文软件利用由自定义实体绘制的站场信号设备平面布置图中读取的坐标数据,生成站场型数据结构,其步骤如下。
(1)将各个轨道电路与两侧绝缘节相关联:遍历图纸中所有绝缘节实体,以绝缘节基点坐标为中心,创建一个边长为1的矩形区域对象Rect。如果轨道区段两端端点的坐标落在Rect之中,则将此绝缘节信息存入符合条件的轨道电路自定义实体中,如图3所示。IAG轨道电路实体的2个端点的坐标分别在以JY0与JY1为基点创造的矩形区域对象Rect中,因此,在IAG实体中记录其左端绝缘节为JY0,右端绝缘节为JY1。
(2)将轨道电路与信号机相关联:对信号设备平面布置图中所有信号机实体,以信号机基点为中心,创建一个边长为1的封闭多段线实体pPolyLine。遍历图纸中的轨道电路实体,以多段线实体pPolyLine和某一轨道电路实体为参数,若2个实体相交,则返回交点坐标,否则继续判断其他轨道电路实体与pPolyLine的相交关系。每个信号机与2条轨道电路分别产生交点pt1和pt2,通过对pt1、pt2及信号机D1基点坐标的横坐标相比较,可得出轨道电路与信号机左侧或是右侧相连,并将信息记录在轨道电路实体与信号机实体中,如图4所示。图4中,pt1在D1基点坐标ptSig的左侧,说明IAG连接的是D1信号机左侧。
(3)将轨道电路与道岔相关连:对于图纸中所有道岔实体,以道岔基点为中心创建一个边长为1的封闭多段线实体pPolyLine,调用ObjectARX来判断pPolyLine与轨道电路实体是否相交,并求出交点,如图5所示。图5中,3号道岔产生的多段线实体与3DG产生了2个交点pt1与pt2,与另一条轨道电路产生一个交点pt3;道岔侧向的轨道电路与pPolyLine仅相交于一点,因此,pt3代表3号道岔反位;计算pt3与pt1、pt3与pt2间的距离,离pt3距离近的点表示道岔定位,离pt3距离远的点表示道岔前支。
(4)遍历轨道电路实体,进行区段内部设备位置连接:经过前3个步骤,每个轨道电路内部都记录下了其关联的信号设备及信号设备的具体位置信息。根据这些信息,在轨道电路实体内部从左到右进行信号设备的互相连接。如图5中,3DG内部“D1右”的右侧是“#3定位”,由此可得出D1信号机右侧连接3号道岔定位。
上述步骤完毕后,站场信号设备平面布置图即可抽象表示为站场型数据结构,如图6所示。
2.3 进路搜索
2.3.1 进路搜索的基本原理
为不遗漏站场中任何一条可能存在的进路数据,确保生成联锁表数据的完整性,本文软件基于深度优先搜索(DFS, Depth First Search)算法进行进路搜索。DFS算法从起点开始,不断处理最新遇到的节点,并按照一个方向穷尽式搜索,当沿着该方向无法继续向前搜索时,返回最近一次搜索路径分岔处,沿着另一方向继续搜索,该过程类似于列车在进路中从始端信号机出发,不断经过轨道区段、道岔,最终停止于进路终端的过程。因此,DFS算法符合进路的生成逻辑。
因联锁表中需要记录基本进路与变通进路的信息,而基本进路一般编写在变更进路之前,且一般为走道岔直股的进路,所以,为减少对基本进路与变通进路间的排序,本文软件在搜索进路的过程中,遇到对向道岔而需要选择搜索方向时,会优先完成道岔直股方向的进路搜索,使基本进路在进路列表中处于变通进路之前。以图7为例,搜索以X为始端信号机的进路,经过5号道岔处时,路线产生了分叉,本文软件会继续沿着5号道岔直股方向前进,搜索至SI信号机处才会结束此方向搜索,并回到5号道岔处,进行侧向进路搜索。
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数据库块表中的块表记录内。因此,自动绘制联锁表的步骤如下。
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所示。每个部分设置了相应的功能按钮来实现各部分的功能。在用户使用过程中,软件状态提示部分会记录下用户已操作的所有步骤,并给出下一步操作提示;当用户操作出现错误时,给出对应的错误提醒,确保软件正常运行。
站场属性设置界面如图11所示,用户可根据当前站场类型选择生成普铁、高铁或地铁车辆段的联锁表图纸。用户通过该界面与图纸中自定义实体进行数据交互。以修改信号机自定义实体属性为例,界面如图12所示,通过List控件展示所有信号机自定义实体属性,在每列属性栏中使用combo-box控件提供相应的选项来修改实体数据,方便用户在AutoCAD图纸数据出错时及时修正。
4 软件实现
4.1 软件配置文件与运行环境
本文软件采用Microsoft Visual Studio 2012 作为开发平台,以C++为基础进行面向对象的程序设计[10],基于自定义实体的交互逻辑进行开发,预留出与自定义实体适配的管理类,软件配置文件与运行环境如图13所示。为确保软件在AutoCAD中能够与由自定义实体绘制的站场信号设备平面布置图正常交互,需要信号设计方提供信号设备自定义实体的头文件与实现实体功能的静态链接库。头文件和静态链接库中定义了每种自定义实体的交互接口,通过自定义实体的交互接口与软件的自定义实体管理类互相配合,搭建起软件与信号设备平面布置图之间的双向数据通道,实现信号设备平面布置图和软件的实时交互,并使软件能够在AutoCAD环境中与由自定义实体绘制的信号设备平面布置图一体化运行。
4.2 软件试用情况
在普铁/高铁模式下,本文软件在读取使用自定义实体绘制的站场信号设备平面布置图后,可生成列车进路联锁表、调车进路联锁表、组合进路联锁表、延续进路联锁表、非调车进路联锁表共5类联锁表;在地铁车辆段模式下,软件能生成列车进路联锁表、调车进路联锁表、组合进路联锁表、引导进路联锁表共4类联锁表。本文选择了5个普铁车站、3个高铁车站、2个地铁车辆段对软件的通用性与准确性进行测试,并将软件自动生成的联锁表与经过设计院核对的联锁表数据进行对比,实验结果如表2所示。
表 2 通用性与准确性实验结果站场名称 站场性质 道岔数量 股道数量 进路数据数量 生成进路数据数量 准确率 北京南站 高铁 36 7 171 171 100% 亦庄站 高铁 8 4 52 52 100% 永乐站 高铁 12 4 32 32 100% 新宫站 地铁车辆段 52 23 609 605 99.30% 句容站 地铁车辆段 54 19 159 159 100% 砀山站 普铁 33 8 198 198 100% 蓟县西站 普铁 41 7 226 226 100% 大同县站 普铁 25 6 166 166 100% 夏邑站 普铁 25 6 156 156 100% 宝鸡站 普铁 97 10 642 642 100% 实验结果表明,自动生成的联锁表准确率超过99%,且具有较高的通用性,可适应普铁车站、高铁车站、地铁车辆段等3种工作模式。
5 结束语
本文研发的基于自定义实体的联锁表自动生成软件,通过直接访问AutoCAD数据库的方式读取由自定义实体绘制的站场信号设备平面布置图的数据,运用实体的坐标数据自动建立站场型数据结构,搜索站场进路信息,根据标准的联锁表编制原则处理获取到的进路数据,并且直接调用AutoCAD数据库中多段线及文字实体生成联锁表图纸。该软件不仅能提高联锁表自动生成的速度,且能检测信号设备平面布置图中的设计错误,通过友好的人机交互界面,实现用户操作与站场信号设备平面布置图间的数据互联互通,提高轨道交通信号设计人员的工作效率。
-
表 1 站场信号设备平面布置图提供的数据
自定义实体类型 需要获取的数据 信号机 名称、类型、基点坐标、朝向、旋转角度 道岔 名称、基点坐标、旋转角度 轨道电路 名称、起点坐标、终点坐标 绝缘节 类型、基点坐标、旋转角度 文本 内容、基点坐标 块参照 名称、坐标、旋转角度 表 2 通用性与准确性实验结果
站场名称 站场性质 道岔数量 股道数量 进路数据数量 生成进路数据数量 准确率 北京南站 高铁 36 7 171 171 100% 亦庄站 高铁 8 4 52 52 100% 永乐站 高铁 12 4 32 32 100% 新宫站 地铁车辆段 52 23 609 605 99.30% 句容站 地铁车辆段 54 19 159 159 100% 砀山站 普铁 33 8 198 198 100% 蓟县西站 普铁 41 7 226 226 100% 大同县站 普铁 25 6 166 166 100% 夏邑站 普铁 25 6 156 156 100% 宝鸡站 普铁 97 10 642 642 100% -
[1] 杨 扬. 车站信号控制系统[M]. 成都: 西南交通大学出版社, 2012. [2] 于 磊,骆正新. 地铁正线联锁表自动生成软件的研究与设计 [J]. 铁路通信信号工程技术,2022,19(9):95-100. [3] 高兵德. CAD二次开发在铁路车站信号设计中的应用 [J]. 铁道通信信号,2016,52(8):33-35. [4] 张 帆, 朱文俊. AutoCAD ObjectARX(VC)开发基础与实例教程[M]. 北京: 中国电力出版社, 2014. [5] 汤亚玲, 胡增涛. C++语言程序设计[M]. 北京: 人民邮电出版社, 2016. [6] 杨瑞宇. CAD二次开发及其在铁路信号施工图设计中的应用 [J]. 铁道标准设计,2012(2):115-117. [7] 谢 林,杨 扬. 基于二维坐标信息进路搜索算法研究 [J]. 铁路计算机应用,2015,24(8):16-19. [8] 中国铁路总公司. 计算机联锁车站联锁图表编制原则: Q/CR 654-2018 [S]. 北京: 中国铁道出版社, 2018. [9] 杜 涛. 典型站场信号平面布置图中联锁表的编制原则及分析 [J]. 科技创新导报,2019,16(26):26-27. [10] 谢朝燕,杨 扬. 车辆段信号设备平面布置图辅助设计平台的研究 [J]. 铁路计算机应用,2022,31(10):73-79. -
期刊类型引用(6)
1. 赵志鹏,褚伊郎君,徐威,张亮. CTCS3-300H型列控车载设备状态在线监测与智能分析系统开发与应用. 铁路计算机应用. 2024(05): 73-79 . 本站查看
2. 郭心全,吴霞,李俊波,沈鹍,郝贵才. 基于GBDT模型的接触网异物分类研究. 智能计算机与应用. 2024(06): 41-49 . 百度学术
3. 秦治国. BN模型下的汽轮发电机组故障诊断方法研究. 机械管理开发. 2024(10): 98-99 . 百度学术
4. 王心仪,程剑锋,刘育君,李珍萍,尤瑞君,岳林. CTCS-3级列控车载设备自动化仿真测试平台优化研究. 铁道标准设计. 2024(11): 177-184 . 百度学术
5. 常尚鹏. 后疫情时代“直播营销”主题下网民热议焦点分析研究. 中国市场. 2023(18): 119-122 . 百度学术
6. 高良军,唐义新,陈亮,王北福. 原油船海上航行升沉运动Bayes-LSTM预测方法. 油气储运. 2023(11): 1291-1296 . 百度学术
其他类型引用(2)