基于dSPACE 的嵌入式车辆动力学仿真平台开发的探究
1 嵌入式车辆动力学仿真平台介绍
国际上,嵌入式车辆动力学仿真平台主要有CarSim、veDYNA 和ASM。CarSim 是美国MSC 公司开发的车辆动力学仿真平台,CarSim 模型在计算机上运行的速度比实时快3~6 倍,可以仿真车辆对驾驶员、路面及空气动力学输入的响应,主要用来预测和仿真汽车整车的操纵稳定性、制动性、平顺性、动力性和经济性,其中的CarSim RT 模块是CarSim模型专用于嵌入式实时仿真的模块,可嵌入多种实时仿真系统,如NI、dSPACE、ETAS、opal-RT 等实时仿真系统,提供与一些实时硬件系统的接口,满足软硬件在环仿真平台的要求。veDYNA 是德国Te⁃sis 公司开发的车辆动力学仿真平台,以Matlab/Simulink 为开发环境,整个模型或模型组件通过C代码编写,并以s-function 形式嵌入到Matlab/Simu⁃link 程序环境中,主要用于汽车性能分析,车辆动力学、部件控制单元测试,控制算法开发与测试,可嵌入各种实时仿真系统。ASM 是dSPACE 公司基于Simuik 开发的车辆动力学仿真平台,主要应用于发动机控制系统、汽车控制系统、车载电子设备和驾驶辅助系统的测试和研发,ASM 能够很好地运行在dSPACE 实时仿真系统。
国外已经实现了车辆动力学模型嵌入到实时硬件系统中,目前国内文献对此还没有论述。吉林大学汽车仿真与控制国家重点实验室经过10多年的研究,研发了基于总成特性的实时车辆动力学模型,模型在PC 机上运行速度是仿真时间的5 倍左右,满足了实时仿真要求。经仿真验证,精度到9ว0 %以上,并且可实现制动到0、大滑移等极限工况的仿真,可用于电子系统的仿真验证。
针对上述问题,本文研究了基于ASCL 车辆动力学模型嵌入到dSPACE 环境时的一些关键技术;研究了dSPACE 环境下模型的运行控制方法,阐述了在嵌入式平台模型上的参数赋值方法,再次开发了便于应用的操作界面;通过典型工况检验了动力学模型侧向加速度和横摆角速度的一致性,实现了车辆动力学嵌入式仿真平台的开发。
2 dSPACE 环境下ASCL 运行控制方法研究
2.1 目标代码的生成方法
ASCL 基于ANSI C 语言开发,其仿真精度达90 %,由簧载质量系统、非簧载质量系统、转向系统、悬架系统、车轮系统、动力传动系统和制动系统7 大系统构成,在开发过程中将其划分为7个大的功能模块,每个大的功能模块下又划分为很多小的功能模块,各模块都独立开发。
dSPACE 实时硬件仿真系统采用了GCC 编译器,同☃时又区别于普通的GCC 编译器,在PC 机环境下,需要在编译批处理文件时使用带有dSPACE 标识的指令x86-gcc,然后调用指令x86-ar 生成目标库文件。为了提高ASCL 代码的运行效率,在编译中使用-O2命令进行代码优化。
2.2 仿真控制方法
ASCL 仿真过程的控制主要分为初始化和运行控制。本文利用DS1006 RTLib 提供的函数编写控制程序以驱动dSPACE 实时硬件对ASCL进行仿真控制,利用基于时钟D 中断的初始化控制和基于时钟A中断的仿真运行控制。
2.2.1 基于时钟D中断的初始化
ASCL 为用户提供了Preset、Initialize、 シSimulate、Terminate 等4 个函数,其中Pres¢et 函数主要读取模型参数文件,将参数值赋给模型各大系统;Initialize函数主要实现车辆初始状态的确定即给变量赋初值,实现初始状态的平衡;Simulate 函数实现对各功能模块进行迭代仿真运算,计算模型的输出;Ter⁃minate 函数主要是释放在仿真过程中Preset 函数开辟的内存。
为了实现ASCL 的正确运行,本文采用时钟D 中断来实现模型的初始化。首先,利用dSPACE 提供的函数ds1006_init完成对DS1006 板的初始化,用以启动dSPACE;利用函数ds1006_start_isr_timerD开启时钟D中断,其中该函数含有时钟D 中断的周期与中断服务程序两个参数,在触发时钟D 中断时,在中断服务程序中完成ASCL 的初始化和参数赋值;利用函数RTLIB_BACKGROUND_SERVICE 开启后台服务程序,后台服务程序必须在实时硬件上循环执行,这样才能以一定的周期执行时钟D 中断,不断进行仿真控制。
时钟D中断服务程序以设定的中断周期运行,当参数文件准备好时,通过自定义的函数ncode 和Pre⁃setState 来判断,只有当函数ncode=NULL 且Preset⁃State=0 两个条件同时满足时,才能利用Preset 函数将准备好的参数文件中的参数传递给车辆动力学模型,然后通过Initialize 函数使其初始化,初始化成功后关闭时钟D。
2.2.2 基于时钟A中断的仿真控制
当模型完成初始化后,启动时钟A中断服务程序来完成车辆动力学模型的实时运算。时钟A 中断服务程序以设定的周期运行,通过控制一个时钟周期推动车辆动力学模型运算一个仿真步长来控制动力学模型的仿真。首先开启时钟A 过载检测,用于判断仿真计算时长是否超过中断周期,当中断服务程序的执行时间超过中断周期时,则中断服务程序结束。通过自定义函数SimState 的值判断模型仿真状态,其中,当SimState=0 时,表明是停止状态,执行动力学模型的中止函数Terminate;当SimState=1 时,表明是暂停状态,动力学模型暂停;当SimState=2 时,表明是运行状态。同时,通过自定义函数time_simulate 计算仿真运行时间,若未达到仿真结束时间,则周期执行动力学模型函数Simulate,实现模型迭代仿真运算;若仿真状态到达设定的仿真时间,则执行模型中止函数Terminate,关闭时钟A 中断。
在进行中断控制设置时,应避免时钟A 和时钟D同时处于运行状态,因为两者优先级相同,所以在时钟D 运行之前需要先关闭时钟A,同理,在时钟A 运行之前需要先关闭时钟D,否则只能等待一个时钟周期运行完才能执行下一个中断服务,不利于提高运行效率。
2.3 动力学模型下载方法
动力学模型在实时仿真系统运行时,需要从上位机下载到实时仿真系统。本文利用dSPACE 提供的makefile 文件将开发的控制程序ControlFunction.c、动力学模型*.a库文件以及相应的头文件组成一个统一的整体,其中makefile 文件中需要设置添加控制程序ControlFunction.c,同时添加.a 库文件,库文件中开放了控制程序ControlFunction.c 调用的4个函数,然后在批处理文件中使用dSPACE 提供的down1006指令将makefile 文件下载到dSPACE 中,完成动力学模型控制平台的开发。
3 动力学模型的参数赋值
ASCL 中的preset 函数可以通过解析一个参数文件来给模型参数赋值,在dSPCE 实时仿真系统环境下,需要将参数文件下载到dSPCE,并将参数文件的存储首地址传递给解析函数。本文CLIB 函数实现参数的传递过程,定义了指针变量ParFile 来传递地址,当ASCL 在dSPACE 环境下运行时,首先将在PC 机内存中的参数文件复制到dSPACE 内存中,然后将参数文件在dSPACE 内存的首地址传递给preset 函数中的ParFile 变量,完成动力学模型的参数赋值。
CLIB 是实时硬件dSPACE 提供的一套PC 机与dSPACE 实时处理器通讯的接口函数集,CLIB 建立了PC机与dSPACE处理器内存之间的通信。本次采用CLIB 提供的函数对dSPACE 内存进行访问。
dS1006 板卡处理包括利用函数DS_regis⁃ter_host_app 注册应用程序、DS_board_index 获得板卡号,从而将参数文件传递到该板内存;参数文件在PC 机上的处理包括获取参数大小、在PC 机上分配内存、将参数文件传递到分配的内存上;参数文件在dSPACE 上的处理包括利用函数DS_alloc_mem 在dSPACE 上开辟内存、DS_write_8 函数将PC 机内存上的参数文件写入到dSPACE 的内存上、DS_get_var_addr 获取模型中存储参数文件首地址的指针变量、把dSPACE 内存中参数文件首地址赋值给指针变量。
4 仿真控制平台界面设计
为了方便测试和工程应用,开发了仿真平台界面控制模型的下载、监控和仿真控制,界面编写采用了LabWindows 语言。LabWindows/CVI 软件是在C 语言环境下开发的软件界面,可以通过LabWindows 对CLIB库函数的调用,完成仿真平台界面开发。
仿真平台界面主要包括输入、输出设置和运行状态控制3 部分,其中,模型输入设置主要完成动力学模型的下载和参数赋值控制,该部分中首先通过路径浏览完成mkfile 文件的选择,下载mkfile 文件,然后通过路径浏览完成参数文件的选择和下载;模型输出设置显示当前时刻的仿真运行车速,以监控模型运行;模型运行状态控制实现模型的运行、暂停、停止功能,另外,StopRTP 将dSPACE 内存中的动力学模型清除,Quit 实现退出ControlDesk应用界面。
5 仿真验证
为了验证模型的运行情况,分别对模型的仿真运行时间和车辆双移线工况进行了仿真验证。设置ASCL 的仿真步长为1 ms,当动力学模型下载到dSPACE 的DS1006中运行时,其每步平均仿真实测时间为0.18ms 左右,模型运行时间占设定时间的18 %,满足实时仿真要求。
定义了双移线仿真工况,通过Controldesk 监测模型侧向加速度和横摆角速度的运算结果,并将该仿真结果与离线仿真结果对比,验证了车辆动力学模型在两种仿真平台下侧向加速度和横摆角速度的一致性,以及仿真控制策略的可行性和正确性。
6 结束语
开发了基于dSPACE 的嵌入式车辆动力学仿真平台,主要完成以下方面的工作:
a. 利♥用dSPACE 的GCC 编译器在PC 机下完成了目标代码的生成;
b. 利用dSPACE 自带的RTLib 函数,基于时钟A和D中断实现了动力学模型的初始化和仿真控制;
c. 利用dSPACE 自带的Clib 函数完成了动力学模型的参数赋值;
d. 验证了ASCL 在dSPACE 嵌入式仿真平台和离线仿真平台下侧向加速度和横摆角速度的一致性,以及仿真控制策略的可行性和正确性。