前言
2021年,汽车界的热门话题层出不穷:互联网企业进军汽车界,软件定义汽车,某斯拉事件,全球芯片短缺等等。
这次文章的关键词与软件定义汽车有关:SOA。
我们这次来聊一聊怎么通过我们熟悉的CANoe工具去实现SOA的相关功能。
什么是SOA
SOA的全称是面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。(来源:百度百科)
SOA里面涉及服务,接口、服务提供者、服务消费者等概念。
服务:实现某种功能的函数或方法,是一个可远程访问并独立执行和更新的离散功能单元;
接口:能够被其他模块调用的函数名称或一个封装的API;
服务提供者:提供服务功能 如算法,数据源;
服务消费者 如消费数据,使用功能。
但是SOA的架构为什么要在汽车上应用?
我们可以通过下面的例子进行思考,并分析传统架构与面向服务架构的异同。
根据上面的例子我们可以清晰的看出:
对于传统面向信号的架构来说,增加新功能所需要的步骤更加繁琐,增加了我们对于开发本身的成本,也可以透过整个流程看出,面向信号的架构对于系统本身的利用率并不高。
面向服务的架构对于ECU的更新版本、更新信号库、代码修改等过程更加简便和灵活。简化成了注册服务与调用API。节约了时间成本,让整个系统的功能可扩展性极大扩张。
汽车在不断提高智能化水平;引入智能驾驶,V2X等技术的同时,也更加关注用户的体验与需求。软件的迭代、OTA等功能的使用也越来越广泛和频繁。在我们传统的电子电气架构下,我们可扩展的功能越来越有限,我们需要一个功能可扩展性强、软硬件松散耦合、标准化接口、支持异构系统集成的电子架构。这也就是为什么我们要在汽车上使用SOA架构。
System and Communication Setup功能介绍
CANoe中System and Communication Setup功能主要的使用场景是建立SOA仿真通信。SOA的核心是服务,任何功能都可以链接到“服务”,并且服务的提供者和消费者都可以*地改变。因此Communication Setup功能主要是在环境中实现不同的服务的链接,这些服务链接不仅局限于数据库中的定义,可以在CANoe仿真环境中动态地建立连接。
在Communication Setup中将应用层与实际传输介质分离。我们在这里使用通信对象来描述应用层信息,通信对象可以是服务、PDU或者信号。在此环境下,通信对象可以完全独立于网络通信介质,在CANoe中进行纯粹的模拟通信。
通信对象可以通过绑定链接到传输介质。绑定的方式也分为两种。
- 第一种是采用以太网传输,绑定SOME/IP通信。我们可以通过以太网协议实现端对端的Server与Client仿真相关的SOA功能。
- 第二种是通过抽象绑定,这类绑定一般是在开发的早期阶段,通过抽象绑定,无需定义底层协议,注重的是应用的通信。
我们可以通过以上表格了解传统工程仿真的元素与SOA仿真元素的对应关系。
配置流程介绍
打开CANoe后即进入仿真标签,找到左上角系统与通信窗口。
之后进入到配置界面。
首先我们需要加载数据源文件。
选取ARXML或者是vCDL等文件。
加载完成后进入下一步,可在数据库加载完成后提前定义好数据库中属于被测系统以及测试环境的元素有哪些。
导入完成后回到配置界面
添加应用模型文件(.CAN/.CS/.DLL等)。
如果你使用的是CANoe 14.0版本,模型导入完成后需要进行通信绑定的配置。
绑定界面可将未定义的元素进行拖动定义,绑定分为抽象绑定或SOME/IP绑定。
完成后点击OK保存。
在CANoe 15.0版本中,通过读取ARXML或vCDL等数据文件,文件预先设置了节点角色,可直接进入服务查看通信绑定状态。
如绑定SOME/IP
或者是抽象绑定
基本配置完成后,之后我们再进入系统浏览器,查看之前加载好的所有数据。
左侧的菜单栏中对我们的测试功能进行了分类,分为系统定义与预定义。
预定义的分类下是我们在数据库导入的时候定义好的。
我们可以在窗口右上角切换用例的运行环境。
如果我们的被测对象是真实设备,并且已经与CANoe进行了连接,可以将右上角的用例状态切换为environment simulation。
切换后我们再将state的信息切换为REAL(Device)。此时我们的被测系统是真实的,而环境是仿真出来的。
如果我们也没有真实的硬件设备,我们把右上角状态切换为test the tester。
切换后我们的state的信息会切换为simulated。此时我们的被测系统和环境都是仿真出来的。
我们也可以借助此窗口查看系统的通信关系。
通信的拓扑图可以直观查看到。
工具栏也可查看选择的端点内包含的通信对象
配置完成后,点击熟悉的黄色闪电⚡按钮,就可以进行CANoe的SOA功能仿真啦。
知识补充
1、在SOA仿真中我们看到了一种新的数据源格式:vCDL。
首字母缩写词 vCDL 代表 Vector Communication Description Language,是一种域特定语言 (DSLClosed),用于描述 CANoe 中的通信对象。 vCDL 允许通过用于简单和基于文本的通信对象配置的工具扩展 CANoe 通信概念。 通信对象及其各自的参数以类似于最常见编程语言的语法定义。 该语言的主要设计目标是能够用很少的语言元素映射简单的结构。 如果需要复杂的配置,扩展语法允许通过属性补充定义(类似于 C# 中常用的属性)。
我们可以使用系统自带的 vCDL Editer实现文件的生成与编辑。
2、CANoe可以编辑和生成ARXML了?
我们在编辑系统数据的功能窗口发现,我们可以查看ARXML的部分信息,如PDU、DATA Types、Encodings等。
目前模型编辑窗口修改的ARXML参数只是应用于当前工程内部,修改参数值和相关内容并不会改变ARXML数据库文件本身的内容,也无法生成新的ARXML文件。
此窗口更多的协助用户校对和匹配通信对象,以及更改修正关于以太网通信参数(如SOME/IP参数) 等场景使用。
5、 为什么绑定功能中SOME/IP也作为绑定的一类?
SOME/IP (Scalable service-Oriented Middlewareover IP) ,即“运行于IP之上的可伸缩的面向服务的中间件”,是车载以太网中存在于应用层的高层协议。 “中间件”可以是操作系统,也可以是应用程序,也可以是某个服务功能。SOME/IP属于应用层协议,它提供面向服务的通讯接口。服务接口包含请求/响应方法(R/R Method),单向请求方法(F&F Method),通知事件(Notification Events),字段(Fields)。可以支持请求/响应模式的远程服务调用,也可以支持订阅/发布模式的消息通知。SOMP/IP-SD服务发现功能可以发现服务提供者的信息以及检查服务的状态。
服务是SOME/IP的最核心概念,在一个服务中,定义了服务端(Server)和客户端(Client)两个角色:服务端提供服务,客户端调用服务。对于同一个服务,只能存在一个服务端,但可以同时存在多个客户端调用服务。
SOA本身的特性就是面向服务,并需要通过协议调用一个或多个服务进行数据交互来满足系统的业务需求。
一个是面向服务的架构,一个是面向服务的通信协议。SOA架构中的服务可借助SOME/IP在不同的软件平台或操作系统之间共享资源,两者在此功能中集合是一种必然。
在车载以太网普及度逐年攀升的时代,在实车上实现SOA以及进行测试通常会运用到SOME/IP协议。
总结
CANoe Communication Setup功能为实现SOA模型的交互和模型测试提供了全新的接口。用户可以通过CANoe更加灵活地实现面向服务架构的仿真。
汽车新四化的发展,汽车的功能由过去的靠特定功能硬件实现转向为越来越多靠功能执行模块实现,软件对汽车的功能和性能起着决定性作用。
面对未来全新的架构,CANoe可以继续极大程度简化测试与开发流程,帮助用户高效开发。
CANoe是德国Vector公司出的一款总线开发环境,是网络和ECU开发、测试和分析的专业工具,支持从需求分析到系统实现的整个系统开发过程;其丰富的功能和配置选项被OEM和供应商的网络设计工程师、开发工程师和测试工程师所广泛使用。
北汇信息作为Vector中国的合作伙伴,不仅提供相应的工具和技术支持服务及培训,还针对不同的应用提供相应的解决方案,助力中国客户的研发效率提升。
注:部分图片来源于Vector。