“软件定义汽车”(Software-Defined Vehicle, SDV)是近年来汽车行业的核心趋势,指的是汽车的智能化、网联化和功能迭代越来越依赖软件,而非传统的机械硬件,最具代表性的就是智能驾驶。
早在2009年,谷歌启动了Google自动驾驶汽车项目(后独立为Waymo),是最早大规模测试L4级自动驾驶的企业。紧接着奔驰、奥迪等传统车企也在2010年前后开始研发ADAS(如自适应巡航、自动泊车)。而后特斯拉在2014年推出Autopilot(HW1),首次将L2级辅助驾驶量产落地。
但是,在大家all in 智能驾驶的过程中,逐渐发现如此之大的信息量,对于CAN/CAN FD/LIN/FlexRay等传统总线的传输信息量来说,压力还是太大了,比如毫米波雷达,单次扫描可达10~100kbps,如此惊人的信号传输速率让CAN FD等一众总线犯了难。
这时有些聪明的工程师们就开始另辟蹊径,有没有传输数据量大且稳定,又可以保障传输安全的传输方式呢?
答案就是车载以太网!
行驶在车载以太网这条宽敞的马路上时,虽然享受着以太网带来的高速率和高传输量,但是同时也为后续的功能测试提高了难度,规则的增加使得测试逻辑变得更为复杂,这让测试工程师在进行汽车仿真测试时变得无比头大,如此复杂的报文内容、如此繁琐的收发逻辑、如此高速的传输速率,使得仿真测试的门槛和难度变得越来越高、越来越复杂。
But 请别担心,我们东信创智为大家带来了基于Vector平台的车载以太网仿真测试入门讲解,帮助广大工程师化繁为简、重塑肉身!
正文:
重塑肉身第一步“取藕”:搭建测试环境
首先在重塑肉身之前一定要找一个非常可靠的设备作为“肉身”,需要准备一个Vector的总线设备,下面我们以VN5650为例(浅打波广告,Vector总线设备真心好用),将2Y线一端连接到VN5650的以太网接口,另一端连接到控制器端对应以太网通道,线束连接好后在Vector Hardware Manager中对VN5650通道进行配置。
部署之后运行CANoe工程,通过上位机给被测控制器进行上电操作。控制器上电后,Trace窗口Eth会显示Link状态,表明以太网硬件链路已通。
重塑肉身第二步“塑形”:加载Arxml库和创建仿真节点
在硬件连接之后,正常Trace上应该就可以看见控制器广播在这路以太网上的信号了,但是,我们应该怎么发送一条正常的以太网报文给到被测控制器呢?
答案就是通过Arxml文件!!!!
Arxml文件的作用跟DBC类似,但又有不同。一个以太网信号的发送就好像人穿衣服一样,为什么这么说呢?
因为以太网信号是基于OSI模型的(Open Systems Interconnection Model,开放系统互连模型),如果我们想发送一个数据,首先要把数据内容存在应用层,然后一层一层的穿到最外层,当然,解包的过程就是脱衣服的过程,永远都是先穿袜子后穿鞋。
Arxml文件就像个大的衣柜,帮助你的信号一层层的穿衣服和脱衣服,完成跟控制器之间的交互。
1)可以选择CANoe自带的以太网示例工程,来配置我们的以太网仿真环境,点击下图中的Ethernet。
2)将Arxml文件按照如图步骤导入到CANoe,右键Communication Setup栏下的Data Sources,添加Arxml文件。
3)完成Arxml文件添加后,首先要在Application Layer Objects栏下,找到需要仿真的节点,在右侧选择On/Simulated,然后找到控制器对应的节点,在右侧选择Real,最后在右上角选择Publish部署下去,这样仿真节点就建立完成了。
4)当仿真节点建立完成之后,还需要在Hardware栏下的Port Configuration中找到控制器对应的Port口,右键Port口点击Activate进行激活,完成激活之后,CANoe的Trace窗口中就会显示该Port口所收发的报文。
至此,一个初步的以太网工程已经建立完成了,在此刻运行工程并给控制器上电之后,就可以看见虚拟节点和控制器的offer和find等交互报文了,这表明CANoe软件的仿真节点和控制器之间已经正常交互了。
重塑肉身第三步“定型”:导入仿真模型
拿藕粉塑形的初步操作已经做完,可以说已经初具“人形”,距离一个有血有肉有灵魂的完整的“人”还差最后一步,那就是导入仿真模型完成“定型”。在仿真测试过程中,通常涉及到I/O接口模型和虚拟控制器模型,接下来一起看如何导入这些模型。
1)首先,准备好一份仿真模型的DLL文件(此处小编用的是东信创智自研I/O模型生成工具生成的模型文件举例),用I/O模型生成工具生成以太网I/O模型,并转化成DLL文件,然后找到CANoe中的Communication Setup,右键点击Application Models,选择Add Application Model,最后选择你的DLL文件确定即可,这样仿真模型就已经被加载到CANoe中了。
2)添加DLL文件完成之后,需要将咱们的模型接口和Arxml文件的服务关联起来,模型导入之后会以系统变量形式展现在CANoe中,将DLL文件内的系统变量Mapping到Arxml文件的服务上面,在CANoe中找到Environment栏下的Symbol Mapping,找到模型中需要Mapping的系统变量,如下图:
3)找到了系统变量之后,再找到Arxml文件中对应的服务(此处用一个简单服务举例),将其拖到中间栏中进行Mapping,Mapping过后服务就会根据模型逻辑进行发送,同时Trace上的数据也会被采集到模型中,这时你的控制器就和仿真模型交互起来了。
注:在实际操作过程中,因为以太网数据量大服务多,在此处建立Mapping的时间过长,东信创智为此开发了一套脚本,可自动生成Mapping文件,只需要工程师导入Mapping数据,就可以达到上述效果,极大减轻了仿真工程师的工作量。
经过上面的操作,恭喜你已经将仿真模型和被测控制器建立了连接,在进行HIL测试时,既可以实现对单一控制器测试,又可以实现对多个控制器进行联调测试,只需搭建I/O接口模型和虚拟控制器模型,就能够让真实控制器在虚拟的环境下进行大而全的功能测试。
仿真的魅力不仅于此,东信创智为汽车仿真测试提供了多套仿真方案,由于篇幅有限,想了解更多仿真方案请大家继续关注我们的公众号,如有任何问题或需求,可发送至邮箱market@dotrustech.com。后续我们会陆续更新更多以太网功能测试相关的实用技能,敬请期待!
结尾撒花