Data acquisition system for railway freight stations
-
摘要:
针对铁路货运站场设备采集数据与生产作业脱节、采集效率低、缺乏统一规划等问题,设计铁路货运站场数据采集系统。梳理数据采集内容,阐述系统总体架构和逻辑架构,并在此基础上研究数据获取和存储、基于云边协同形式的数据采集等技术。应用表明,该系统实现了对货运全流程作业数据、设施设备运用状态数据和关键安全风险环节数据的采集,为铁路货运车站智能化服务奠定坚实基础。
Abstract:This paper designed a railway freight station data collection system to address issues such as disconnection between data collection and production operations, low collection efficiency, and lack of unified planning for railway freight station equipment. The paper outlined the content of data collection, elaborated on the overall architecture and logical architecture of the system, and based on this, studied technologies such as data acquisition and storage, and data collection based on cloud edge collaboration. The application shows that the system has achieved the collection of data on the entire process of freight operations, the utilization status of facilities and equipment, and key safety risk links, laid a strong foundation for the intelligent service of railway freight stations.
-
Keywords:
- freight station /
- data acquisition /
- microservice /
- cloud edge collaboration /
- intelligence
-
计算机联锁利用道岔、信号机、轨道区段等设备之间的相互关联和相互制约关系,实现对车站作业的计算机集中控制。国内外学者已经对计算机联锁软件进行了大量的研究,谢保锋对车站计算机联锁系统的现状与发展作出了分析[1];陈志颖等人提出了基于站场型数据结构的进路搜索算法[2];陈晓伟应用分布式控制系统和多Agent系统技术,提出了一种新型的分布式、智能化联锁软件的设计方案[3];Eugenio Roanes-Lozano等人提出一种新的计算机联锁决策机制[4];Yildirim等人利用计算机代数工具箱自动生成铁路联锁工作台[5];杨美娜等人采用二叉树结构的进路搜索算法设计高速铁路的计算机联锁软件[6];彭丽维提出了为各类信号设备建立图元模型的设计思想[7];孙晓光利用 CAD 图块方法提供统一的信号图元,实现了信号平面布置图标准化处理[8]。
以上对计算机联锁软件的研究,主要针对某一具体过程(如进路搜索、站场数据构造),在设计时均需要先设计联锁表,后在软件中配置大量联锁数据来实现,进路搜索以数据配置为基础,消耗了大量时间。未来,便捷式联锁软件表示层的绘制和联锁进路搜索数据结构的自动构建将成为重要发展方向。
本文提出了一种模块化计算机联锁软件(简称:模块化联锁软件)设计方法,将道岔、信号机、轨道区段等设备设计为不同的程序模块,用户利用鼠标拖动不同的程序模块并输入各设备的具体参数,绘制联锁软件表示层,绘制完成后,软件可自动建立二叉树站场联锁数据结构,无需手动配置大量联锁数据,并使用递归算法完成计算机联锁进路搜索。在某车站,分别使用本文提出的设计方法和传统的设计方法设计联锁软件,对比两种方法的设计流程和设计用时,验证了本文所提联锁软件设计方法的优越性。
1 程序模块设计
联锁软件的表示层显示道岔、信号机、轨道区段的图形、状态和位置等信息。为完成联锁软件表示层的设计,需要设计道岔、信号机、轨道区段的程序模块。本文采用面向对象[9]的思想,使用C#语言编程,WinForm作为用户界面框架,分别设计道岔模块、信号机模块、轨道区段模块。
建立Equip类(父类),再继承父类,创建3个设备子类,分别为道岔模块、信号机模块和轨道区段模块。每个设备子类建立各自的属性参数,其中,道岔模块包含道岔类别(单动/双动/交叉渡线/复式交分等)、撇型/捺型、道岔图号等,信号机模块包含信号机类型、显示颜色、信号机方向(向左/向右)等,轨道区段模块包含长度、类型(一体化、25 Hz、高压脉冲等)、占用/空闲等。
1.1 道岔模块设计
道岔模块主要实现道岔的绘制、定反位转换、拖动及缩放功能。
1.1.1 道岔绘制
在软件设计中,道岔以定型组合的形式呈现,除了需要绘制道岔,还要绘制一段各岔尖对应的轨道区段,用DrawLine方法绘制出道岔定型组合中的连接每个两端端点的直线,需要使用画笔Pen实例化一个道岔对象,定义单色画笔来绘制道岔轮廓和基本形状;使用从Brush类派生出的SolidBrush类画刷对象,实现道岔颜色填充。以单动道岔(撇型)为例,道岔图像如图1所示。
由于整个设备在一张画布上,需要实现道岔与画布背景分离,且由于画出的不是一个线性图形,而是多条直线组成的复杂形状,因此,利用GraphicsPath类记录下绘图的过程后将所有直线一起画出。
1.1.2 道岔定反位转换
由于道岔定反位显示中只有岔尖部分的画法与道岔的不同,其他均一致,因此,可用鼠标点击岔尖具体范围的位置后,再用道岔直股或者弯股的画法实现。根据上述单动道岔子类中所设置的鼠标点击事件,以及代码中对单动道岔画法及抠图的不同,利用判断语句实现道岔定反位转换的表示。
1.1.3 道岔拖动及缩放
通过多态性实现道岔拖动及缩放功能。在实现道岔的缩放功能时,要求在鼠标按下时记录原始的鼠标位置,鼠标移动时要计算差值,鼠标抬起时要记录位置,这些是父类具备的功能。子类的鼠标抬起的时候,刷新原来的基准值,而子类的刷新基准不相同,此时,将该事件对应的功能函数设为多态,即同一操作作用于不同的对象可产生不同的执行结果,符合功能实现的要求。此外,由于需要能够同时实现道岔的拖动及缩放功能,在鼠标按下和移动时需要判断是实现哪一种功能,两者可用不同区域、不同鼠标样式进行区分。
1.2 信号机模块设计
信号机模块在道岔模块的基础上完成,由于信号机不存在抠图、转换及缩放的要求,在信号机模块设计时只需完成信号机的绘制、拖动及标签按钮的配置,其中,拖动功能可参考道岔进行设计。
1.2.1 信号机绘制
使用Graphics类DrawEllipse方法绘制信号机。由左上角坐标、指定高度和宽度的正方形边框定义信号机圆形灯位形状;采用DrawLine方法,绘制两端端点坐标确定的信号机直线型基柱形状;采用FillEllipse方法,填充由左上角坐标、高度和宽度指定的正方形边框所定义的信号机灯位的显示颜色。
根据此画法,将信号机整体外形画出并填充好信号机的灯位颜色,以矮柱单灯位信号机为例,信号机图像如图2所示。
1.2.2 信号机标签按钮配置
如图2所示,蓝色灯位左侧为信号机标签位置,上方为其按钮位置,标签及按钮为标准控件,其尺寸、位置及字体等的设计通过构造函数实现。
1.3 轨道区段模块设计
轨道区段模块的设计内容主要包括图形绘制、标签设计和缩放,由于轨道区段在绘制时是一条直线,且不需抠图,缩放只是对轨道区段进行伸缩,因此,可参照道岔模块的设计方法,轨道区段图像如图3所示。
1.4 绘制界面设计
绘制界面包括两部分:(1)左侧为绘制站场按钮工具栏;(2)右侧为当前站场绘制的界面。在使用时,用鼠标点击不同类型设备(信号机,道岔,轨道区段)按钮并输入其具体参数值,输入完成后可对其进行拖动以调整到正确位置,完成对该设备的绘制。对所有设备进行绘制,完成联锁软件表示层设计,为联锁数据结构的生成和进路搜索的实现建立基础。本文联锁软件的绘制界面如图4所示。
2 模块化站场数据结构与进路搜索设计
2.1 二叉链表与站场数据结构
二叉树[10]由一个根节点和两个互不相交的被称为左子树和右子树的节点组成,其中,左子树或右子树可以为空,二叉树的单链表链接如图5所示。
利用站场形状和二叉树形状的相似性[11],站场中各设备分别作为道岔、信号机、轨道区段这3个子类的对象,依据二叉树的单链表结构进行连接,将每个设备对象的指针存放在容器PointVector中,将PointVector设计为存放父类指针的容器。以某车站为例,站场部分数据结构如图6所示。
将道岔、信号机、轨道区段等模块映射为二叉树中的基本节点单元,绘制完成的设备自动进行连接,并添加模块化联锁软件操作按钮和操作表示灯,生成模块化联锁软件人机交互界面。仍以上述某车站为例,在图4所示绘制界面中,将联锁软件表示层绘制完成后,自动生成模块化联锁软件的人机交互界面,如图7所示。
2.2 进路搜索设计
进路是车站内列车或调车车列在两个地点之间运行的路线,由若干控制列车运行的设备(如道岔、信号机、轨道区段)组成。进路搜索根据进路的始端、终端(或始端、终端和变更按钮),将组成进路的所有设备对应的节点搜索出来。
将道岔、信号机、轨道区段这3个模块中每个对象的指针统一存放在PointVector容器中时,由于PointVector被设计为存放父类指针的容器,子类对象的指针将被隐式转换为父类指针(子类对象可转换成父类对象),可能导致进路在搜索完成后,搜索出的各设备的指针不能调用其所属类中的自身的操作(即子类对象不能转换为父类对象)。因此,本文利用面向对象的程序设计中的多态思想,用父类指针指向各设备对象,再将每个设备对应的父类指针存储到PointVector容器中。
采用递归算法实现进路搜索[12],根据递归算法的实现条件,进路搜索函数SearchPoint可分为搜索保存部分和递归出口条件部分。
2.2.1 搜索保存部分
搜索保存部分指在保证节点不为空且未找到目标节点指针的情况下,按根节点、右子树和左子树(或根节点、左子树和右子树)的顺序依次进行搜索并保存节点指针至父类指针容器PointVector中。在搜索左子树之前,从父类指针容器尾部开始删除各模块中设备节点指针至根节点(不包括根节点),剔除进路外的无关节点指针。
2.2.2 递归出口条件部分
递归出口条件分以下两种情况。
(1)当进路中无变更按钮时,进路的始、终端对应的设备节点指针将作为进路搜索函数的参数进行搜索。在搜索到尾节点仍未搜索到目标节点时,保存该尾节点指针至PointVector,并让搜索函数返回;搜索到目标节点时,将搜索标识FindPoint置为true,保证搜索函数在返回过程中不会继续保存或删除容器PointVector中已存在的节点指针,再将搜索函数返回。
(2)当进路中有变更按钮时,可将始端、变更按钮和变更按钮、终端两组设备节点指针依次作为进路搜索函数的参数,逐次进行搜索。
以图7中举例站D1—IIG调车进路的进路搜索过程为例,采用递归算法进行进路搜索的轨迹如图8所示,PointVector中节点指针变化如表1所示。在本次搜索中,共进行了7次递归调用。
表 1 PointVector中节点指针变化递归调用 节点指针变化 第1次 P(D1)、P(1DG)、P(1)、P(5)、P(D3)、P(9DG)、P(9)、P(D9)、P(11DG)、P(11)、P(S3)、P(3G) 第2次 P(D1)、P(1DG)、P(1)、P(5)、P(D3)、P(9DG)、P(9)、P(D9)、P(11DG)、P(11) 第3次 P(D1)、P(1DG)、P(1)、P(5)、P(D3)、P(9DG)、P(9)、P(D9)、P(11DG)、P(11)、P(S1)、P(1G) 第4次 P(D1)、P(1DG)、P(1) 第5次 P(D1)、P(1DG)、P(1)、P(3)、P(3DG)、P(D5)、P(5DG)、P(5)、P(D7)、P(7DG)、P(7)、P(9)、P(D9)、P(11DG)、P(11)、P(SI)、P(IG) 第6次 P(D1)、P(1DG)、P(1)、P(3)、P(3DG)、P(D5)、P(5DG)、P(5)、P(D7)、P(7DG)、P(7) 第7次 P(D1)、P(1DG)、P(1)、P(3)、P(3DG)、P(D5)、P(5DG)、P(5)、P(D7)、P(7DG)、P(7)、P(SII)、P(IIG) 3 软件分析与比较
传统联锁软件设计方法要求先设计联锁表,并对大量联锁数据进行手动配置,联锁表由设计单位设计,联锁数据由设备厂家配置,两项内容的设计和交接消耗了大量时间和人力。本文所提联锁软件设计方法将设备进行模块化处理,使用拖动方式完成联锁软件表示层绘制,软件即可自动生成二叉树数据,建立数据连接,完成进路搜索,得到最终的模块化联锁软件,省去了大量时间。
以图7中举例站为例,使用本文所提方法和传统方法设计联锁软件,所需时间如表2所示。
表 2 联锁软件设计所需时间对比各设计流程所需时间/ h 联锁表设计 联锁软件站场图形生成 联锁数据配置与生成 联锁软件测试及修改 总时间 传统联锁软件方法 12 15 12 24 71 本文模块化联锁软件设计方法 0 18 0.5 28 54.5 由表2可知,本文所提设计方法在联锁表设计及联锁数据配置与生成两项上节省了大量时间,总时间节省了约30%。
4 结束语
本文设计了一种基于递归算法的模块化计算机联锁软件,将不同的设备设计为不同的程序模块,实现在软件里拖动相关模块完成联锁软件表示层的绘制,并利用二叉树和递归算法完成数据结构的建立、进路搜索。该模块化计算机联锁软件设计方法摆脱了传统联锁软件需要手动配置大量联锁数据和设计联锁表的困扰,节省了大量时间,提高了设计效率。
-
[1] 孔垂云. 基于货运票据电子化的货物全程追踪与预计到达关键技术[J]. 中国铁路,2021(11):14-18, DOI: 10.19549/j.issn.1001-683x.2021.11.014 [2] 黄敏珍,林晓蕾,李国华,等. 5G技术在铁路数字化货运场站的应用研究[J]. 铁路计算机应用,2021,30(5):6-9,14. [3] 黄永亮,吴志伟. 基于比价的铁路货运一口价策略研究[J]. 铁路计算机应用,2021,30(8):24-28. [4] 米 丽,黄敏珍,马志强,等. 铁路货运数据安全体系构建及安全策略研究[J]. 铁路计算机应用,2023,32(12):18-23. [5] 戚小玉. 基于铁路数据服务平台的电务大数据智能运维技术研究与应用[J]. 铁道运输与经济,2023,45(9):66-73. [6] 单俊强,李海涛,邢国栋,等. 基于人工智能的铁路机务数据信息集成平台设计[J]. 微型电脑应用,2023,39(10):226-229. [7] 向朝兴. 基于多数据融合的智慧园区管理系统研究与应用[D]. 上海:上海工程技术大学,2021. [8] 李超旭,王 辉,李 燕,等. 动车组PHM模型数据处理架构优化及关键技术研究[J]. 铁路计算机应用,2022,31(7):63-68. [9] 王建文,赵文龙,黄国辉. 云边协同的新一代城市轨道交通生产系统融合平台研究[J]. 都市快轨交通,2022,35(5):146-151. [10] 贾利民,陈熙元,马小平,等. 基于云边交互机制的自主式高速铁路防灾系统架构[J]. 中国铁道科学,2022,43(5):165-176. -
期刊类型引用(3)
1. 曲涛,景宁,张仁义,洪希仁,常伟,王亚茹. 基于机器学习的辅助逆变器进风滤网堵塞诊断. 铁道车辆. 2024(03): 80-83 . 百度学术
2. 胡平. 铁路机车车辆运行故障监测诊断研究. 粘接. 2021(06): 169-173 . 百度学术
3. 王凯,刘成瑞. 动车组智能化网络控制系统研究. 智慧轨道交通. 2021(05): 13-18 . 百度学术
其他类型引用(0)