让SOME/IP运转起来——SOME/IP系统设计(上)

什么是SOME/IP?

SOME/IP(Scalable service-Oriented MiddlewarE over IP)是AUTOSAR应用层的协议,是基于IP协议的面向服务的可拓展性的中间件。

SOME/IP中主要定义了:

  • 数据的序列化:SOME/IP支持的数据类型,复杂数据的序列化及反序列化方式
  • 通信机制:提供Request/Response、Fire&Forget、发布-订阅的通信机制
  • 服务发现:实现节点在网络上找到可用的服务,还可以进行订阅

SOME/IP作为一种通信协议,主要应用于车内ECU之间的通信,相比较传统的CAN来说具有可扩展性,报文传输内容更多,基于以太网,面向服务等优势。

那么如何使用SOME/IP实现车内ECU之间的通信呢?

SOME/IP系统设计

在这里插入图片描述
SOME/IP的系统涉及几个层面:功能,功能逻辑,通信,ECU部署。

由于功能需求、功能逻辑、ECU部署由架构工程师开发,通信过程由通信工程师进行设计,中间交接的部分是十分重要的,因此在整个过程中,需要架构工程师和通信工程师的共同合作,才能达到一个正确的设计结果。

SOME/IP系统设计需要通信工程师梳理使用SOME/IP传输的信号以及信号传输的逻辑,并将这些信号设计成服务接口,以符合SOME/IP面向服务的特点和通信机制,通信的逻辑形成时序图,可以为系统测试提供输入。

在整个系统设计的过程中会涉及到三个输出产物:

  • UC:以太网Use Case,承接架构的开发产物,用来梳理使用SOME/IP传输的信号内容和逻辑。
  • 矩阵:SOME/IP服务接口设计,将UC中梳理出来的需要使用SOME/IP传输的信号,以符合SOME/IP要求的服务接口的格式进行设计。矩阵还可以转换为ARXML供下游工具解析,并以此为基础继续开发。
  • 时序图:将UC中使用SOME/IP传输的功能的逻辑绘制为时序图,为系统测试提供输入。

系统设计注意事项

UC

系统设计的第一步,作为架构工程师与通信工程师之间工作衔接的中间产物,需要双方明确功能、信号、逻辑等,才能保证系统设计的正确性。

矩阵

  • 服务划分:可以根据功能或者SWC进行划分
  • 唯一标识符:Service ID、Method ID、Instance ID需要全局唯一指示服务接口
  • 服务接口:根据SOME/IP通信机制和接口类型的定义,选择能够实现功能的通信逻辑的接口和通信机制
  • 数据类型:根据SOME/IP对数据类型的要求,选择能够实现功能通信信号的数据类型,以确保SOME/IP可以正确序列化和反序列化
  • 订阅组:订阅的服务接口需要部署在某个EventGroup里,才能实现订阅
  • 通信协议选择:根据TCP和UDP的特点选择即可,如TCP更加可靠,UCP更加实时
  • 版本管理:可以根据平台或者车型的更新或扩展计划进行版本管理,需要保证向后兼容

时序图

需要体现Server和Client的ECU、服务、信号传输使用的服务接口,必要时还要体现接口具体传输的数据以及事件发送的机制。

SOME/IP通信设计例子

功能需求整理

  • 功能需求:通过HU接听电话,并且在屏幕上显示通话相关信息及状态
  • 子系统:该功能分为“交互”和“通话”两个逻辑单元
  • ECU部署:“交互”部署到HU,“通话“部署到TBOX

梳理交互逻辑及信息

  • 电话呼入
  • TBOX向HU发送通话信息
  • HU进行显示
  • 用户通过HU进行操作
  • HU向TBOX发送接听或者拒绝通话
  • TBOX向HU反馈操作响应并执行相应动作
  • 如果通话信息及状态有更新,TBOX向HU发送相关信息

服务接口设计

根据梳理的交互逻辑及信息,将服务定为TBoxTelephony,部署在TBOX上,服务接口分别为CallOperarion和CallInfo,分别用于控制电话接听或者拒绝和通话相关信息及状态。

下表为接口设计内容:

在这里插入图片描述

传输协议选择

根据TCP和UDP的特性,以及实际功能的要求,每个服务接口单独选择。

端口定义

系统设计的第一步,作为架构工程师与通信工程师之间工作衔接的中间产物,需要双方明确功能、信号、逻辑等,才能保证系统设计的正确性。

时序图设计

在这里插入图片描述

总结

SOME/IP系统设计实现了系统内ECU之间的SOME/IP通信,设计思路可以总结为确定功能需求,梳理功能的逻辑及信息,设计服务接口,传输协议及端口号的定义等。

矩阵内包含的服务接口设计是覆盖整个系统的,ECU的开发都需要遵循矩阵的设计,但是矩阵的内容可以是确定的,格式可能会大不相同,因此就需要一种统一的格式来承载——ARXML(AUTOSAR XML)格式文件,那么ARXML是如何生成的呢?敬请期待《SOME/IP系统设计(下)》。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web开发介绍详细介绍

Web开发介绍 1 什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如下图所示的网站:淘宝,京东等等 那么我们…

SpringBoot集成JPA实现分页和CRUD

SpringBoot集成JPA实现分页和CRUD 文章目录 SpringBoot集成JPA实现分页和CRUDpom.xmlapplication.propertiesaddCategory.jspeditCategory.jsphello.jsplistCategory.jspCategoryCategoryDAOCategoryServiceCategoryServiceImplPage4NavigatorRedisConfigCategoryControllerHel…

Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍

Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,它提供了持久化、高性能和高可用性的数据存储。它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。Redis可以用作数据库、缓存,甚至可以用…

怎么看待工信部牵头推动人形机器人发展

1,工信部牵头,而不是科技部牵头,有些蹊跷,科技部应该比工信部更了解科技发展趋势,工信部比科技部更了解工业发展趋势,这是用工业倒逼科技进步。 2,人的优势不是身体,而是精神&#…

python综合应用

猜数字游戏 # import random # 猜数字游戏 随机一个数字 提示玩家 # a random.randint(1, 100) # flag1 1 # flag2 100 # while True: # b int(input("请猜一个%d-%d的数字:" % (flag1,flag2))) # if b > a: # flag2 b # …

【微信小程序】自定义组件(一)

自定义组件 组件的创建与引用1、创建组件2、引用组件3、全局引用VS局部引用4、组件和页面的区别 样式1、组件样式隔离2、组件样式隔离的注意点3、stylelsolation的可选值 数据、方法和属性1、data数据2、methods方法3、properties4、data和properties区别5、使用setData修改pr…

maven之pom文件详解

一、maven官网 maven官网 maven官网pom文件详解链接 二、maven之pom 1、maven项目的目录结构 pom文件定于了一个maven项目的maven配置,一般pom文件的放在项目或者模块的根目录下。 maven的遵循约定大于配置,约定了如下的目录结构: 目录目…

基于Springboot+MYSQL+Maven实现的宠物医院管理系统(源码+数据库+运行指导文档+项目运行指导视频)

一、项目简介 本项目是一套基于springboot框架实现的宠物医院管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…

MATLAB算法实战应用案例精讲-【图像处理】图像分割(最终篇)

目录 前言 图像分割发展历程 算法原理 阈值分割 1.1 全局阈值分割

【Kubernetes】初识k8s--扫盲阶段

文章目录 1、k8s概述2、为什么要有k8s2.1 回顾以往的应用部署方式2.2 容器具有的优势 3、k8s能带来什么 1、k8s概述 kubernetes是一个可移植、可扩展的开源平台,用于管理 容器化 的工作负载和服务,可促进申明式配置和自动化。kubernetes拥有一个庞大且快…

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑 1.Elasticsearch 产生背景 大规模数据如何检索 如:当系统数据量上了 10 亿、100 亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题&a…

【C语法学习】15 - fopen()函数

文章目录 1 函数原型2 返回值3 参数3.1 文件名3.2 模式3.2.1 以"r"模式打开3.2.2 以"w"模式打开3.2.3 以"a"模式打开3.2.4 以"r"模式打开3.2.5 以"w"模式打开3.2.6 以"a"模式打开 1 函数原型 fopen()&#xff1a…

右击显示Pycharm打开教程

效果图 操作流程 win r 输入 regedit 回车打开注册表编辑器 2.找到 shell 路径 计算机\HKEY_CLASSES_ROOT\Directory\shell3.在 shell 下新建项,名称为 Pycharm 单击Pycharm文件夹,双击默认项,修改默认值,这个数值就是你右击后…

OpenHarmony:4.0 Release版本的开发数据

OpenAtom OpenHarmony 4.0 Release版本于 10 月 27 日发布,经过了32周的开发周期。在此期间,有 65499 个 Committs 进入了 版本。在这个周期内完成了相当多的重要工作,本文阐释这些工作由谁完成。 这次共有 2220 位贡献者为 4.0 Release版本做…

【Linux】 shutdown 命令使用

shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。使用权限:系统管理者。 语法 shutdown [选项] 时间 [警告信息] 命令选项及作用 执行令 man shutdown 执行命令结果 参…

计算虚拟化2——内存虚拟化

目录 物理机内存访问过程 虚拟地址VA和物理地址PA概念 MUU实现VA到PA所使用的映射表 内存虚拟化类型 内存软件辅助虚拟化 内存硬件辅助虚拟化 内存虚拟化-内存超分配 内存共享 内存置换 内存气泡 物理机内存访问过程 内存的基本知识 内存都是从物理地址0开始的&…

golang工程——opentelemetry简介、架构、概念、追踪原理

opentelemetry 简介 OpenTelemetry,简称OTel,是一个与供应商无关的开源可观测性框架,用于检测、生成、收集和导出 遥测数据,如轨迹、度量、日志。OTel的目标是提供一套标准化的供应商无关SDK、API和工具,用于接 收、…

阿里云免费服务器

文章目录 最近的阿里云活动By the way在云服务器ECS上搭建个人网站正文补充:定期释放补充:不知道阿里云服务器的密码怎么办?成果补充:怎么找到实例操作的后台?补充:怎么查看服务器到期时间? 究竟白嫖了多少?最后&…

模型推理加速与部署梳理

推理加速与部署 文章目录 推理加速与部署服务级别的推理加速模型级别的推理加速量化图优化 kernel级别的推理加速GPU常见优化方式特殊Kernel的优化方式 推理框架可供学习的框架 最近学的有点杂,梳理一下我的个人体系,接下来我会花一定时间梳理下面这些东…

【大数据】-- flink kubernetes operator 入门与实践

课程链接:https://edu.csdn.net/course/detail/38831 目录 课程链接:https://edu.csdn.net/course/detail/38831https://edu.csdn.net/course/detail/38831 一、你将收获