精华内容
下载资源
问答
  • AUTOSAR COM模块

    千次阅读 2020-07-15 11:55:12
    AUTOSAR COMAUTOSAR通讯的重要组成部分,它是从OSEK COM标准的基础上发展而来的。它提出了一个不同速率的总线网络之间进行数据交换的方法,为汽车控制单元应用软件提供了统一的通信环境,为内部和外部通信定义了...

    AUTOSAR COM是AUTOSAR通讯的重要组成部分,它是从OSEK COM标准的基础上发展而来的。它提出了一个不同速率的总线网络之间进行数据交换的方法,为汽车控制单元应用软件提供了统一的通信环境,为内部和外部通信定义了公共的软件通信接口和行为,增强了应用软件模块的可移植性。
    在这里插入图片描述
    AUTOSAR COM在分层架构中的位置

    AUTOSAR COM提供了基本的通信服务,它有明确的上层模块RTE(Runtime Environment)和下层模块PDU Router。

    1.上下层关系

    1.1上层RTE

    RTE使用AUTOSAR COM模块的功能来发送和接收信号,AUTOSAR COM模块为RTE提供面向信号的数据接口,主要包括:
    将AUTOSAR信号打包传送给I-PDUs
    将接收到的I-PDUs打包并将接收到的信号提供给RTE
    将接收到的I-PDUs信号路由到I-PDU进行传输
    将接收到的I-PDUs中的信号簇路由到I-PDU中进行传输
    通信传输控制(I-PDU组的启动/停止)
    发送请求的复制
    保证传输I-PDUs之间的最小距离
    接收信号监控(信号超时)
    传入信号的过滤机制
    不同的通知机制
    提供初始值和更新指示
    字节顺序的转换
    符号扩展
    每个I-PDU支持两种不同的传输模式
    基于信号的网关
    支持大型和动态长度数据类型
    支持I-PDU计数器和I-PDU复制
    COM和RTE的通信

    1.2下层PDU

    AUTOSAR COM模块使用两组PDU Router上层模块API的联合,即用于使用TP的上层模块API和用于不使用TP的上层模块API。由于AUTOSAR COM模块通过简单未片分的L-PDUs或通过片分的TP来传输I-PDUs,所以从这点来看,还是非常有必要的。
    在这里插入图片描述
    来自底层PDU Router对AUTOSAR COM模块的功能需求包括:
    输入I-PDUs的指示
    用于发送I-PDUs的发送接口,包括通信控制器是否已发送I-PDU的确认
    触发接口,使PDU router能够引起来自AUTOSAR COM模块的传输
    用于TP通信的缓冲区处理

    在这里插入图片描述COM和RTE、PDUR的通信

    信号值

    初始值: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属性:调用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内部的通信功能。

    信号的收发

    发送过程

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

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

    接收过程

    在接收过程中,当底层接收到I-PDU时,底层将调用COM层提供的指示函数Com_RxIndication(),取消并重启接收死限监控,将I-PDU的数据从底层拷贝到COM中。调用信号或信号簇的接收函数后,该I-PDU中的信号或信号簇将经过字节顺序转换、符号扩展和接收过滤后,数据被拷贝到应用层。类似地,接收过程要判断是内部信号还是外部信号。

    对于内部接收,直接将信号数据复制到接收信号数据区;对于外部接收,首先判断对于的I-PDU组是否启动,若启动,返回E_OK,否则返回COM_STOP,取消并重启该I-PDU的相关死限监控定时器,将数据复制到I-PDU数据区,I-PDU中的信号经过字节顺序转换、符号扩展和过滤机制后,复制到接收信号数据区,再执行通知操作,通知上层软件调用相关API函数接收信号。

    字节序转换和符号扩展

    AUTOSAR COM 支持以下数据类型:boolean,uint8,uint16,uint32,uint64,sint8,sint16, sint32,sint64,uint8[n],float32和float64,其中uint8[n] 对应于UINT8_N或UINT8_DYN。
    AUTOSAR COM支持所有有符号和无符号整型数据类型的字节序转换,同时会将非整型数据类型视为对应匹配的整数数据类型,或者不解释它们的内容,防止它们的ComSignalEndianness被配置为OPAQUE。对于不透明数据的转换,必须配置为OPAQUE。AUTOSAR COM会扩展接收信号ComSignalType的大小。
    AUTOSAR COM会在接收端滤出想要过滤的信号,并评估每次过滤的条件。同时,会在发送端对发送模式条件(TMC)采用过滤机制。如果在发送API编写相应的信号之前对过滤器进行评估,则需要一种方法来确定该信号的过滤器状态。有些过滤器需要新值来计算过滤器的值。但是,只有在使用一个发送API更新信号之后才能使用它。因此,有必要在第一次发送之前定义新值过滤器使用的值。

    传输模式切换

    COM模块主要实现信号或信号簇的收发功能,下面以信号发送的实现展开。首先简要介绍一下AUTOSAR COM中特有的传输模式切换。AUTOSAR COM定义了4种信号传输模式:

    1. 直接/N次传输模式(Direct/n-times模式)

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

    2. 周期传输模式(Periodic 模式)

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

    3. 混合传输模式(Mixed模式)

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

    4. 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( Si,IPDUk)为True,则TMS为True,对应I-PDU以用户配置的ComTxModeTrue的发送模式发送;若所有C(Si,IPDUk)都为False,则TMS为False,对应I-PDU以用户配置的ComTxModeFalse的发送模式发送。其中C(Si,IPDUk)为传输模式条件,该条件与IPDUk中的信号Si相关。

    举个例子,简要说明传输模式的切换。用例中进行周期传输和直接/N次传输之间的切换(N=3)。根据I-PDU的传输配置,当TMS(transmission mode selector)判断为真时,设置传输模式为周期传输,反之为直接/N次传输。上层给定值V=a(此时TMS判断为真),进行周期传输;当值V更新为b时(此时TMS判断为假),进行直接/N次传输模式,传输三次。由图3可知,随着V值的更新该I-PDU的传输模式在这两种传输模式之间切换。

    TMC和TMS

    发送模式条件: TMC

    发送端信号的TMC(发送模式条件)的计算与接收端的信号过滤机制相同,但是,在发送端信号过滤并不会丢弃任何的信号,而只是用于计算信号TMC的值。

    COM提供了如下八种信号过滤机制:

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

    发送模式选择TMS

    发送端的TMS,一个I-PDU的TMS的值是根据其所有下属的信号的TMC结果决定的,若一个I-PDU下属的信号中至少有一个信号的TMC计算为True,那么这个I-PDU的TMS为True,只有该I-PD下属的所有的信号的TMC都计算为False时,该I-PDU的TMS才为False。

    在这里插入图片描述
    通过TMS将两个信号传递给I-PDU

    总结来看,可以为每个I-PDU配置两种发送模式,在程序运行过程中,某I-PDU的发送模式是由TMS来决定,若一个I-PDU的TMS根据上述的算法计算为True,那么该I-PDU将以配置的True状态下的发送模式进行发送。当一个I-PDU下属的某个信号的过滤算法配置为ALWAYS,那么这个I-PDU将一直以用户配置的TMS为True状态下发送模式进行发送。

    信号网关

    AUTOSAR COM提供了集成式信号网关,用于以1:n形式发送信号和信号簇。
    在这里插入图片描述
    COM模块对信号发送的影响
    集成的信号网关充当接收器,用于所有被配置为网关信号源的信号或信号簇。信号网关在接收到用于路由的信号或信号簇后,立即充当这些信号或信号簇的发送器。如图6和图8所示。如果集成的信号网关转发信号/信号簇或SWC发送信号,则信号处理没有区别。

    在这里插入图片描述
    COM模块对信号接收的影响

    由于网关关系是静态配置的,一个优化的信号网关可能会跳过一些具体配置的处理阶段。例如,字节序转换在某些情况下是不必要的。当然,优化以提高信号网关性能为目的,不会导致任何不同的逻辑行为或目标总线上的不同表示。

    在这里插入图片描述
    COM模块对集成信号网关的影响
    接收到的信号或信号簇可能在本地ECU上接收,同时也是网关动作的源。集成的信号网关当然要确保一致地处理信号簇,但没有预先确定的实现方法。

    缩写

    CAN Communication Matrix:CAN通信矩阵,用来描述完整的CAN网络,包括:涉及的CAN节点;CAN PDU的定义(ID和数据长度DLC);PDU的发送和接收信息。
    Physical Channel:物理通道。代表CAN网络的接口,不同CAN硬件单元的不同物理通道可以访问不同的网络。
    DLC:Data Length Code,描述SDU长度的CAN信息。
    L-PDU:Data Link Layer ProtocolData Unit,数据链接层的协议数据单元,包含标识符(ID), 数据长度(DLC)和数据(L-PDU)
    L-SDU:Data Link Layer ServiceData Unit,数据链接层服务数据单元,它其中的数据传输到L-PDU中。
    Hardware Object :硬件对象。硬件对象定义为CAN硬件单元的CAN RAM中的消息缓冲区。也常称为消息对象。
    HOH:Hardware ObjectHandle,硬件对象处理。硬件对象处理由CAN驱动程序定义和提供。通常每个HOH表示一个硬件对象。HOH被CAN接口层用作发送和读取的参数,向CAN驱动程序请求。
    L-PDU Handle:L-PDU处理被定义并放置在CAN接口层中。通常,每个L-PDU Handle包含Tx/Rx处理信息的常量结构。
    CAN Controller:CAN控制器。一个CAN控制器直接服务一个物理通道。
    N-PDU:CAN传输层的网络协议数据单元。
    N-SDU:CAN传输层的服务数据单元。其中的数据传输到N-PDU中。
    PDU Router:协议数据单元路由。将I-PDU从一个模块传递到另外一个模块,PDURouter可以用于网关运行或内部路由。
    Confirmation:通过确认,PDU路由器报告AUTOSAR COM模块的请求已经成功完成。它是对COM请求的响应。例如,当PDU已成功传送。
    Data Invalid Value:数据无效值。由AUTOSAR COM模块发送的值,指示发送方AUTOSAR软件组件无法提供有效的值。
    Dynamic Length Signal:动态长度信号是在运行时长度可以变化的信号。
    Dynamic Length I-PDU:动态长度I-PDU是包含动态长度信号的I-PDU。它的长度取决于所包含的动态长度信号的长度。
    Indication:一个指示是从PDU路由器到COM的异步信息,例如,确认某物已经被接收。
    Init Value:启动后,AUTOSAR COM模块将I-PDUs和信号设置的初始 值。此值将一直使用到被覆盖为止。
    I-PDU group:I-PDU组是COM模块中相同方向(即发送或接收)的I-PDU的任意集合。
    Large Signal:大信号是指信号太大,无法装入基础通信协议的单个L-PDU中。
    Endianness Conversion:字节序转换
    Sign Extension:符号扩展
    TMC:Transmission ModeConditions,传输模式的条件
    TMS :Transmission Mode Selector,传输模式选择器

    展开全文
  • 开发时,可能遇到应用层(MBD)自己解析Message,并不需要Com将Message解析成Signal,这个时候Com以Signal为单位的接口反而会造成困难,下面将介绍如何解决! 两种解决方式 1. 导入DBC后修改Signal的属性 如下图所示...

    前言

    开发时,可能遇到应用层(MBD)自己解析Message,并不需要Com将Message解析成Signal,这个时候Com以Signal为单位的接口反而会造成困难,下面将介绍如何解决!

    两种解决方式

    1. 导入DBC后修改Signal的属性

    如下图所示,正常的Signal
    在这里插入图片描述
    修改后的Signal
    在这里插入图片描述

    这里可以看到,只需要将ComSignalType 修改成UINT8_N,在将SignalLength 修改成这个Message的DLC长度。

    1. 实现原理

    截取部分代码如下

       if(Type != (uint8)COM_UINT8_N)
        {
            VAR(uint8, AUTOMATIC) SigEndianess;
            SigEndianess = Com_GetValue(GEN,_ENDIANESS,ConstByteValue_u8);
    
            /* MR12 RULE 11.5 VIOLATION: SignalDataPtr is defined as void pointer in the AUTOSAR specification,
               so suppressing warning "Cast from a pointer to void to a pointer to object". */
            switch(Type)
            {
            case COM_SINT8:
            case COM_UINT8:
                /* Update the Src_Buf with the data i.e typecast the data to uint8*/
                TxNewVal = (Com_SigMaxType)(*(P2CONST(uint8,AUTOMATIC,COM_APPL_DATA))SignalDataPtr);
                break;
            case COM_SINT16:
            case COM_UINT16:
                /* Update the Src_Buf with the data i.e typecast the data to uint16*/
                TxNewVal = (Com_SigMaxType)(*(P2CONST(uint16,AUTOMATIC,COM_APPL_DATA))SignalDataPtr);
                break;
            case COM_BOOLEAN:
                /* Update the Src_Buf with the data i.e typecast the data to the boolean variable*/
                TxNewVal = (Com_SigMaxType)COM_BOOL_TO_UNSIGNED(*(P2CONST(boolean,AUTOMATIC,COM_APPL_DATA))SignalDataPtr);
                break;
            case COM_SINT32:
            case COM_UINT32:
                /* Update the Src_Buf with the data i.e typecast the data to the uint32 variable*/
                TxNewVal = (Com_SigMaxType)(*(P2CONST(uint32, AUTOMATIC, COM_APPL_DATA))SignalDataPtr);
                break;
    #ifdef COM_TXSIG_INT64
            case COM_UINT64:
            case COM_SINT64:
                /* Update the Src_Buf with the data i.e typecast the data to the uint64 variable*/
                TxNewVal = *(P2CONST(uint64, AUTOMATIC, COM_APPL_DATA))SignalDataPtr;
                break;
    #endif /* #ifdef COM_TXSIG_INT64 */
    
                /* FC_VariationPoint_START */
    #ifdef COM_FLOAT32SUPP
            case COM_FLOAT32:
                /* Convert the float value into 32 bit stream and then pack the value */
                /* MR12 DIR 1.1 VIOLATION: Explicit cast is provided in line with rba_BswSrv_MemCopy() definition.
                   But the void pointer is always deferenced to a type, based on the pointers address alignment.
                   Hence the alignment warning can safely be ignored. */
                (void)rba_BswSrv_MemCopy( (void *)&TxNewVal, SignalDataPtr, 4 );
                break;
    #endif /* #ifdef COM_FLOAT32SUPP */
                /* FC_VariationPoint_END */
    
            default:
                /**
                 * Default case is mandatory in switch syntax. Moreover only AUTOSAR Com defined signal types are allowed
                 * to be configured, hence default case is intentionally left empty.
                 */
                break;
            }
            /* The signal Endianess is obtained by this macro Com_GetValue(GEN,_ENDIANESS,ConstByteValue_u8)
             * The value of ConstByteValue_u8 must be loaded with TxSigConstPtr->General */
            ConstByteValue_u8 = TxSigConstPtr->General;
            /* FC_VariationPoint_START */
    #ifdef COM_TXSIG_FLOAT64SUPP
            if(Type == COM_FLOAT64)
            {
                float64 TxNewVal_f64;
    
                /* MR12 RULE 11.5 VIOLATION: SignalDataPtr is defined as void pointer in the AUTOSAR specification,
                   so suppressing warning "Cast from a pointer to void to a pointer to object". */
                TxNewVal_f64 = *(P2CONST(float64, AUTOMATIC, COM_APPL_DATA))SignalDataPtr;
    
                /* Convert the float value into 32 bit stream and then pack the value */
    /*            Com_PackFloatSignal(TxSigConstPtr->General.Endianess,TxSigConstPtr->Bit_Pos,
                        TxNewVal_f64, TxIPduConstPtr->BuffPtr); */
                Com_PackFloatSignal(SigEndianess, TxSigConstPtr->Bit_Pos, TxNewVal_f64, TxIPduConstPtr->BuffPtr);
            }
            else
    #endif /* #ifdef COM_TXSIG_FLOAT64SUPP */
        /* FC_VariationPoint_END */
            {
    /*             Com_PackSignal(TxSigConstPtr->General.Endianess,
                        TxSigConstPtr->Bit_Pos, TxSigConstPtr->BitSize,
                        TxNewVal,TxIPduConstPtr->BuffPtr); */
                Com_PackSignal(SigEndianess, TxSigConstPtr->Bit_Pos, TxSigConstPtr->BitSize, TxNewVal,
                               TxIPduConstPtr->BuffPtr);
            }
        }
        else
        {
            /* Find the ByteNo_u8 of the IPDU buffer */
            ByteNo_u8 = (PduLengthType)(TxSigConstPtr->Bit_Pos >> 3u);
            /* The locks inside the function Com_ByteCopy() are removed.
             * Hence locks are used here
             */
            /* MR12 RULE 11.5 VIOLATION: SignalDataPtr is defined as void pointer in the AUTOSAR specification,
               so suppressing warning "Cast from a pointer to void to a pointer to object". */
            Com_ByteCopy((TxIPduConstPtr->BuffPtr + ByteNo_u8),(const uint8*)SignalDataPtr,(uint32)TxSigConstPtr->BitSize);
    
        }
        SchM_Exit_Com_TxIpduProtArea(SENDSIGNAL);
    

    可以看到,首先对发送的Signal进行了Type的判断,如果是UINT8_N类型,那么将拷贝指定长度到Buffer中

    2. 实现接口

    发送Signal接口如下,前面提到通过修改Signal的Type为UINT8_N,就可以填充指定的长度,因此只需要将报文的第一个Signal修改成UINT8_N,并且将该Signal的ComSignalLength修改成报文DLC的长度,最后使用这个Signal的ID直接发送整个报文Buffer的指针
    如下所示

    void Com_SendMsg_AXX(void *pMessagBuff)
    {
    	Com_SendSignal(ComSignal_BXX_AXX, pMessagBuff);
    }
    

    在这里插入图片描述

    注意这里必须使用Message的第一个Signal,也就是Bitpostion为0的Signal,因为数据拷贝的时候是有偏移的
    在这里插入图片描述

    2. 手动实现

    实际上周期报文的发送,都是将Signal的值打包填充到报文的Buffer中,然后Com在该报文的发送Tick计数到之后执行发送动作,将PduInfo传递到CanIf模块,因此也可以手动实现拷贝数据到指定的Buffer中。
    在Com_PBCfg文件中,PDUID是直接与发送Buffer相关联的,如下图所示

    在这里插入图片描述

    总结

    第一种方式,需要在导入DBC后调整部分Signal的配置(可以是配置或者直接修改生成的代码)
    第二种方式,不需要修改任何配置,但是手动实现的接口只是将数据拷贝到Buffer中,对于事件型报文(非周期报文)实际上无法触发发送

    展开全文
  • Autosar COM层发送模式选择

    千次阅读 2019-01-16 11:35:04
    AUTOSAR COM层的发送模式信号发送属性和I-PDU发送模式信号发送属性I-PDU发送模式TMC &TMSTMC信号过滤(信号的TMC)TMS 信号发送属性和I-PDU发送模式 信号发送属性 信号的发送属性: Triggered属性:调用...

    信号发送属性和I-PDU发送模式

    信号发送属性

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

    I-PDU发送模式

    I-PDU的发送模式:
    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( )只更新信号及信号组的内容

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

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

    TMC &TMS

    在COM层用户可以为每一个I-PDU配置两种发送模式,ComTxModeTrue和ComTxModeFalse,当TMS为True时,对应I-PDU以用户配置的ComTxModeTrue的发送模式发送,当TMS为False时,对应I-PDU以用户配置的ComTxModeFalse的发送模式发送。

    TMC

    发送端的信号的TMC(发送模式条件)的计算与接收端的信号过滤机制相同,但是,在发送端信号过滤并不会丢弃任何的信号,而只是用于计算信号TMC的值。

    信号过滤(信号的TMC)

    Com提供了如下八种信号过滤机制:

    • ALWAYS
      总是通过,若一个信号的过滤算法配置为ALWAYS,那么这个信号的TMC永远为True;

    • NEVER
      总是不通过,若一个信号的过滤算法配置为NEVER,那么这个信号的TMC永远为False;

    • MASKED_NEW_EQUALS_X
      若一个信号的过滤算法配置为MASKED_NEW_EQUALS_X时,只有当新值与掩码按位与之后等于设定的某一值时,这个信号的TMC才等于True;

    • MASKED_NEW_DIFFERS_X
      若一个信号的过滤算法配置为MASKED_NEW_DIFFERS_X时,只有当新值与掩码按位与之后不等于设定的某一值时,这个信号的TMC才为True;

    • MASKED_NEW_DIFFERS_MASKED_OLD
      若一个信号的过滤算法配置为MASKED_NEW_DIFFERS_MASKED_OLD时,只有当新值与掩码按位与之后的值不等于旧值与掩码按位与之后的值时,这个信号的TMC才为True;

    • NEW_IS_WITHIN
      若一个信号的过滤算法配置为NEW_IS_WITHIN时,只有当新值在某一设定的范围内时,这个信号的TMC才为True;

    • NEW_IS_OUTSIDE
      若一个信号过滤算法配置为NEW_IS_OUTSIDE时,只有当新值不在某一设定的范围内时,这个信号的TMC才为True;

    • ONE_EVERY_N
      若一个信号的过滤算法配置为ONE_EVERY_N时,该信号值每更新N次,这个信号的TMC值为True;

    TMS

    发送端的TMS(发送模式选择),一个I-PDU的TMS的值是根据其所有下属的信号的TMC结果决定的,若一个I-PDU下属的信号中至少有一个信号的TMC计算为True那么这个I-PDU的TMS(发送模式选择)为True,只有该I-PD下属的所有的信号的TMC都计算为False时,该I-PDU的TMS(发送模式选择)才为False。

    基于以上:
    1、用户可以为每个I-PDU配置两种发送模式,在程序运行过程中,某一I-PDU的发送模式是由TMS来决定的,若一个I-PDU的TMS根据上述的算法计算的出True,那么该I-PDU将以用户配置的True状态下的发送模式进行发送。
    2、当一个I-PDU下属的某一个信号的过滤算法配置为ALWAYS,那么这个I-PDU将一直以用户配置的TMS为True状态下发送模式进行发送

    tips:以上均为个人学习过程中,对相关资料的个人理解,如有不当之处,欢迎指出。

    展开全文
  • Autosar COM状态迁移

    2019-07-11 01:20:06
    COM状态迁移图: 此图为下面文字部分总结!如有错误请评论纠正我会修改。 以下内容引用百度:如有侵权请告知! 总线状态管理器网络模式管理机制 本小节以CanSM为例,阐述总线状态管理器中的网络模式管理机制。...

    COM状态迁移图:

    此图为下面文字部分总结!如有错误请评论纠正我会修改。

    以下内容引用百度:如有侵权请告知!

    总线状态管理器网络模式管理机制

    本小节以CanSM为例,阐述总线状态管理器中的网络模式管理机制。

    CanSM管理的网络模式总线状态如表 2.1所示。

    表 2.1 CAN总线网络模式的所有状态

    为了管理总线状态管理器中的网络模式,CanSM为每个CAN网络实现如图 2.2所示的网络模式状态机。

    图 2.2 CanSM的网络模式状态机

    这样,网络模式状态机的核心状态转移如表 2.2所示,其中变迁编号使用图 2.2中的编号。

    表 2.2 网络模式状态机的核心合法状态转移

     

    表 2.2使用的转移动作编号是表 2.3中的动作编号。

    表 2.3 CAN总线的网络模式状态机的动作表

    展开全文
  • AUTOSAR_COM

    2019-03-07 09:27:04
    此文档是AUTOSAR_COM部分的最新国际标准,纯英文的版本,通过正规途径购买的
  • AUTOSAR_EXP_ARAComAPI.pdf

    2019-11-03 05:18:14
    This especially holds true for the Communication Management API (ara::com) in the AUTOSAR Adaptive Platform. Therefore this document shall serve as an entry point not only for the developer of ...
  • AUTOSAR通信篇—COM模块

    千次阅读 2020-02-28 08:30:56
    AUTOSAR COMAUTOSAR通讯的重要组成部分,它是从OSEK COM标准的基础上发展而来的。它提出了一个不同速率的总线网络之间进行数据交换的方法,为汽车控制单元应用软件提供了统一的通信环境,为内部和外部通信定义了...
  • 在研究汽车开放式系统构架(AUTOSAR)通信模块标准的基础上,参照AUTOSAR 的软件构架,使用AUTOSAR 的方法论设计与 实现一个总线通信模块,该模块具有定义完整、接口清晰、功能完备、可靠性强的特点,能够满足未来汽车...
  • AUTOSAR_SWS_COM

    2017-09-08 11:57:36
    This specification is the AUTOSAR COM module Software Specification. It is based on the AUTOSAR COM SRS [7]. It specifies how the requirements of the AUTOSAR COM SRS shall be realized. That means ...
  • Appendix Transmission Process Reception Process User Cases
  • AUTOSAR_SWS_COM.pdf

    2019-10-23 16:34:40
    autosar 标准的 Communication stack 详细描述文档
  • Application 通过Com_ReceiveSignal 请求获取接收到的Signal Value, 需要注意的是一定要先收到RX Indication, 在去请求Com_ReceiveSignal 才能获取到接收到的Signal Value, CAN Read Process Reception of a...
  • AUTOSAR基础知识

    2018-10-08 08:32:50
    汽车电子Vector的介绍AUTOSAR基础知识的PPT,适合对AUTOSAR基础全面介绍。
  • AUTOSAR入门

    万次阅读 多人点赞 2019-01-09 22:52:15
    一、AUTOSAR是什么 AUTOSAR组织自己的介绍是 AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of vehicle manufacturers, suppliers, service providers and companies ...
  • 其实最开始学习的时候,没有太多想UpdateBit的位置,想着无非是COM中针对每个signal加一个buffer来保存?直到看到了下面的一句话。 (以下摘自TOPPERS 日本开放式系统的官网中提供的公开文档) ...
  • AUTOSAR COM 在整个COM STACK COMPOENT中起到承上启下的作用, 主要负责和APPLICATION, IF 交互发送和接收数据。具体内容在后文分析 其由Signal /Signal Group/PDU 等信息, 无论是LIN/CAN/FR 的应用报文最终...
  • 在上一篇中已经对AutoSAR中模式管理NvM做了详细的介绍,这篇主要介绍的是AutoSAR中整个通信的管理模块ComM。 全系内容可在《搞一下汽车电子》后台回复 “系列”,或进入菜单栏 “分享平台” --> “系列分享” ...
  • AUTOSAR模块简介

    千次阅读 2019-05-20 16:20:24
    AUTOSAR Basic Software Modules (BSW) Description Abbreviation Description Adc The ADC driver is responsible for controlling the analog-digital converter and for accessing the results of a conv...
  • AUTOSAR_Communication.7z

    2019-09-05 13:48:30
    包含CAN , XCP ,COM ,COMM, , FLEXRAY ,E2E等几十种协议在AUTOSAR中的介绍,General Specification of Transformers AUTOSAR CP Release 4.3.1
  • AUTOSAR 网络管理NM

    千次阅读 多人点赞 2019-03-13 13:45:09
    关于AUTOSAR的底层驱动、平台OS、平台应用、RTE、应用软件这些和...AUTOSAR COMAUTOSAR标准的一部分,它是从OSEK COM标准的基础上发展而来的。AUTOSAR COM提供了一种标准化的访问汽车通讯系统和ECU(Electronic C...
  • COM用于在发送时监控是否在规定时间内收到来自PduR的发送确认,以及是否在规定时间内收到相应的接收报文的功能。 基本配置参数: 1)以Signal为单位,设定两个监控时间,分别是【初次超时时间...
  • AP AUTOSAR简介

    2021-03-25 15:22:51
    本文图片来源 博世ETAS AP AUTOSAR ,如有侵权,请留言联系作者删除,谢谢。
  • AUTOSAR架构概述

    万次阅读 多人点赞 2018-08-12 13:33:07
    AUTOSAR整体思路概述 一、总体概述 AUTOSAR是Automotive Open System Architecture(汽车开放系统架构)的首字母缩写,是一家致力于制定汽车电子软件标准的联盟。AUTOSAR是由全球汽车制造商、部件供应商及其他电子...
  • AUTOSAR架构的通信系统研究

    千次阅读 2018-03-24 22:06:07
    文章介绍了AUTOSAR体系架构,对AUTOSAR COM规范基于信号的通信机制及其特有的传输模式切换系统进行了分析,旨在实现一种符合AUTOSAR COM规范的通信系统。 AUTOSAR体系架构 AUTOSAR即汽车开放系统构架(Automotive ...
  • CP AUTOSAR 通信

    2020-09-14 10:14:20
    现在汽车中,车内网络普遍采用CAN、LIN、FlexRay总线,CAN FD和车载以太网也将在未来得到更多应用。作为汽车电子软件的主要标准,AUTOSAR...以CAN通信栈为例,在CAN驱动之上有CAN IF、CAN TP、CAN SM、PDU Router、COM
  • AUTOSAR通信篇—CanTp和CanIf模块

    千次阅读 多人点赞 2020-07-28 18:51:52
    PduR模块将AUTOSAR COM和 DCM的I-PDU部署到不同的通信协议上。通过I-PDU标识符路由到不同的网络系统类型(例如CAN、LIN和FlexRay)。PduR还决定是否必须使用传输协议。最后,在没有速率转换的情况下,实现网关功能...
  • Update-bit:AUTOSAR COM模块支持的一种机制,Signal信号/Signal Group信号组的接收方可以识别发送方是否在发送之前更新了该Signal信号/Signal Group信号组中的数据。 目录 7.8 Update Bits 7.8.1 Sender Side...
  • 1.Autosar目标:https://blog.csdn.net/ChenGuiGan/article/details/80301943 2.Autosar数据类型:https://blog.csdn.net/ChenGuiGan/article/details/85051558 3.端口Port类型:...
  • COM初始化、反初始化 •通信模式 •信号无效机制 •I-PDU处理 •门限监控 •复杂类型数据-信号组 •支持长数据类型 •支持动态长度信号 •信号数据的大小端转换 •信号过滤 •信号网关 ...
  • ➢PDU Router主要为通讯接口模块(CANIF) 、传输协议模块(CAN TP、J1939TP)、诊断通讯管理模块(DOI、 J1939DCM)以及通讯模块(COM、LDCOM) 以及IPDUM、SEC0C等 模转提供基于1 -PDU的路由服务。 4.1 PduR功能 ➢PDUR...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,150
精华内容 460
关键字:

autosarcom