为适应汽车的发展趋势(智能化、网联化等),应对汽车E/E系统开发面临的新的挑战(高性能处理器的应用,自动驾驶的软件实现,高带宽通信需求,车与外界的互联互通等),AUTOSAR组织在2017年推出了AUTOSAR Adaptive。随着PREEvision9.5的发布,基于Adaptive AUTOSAR的SOA(面向服务的架构)的实现与落地将不再是构想。
越来越多的小伙伴开始使用PREEvision的AUTOSAR Adaptive Explorer开发设计SOA,并最终将我们的设计转换为AUTOSAR描述文件(包含Application Description以及各类Manifest)。AUTOSAR描述文件是其他仿真、验证以及代码生成工具的输入与源头,如下图所示为Vector Adaptive AUTOSAR工具链示意图。关于如何在PREEvision中设计Adaptive AUTOSAR,请参考我们公众号另外两篇文章《基于PREEvision的AUTOSAR Adaptive设计——上篇》以及《基于PREEvision的AUTOSAR Adaptive设计——下篇》。

图1 Vector Adaptive AUTOSAR 工具链(图片源于vector)
小怿将基于CANoe13.0来介绍如何使用PREEvision工具生成的Application Description.arxml文件实现基于Adaptive AUTOSAR的SOA仿真。自CANoe12.0开始推出了一种全新的配置环境,即Communication Setup,支持基于Adaptive/Classic AUTOSAR的仿真与测试,并提供了vCDL工具链,用于SOA数据库的设计,如下图所示。关于Communication Setup与vCDL的更多介绍可参考我们公众号另外一篇文章《换个方式在CANoe中实现SOA仿真》。

图 2 Unified CANoe Communication Model(图片源于vector)
接下来,小怿将通过搭建仿真工程、仿真程序设计、查看仿真结果三个环节来介绍在CANoe13.0中实现基于Adaptive AUTOSAR描述文件的SOA仿真过程。
1
搭建仿真工程
在环境配置环节我们将通过创建工程并导入数据库、仿真模型的校验与完善、配置Participants的状态、Network Binding、配置硬件接口卡(可选项)等步骤来搭建基于Adaptive AUTOSAR描述文件的SOA仿真工程。
新建工程
小怿介绍的是基于Communication Setup这种新模式下的仿真,如下图所示,在新建工程的时候要选择Network-Based的模板,比如“ASR4_Ethernet”或者“Ethernet”模板。有“legacy”后缀的代表的是“Channel-Based”模板。

图 3 仿真工程模板选择
导入ARXML数据库
打开Communication Setup窗口,如下图所示,选择Import Data Source将从PREEvision导出的同时包含一个或者多个服务的Server与Client Application Description的ARXML导入到CANoe工程中。
PS:当ARXML文件只包含Server或Client 的Application时,在 Communication Setup会自动生成一个名称为Env 的Participant,模拟ARXML文件中所包含的Application的对端服务。

仿真模型的校验与完善
这一步,我们将通过Communication Setup窗口验证我们上一步导入的ARXML文件中是否有错误信息,并配置仿真节点的MAC地址。
在Communication Setup窗口中单击“Edit Communication Model”打开Model Editor。可以通过Model Editor的检查功能对导入的ARXML数据库从CANoe仿真的角度进行错误检查,如下图所示,单击“Validate”按钮即可检查出ARXML中的一些错误或者警告配置项,如果没有错误检查项则继续,否则返回到PREEvision中根据错误提示修改模型。

图 5 验证ARXML的错误或警告项
如下图所示,在Model Editor中选择Network Settings在窗口右侧Network Elements窗口中选择要配置节点的IP地址,然后单击编辑按钮,最后在弹出的MAC Addresses对话框中检查参与仿真的节点的MAC地址是否重复,是否与定义的一致?根据实际情况去配置每一个参与仿真的节点的MAC地址。

图 6 修改仿真节点MAC地址
配置Participants的状态
在Communication Setup中设置Participant(可以理解成一个Machine/ECU或者一个APP)的状态,如下图所示,选择Service Provider所在的Participant,将其状态设置为Simulated,再选择Service Consumer所在的Participant,将其状态设置为Simulated。如果是半实物仿真则需要将代表真实Machine/ECU的Participant的状态设置为Remote。

图 7 配置Participants的状态
配置Network Binding
目前在CANoe中可以将服务Binding到SOME/IP上实现网络通信仿真,当然也可以将服务Binding到“Abstract”上实现仅对服务接口的仿真。选择一个Communication Object(可以是服务、PDU或者信号),在Binding下拉框中选择SOME/IP即可。在Adaptive AUTOSAR中一个Communication Object是一个服务角色。

图 8 配置Network Binding方法一
除了图8所示的Network Binding之外还可以通过在Communication Setup的System Setup窗口单击Configure Binding,在弹出的Bindings对话框中,如下图所示,直接将服务拖拽到SOME/IP或者Abstract即可实现SOME/IP Binding或者Abstract Binding。如果是SOME/IP Binding还需要将其模式设置为Ethernet PRBS Mode。

图 9 配置Network Binding方法二
配置硬件接口卡(可选项)
PS:在半实物仿真,或者ARXML文件只包含Server或者Client的Application且使用CANoe14.0以下版本时,才需要用到硬件接口卡。
从CANoe 12.0/Hardware Driver 11.1版本开始以太网接口卡(VN5XXX系列)配置方式逐渐向基于网络模式(Network-based mode)的方式转变。在配置硬件接口卡之前需要确保您的Vector设备驱动版本在11.1以上。
下面以VN5640为例,介绍在Network-based模式下的硬件配置方法:
首先打开Vector Hardware Configuration窗口;在Hardware列表中选择VN5640;右键选择Ethernet access mode configuration打开下图所示以太网访问模式配置窗口;将硬件模式切换为Network-based mode。

图 10 以太网访问模式配置
切换到Network-based模式以后,右键点击VN5640设备,选择Ethernet device configuration即可进入全新配置界面Vector Ethernet Device Configuration。如下图所示,在该界面需要根据真实的仿真网络拓扑,并通过交换机、物理端口、虚拟端口等组件来配置硬件接口卡内部的仿真网络环境,最后单击左上角的Write保存配置。对于Network-based mode这种新的硬件配置方式中一些组件的含义可查看CANoe Help文档。

图 11 Vector Ethernet Device Configuration
然后打开Port Configuration窗口,选择硬件配置所用到的物理端口(或虚拟端口)通过Add Selection选项将其添加到Measurement Ports中。如此才能在Trace窗口中看到已添加的物理端口(或虚拟端口)的收发情况。

图 12 Port Configuration
最后通过Channel Mapping将仿真工程与之前配置的Network映射即可。

图 13 Application Channel Mapping


