分享

基于模型设计开发面向服务的应用(SOA)

 xingqingzl 2022-10-21 发布于北京

前言

软件定义汽车时代车载软件爆炸式增长,向控制器中加入更多功能,或者向现有的电子电气架构中增加更多的控制器的增量式扩展路径都已经无法应对越来越复杂的系统集成和越来越高的硬件成本,我们必须重新思考电子电气和软件架构的新模式。
随着电子电气架构从分布到集中再到高性能高连接的发展,软件架构也经历了软硬件高度耦合基于组件再到面向服务的演变。
面向服务的架构(SOA)给汽车行业带来了新的挑战:
1)SOA 对于汽车行业还是个新事物,开发人员是否需要从头开始学习包括中间件在内的新架构和方法论?
2)传统的软件架构平台和 SOA在一定时期内还将长期共存,是否需要不同的开发方式甚至人员组织来对应?
3)原有相关测试验证的知识经验、工作流程和软件资产是否还能重用?
面对上述问题,汽车行业的相关从业人员都会想知道:当前广泛采用的基于模型设计是否还能用于面向服务的应用开发?
我们的回答是肯定的。
Simulink 陆续推出的一系列功能支持 SOA 开发,包括但不限于: 
1)在建模仿真能力增加了软件架构设计和面向服务的语义建模;
2)在自动化代码生成能力上拓展了对新的中间件平台标准以及 GPU 和 FPGA 等新的硬件架构的代码生成支持;
3)在系统化测试验证能力上覆盖了从模型到代码、从测试到分析的完整功能安全软件验证要求。

案例演示

SOA 最核心的机制是面向服务的通讯(SOC),本文通过一个案例来展示 SOC 建模、集成测试、代码生成和部署标定,希望给大家一点启示。
1) 面向服务的通讯建模
传统的嵌入式控制中基本数据流是通过信号传递的,而 SOA 的基本数据流是消息。
信号涉及 writer 和 reader,只有最后被 writer 写入的数据才对 reader 有效;而消息涉及 sender 和 receiver,receiver 可以处理 sender 发送过来的历史数据。
Simulink 提供了消息的发送、接收、队列和时序等基本模块用于消息和事件机制的建模。

图片

我们采用消息的收发模块来建立基本的 SOC 通讯,exServer 模型通过封装了消息发送基本模块的 Event Send 发送数据,而 exClient 模型通过封装了消息接收基本模块的 Event Receive 接收数据。
Event Send 和 Event Receive 位于 AUTOSAR Blockset 的模块库中。

图片

图片

2) 集成测试
在简单架构的集成时,可以直接采用模型引用的形式;对于复杂软件架构设计,可以采用 System Composer 的软件架构设计功能。

图片

exServer 的输出信号、转换为消息收发的数据和 exClient 接收到的消息转换之后的信号之间的对比,可以看到与信号对比消息有显著的“事件”特性。

图片

此外还可以采用时序图模块观测消息的收发对象、时序和数据关系。

图片

3) 代码生成
要生成面向服务的 C++ 代码需要选定中间件平台进行配置,这里以 Adaptive AUTOSAR 标准为例,在数据词典中定义服务接口和端口、配置端口实例的标识号和服务发现机制。 

图片

在 Simulink 模型中完成 Adaptive 对象与模型输入输出的映射。

图片

在代码生成配置中选择 autosar_adaptive.tlc 系统目标文件;考虑到后续部署需要工具链选择 AUTOSAR Adaptive Linux Executable, 这样在生成代码的同时会生成用于 Linux 平台可执行文件编译的 CMakeLists 文件。 
图片
在生成的符合 Adaptive 通讯接口标准的 C++ 代码同时生成相关的清单文件。

图片

4) 部署和标定
在 Linux 平台下采用 CMAKE 编译生成可执行文件即可进行部署,如果有标定需求可以采用XCP 协议。
案例中的可标定参数 mode 和 gain 都在 exServer 模型中,因此 exServer 在生成代码前需要进行额外的标定配置,这里的 mode 参数可以选择产生三角波信号或者正弦信号,gain 参数用于对信号进行缩放。 

图片

在配置中设置 XCP slave 的配置,包括传输层协议、可执行文件所在机器的 IP 地址和端口号,这样会同时生成用于标定的 XCP 协议代码。

图片

生成代码后得到的 a2l 文件中没有实际的参数地址,需要在编译后输入可执行文件进行地址替换。

图片

替换地址后的参数 mode 和 gain 在 a2l 文件中的信息如下:

图片

我们用 INCA 导入 a2l 文件进行观测和标定,下如两处红框分别是 mode 从 0 到 1 和 gain 从 1 到 2 标定修改时的信号变换。

图片

总结

以上我们展示了采用基于模型设计开发面向服务应用的过程,软件架构设计、面向服务的语义建模、中间件标准支持、异构平台代码生成和人工智能算法引入等一系列能力使 Simulink 正逐渐支撑软件定义汽车时代的面向服务的应用开发,从软硬件耦合架构到基于组件开发再到面向服务的应用,让用户以算法为核心最大程度地重用原有的模型资产和开发流程。

图片

而行业用户已经非常熟悉的基于模型的功能安全测试验证流程也将继续助力面向服务的应用开发。

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多