AUTOSAR-Com模块

COM

文章目录

  • COM
    • COM 基础介绍
    • COM主要功能
    • AUTOSAR COM 模块 发送模型
    • Signal 信号/信号组
    • 发送信号属性—Triggered属性+Pending属性
    • 信号的初始化
    • 信号的对齐方式(大小端)
    • 信号的收发
      • 发送
      • 接收
    • 字节序转换和符号扩展
    • 信号的过滤机制
    • 过滤处理
    • 信号传输模式
    • 信号流和传输方式选择
    • 对其他模块依赖
    • 参考文档

COM 基础介绍

  • 对不同速率的总线网络提供数据交换;为汽车控制单元应用软件提供了统一的通信环境,为内部和外部通信定义了公共的软件通信接口和行为;

  • AUTOSAR COM模块进行发送和接收信号,为RTE提供面向信号的接收与发送函数。

在这里插入图片描述

COM主要功能

  • 为上层提供信号接口 (无符号/有符号)
  • I-PDUs 中信号打包/解包
  • 处理传输模式
  • I-PDUs间传输最小间隔
  • I-PDU组的通信控制

AUTOSAR COM 模块 发送模型

在这里插入图片描述

  • SWC 调用 RTE 提供的 Com_SendSignal,Com_SendSignalGroup
  • COM层 COM_SendSignal 函数会检查信号是否配置了开启更新位(UB)
  • UB 使用限制
    • 如果是PDUR 层分步多次调用 Com_TriggerTransmit(正常每个PDU只会被COM层置位1次,为了避免被多次Updatebit,需要在PDUR触发调用时清UB)
    • ComTxModeNumberOfRepetitions 和 UB 不可同时配置(ComTxModeNumberOfRepetitions 表示重发次数,COM每发一次会触发多次报文发送,从而多次设置Updatebit,每个PDU预期只会被COM层置位1次)
  • 更新UB:当上层软件模块需要发送Signal时,会通过RTE调用COM层的发送接口更新Signal或者Signal Group值,COM模块自动将Signal/Signal Group对应的UB置位
  • 清除UB:清除时机可以通过参数ComTxIPduClearUpdateBit配置
    • Transmit eg:PduR_ComTansmit 发送数据且返回E_OK时
    • Confirmation eg: PduR_ComTransmit 发送数据且返回 E_OK 时,且收到发送确认 Com_txConfirmation 时
    • TriggerTransmit eg: 当I-PDU数据被 Com_TriggerTransmit 请求发送时
  • 注:如果发送模式为DIRECT,并且ComTxModeNumberOfRepetitions大于或等于1,那么Update Bit不能使用。Update Bit必须和关联的信号在同一个I-PDU,且每个Signal或Signal Group只能关联一个Update Bit

Signal 信号/信号组

Abbreviation / Acronym:Description:
signalAUTOSAR信号由COM中的一个或多个信号携带。
从AUTOSAR信号到COM信号的转换由RTE完成。
通常,转换会保留数据的语法。
但是,在复杂数据类型的情况下,转换可能会改变信号的语法。
因此,AUTOSAR COM中的信号并不总是与AUTOSAR信号相同。
signal group信号组指的是一组必须始终在相同的I-PDU中保持在一起的信号。信号组用于保证AUTOSAR复合数据类型的一致传输。信号组具有以下属性:
一个信号最多只能属于一个信号组
一个信号组最多只能属于一个I-PDU
信号组在I-PDU内不会相互重叠
信号组是一组属于该组的连续信号。然而,在组内可能存在未使用的位(“空洞”)。
信号组可能不含任何信号(“可能为空”)。
将信号分组到信号组的分组假设是作为COM生成过程的输入提供的。
  • 初始值:AUTOSAR COM模块使用配置参数 ComSignalInitValue 的低N位初始化发送方和接收方的每个N位的信号类型, 配置的ComSignalInitValues也用于I-PDU的初始化信号。一个信号的ComSignalInitValue可以与ComSignalDataInvalidValue值相同。初始化阶段会清空所有update-bits值。默认情况下,所有I-PDU组应在停止状态,不得由Com_Init()调用启动。

  • 数据无效值:通过调用 Com_InvalidateSignal, AUTOSAR COM模块将在内部执行带有配置 ComSignalDataInvalidValue 的 Com_SendSignal。ComTransferProperty和传输模式决定了ComSignalDataInvalidValue在总线上的传输。内部执行的带有数据无效值的 Com_SendSignal,会决定被用作过滤器的数据无效值和TMS当前值。VFB仅为复杂数据类型定义一个属性。因此,一个失效的复杂数据类型到一个失效的信号簇的最佳映射是使一个信号簇的所有信号失效。因此,RTE还可以通过调用Com_InvalidateSignalGroup来请求使整个信号簇无效。

  • 正常值:初始化阶段之后的有效值,包括COM部分收发的信号值。

发送信号属性—Triggered属性+Pending属性

  • Triggered属性-触发:调用 Com_SendSignal( ) 服务请求具备Triggered属性的信号发送,可以触发相关I-PDU的发送,但是如果该I-PDU的发送模式被配置为Peiodic时,只更新信号的值,不会触发相关I-PDU的立即发送,而是在下一周期到来时触发发送。

  • Pending属性-延迟:Com_SendSignal( )服务请求调用具备Pending属性的信号发送,不会触发相关I-PDU的发送。

信号的初始化

  • AUTOSAR COM在 Com_Init() 执行时,将初始化所有I-PDU内容,首先用默认值(ComTxIPduUnusedAreasDefault)表示字节,然后根据所包含信号的初始值(ComSignalInitValue) 和更新位来表示位。初始化过程中无法使能ECU内部的通信功能。

信号的对齐方式(大小端)

  • 小端:信号的高位(MSB)放在高字节的高位,信号的低位(LSB)放在低字节的低位;

  • 大端:信号的高位(MSB)放在低字节的高位,信号的低位(LSB)放在高字节的低位;

信号的收发

发送

  • 发送过程中,应用层调用COM层提供的信号或信号簇发送函数,根据配置,信号或信号簇的数据经过字节序转换后被更新到I-PDU中相应的位置。AUTOSAR COM规范中同一I-PDU可以设置两种发送模式,对其中各信号的传输模式条件进行计算,I-PDU选择其中一种发送模式进行发送。然后启动发送死限监控,调用 PduR_ComTransmit() 函数将I-PDU发送到下层。

  • 根据该信号的配置判定是内部信号还是外部信号。

    • 内部发送:直接将信号数据复制到接收信号数据区,并执行通知操作;
    • 外部发送:若该信号发送属性为触发triggered,则该信号所属的I-PDU将立即发送(除非该I-PDU发送模式为周期传输模式),若该信号发送属性为延迟pending,则不进行传输,发送时,信号经过字节顺序转换后数据被复制到I-PDU中,同时设置相关更新位信息,然后根据该I-PDU的TMS切换传输模式,进行传输并设置启动相关定时器。

接收

  • 接收过程中,当下层接收到I-PDU时,下层将调用COM层提供的指示函数 Com_RxIndication(),取消并重启接收死限监控,将I-PDU的数据从底层拷贝到COM中。调用信号或信号簇的接收函数后,该I-PDU中的信号或信号簇将经过字节顺序转换、符号扩展和接收过滤后,数据被拷贝到应用层。
  • 接收过程要判断是内部信号还是外部信号
    • 内部接收:直接将信号数据复制到接收信号数据区;
    • 外部接收:首先判断对于的I-PDU组是否启动,若启动,返回E_OK,否则返回 COM_STOP,取消并重启该I-PDU的相关死限监控定时器,将数据复制到I-PDU数据区,I-PDU中的信号经过字节书序转换、符号扩展和过滤机制后,复制到接收信号数据区,再执行通知操作,通知上层软件调用相关API函数接收信号。

字节序转换和符号扩展

  • COM模块支持的数据类型:boolean,uint8,uint16,uint32,uint64,sint8,sint16, sint32,sint64,uint8[n],float32和float64,其中uint8[n] 对应于UINT8_N或UINT8_DYN

  • AUTOSAR COM 支持所有有符号和无符号整型数据类型的字节序转换

  • 同时会将非整型数据类型视为对应匹配的整数数据类型,,要么在 ComSignalEndianness 被配置为OPAQUE的情况下不解释它们的内容。

  • AUTOSAR COM模块将不透明的数据解释为 uint8[n],并始终将其映射为n字节大小的信号。对于不透明的数据端序,转换必须配置为 OPAQUE。

  • AUTOSAR COM会扩展接收信号 ComSignalType 的大小。注:必须考虑签名数据的平台特定表示。 负值的签名数据将被正确映射。

    例如:一个10位有符号信号被接收并被 Com_ReceiveSignal 复制到一个16位有符号整型变量。 如果接收到signal值为(-3)10进制,类型为sint16,则接收到的10位信号有取值为1111111101b。 当将其复制到16位整型变量时,值将扩展到11111111111101b 。

  • AUTOSAR 模块不支持float32 和 float64数据类型的符号位拓展

  • AUTOSAR COM 模块 在发送端 I-PDU 调出来之前进行端序转换。

  • 除了字节顺序转换外,AUTOSAR COM模块不支持 ComSignalType FLOAT32或FLOAT64的信号的进一步转换。 也就是说,支持字节顺序转换,但不支持复杂转换或分数、指数、符号或偏差值的标准化。

  • 注: Intel 格式:同小端,低字节在前,Motorola格式:同大端,高字节在前,以上均可配置,如果配置Opque 字节序(不透明),代表ECU A到ECU B的数据通信顺序是两方自行约定,一般为单字节数组格式如arry[8], arry[64]

信号的过滤机制

  • AUTOSAR COM模块会评估每次过滤的条件为真或假;

  • AUTOSAR COM模块会在接收端滤出想要过滤的信号;

  • AUTOSAR COM模块应在发送端对传输模式条件(TMC)使用过滤机制,但不应过滤发送端信号;

  • AUTOSAR COM模块提供的过滤算法:

    1. ALWAYS: 总是通过,若一个信号的过滤算法配置为ALWAYS,那么这个信号的TMC永远为True
    2. NEVER: 总是不通过,若一个信号的过滤算法配置为NEVER,那么这个信号的TMC永远为False;
    3. MASKED_NEW_EQUALS_X: 若一个信号的过滤算法配置为MASKED_NEW_EQUALS_X时,只有当新值与掩码按位与后等于设定的某一值时,这个信号的TMC才等于True;
    4. MASKED_NEW_DIFFERS_X: 若一个信号的过滤算法配置为MASKED_NEW_DIFFERS_X时,只有当新值与掩码按位与之后不等于设定的某一值时,这个信号的TMC才为True;
    5. MASKED_NEW_DIFFERS_MASKED_OLD: 若一个信号的过滤算法配置为MASKED_NEW_DIFFERS_MASKED_OLD时,只有当新值与掩码按位与之后的值不等于旧值与掩码按位与之后的值时,这个信号的TMC才为True;
    6. NEW_IS_WITHIN: 若一个信号的过滤算法配置为NEW_IS_WITHIN时,只有当新值在某一设定的范围内时,这个信号的TMC才为True;
    7. NEW_IS_OUTSIDE: 若一个信号过滤算法配置为NEW_IS_OUTSIDE时,只有当新值不在某一设定的范围内时,这个信号的TMC才为True;
    8. ONE_EVERY_N:若一个信号的过滤算法配置为ONE_EVERY_N时,该信号值每更新N次,这个信号的TMC值为True;

    :对于ComSignalType FLOAT32、FLOAT64、UINT8_N或UINT8_DYN的信号,AUTOSAR COM模块应只支持配置为ALWAYS、NEVER或ONE_EVERY_N的ComFilterAlgorithm ;对于ComSignalType配置为BOOLEAN的信号,AUTOSAR COM模块应只支持ComFilterAlgorithm配置为

过滤处理

  • 如果AUTOSAR COM模块在接收端过滤掉一个信号(信号簇),即filter condition的结果为false,则AUTOSAR COM模块应丢弃该信号(信号簇),不进行处理,及不会将该信号的值放入old_value中;

  • 如果AUTOSAR COM模块将一个信号的过滤器计算为true(值没有被过滤掉),那么AUTOSAR COM模块应将该信号的值放入old_value中;

  • 如果在send-API编写相应的信号之前对过滤器进行了计算,则需要有一种方法来确定该信号的过滤器状态。 一些筛选器需要new_value来计算筛选器。 然而,这只有在使用send-API更新信号之后才可用。 因此,有必要在第一次发送之前为new_value定义过滤器使用的值。

  • 对于配置的接收滤波器MASKED_NEW_DIFFERS_MASKED_OLD的信号, AUTOSAR COM模块将处理该信号在接收截止日期监测超时后收到的第一个值,就像该值已经通过了过滤条件一样;

  • 在相关的I-PDU的RX截止超时后AUTOSAR COM模块会让过滤器MASKED_NEW_DIFFERS_MASKED_OLD传递任何值。

信号传输模式

  • 直接/N次传输模式(Direct/n-times模式):包含于该I-PDU的任何具备Triggered属性的信号及信号组的更新都会触发I-PDU的立即发送,当上层面模块调用Com_SendSignal( )/Com_SendSignalGroup( )更新信号或者信号组时,Com层根据配置需求发送n次该I-PDU。

  • 周期传输模式(Periodic 模式):用户配置发送周期,只有该I-PDU的周期到来时才会触发该I-PDU的发送,上层模块调用Com_SendSignal()/Com_SendSignalGroup( )只更新信号及信号组的内容。

  • 混合传输模式:Direct/n-times和Periodic的混合模式,当上层模块调用Com_SendSignal( )/Com_SendSignalGroup( )请求该I-PDU包含的信号/信号组的发送时,将会触发该I-PDU的直接n次发送,同时,用户配置的周期到来也会触发该I-PDU的发送。

  • None传输模式:无论何时COM层不能够触发拥有该发送模式的I-PDU的发送,只有PduR模块调用Com_TriggerTransmit()服务才能够触发该I-PDU的发送。

  • 在AUTOSAR COM规范中允许为每个I-PDU静态配置两种不同的传输模式,ComTxModeTrue和ComTxModeFalse。在AUTOSAR COM规范中通过传输模式切换,来选择I-PDU中的其中一种传输模式进行传输。

    • 先使用过滤机制判断I-PDU中各信号的发送模式条件,同时更新I-PDU中的信号。
    • 通过各信号的判断结果来计算该I-PDU的TMS(transmission mode selector)。若至少有一个C( 与IPDUk中的信号Si相关)为True,则TMS为True,对应I-PDU以用户配置的ComTxModeTrue的发送模式发送;若所有C(Si,IPDUk)都为False,则TMS为False,对应I-PDU以用户配置的ComTxModeFalse的发送模式发送.
  • 发送模式条件TMC+发送模式选择TMS

    • 发送端信号的TMC(发送模式条件)的计算与接收端的信号过滤机制相同,但是,在发送端信号过滤并不会丢弃任何的信号,而只是用于计算信号TMC的值。
    • 发送端的TMS,一个I-PDU的TMS的值是根据其所有下属的信号的TMC结果决定的,若一个I-PDU下属的信号中至少有一个信号的TMC计算为True,那么这个I-PDU的TMS为True,只有该I-PD下属的所有的信号的TMC都计算为False时,该I-PDU的TMS才为False。
  • 每个I-PDU配置两种发送模式,在程序运行过程中,某I-PDU的发送模式是由TMS来决定,若一个I-PDU的TMS根据上述的算法计算为True,那么该I-PDU将以配置的True状态下的发送模式进行发送。当一个I-PDU下属的某个信号的过滤算法配置为ALWAYS,那么这个I-PDU将一直以用户配置的TM为True状态下发送模式进行发送。

信号流和传输方式选择

在用户(RTE 或 SwCluC)发出特定信号的发送请求后,该信号被写入配置定义的适当的 I-PDU 缓冲区

在这里插入图片描述

对其他模块依赖

在这里插入图片描述

参考文档

Specification of Communication

Requirements on Communication

AutoSAR配置与实践(深入篇)6.4 COM 主要功能描述_autosar com-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【十进制转十六进制数】

【十进制转十六进制数】 C语言版本C 版本Java版本Python版本 💐The Begin💐点点关注,收藏不迷路💐 从键盘接收一个整数,编程实现将其转换成十六进制数。 输入 一个整数 输出 十六进制数 样例输入 100样例输出 6…

day01-ElasticStack+Kibana

ElasticStack-数据库 #官网https://www.elastic.co/cn/ #下载7.17版环境准备 主机名IP系统版本VMware版本elk110.0.0.91Ubuntu 22.04.417.5.1elk210.0.0.92Ubuntu 22.04.417.5.1elk310.0.0.93Ubuntu 22.04.417.5.1 单机部署ES 1.下载ES软件包,放到/usr/local下 […

HTML3D旋转相册

文章目录 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐

react18中react-thunk实现公共数据仓库的异步操作

redux及react-redux都只能实现数据的同步修改更新,有点类似于vue中的mutation,只能做同步操作,异步的话不用actions来实现。由于在项目始终不可避免要实现的异步数据的更新,这明显不够用了。是时候引入我们的异步中间件redux-thun…

计算机组成原理笔记9(指令系统,立即寻址,直接寻址,间接寻址.....)

指令操作码 操作码的位数决定了不同功能指令的多少,位数越多,所能表示的操作功能就越丰富。指令的操作码通常有两种编码格式: 定长操作码 定长操作码对于简化硬件设计,减少指令译码时间非常有利,例如IBM370指令系统&a…

Matlab 火焰识别技术

课题介绍 森林承担着为人类提供氧气以及回收二氧化碳等废弃气体的作用,森林保护显得尤其重要。但是每年由于火灾引起的事故不计其数,造成重大的损失。如果有一款监测软件,从硬件处获得的图像中监测是否有火焰,从而报警&#xff0…

uv: 一个统一的Python包管理工具

uv是由Astral公司开发的一个极其快速的Python包管理器,完全用Rust编写。它最初在2月份发布,作为pip工作流的替代品。现在,uv已经扩展成为一个端到端的解决方案,可以管理Python项目、命令行工具、单文件脚本,甚至Python本身。可以说,uv就像是Python界的Cargo:一个快速、可靠、易…

XQT_UI 组件|03 |加载组件 XQtLoading

XQtLoading 使用文档 简介 XQtLoading 是一个自定义的加载动画组件,旨在为用户提供可配置的旋转花瓣动画效果。它可以在应用程序中用于指示加载状态,提升用户体验。 特征 可配置性:用户可以根据需求调整旋转周期、缩放周期、最大/最小缩放…

置换环模板题E - Permute K times 2

输入样本 1 6 3 5 6 3 1 2 4样本输出 1 6 1 3 2 4 5每次操作后, P P P 都会发生如下变化: 第一次操作后, P P P 为 ( 2 , 4 , 3 , 5 , 6 , 1 ) (2,4,3,5,6,1) (2,4,3,5,6,1) 。第二次操作后, P P P 为 ( 4 , 5 , 3 , 6 , …

溪源飨提高免疫力治未病:硒+辅酶Q10强力组合

上周我和女友在亲友的见证下举行了庄重的订婚仪式。我和女友是经朋友介绍才认识的,认识时间并不算长。第一次见面,彼此就被对方深深地吸引了,真可谓一见钟情。我喜欢她那恬静的美,难以忘怀她那散发着迷人气息的双眸;她…

CMakeLists.txt 编写规则

目录 1. 注释 1.1 注释行 1.2 注释块 2. CMakeLists.txt的编写 2.1 同意目录下的源文件 2.2 SET指令 2.3 file和aux_source_directory 2.4 包含头文件 2.5 生成动态库和静态库 2.6 链接库文件 2.7 message指令 2.8 移除操作 2.9 find_library和find_package 3. 常…

【瑞吉外卖】-day01

目录 前言 第一天项目启动 获取资料 创建项目 ​编辑 连接本地数据库 连接数据库 修改用户名和密码 ​编辑创建表 创建启动类来进行测试 导入前端页面 创建项目所需目录 检查登录功能 登录界面 登录成功 登录失败 代码 退出功能 易错点 前言 尝试一下企业级项…

部署DNS主从服务器

一。DNS主从服务器作用: DNS作为重要的互联网基础设施服务,保证DNS域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件&…

基于Multisim的单双声道音频功率放大电路设计与仿真

1.额定输出功率≥5W(fi1KHz,Ui100mV) 2.频率响应范围150Hz~13KHz 3.高、低音频端提升或衰减3dB 链接:https://pan.baidu.com/s/1exsBJoXdkb-gPr1IkxNvDg 提取码:jh5j

技术分享 | 大语言模型增强灰盒模糊测试技术探索

大语言模型凭借其庞大的参数规模,能够通过无监督学习从海量文本中获取知识,从而不仅能够深刻理解文本语义,还能准确识别文本的格式和结构。凭借对不同数据结构的深度理解,大语言模型已在众多领域得到广泛应用。其中,尤…

【Vue3】第三篇

Vue3学习第三篇 01. 组件组成02. 组件嵌套关系03. 组件注册方式04. 组件传递数据Props05. 组件传递多种数据类型06. 组件传递Props校验07. 组件事件08. 组件事件配合v-model使用09. 组件数据传递10. 透传Attributes 01. 组件组成 在vue当中,组件是最重要的知识&…

移动开发(五):.NET MAUI中自定义主题设置

目录 一、.NET MAUI主题设置原理 二、.NET MAUI主题设置案例 2.1 创建主题文件 2.2 修改App.xaml 文件 2.3 设置默认主题的三种方式 2.4 通过按钮切换主题 三、.NET MAUI主题设置技巧 四、总结 今天给大家分享.NET MAUI应用中如何自定义主题,提升APP本身个性…

Redis 单机、主从、哨兵和集群架构详解和搭建

目录 前言 单机部署 检查安装 gcc 环境 下载安装 Redis 启动 Redis 关闭 Redis 配置Redis 主从部署 整体架构图 主从复制配置 重启 Redis 验证 主从复制的作⽤ 主从复制缺点 哨兵部署(Sentinel) 整体架构图 哨兵模式配置 启动哨兵 验证…

Axure简单进度条制作,原型文件可下载

1.先看效果 2.需要用到的主要元件 a动态面板遮挡进度条左侧部分 b进度条底色背景 c百分比数字 3.将进度条、背景、百分比数字设置为隐藏 4.为按钮【选择文件】添加事件,并显示相应的原件 显示进度条process向右侧滑动 5.设置百分比数字及显示时每25毫秒加1 如…

html----图片按钮,商品展示

源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图标</title><style>.box{width:…