孙利斌,郎诚廉
(同济大学 电子与信息工程学院,上海 200331)
由于地铁列车控制电路的庞大、分布性、封装性和联锁性等因素,目前的仿真软件还无法满足其各项要求。文献[1]中所提到的Proteus 是现在非常流行的电路仿真软件,由于地铁列车控制电路中独特的封装模块原因,Proteus 也无法搭建完整的地铁列车控制电路。对于城轨列车培训系统,有许多学者做了此方向的研究。文献[2]中提出了针对铁路调度员的培训系统,主要介绍了系统的硬件结构和软件模块的划分。文献[3]中研究了适合企业发展的列车驾驶员培训路线。文献[4]中研究了列车仿真的关键技术。文献[5]中研究了列车驾驶培训系统的基本模块组成。而文献[6]和文献[7]都对模拟驾驶装置进行了研究,根据需求对整个工程的设计思路都进行了详细的介绍。这些研究都为本文提供了很好的参考。本文研究的地铁列车控制电路建模与仿真系统可以实现用户自行绘制电路图并仿真的功能。系统将电路原理图中的电气元件做成专门的电气控件将电路中的集成封装电控单元做成处理器模块,按实际运行逻辑定义其引脚的输入输出;将绘制完整的电路图数据保存下来,搜索其所有回路;按照回路中各个开关元器件的状态以及电源状态进行动态显示。地铁列车控制电路建模与仿真系统不仅可以让电路开发人员在开发中进行仿真验证,还可以对列车相关工作人员进行培训。
整个电路图的绘制主要分为3 个步骤:添加与输入元件,编辑图纸和生成图纸信息。电路的信息主要包括元件信息、节点信息和标注信息。所以分别建立元件类、节点类和标注类这3 种对图纸信息进行操作。所绘制的电路原理图数据应包含元件类型、元件标识、元件物理状态和电状态、元件引脚之间的连接关系以及元件与元件之间的逻辑联结关系(如继电器与其触点开关)等。
电路原理图中的电气控件可以分为2 种类型。普通电气元件和集成封装电控单元。将这2 种元件都做成专门的电气控件,普通电气元件就按照其实际的功能逻辑做成控件;将电路中的集成封装电控单元做成处理器功能模块,按实际运行逻辑定义其引脚的输入输出。每个电气控件作为一个元件,元件库应包含以下信息:元件总数n,元件类型号,元件名,矩形框的两顶点参数,点的个数和坐标,线段的条数和坐标,弧线的条数和参数以及引脚的个数和坐标等。
绘图模块通过MFC[8]类函数实现通过鼠标的点击与拖动等操作对图形元素进行插入、删除、平移和旋转等编辑功能。图1 为绘图时的界面,左边为元件库,可以直接拖拽入画板使用。
图1 绘图界面
在绘图时,直接访问图纸中图形元素的属性数据进行元件的图形数据、逻辑数据和标注数据的修改,图形元素的数据可分为类型、坐标、图形数据、逻辑连接数据和实体标注数据。
类型为此图形元素的类型,例如开关类、继电器类、标注类等。图形数据的数据结构为:
图形数据修改界面,如图2 所示。
图2 元件图形数据修改界面
逻辑连接数据有2 种,导线连接数据和逻辑联结数据。导线连接数据包含连接方式、元件引脚点、连接对象引脚点。逻辑联结数据包含连接方式、联结位置和联结元件的标注名。实体标注数据包含标注信息、对齐方式、标注坐标、字体、大小、颜色、方向和效果。
元件和标注的设置界面都属于图形数据,也归纳在图2 中,详细数据输入时通过属性页切换输入。连接线也属于元件类,其图形数据在连接2 元件后自动生成,而其他元件的图形数据在绘制元件时自动生成,之后的拖拽修改操作都会使数据发生相应变化,也可以进入图形数据界面手动修改。元件的逻辑连接数据在连接两元件后自动生成。元件的标注直接在其属性数据中进行添加。图纸中的其他标注直接右键进行添加。
在图纸绘制完毕保存时,会对电路图中的元件、节点、标注及它们之间的关系进行保存,生成图纸信息文件。此外,图纸信息还包括画板的大小、坐标及显示坐标间映射关系;所有元件的线性链表;节点的线性链表;标注的线性链表等。图纸数据结构,如图3 所示。
图3 图纸数据结构
电路中的元素是以链表的形式保存,并非单纯的图形坐标,这样才便于回路搜索。电路图是基于图论的数学模型[9],在加载图纸文件后,将电路链表数据转化为节点与支路的有向图模型,利用遍历搜索算法搜索出每一条回路,再根据回路中各元件的状态确定回路的通断,便得到所有的回路信息。系统将搜索到的回路信息放入内存,以便随时进行动态仿真。
为了便于搜索,将电路转化为节点与支路的模型。由于有二极管的存在,需要将支路分为2 个方向,建立有向图模型。
节点属于逻辑数据,是没有方向性的。所以可以直接根据前面绘图得到的节点链表得到节点集合:
其中,n为节点个数。
支路是由元件组成的,或者说在有向图中,元件就是支路,由于方向的限制,每个元件对应2 条支路,可以得到支路的集合如下:
其中,B为含有2b个元素的集合,包含第1 方向支路和第2 方向支路各b条。
根据支路和节点的关系(每条支路对应2 个节点),可以得到支路与节点的关联矩阵:
将支路看作有向边,节点看作顶点。可以得到有向边与顶点间的完全关联矩阵:
由于深度优先遍历搜索算法具有代码简单,占内存小的优点,所以本文采用深度优先遍历搜索算法。深度优先遍历搜索算法利用有向图的邻接表搜索出起点到终点间的所有单向通路。实际运行时的邻接表就是上一节得到的REV,将顶点放在第1 行,终点放置最后1 行。从第1 行搜索第1 个1,这就是起点出发的位置,然后在该列搜索第1 个−1,这就搜索完了第1 条支路。再从此行搜索第1 个1,如此往复直到到达终点,就找到了一条回路。然后再跳回至倒数第2 个节点,继续在那行向后找1。由于搜索的回路不能重复,所以必须记录每一个节点。当搜索完首行对应的所有1 时结束搜索。
深度优先遍历搜索通常是通过递归搜索实现的。先从首节点开始,保存此节点位置,搜索并判断下一节点是否为尾节点。若是,保存回路,结束搜索;若不是,将此节点作为当前节点,再搜索它的下一节点进行判断,直到结束。搜索流程,如图4 所示。
电路回路的状态分为电状态和物理状态,确定逻辑为:当回路中所有元件物理状态为1 时(元件物理状态代表元件的通断,如开关断开时物理状态为0,闭合时为1),回路物理状态为1;当回路物理状态为1 且电源状态为1 时,回路电状态为1;当回路电状态为1 时,所有元件的电状态为1。元件的物理状态和电状态是动态仿真的基本依据。
图4 搜索流程
控制电路仿真模块根据元件、回路及电源的状态进行动态仿真。仿真电路按照上海地铁3 号线的列车控制电路绘制。当电路图加载时会对电路元件进行初始化,然后根据仿真界面输入的信号对电路元件状态进行控制,根据各元件状态的变化进行逻辑运算得到回路状态。根据回路的状态对回路和元件的颜色及位置进行相应的改变来达到仿真控制的效果。
为方便仿真演示和教学形象生动,系统提供了仿真控制面板供用户操作。文献[10]中设计的司机驾驶台操作界面中显示了城轨列车的基本属性,最大化地利用了界面空间。本文为了让用户能够更接近真实操作的环境,用户仿真操作界面模仿实际司机驾驶台绘制。图5 为仿真操作界面局部图。用户可以直接点击图中旋钮进行仿真输入,其中,有灯的旋钮可以显示输出,操作界面上还配有压力表、电压表等显示设备,使用户能够像驾驶员一样进行操作驾驶及仿真。
图5 仿真操作界面局部
以列车激活电路为例,通过打开列车控制按钮,对比打开按钮前后的电路状态,演示电路动态仿真过程。在仿真过程中,红色的线路为得电状态,黑色的为非得电状态。
在没有按下按钮时,电路状态,如图6 所示。当按下列车控制按钮时,电路状态,如图7 所示。
图6 按下列车控制按钮前电路状态
由图6 所知,在没有按下按钮时,只有110 V永久列车线有电。当列车控制按钮按下后,列车控制延时继电器通过列车控制按钮得电,WUDYR/3.2触点吸合,松开列车控制按钮,列车控制延时继电器通过WUDYR/3.2 触点继续得电。仿真结果与理论一致,满足仿真要求。
图7 按下列车控制按钮后电路状态
地铁列车控制电路建模与仿真系统不仅能够对控制电路基本元件进行建模,还能将电路中的集成封装电控单元做成处理器模块,这不仅能够对电路实现动态仿真及验证,还能在未来地铁列车不断升级改动后,将新的电路元件及封装电控单元继续添加到元件库中供相关人员使用。而且动态仿真功能可以对地铁列车工作人员进行培训,使工作人员可以更直观、有效地学习电路工作原理。