1嵌入式车辆动力学仿真平台介绍 国际上,嵌入式车辆动力学仿真平台主要有CarSim、veDYNA和ASM。CarSim是美国MSC公司开发的车辆动力学仿真平台,CarSim模型在计算机上运行的速度比实时快36倍,可以仿真车辆对驾驶员、路面及空气动力学输入的响应,主要用来预测和仿真汽车整车的操纵稳定性、制动性、平顺性、动力性和经济性,其中的CarSimRT模块是CarSim模型专用于嵌入式实时仿真的模块,可嵌入多种实时仿真系统,如NI、dSPACE、ETAS、opalRT等实时仿真系统,提供与一些实时硬件系统的接口,满足软硬件在环仿真平台的要求。veDYNA是德国Tesis公司开发的车辆动力学仿真平台,以MatlabSimulink为开发环境,整个模型或模型组件通过C代码编写,并以sfunction形式嵌入到MatlabSimulink程序环境中,主要用于汽车性能分析,车辆动力学、部件控制单元测试,控制算法开发与测试,可嵌入各种实时仿真系统(ADI、ETAS、NI、OpalRT和xPC)。ASM是dSPACE公司基于Simuik开发的车辆动力学仿真平台,主要应用于发动机控制系统、汽车控制系统、车载电子设备和驾驶辅助系统的测试和研发,ASM能够很好地运行在dSPACE实时仿真系统。 国外已经实现了车辆动力学模型嵌入到实时硬件系统中,目前国内文献对此还没有论述。吉林大学汽车仿真与控制国家重点实验室经过10多年的研究,研发了基于总成特性的实时车辆动力学模型(StateKeyLaboratoryofAutomotiveSimulationandControl,简称ASCL),模型在PC机上(主频3。0G)运行速度是仿真时间的5倍左右,满足了实时仿真要求。经仿真验证,精度到90以上,并且可实现制动到0、大滑移等极限工况的仿真,可用于电子系统的仿真验证。 针对上述问题,本文研究了基于ASCL车辆动力学模型嵌入到dSPACE环境时的一些关键技术;研究了dSPACE环境下模型的运行控制方法,阐述了在嵌入式平台模型上的参数赋值方法,再次开发了便于应用的操作界面;通过典型工况检验了动力学模型侧向加速度和横摆角速度的一致性,实现了车辆动力学嵌入式仿真平台的开发。 2dSPACE环境下ASCL运行控制方法研究 2。1目标代码的生成方法 ASCL基于ANSIC语言开发,其仿真精度达90,由簧载质量系统、非簧载质量系统、转向系统、悬架系统、车轮系统、动力传动系统和制动系统7大系统构成,在开发过程中将其划分为7个大的功能模块,每个大的功能模块下又划分为很多小的功能模块,各模块都独立开发。 dSPACE实时硬件仿真系统采用了GCC编译器,同时又区别于普通的GCC编译器,在PC机环境下,需要在编译批处理文件时使用带有dSPACE标识的指令x86gcc,然后调用指令x86ar生成目标库文件。为了提高ASCL代码的运行效率,在编译中使用O2命令进行代码优化。 2。2仿真控制方法 ASCL仿真过程的控制主要分为初始化和运行控制。本文利用DS1006RTLib提供的函数编写控制程序(ControlFunction。c)以驱动dSPACE实时硬件对ASCL进行仿真控制,利用基于时钟D中断的初始化控制和基于时钟A中断的仿真运行控制。 2。2。1基于时钟D中断的初始化 ASCL为用户提供了Preset、Initialize、Simulate、Terminate等4个函数,其中Preset函数主要读取模型参数文件,将参数值赋给模型各大系统;Initialize函数主要实现车辆初始状态的确定即给变量赋初值,实现初始状态的平衡;Simulate函数实现对各功能模块进行迭代仿真运算,计算模型的输出;Terminate函数主要是释放在仿真过程中Preset函数开辟的内存。 为了实现ASCL的正确运行,本文采用时钟D中断来实现模型的初始化。首先,利用dSPACE提供的函数ds1006init()完成对DS1006板的初始化,用以启动dSPACE;利用函数ds1006startisrtimerD(DTD,timerDinterrupt)开启时钟D中断,其中该函数含有时钟D中断的周期(DTD)与中断服务程序(timerDinterrupt)两个参数,在触发时钟D中断时,在中断服务程序中完成ASCL的初始化和参数赋值;利用函数RTLIBBACKGROUNDSERVICE()开启后台服务程序,后台服务程序必须在实时硬件上循环执行,这样才能以一定的周期执行时钟D中断,不断进行仿真控制。 时钟D中断服务程序以设定的中断周期运行,当参数文件准备好时,通过自定义的函数ncode和PresetState来判断,只有当函数ncodeNULL且PresetState0两个条件同时满足时,才能利用Preset函数将准备好的参数文件中的参数传递给车辆动力学模型,然后通过Initialize函数使其初始化,初始化成功后关闭时钟D。 2。2。2基于时钟A中断的仿真控制 当模型完成初始化后,启动时钟A中断服务程序来完成车辆动力学模型的实时运算。时钟A中断服务程序以设定的周期运行,通过控制一个时钟周期推动车辆动力学模型运算一个仿真步长来控制动力学模型的仿真。首先开启时钟A过载检测,用于判断仿真计算时长是否超过中断周期,当中断服务程序的执行时间超过中断周期时,则中断服务程序结束。通过自定义函数SimState的值判断模型仿真状态,其中,当SimState0时,表明是停止状态,执行动力学模型的中止函数Terminate;当SimState1时,表明是暂停状态,动力学模型暂停;当SimState2时,表明是运行状态。同时,通过自定义函数timesimulate计算仿真运行时间,若未达到仿真结束时间,则周期执行动力学模型函数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板卡处理包括利用函数DSregisterhostapp注册应用程序、DSboardindex获得板卡号,从而将参数文件传递到该板内存;参数文件在PC机上的处理包括获取参数大小、在PC机上分配内存、将参数文件传递到分配的内存上;参数文件在dSPACE上的处理包括利用函数DSallocmem在dSPACE上开辟内存、DSwrite8函数将PC机内存上的参数文件写入到dSPACE的内存上、DSgetvaraddr获取模型中存储参数文件首地址的指针变量、把dSPACE内存中参数文件首地址赋值给指针变量。 4仿真控制平台界面设计 为了方便测试和工程应用,开发了仿真平台界面控制模型的下载、监控和仿真控制,界面编写采用了LabWindows语言。LabWindowsCVI软件是在C语言环境下开发的软件界面,可以通过LabWindows对CLIB库函数的调用,完成仿真平台界面开发。 仿真平台界面主要包括输入、输出设置和运行状态控制3部分,其中,模型输入设置主要完成动力学模型的下载和参数赋值控制,该部分中首先通过路径浏览完成mkfile文件的选择,下载mkfile文件,然后通过路径浏览完成参数文件的选择和下载;模型输出设置显示当前时刻的仿真运行车速,以监控模型运行;模型运行状态控制实现模型的运行、暂停、停止功能,另外,StopRTP将dSPACE内存中的动力学模型清除,Quit实现退出ControlDesk应用界面。 5仿真验证 为了验证模型的运行情况,分别对模型的仿真运行时间和车辆双移线工况进行了仿真验证。设置ASCL的仿真步长为1ms,当动力学模型下载到dSPACE的DS1006中运行时,其每步平均仿真实测时间为0。18ms左右,模型运行时间占设定时间的18,满足实时仿真要求。 定义了双移线仿真工况,通过Controldesk监测模型侧向加速度和横摆角速度的运算结果,并将该仿真结果与离线仿真结果对比,验证了车辆动力学模型在两种仿真平台下侧向加速度和横摆角速度的一致性,以及仿真控制策略的可行性和正确性。 6结束语 开发了基于dSPACE的嵌入式车辆动力学仿真平台,主要完成以下方面的工作: a。利用dSPACE的GCC编译器在PC机下完成了目标代码的生成; b。利用dSPACE自带的RTLib函数,基于时钟A和D中断实现了动力学模型的初始化和仿真控制; c。利用dSPACE自带的Clib函数完成了动力学模型的参数赋值; d。验证了ASCL在dSPACE嵌入式仿真平台和离线仿真平台下侧向加速度和横摆角速度的一致性,以及仿真控制策略的可行性和正确性。