软件定义汽车

2021年,汽车界的热门话题层出不穷:互联网企业进军汽车界,软件定义汽车,某斯拉事件,全球芯片短缺等等。

这次文章的关键词与软件定义汽车有关:SOA。

我们这次来聊一聊怎么通过我们熟悉的CANoe工具去实现SOA的相关功能。

什么是SOA

SOA的全称是面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。(来源:百度百科)

SOA里面涉及服务,接口、服务提供者、服务消费者等概念。

  1. 服务:实现某种功能的函数或方法,是一个可远程访问并独立执行和更新的离散功能单元;
  2. 接口:能够被其他模块调用的函数名称或一个封装的API;
  3. 服务提供者:提供服务功能 如算法,数据源
  4. 服务消费者: 如消费数据,使用功能。

Q: 但是SOA的架构为什么要在汽车上应用?

A: 我们可以通过下面的例子进行思考,并分析传统架构与面向服务架构的异同。

图片来源:软件定义汽车-北汇的思考 胡海

根据上面的例子我们可以清晰的看出:

对于传统面向信号的架构来说,增加新功能所需要的步骤更加繁琐,增加了我们对于开发本身的成本,也可以透过整个流程看出,面向信号的架构对于系统本身的利用率并不高。

面向服务的架构对于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仿真元素的对应关系。

配置流程介绍

a) 打开CANoe后即进入仿真标签,找到左上角系统与通信窗口

b) 之后进入到配置界面

首先我们需要加载数据源文件


选取ARXML或者是vCDL等文件

加载完成后进入下一步,可在数据库加载完成后提前定义好数据库中属于被测系统以及测试环境的元素有哪些


导入完成后回到配置界面

添加应用模型文件(.CAN/.CS/.DLL等)

如果你使用的是CANoe 14.0版本,模型导入完成后需要进行通信绑定的配置

绑定界面可将未定义的元素进行拖动定义,绑定分为抽象绑定或SOME/IP绑定

完成后点击OK保存。

c) 在CANoe 15.0版本中,通过读取ARXML或vCDL等数据文件,文件预先设置了节点角色,可直接进入服务查看通信绑定状态。

如绑定SOME/IP

或者是抽象绑定

d) 基本配置完成后,之后我们再进入系统浏览器,查看之前加载好的所有数据。

左侧的菜单栏中对我们的测试功能进行了分类,分为系统定义与预定义。

预定义的分类下是我们在数据库导入的时候定义好的。

我们可以在窗口右上角切换用例的运行环境

如果我们的被测对象是真实设备,并且已经与CANoe进行了连接,可以将右上角的用例状态切换为environment simulation。

切换后我们再将state的信息切换为REAL(Device)。此时我们的被测系统是真实的,而环境是仿真出来的。

如果我们也没有真实的硬件设备,我们把右上角状态切换为test the tester

切换后我们的state的信息会切换为simulated。此时我们的被测系统和环境都是仿真出来的。

我们也可以借助此窗口查看系统的通信关系

通信的拓扑图可以直观查看到。

工具栏也可查看选择的端点内包含的通信对象

e) 配置完成后,点击熟悉的黄色闪电⚡按钮,就可以进行CANoe的SOA功能仿真啦。

#知识加油站#

Q1、在SOA仿真中我们看到了一种新的数据源格式:vCDL,这个数据源是什么意思?

A: 首字母缩写词 vCDL 代表 Vector Communication Description Language,是一种域特定语言 (DSLClosed),用于描述 CANoe 中的通信对象。 vCDL 允许通过用于简单和基于文本的通信对象配置的工具扩展 CANoe 通信概念。 通信对象及其各自的参数以类似于最常见编程语言的语法定义。 该语言的主要设计目标是能够用很少的语言元素映射简单的结构。 如果需要复杂的配置,扩展语法允许通过属性补充定义(类似于 C# 中常用的属性)。

我们可以使用系统自带的 vCDL Editer实现文件的生成与编辑。

Q2、CANoe可以编辑和生成ARXML了?

A: 我们在编辑系统数据的功能窗口发现,我们可以查看ARXML的部分信息,如PDU、DATA Types、Encodings等

目前模型编辑窗口修改的ARXML参数只是应用于当前工程内部,修改参数值和相关内容并不会改变ARXML数据库文件本身的内容,也无法生成新的ARXML文件。

此窗口更多的协助用户校对和匹配通信对象,以及更改修正关于以太网通信参数(如SOME/IP参数) 等场景使用。

Q3、 为什么绑定功能中SOME/IP也作为绑定的一类?

A: 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。

作者:北汇信息——玉藻宁宁


藏不住啦~SOA竟在我身边? 浅谈CANoe实现SOA仿真测试相关推荐

  1. [原创] 浅谈ETL系统架构如何测试?

    [原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...

  2. [原创]浅谈移动互联网App兼容性测试

    [原创]浅谈移动互联网App兼容性测试 今天要谈的话题,估计各位测试都有感受,移动互联网App兼容性测试,我们到底测试覆盖如何去挑选机型?具体移动App兼容性测试如何开展?是不是应引进像testin这 ...

  3. 对计算机辅助英语的看法,浅谈利用计算机辅助英语语言测试

    摘要:随着计算机技术不断深入发展,给我们的生活和学习带来了翻天覆地的变化,越来越多的学校利用计算机辅助各学科进行教学,对计算机教学设施的配备与老师掌握计算机技术方法的要求越来越高.尤其是利用计算机进行 ...

  4. 浅谈BPM和SOA架构下的电子政务系统

    摘  要:面对我国电子政务建设中存在的若干问题,为了实现政府由"管理型"向"服务型"转变,本文提出,未来的电子政务系统采用以服务驱动为核心的SOA技术架构将更能 ...

  5. 浅谈分布式、SOA与微服务

    记得面试邮储银行软开部,面试官问到SOA和微服务的区别,忘记当时怎么说的了,总之回答的不是很好,下来也查了很多,但网上的说法真的是仁者见仁,各执一词,事实也是如此,有关分布式,SOA,微服务从来没有一 ...

  6. 【SOA】程立谈支付宝大规模SOA系统(ZZ)

    1. 大家好,这里是首届QCon Beijing的现场,现在坐在我的旁边是的支付宝的首席架构师程立.先给大家介绍一下,支付宝架构发展到今天,经历哪些时期,都有哪些里程碑? 我回忆一下,支付宝系统架构发 ...

  7. 【小白学PyTorch】 2.浅谈训练集验证集和测试集

    文章目录: 经验误差与过拟合 评估方法 经验误差与过拟合 关键词:错误率(error rate),精度(accuracy). 错误率好理解,就是m个样本中,a个样本分类错误,则错误率E = a/m . ...

  8. 浅谈接口对前后端测试的意义

    1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? ...

  9. 浅谈4款低功耗电流测试“神器”

    随着物联网时代的到来,各种IOT设备正以惊人的速度爆发式地增长.由于应用场地限制,很大一部分的IOT设备只能使用电池进行供电,于是需要长时间网络连接的IOT设备,对应的超低功耗电流测试数据成为研发工程 ...

最新文章

  1. error: unbound prefix. Message{kind=ERROR, text=error: unbound prefix., sources=[E:\work\me\fragment
  2. java文件拷贝时 buff给多大合适_Java复制文件
  3. override覆盖
  4. Php正则替换字符串
  5. android tag的使用方法,Android:如何使用Html.TagHandler?
  6. 8086算术移位指令SAL和SAR
  7. 移植wpa_supplicant 2.2问题
  8. mysql索引技术_MySQL索引类型
  9. keil stm32标准库放在哪里_STM32之PWM
  10. 基于JAVA+SpringBoot+Mybatis+MYSQL的酒店管理系统
  11. Shell 脚本来监控 Linux 系统的内存
  12. 一文掌握 Docker 技术体系
  13. 怎样用Java生成随机数?
  14. http状态码4XX与5XX?
  15. AM调制解调的Matlab和Simulink实现
  16. App预览制作,看我就够了
  17. C# 传递数组参数_一维数组_二维数组
  18. Android 将drawable下的图片转换成bitmap、Drawable
  19. Transformer结构的初步探索
  20. 微信小程序电商项目源代码开放连载二三事

热门文章

  1. windows 10 电脑 应用图标变白色恢复方法
  2. 2021-3-31 git提交代码的命令及流程
  3. 常州网站服务器_常州云主机
  4. 【饭谈】为什么有的同事那么菜但工资比自己高?
  5. 怎样度过人生的低潮期?
  6. 抓取前程无忧招聘信息
  7. Echarts调整饼图大小、位置和柱状图高低、柱的宽度
  8. 调查问卷生成json字符串
  9. Simulink电力电子仿真——(一)概述1
  10. 【基础知识】PID(比例微分积分)控制