开源低成本的列车动力学半实物仿真测试平台
2021-11-03卡斯柯信号有限公司职文超吕新军李付军
卡斯柯信号有限公司 职文超 吕新军 李付军
本文使用开源软件Scilab/xcos进行列车动力学建模、仿真,采用开源软件X2C将模型生成嵌入式C代码,结合部分手写驱动代码,以开源FreeRTOS为实时操作系统,运行在ESP32硬件模组之上,搭建了列车动力学半实物仿真平台,用以自动驾驶控制算法测试,在保证性能的基础上,大幅降低系统成本。
列车自动控制系统(ATC)一般由列车自动监控系统(ATS)、列车超速防护系统(ATP)、列车自动驾驶系统(ATO)构成。而自动驾驶算法是ATO系统的核心,直接关系到轨道交通系统的运营效率和乘客舒适度,列车的牵引和制动是其主要控制对象。在具体工程项目的实施过程中,因为不同列车的性能存在偏差,尤其是列车停站过程中电制动、空气制动的切换,引入了非线性因素,列车模型整定和自动驾驶算法调试工作量大、耗时长。为缩短现场调试时间、提高调试效率,降低项目实施成本,可以提前在实验室,根据项目所用列车的牵引和制动的动静态特性参数,搭建动力学模型,用来进行算法调整、参数整定并验证算法的性能。
而纯软件的仿真也有其缺点,比如没有考虑模型的浮点运算和MCU上面整形运算的区别、电流或电压输出时的精度局限、TIMS控制列车时的通讯延迟等等因素,因此,即便在PC仿真时,得到了满意的列车控制算法,也要在真实的ATO控制器运行列车控制算法,控制仿真列车,来进一步验证ATO算法的有效性。也就是说采用半实物仿真,取代部分数学模型,更接近实际情况,从而获取更确切的信息。
商业软件Labview或者Matlab/Simulink可以完成列车动力学建模、算法仿真和半实物仿真的全过程,但价格不菲,且可能面临被国外公司禁止使用的风险。本文探索使用开源软件、低成本硬件搭建自主可控的列车动力学半实物仿真测试平台。
1 仿真平台总体设计
仿真平台由两部分组成,分别是上位机和下位机。
上位机负责对列车运动学进行建模、仿真,仿真过程中可以对动力学模型的结构(一阶时滞模型、二阶时滞模型)、参数(延时大小、时间常数等)进行调整,在得到满足项目要求的模型后,通过工具把模型自动转换为C代码,最后把模型代码编译成可执行的程序,下载到下位机。
下位机负责与ATO控制器的物理接口、运行列车运动学模型,对于ATO控制器来说,下位机就相当于列车,是ATO控制器的控制对象。列车的运动学模型需要在下位机中实时运行,其实时性直接影响到仿真效果是否足够真实。因此,嵌入式实时操作系统的选用、驱动程序的设计,就需要考虑到满足实时性要求。
2 仿真平台下位机
本文选用ESP32作为主控制芯片,ESP32是自主化的IOT芯片,主频可达240MHz,可满足列车模型的计算需求;片上资源丰富,可满足列车模型外部连接的要求,开源开发环境ESP-IDF基于FreeRTOS开源操作系统,驱动代码可以GITHUB上直接下载。4MB的Flash模块为模型程序提供了足够的保存空间。
FreeRTOS提供了基于优先级的任务调度机制,可以保证模型的实时执行。另外ESP32是双核的CPU,将列车运动学模型单独运行在其中一个核,保证模型的实时性,不受其他任务的影响。
3 仿真平台与列车控制器的接口
ATO自动驾驶系统可以通过里程计、雷达等传感器获得列车的运行速度或者位移,ATO控制器(Carbone controller,以下简称CC)通过安装在车轴上的里程计获知列车的位移、速度、加速度,更新列车在轨道上的位置,经过自动驾驶算法运算之后,得到的牵引或者制动命令通过继电器、电流环、TIMS网络接口(MVB、TRDP)输出给列车。列车控制器的执行周期为100ms。本文中CC与测试平台之间经过电平转换,通过硬线连接。如图1所示。
图1 仿真平台与列车控制器的接口
MDR/BDR/MBC分别为牵引命令/制动命令/牵引制动等级,C1/C2/C3分别为里程计的输入脉冲。
4 里程计的模拟
ESP32通过PWM模块输出控制三个引脚,输出相差120°的速度脉冲,分别对应里程计的C1/C2/C3,里程计正向旋转时,C1/C2/C3依次成120°;里程计反向旋转时,C1/C3/C2依次成120°。通过改变引脚输出顺序、定时器频率,即可模拟车轮的正反转、转速变化;动力学模型的输出速度,是编码里程计模块的输入。每个仿真周期,根据仿真列车的速度,通过设置分频器,调整定时器的输入时钟频率,模拟列车速度的变化。里程计转过一个齿,代表车轮转过的实际距离为teeth_dist,那么freq=speed/teeth_dist。这里的freq即为PWM输出的频率。
通过逻辑分析仪可以看到,从左到右,列车速度逐渐降低,而C1/C2/C3的周期在逐渐增加的同时,C1/C2/C3之间保持了严格的相位差。如图2所示。
图2 里程计C1/C2/C3的仿真图
5 输入采集
ESP32从数字引脚GPIO获取MDR/BDR输入线的电平高低,从模拟数字转换器ADC获取MBC值,模型的输入可以用以下逻辑表示
6 仿真平台上位机
Scilab/xcos是由法国国家信息自动化研究所开源的科学计算软件,在功能上分别与Matlab/Simulink类似,可以方便地进行模型建模与仿真。X2C为Xcos提供了一个工具箱,支持将Xcos搭建的列车运动学模型转换成嵌入式C代码,并不与特定硬件平台绑定,只要对应平台支持C编译器即可。整体实现过程如图3所示。
图3 运动学模型编译下载流程
7 列车运动学模型
列车运动学模型采用一阶带延迟模型,模型的输入是ATO控制器向列车请求的加速度命令,模型的输出是仿真列车的速度,列车速度是对列车加速度积分而来,列车动力学模型如图4所示。
图4 列车运动学模型
模型的仿真周期为10ms,使用X2Code工具生成模型的软件后,使用ESP32提供的高精度定时器释放信号量,周期性运行模型软件,模型的输出为列车速度。
8 测试结果
在该平台上使用ATO驾驶模式,CC控制列车运行在两站之间,仿真曲线如图5所示,其中红色曲线为列车速度、浅绿色曲线为CC输出的牵引制动命令、深绿色曲线为根据列车仿真平台给出的C1/C2/C3里程计输出计算出的列车实际加速度,可以看出仿真平台较好地模拟了列车的动力学特性。
图5 ATO驾驶站间仿真
X2C可以生成模型的定点数代码,对于没有浮点运算单元FPU的CPU来说,可以有效减轻仿真平台的计算负担,以10ms周期性运行模型软件,对ESP32的CPU利用率进行监测,约在30%左右,计算裕量较大,可支持更复杂的列车模型,为以后模型的精细化留下空间。
本文使用开源软件,在ESP32硬件平台,搭建了一套列车运动学仿真平台,测试表明性能满足要求,成本大幅下降。根据本文提供的建模方式,不同地铁项目建立不同的列车动力学模型,是一种快速低成本搭建仿真平台的方式。后续可以在交互性(比如提供友好的WEB界面)、列车速度的精度、TIMS网络连接等方面,继续优化拓展。