引言
在我们的大学中,已经创建了教育和实验室综合体“虚拟铁路”,而不是最初的十年。 该综合设施不仅包括机车车辆的模拟器,还包括火车调度员,车站服务员,能源调度员的工作场所模拟器,以及用于诊断轨道上部结构的设备模拟器。 在谈到机车模拟器时,我注意到它们的开发细节与驾驶员模拟器的概念有些不同。 铁路大学不培训火车司机,我们的毕业生是铁路工程师。 因此,机车或电力火车的模拟器的任务不仅是使学生熟悉机舱的设备,控制机车车辆的控件,技术和规则。 机车车辆模拟器也是一种模拟器,它可以实时再现机车车辆系统的操作。 在设计它们时,主要重点是准确地说明了机器设备在不同的操作模式下会发生什么过程,如何在这些过程中反映对控件的影响。
最近,我们的团队完成了ES1“燕子”火车模拟器的开发。 将会进一步讨论
1.培训系统的软件部分和整体结构
创建铁路综合训练场意味着什么? 这意味着开发包括以下内容的硬件和软件系统:
- 模拟驾驶员的工作场所-具有所有器官和信息显示方式的控制面板;
- 实时模拟火车动态及其系统运行的计算机系统:电源电路,牵引驱动,制动设备;
- 一种用于连接控件的设备,一种在遥控器上显示信息的装置,以及必要时在模拟器中包含带有计算机模型的实际火车设备的装置。
- 可视化系统,可从驾驶室从驾驶室观看
- 培训管理子系统,能够直观地显示和分析有关列车系统运行的数据
结果,所有这些导致了一个系统,其结构如图所示。
电动火车ES1训练综合体的功能图
模拟器的计算机系统包括两台计算机(PC1和PC2),它们通过家用路由器(TPLink 842 nd rev3,没什么特别的)连接到本地网络,并可以通过Wi-Fi远程访问系统。
选择基于GNU / Linux的OS作为两台机器的系统平台。 原因如下:
- 免费许可证;
- 深度定制系统软件组成的能力;
- 系统针对嵌入式解决方案的定位;
- 内核支持“开箱即用”的所有必要外围设备。
尽管通常使用家用PC,但在这样的系统中,应用软件应使用户达到一定的感知水平,甚至不会意识到内部存在某种操作系统。 没有键盘! 没有鼠标! 放下桌面! 他来了,打开了电源开关,没有等待很长时间,就准备好了系统供其工作。 在这里您可以争论很长时间,但是就实现这种方法的简单性而言,Linux远远超过了其他操作系统。 在各种发行版中,出于以下原因,我们的选择仅限于Arch Linux:
- 在系统部署阶段进行深度定制的可能性;
- 滚动发布,表示软件包的新版本;
- 二进制程序包,与同一个Gentoo不同,这意味着系统的高速部署和维护。
PK1是主要的火车,它运行火车的计算机模型,在结构上由TrainEngine火车的发动机动力学表示,它模拟火车机械部分的运动以及实现与力学无关的设备数学模型的模块。 这些模块与TCP服务器模块和Modbus RTU库一起形成了计算核心的单个可执行模块。
TrainEngine实现了所谓的广义火车模型。 任何火车,无论是高速电动火车还是货运火车,在机械上都是由相互连接的物体组成的系统,其运动受到轨道上部结构的配置的限制。 一些车身的车轮对施加了牵引子系统和制动器提供的力矩。 因此,对于任何模拟器,功能都是相同的。 因此,火车运动的所有机制都是在单独的可配置库中执行的。 机车车辆类型之间的差异是在其余设备的软件模型级别实现的。
驾驶员与现代机车/电动火车的交互界面现已充满显示模块。 实际上,许多以前由指针设备实现的信息显示方式被简化为一组计算机屏幕,在屏幕上显示当前信息。 同一“燕子”上有四个这样的屏幕:两个多功能人机界面,一个安全机车综合体(BLOCK)的显示屏和一个视频监控系统的显示屏。
真正的电动火车的人机界面
安全机车综合显示(块)
真正的电动火车上的车厢内部和显示布局
在实际的火车上,每个显示模块都是一台独立的工业计算机,可以使用特定的MVB / WTB协议与控制系统进行通信。 这些模块正在运行Windows XP Embedded(是的,可以想象!)。
在我们的情况下,这样的挥霍是毫无意义的-来自Elo的四个触摸屏通过显示端口和用于触摸界面的USB电缆连接到PC1。 显示模块被实现为通过TCP套接字与计算核心通信的独立进程。 Xorg设置允许每个窗口专用于其预期的监视器中。 显示屏框架上的硬件按钮由软件模拟。
可以重现这些与负责牵引和制动的电动火车系统有关的设备的基本功能。 使用Qt5框架以C ++编写应用程序。 通常,鉴于Qt5对用户界面的创建具有高度的适应性,并且可与TCP / IP和Modbus RTU协议一起使用的库的可用性很高,因此Qt5会渗透到所有软件中。 另外,事实证明,著名的信号插槽技术对于组织各个级别的班级互动绝对是必不可少的。
模拟器人机界面
显示块模拟器
由于我们模拟器的特性,视频监控系统的显示是不必要的;取而代之的是,剩下的屏幕用于满足我们控制培训的启动,配置和管理计算机功能的需求。
锻炼启动界面
2.硬件-控件和分布式接口
最困难和最昂贵的操作是为模拟器配备真实驾驶舱真实的控件。 即将购买原始铁块的原因有两个。 首先是原始零件的巨额成本,这是因为它们在实际的机车车辆上的使用是合理的,并且是根据相关要求制造的。 第二个原因是与计算机的连接非常复杂,因为在实际的机车车辆上使用了用于设备和控制系统交互的封闭协议。 对我们而言,唯一的出路是独立设计和制造诸如牵引/制动控制器,制动阀和电动火车制动系统压力表之类的元件。
明确地说,这主要是关于此杠杆
电动火车车厢中的真实牵引力/制动控制器
在带有杠铃的机车大队“燕子”的怀疑微笑下,可以测量其外部尺寸,该尺寸伸出面板上方。 在我们看来,就未来的控制台中设备的布局以及在其上安装测量传感器而言,我们的内部设计很方便。 结果是为两个“操纵杆”统一了一个概念
模拟器统一控制器的概念
在气动上,制动阀与牵引力控制器的区别仅在于手柄的初始位置为“零”并且存在塑料装饰衬里。 其余的控制器原来是由零件,传感器和电子板统一而成的。
增量编码器用作位置传感器,零位置的光学传感器用于在控制程序中设置零。 设备电子部分的固件询问生态编码器和光耦合器,并以牵引力/制动力的百分比和一些逻辑符号的形式给出手柄的位置:零位置,按下手柄上的盖子,紧急制动模式。
在扰流板下方的是另一组照片,这些照片从总体上解释了这些设备的设计。
照片形式的发展简史裸露的未上漆金属机械工,新鲜出厂
涂装牵引力控制器套件
粉末喷涂后立即控制机械师。 我们尝试编码器
考试科目
在3D打印机上安装装饰性覆盖层后,驾驶员的气动阀
带有大脑的经过调试的牵引力控制器组件
牵引力控制器安装在标准面板上。 相邻的离散量I / O模块可见。

压力表成为另一个绊脚石,这些
电动火车气动系统的检具
即使我们有常规设备-这些设备都是气动的,已连接至制动系统的管线。 需要的是一种显示压力的设备,该压力来自计算机模型。 再加上看起来像原始的。 另外,由于无法做齿轮,我不得不做一个无齿轮机构,可以让您独立旋转两个箭头
狡猾发明的目标机电压力表的执行部分

结果,经过几个月的审议,开发,制造和调试,这样的组件问世了

压力表的更多照片在3D打印机上制成的一组零件
写入固件时进行调试
其他控件没有问题-其余只是按钮和开关。 但是,它们的数量足以反映如何将所有这些信号输入计算机。
我们决定在工业规模上走人头关-RS485是我们的一切。 来自按钮和控制灯的短线束进入离散I / O卡,然后通过两条双绞线将其状态输入机器。
驱动程序控制台顶视图J区域中的面板
...安装的底视图。 I / O板可见
Modbus RTU因其在工业自动化相关领域中的简单性,开放性和普及性而被选作数据交换协议。 分立的输入/输出板是通用的,并在需要的地方安装在远程控制面板上。 对于诸如控制器和压力计之类的设备以及机车交通信号灯,由于其工作的特殊性,已经采用了单独的解决方案。
结果是由12个订户组成的网络。 信号通过RS485 / USB适配器输入计算机组合系统。 该软件使用了Qt5框架中现成的Modbus RTU实现。
最终组装模拟器之前将控制台的杂物
多几张照片在标准屏幕上首次启动显示模块
全面调试
电气室
最后组装的阶段之一
它被组装和调试。 准备安装驾驶室
总的来说,结果非常可靠,最重要的是,它对于后续的功能扩展十分方便。 系统的所有电子组件均受到程序诊断系统的警惕控制。 发出故障消息的方式尽可能使人可读,以便尽早发现垃圾块
诊断屏幕,其中包含模拟器当前会话的日志
3.三维可视化子系统
由于具有创造存在感的所有功能,因此系统的这一部分功能最少。 内部没有“物理”,所有“物理”都在服务器端。 图形客户端被移动到单独的PC2计算机。 他从服务器接收到所谓的铁路坐标-沿路径以公里为单位移动,将其转换为相机的三维坐标,并显示从出租车到周围景观的视图。 在PC2上,安装了通常的NVidia GTX 1060,视频系统是用Unity Personal编写的。
视频系统调试中
在寻找最佳架构方面,我们还有很多工作要做,并且我们一直在不断努力。 有足够的细微差别使有关他们的故事成为单独文章的主题。
结论
目前,模拟器正在我们大学的高速运输实验室的教育过程中进行试运行和测试。 希望我有一个有趣的故事,感谢读者的关注。 我为大量沉重的图片表示歉意,但是没有任何方式。
(c)创新能力发展中心