Modeling and simulation of metro train control circuit
-
摘要: 由于地铁列车控制电路的庞大、复杂、联锁性强等特点,目前,列车控制电路只是以CAD绘图的方式绘制保存,并不能仿真电路。针对这一点,开发一套可自行绘制电路图并且进行动态仿真的电路建模与仿真软件,使电路开发人员在开发过程中能够更方便地进行电路开发与验证。在Visual Studio编程环境下,利用其MFC类库编程实现了此电路建模与仿真系统。Abstract: Due to the huge, complex and interlocking characteristics of metro train control circuit, at present, the train control circuit is only drawn and saved by CAD drawing, and cannot be simulated. In view of this, this article developed a set of circuit modeling and simulation software which can draw circuit diagram and conduct dynamic simulation, so that circuit developers can carry out circuit development and verification more conveniently in the development process. In the Visual Studio programming environment, the circuit modeling and simulation system were implemented by MFC class library.
-
Keywords:
- metro train /
- logic module /
- logic circuits modeling /
- dynamic simulation /
- MFC
-
由于地铁列车控制电路的庞大、分布性、封装性和联锁性等因素,目前的仿真软件还无法满足其各项要求。文献[1]中所提到的Proteus是现在非常流行的电路仿真软件,由于地铁列车控制电路中独特的封装模块原因,Proteus也无法搭建完整的地铁列车控制电路。对于城轨列车培训系统,有许多学者做了此方向的研究。文献[2]中提出了针对铁路调度员的培训系统,主要介绍了系统的硬件结构和软件模块的划分。文献[3]中研究了适合企业发展的列车驾驶员培训路线。文献[4]中研究了列车仿真的关键技术。文献[5]中研究了列车驾驶培训系统的基本模块组成。而文献[6]和文献[7]都对模拟驾驶装置进行了研究,根据需求对整个工程的设计思路都进行了详细的介绍。这些研究都为本文提供了很好的参考。本文研究的地铁列车控制电路建模与仿真系统可以实现用户自行绘制电路图并仿真的功能。系统将电路原理图中的电气元件做成专门的电气控件将电路中的集成封装电控单元做成处理器模块,按实际运行逻辑定义其引脚的输入输出;将绘制完整的电路图数据保存下来,搜索其所有回路;按照回路中各个开关元器件的状态以及电源状态进行动态显示。地铁列车控制电路建模与仿真系统不仅可以让电路开发人员在开发中进行仿真验证,还可以对列车相关工作人员进行培训。
1 绘制电路原理图
整个电路图的绘制主要分为3个步骤:添加与输入元件,编辑图纸和生成图纸信息。电路的信息主要包括元件信息、节点信息和标注信息。所以分别建立元件类、节点类和标注类这3种对图纸信息进行操作。所绘制的电路原理图数据应包含元件类型、元件标识、元件物理状态和电状态、元件引脚之间的连接关系以及元件与元件之间的逻辑联结关系(如继电器与其触点开关)等。
1.1 电气控件生成
电路原理图中的电气控件可以分为2种类型。普通电气元件和集成封装电控单元。将这2种元件都做成专门的电气控件,普通电气元件就按照其实际的功能逻辑做成控件;将电路中的集成封装电控单元做成处理器功能模块,按实际运行逻辑定义其引脚的输入输出。每个电气控件作为一个元件,元件库应包含以下信息:元件总数n,元件类型号,元件名,矩形框的两顶点参数,点的个数和坐标,线段的条数和坐标,弧线的条数和参数以及引脚的个数和坐标等。
1.2 图纸编辑
绘图模块通过MFC[8]类函数实现通过鼠标的点击与拖动等操作对图形元素进行插入、删除、平移和旋转等编辑功能。图1为绘图时的界面,左边为元件库,可以直接拖拽入画板使用。
在绘图时,直接访问图纸中图形元素的属性数据进行元件的图形数据、逻辑数据和标注数据的修改,图形元素的数据可分为类型、坐标、图形数据、逻辑连接数据和实体标注数据。
类型为此图形元素的类型,例如开关类、继电器类、标注类等。图形数据的数据结构为:
${\rm{struct\; CShape }}$ {${COLORREF\;color\left[ 2 \right]}$ ;//图形颜色${tagBOX\;\;\;\;\;\;Box\;\;\;\;\;\;\;\;\;\;}$ ;//选择框${struct\;H\{ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;}$ //线条数据${unsigned\;char\;type\;\;}$ ;//类型${unsigned\;char\;flag}$ ;${unsigned\;char\;Style:3}$ ;//线型${unsigned\;char\;Width:5}$ ;//线宽${unsigned\;char\;LgSt\;\;\;}$ ;//仿真用${union }$ {${struct }$ {${unsigned\;char:8,{\rm{ }}:8,{\rm{ }}:8,{\rm{ }}n}$ ;};
${struct }$ {${COLORREF\;color:24,{\rm{ }}:8\;}$ ;//线条颜色};
};
${inline\;void\;init()\{ memset(this,{\rm{ }}0,sizeof(*this));}$ }} ;
} ;
图形数据修改界面,如图2所示。
逻辑连接数据有2种,导线连接数据和逻辑联结数据。导线连接数据包含连接方式、元件引脚点、连接对象引脚点。逻辑联结数据包含连接方式、联结位置和联结元件的标注名。实体标注数据包含标注信息、对齐方式、标注坐标、字体、大小、颜色、方向和效果。
元件和标注的设置界面都属于图形数据,也归纳在图2中,详细数据输入时通过属性页切换输入。连接线也属于元件类,其图形数据在连接2元件后自动生成,而其他元件的图形数据在绘制元件时自动生成,之后的拖拽修改操作都会使数据发生相应变化,也可以进入图形数据界面手动修改。元件的逻辑连接数据在连接两元件后自动生成。元件的标注直接在其属性数据中进行添加。图纸中的其他标注直接右键进行添加。
1.3 生成图纸信息文件
在图纸绘制完毕保存时,会对电路图中的元件、节点、标注及它们之间的关系进行保存,生成图纸信息文件。此外,图纸信息还包括画板的大小、坐标及显示坐标间映射关系;所有元件的线性链表;节点的线性链表;标注的线性链表等。图纸数据结构,如图3所示。
2 逻辑回路搜索
电路中的元素是以链表的形式保存,并非单纯的图形坐标,这样才便于回路搜索。电路图是基于图论的数学模型[9],在加载图纸文件后,将电路链表数据转化为节点与支路的有向图模型,利用遍历搜索算法搜索出每一条回路,再根据回路中各元件的状态确定回路的通断,便得到所有的回路信息。系统将搜索到的回路信息放入内存,以便随时进行动态仿真。
2.1 有向图模型建立
为了便于搜索,将电路转化为节点与支路的模型。由于有二极管的存在,需要将支路分为2个方向,建立有向图模型。
节点属于逻辑数据,是没有方向性的。所以可以直接根据前面绘图得到的节点链表得到节点集合:
$${{N}} = \{ {N_1},{N_2},\cdots,{N_n}\} $$ (1) 其中,n为节点个数。
支路是由元件组成的,或者说在有向图中,元件就是支路,由于方向的限制,每个元件对应2条支路,可以得到支路的集合如下:
$${{B}} = \{ {B_{Z1}},{B_{Z2}},\cdots,{B_{Zb}},{B_{F1}},{B_{F2}},\cdots,{B_{Fb}}\} $$ (2) 其中,B为含有2b个元素的集合,包含第1方向支路和第2方向支路各b条。
根据支路和节点的关系(每条支路对应2个节点),可以得到支路与节点的关联矩阵:
$$\begin{aligned} &{{{{R}}_{{{NB}}}}} = {[{r_{ij}}]_{n \times 2b}}\\ &{r_{ij}}\! =\!\! \left\{ \begin{array}{l} \!\!\!1 \;\;\; {\text{支路}}{{j}}{\text{与节点}}{{i}}{\text{有关联、方向背离节点}}{{i}}\\ \!\!\! - 1\;\;\;{\text{支路}}{{j}}{\text{与节点}}{{i}}{\text{有关联、方向指向节点}}{{i}}\\ \!\!0\;\;\;{\rm{ }} {\text{支路}}{{j}}{\text{与节点}}{{i}}{\text{无关联}} \end{array} \right.\!\!\!\!\!\!\!\!\end{aligned}$$ (3) 将支路看作有向边,节点看作顶点。可以得到有向边与顶点间的完全关联矩阵:
$$\begin{aligned} &{{{{R}}_{{{EV}}}}} = {[{r_{ij}}]_{n \times 2b}}\\ &{r_{ij}} = \left\{ \begin{array}{l} 1\;\;\; {\text{边}}{e_j}{\text{与顶点}}{v_i}{\text{关联、方向背离}}{v_i}\\ {\rm{ - }}1\;\;\; {\text{边}}{e_j}{\text{与顶点}}{v_i}{\text{关联、方向指向}}{v_i}\\ 0\;\;\; {\text{其它}} \end{array} \right.\end{aligned}$$ (4) 2.2 深度优先遍历搜索算法
由于深度优先遍历搜索算法具有代码简单,占内存小的优点,所以本文采用深度优先遍历搜索算法。深度优先遍历搜索算法利用有向图的邻接表搜索出起点到终点间的所有单向通路。实际运行时的邻接表就是上一节得到的
${R_{EV}}$ ,将顶点放在第1行,终点放置最后1行。从第1行搜索第1个1,这就是起点出发的位置,然后在该列搜索第1个−1,这就搜索完了第1条支路。再从此行搜索第1个1,如此往复直到到达终点,就找到了一条回路。然后再跳回至倒数第2个节点,继续在那行向后找1。由于搜索的回路不能重复,所以必须记录每一个节点。当搜索完首行对应的所有1时结束搜索。深度优先遍历搜索通常是通过递归搜索实现的。先从首节点开始,保存此节点位置,搜索并判断下一节点是否为尾节点。若是,保存回路,结束搜索;若不是,将此节点作为当前节点,再搜索它的下一节点进行判断,直到结束。搜索流程,如图4所示。
2.3 电路状态
电路回路的状态分为电状态和物理状态,确定逻辑为:当回路中所有元件物理状态为1时(元件物理状态代表元件的通断,如开关断开时物理状态为0,闭合时为1),回路物理状态为1;当回路物理状态为1且电源状态为1时,回路电状态为1;当回路电状态为1时,所有元件的电状态为1。元件的物理状态和电状态是动态仿真的基本依据。
3 控制电路仿真
控制电路仿真模块根据元件、回路及电源的状态进行动态仿真。仿真电路按照上海地铁3号线的列车控制电路绘制。当电路图加载时会对电路元件进行初始化,然后根据仿真界面输入的信号对电路元件状态进行控制,根据各元件状态的变化进行逻辑运算得到回路状态。根据回路的状态对回路和元件的颜色及位置进行相应的改变来达到仿真控制的效果。
3.1 仿真操作界面
为方便仿真演示和教学形象生动,系统提供了仿真控制面板供用户操作。文献[10]中设计的司机驾驶台操作界面中显示了城轨列车的基本属性,最大化地利用了界面空间。本文为了让用户能够更接近真实操作的环境,用户仿真操作界面模仿实际司机驾驶台绘制。图5为仿真操作界面局部图。用户可以直接点击图中旋钮进行仿真输入,其中,有灯的旋钮可以显示输出,操作界面上还配有压力表、电压表等显示设备,使用户能够像驾驶员一样进行操作驾驶及仿真。
3.2 动态仿真演示
以列车激活电路为例,通过打开列车控制按钮,对比打开按钮前后的电路状态,演示电路动态仿真过程。在仿真过程中,红色的线路为得电状态,黑色的为非得电状态。
在没有按下按钮时,电路状态,如图6所示。当按下列车控制按钮时,电路状态,如图7所示。
3.3 仿真结果
由图6所知,在没有按下按钮时,只有110 V永久列车线有电。当列车控制按钮按下后,列车控制延时继电器通过列车控制按钮得电,WUDYR/3.2触点吸合,松开列车控制按钮,列车控制延时继电器通过WUDYR/3.2触点继续得电。仿真结果与理论一致,满足仿真要求。
4 结束语
地铁列车控制电路建模与仿真系统不仅能够对控制电路基本元件进行建模,还能将电路中的集成封装电控单元做成处理器模块,这不仅能够对电路实现动态仿真及验证,还能在未来地铁列车不断升级改动后,将新的电路元件及封装电控单元继续添加到元件库中供相关人员使用。而且动态仿真功能可以对地铁列车工作人员进行培训,使工作人员可以更直观、有效地学习电路工作原理。
-
[1] 莫建平. 基于Proteus的电路原理图绘制技巧研究 [J]. 广西科技师范学院学报,2018,33(6):149-152. DOI: 10.3969/j.issn.1003-7020.2018.06.038 [2] 卢启衡,冯晓红,常锦昕. 通用微机联锁信号培训系统的设计与实现 [J]. 铁路计算机应用,2008,17(2):47-50. DOI: 10.3969/j.issn.1005-8451.2008.02.017 [3] 张 永. 浅谈现代有轨电车驾驶员培训体系 [J]. 城市轨道通,2016,01(14):60-63. [4] 李 望. 列车运行仿真关键技术及其应用[D]. 成都: 西南交通大学, 2013. [5] 钟志勇. 浅谈地铁列车驾驶仿真培训系统 [J]. 城市建设理论研究,2014,4(22):2223-2224. [6] 李瑞荣,陈晓宏,谭喜堂. 关于列车模拟驾驶器设计方案的研究 [J]. 南方职业教育学刊,2012,2(2):6-10. [7] 巴锦韬. 现代有轨电车模拟驾驶系统的研究与实现[D]. 兰州: 兰州交通大学, 2015. [8] 孙 鑫, 于安平. VC++深入详解[M]. 北京: 电子工业出版社, 2006. [9] 王桂平, 王 衍, 任嘉辰. 图论算法理论、实现及应用[M].徐州: 中国矿业大学出版社, 2012. [10] 蒋 捷. 城轨列车司机驾驶控制台模拟与仿真 [J]. 铁路计算机应用,2015,24(4):58-61. DOI: 10.3969/j.issn.1005-8451.2015.04.015 -
期刊类型引用(2)
1. 王延翠,迟鹏飞,孙术娟,李锟,施孟阳,马周聪. 列车控制电路仿真系统的开发与应用. 智慧轨道交通. 2024(06): 1-8 . 百度学术
2. 卢逸琦,高建华,郑宇宁,王月强. 图论算法对复杂环网继电保护整定配合优化分析. 自动化应用. 2021(01): 118-119+122 . 百度学术
其他类型引用(1)