相信大家对Hil的概念有一定理解,比如hil的大方向作用是模拟了一个仿真模型,它可能是车,可能是动力源,电池等仿真模型;反正最后起到的作用是代替真车,真的被控对象去验证控制器硬件的基本逻辑,进行一些测试比如自动驾驶用的比较多,也有人用来做故障注入等验证。笔者的从业方向不是软件测试所以可能理解的不够准确到位,希望大家多多指正;
先描述一下硬件在环的基本原理;也是多数初学者理解不到位的,也就是为啥要有这么个东西,
硬件在环本质上讲离不开一个实时的东西,整车被车的零部件或者控制器都是一个真实的系统,这个真实的系统的时间轴就是真实的时间,但是我们搭建的模型如利用simulink搭建的逻辑,如果在电脑上run,如果不做特殊配置,它的时间轴是求解器的时间轴;都按照离散的思想比如控制器里执行的函数轮询了一次,得到了一次运算结果,被控模型可能已经跑完了整个仿真工况了,所以硬件在环的核心之一就是被控对象时间轴的矫正。
这里讲几种实时的方案,一种就是软实时,比如仿真软件有自己提供的时间基准,例如simulink就提供了一个Realtime模块,如果模型中添加了,应该就可以实时的跑模型了
第二种也是主流的多用的方式,就是买一个实时目标机,类似NI的或者dspace的,可以实时的跑模型的,这种实时性更强一点更适合仿真任务多则模型复杂的情况,同时被控对象的接口以一个集中起来的硬机箱体现更加符合实际,接口利用更方便,只需要在被控模型里预留一个接口然后软件配置各种AD,pwm,CAN等输入输出接口就好了。但是缺点就是目标机比较费钱,软件人员也不大好实现。
笔者所述的方案属于第一种,因为笔者从业方向不是hil开发的,所以包括ni的一系列工具链用的不是很熟练,例如labview,veristand,teststand那几个软件,所以窜出来一套工具链来跑实时模型,整理一下,17bmatlab,oe,2020simulink。基本的思想是simulink,canoe联合仿真,canoe提供时间基准,carsim提供车辆模型。具体做法如下所述;
注:懂得都懂,carsim的配置和simulink模型的搭建不赘述了;
1.实现carsim与simulink的联合仿真;
1)simulink配置求解器步长,2)carsim配置仿真起止时间,3)carsim配置联合仿真输入输出接口,4)simulink挑出来联达到合仿真模块
达到的效果是可以同时跑simulink和carsim软件。非实时
2.实现canoe与simulink联合仿真
借鉴文章CANoe软件使用(四)——CANoe与Simulink联合仿真_canoe联合canoe-CSDN博客
此处有一个注意点;就是canoe要是全授权的软件,且编写的dbc需要包含报文收发的仿真节点;不能是单纯的无关联节点的报文;
3. 实时的跑模型;