CanSM
概要
AUTOSAR BSW为每个通信总线指定一个特定于总线类型的状态管理器。该模块实现各总线的控制流程。如下图所示,CAN状态管理器(CanSM)是位于通信服务层,它与通信硬件抽象层和系统服务层交互。
ECU可以有不同的通信网络。每个网络都必须用一个惟一的网络句柄来标识。通信模块从网络请求通信模式。它通过配置确定句柄被分配给对应的网络。对于CAN,则使用CanSM模块。CanSM模块负责CAN网络的控制流抽象:它根据来自ComM模块的模式请求改变已配置CAN网络的通信模式。因此,CanSM模块使用了CanIf模块的API。CanIf模块负责已配置的CAN控制器和CAN收发器的控制流抽象(CanIf模块的数据流抽象与CanSM模块无关)。CAN控制器模式和CAN收发模式的任何更改都将由CanIf模块通知CanSM模块。根据这个通知和CAN网络状态机的状态(CanSM模块将为每个配置的CAN网络实现该状态机),CanSM模块将通知ComM和BswM。
模块配置
CanSMGeneral:
CanSMDevErrorDetect
打开或关闭开发错误检测和通知。
· true: 开启
· false: 关闭
CanSMGetBusOffDelayFunction
此参数配置<User_GetBusOffDelay>调出函数的名称,CanSM使用该函数获取额外的L1/L2延迟时间。此函数仅在启用CanSMEnableBusOffDelay的通道中调用。
CanSMGetBusOffDelayHeader
此参数配置包含<User_GetBusOffDelay> callout函数原型的头文件。
CanSMMainFunctionTimePeriod
函数CanSM_MainFunction的循环时间(以秒为单位)
CanSMPncSupport
启用或禁用对部分网络的支持。
CanSMSetBaudrateApi
Can_SetBaudrate API的支持是可选的。如果该参数设置为true,则将支持Can_SetBaudrate API。否则不支持该API。
CanSMTxOfflineActiveSupport
确定CanSM是否支持ECU无源特性。
CanSMVersionInfoApi
激活/停用版本信息API (CanSM_GetVersionInfo)。
CanSMConfiguration
CanSMModeRequestRepetitionMax
指定在没有相应的模式指示的情况下,从CanIf模块请求重复的最大次数,直到CanSM模块向Det报告开发错误并尝试返回无通信为止。
CanSMModeRequestRepetitionTime
指定在哪个时间段内,通过使用CanIf模块的API, CanSM模块应该重复模式更改请求。
CanSMManagerNetwork
CanSMBorCounterL1ToL2
这个阈值定义了Busoff发生数量,直到总线恢复从第1级(短恢复时间)切换到第2级(长恢复时间)。
CanSMBorTimeL1
此时间参数以秒为单位定义第1级总线恢复时间的持续时间(短恢复时间)。
CanSMBorTimeL2
此时间参数以秒为单位定义第2级(长恢复时间)的总线恢复时间持续时间。
CanSMBorTimeTxEnsured
此参数以秒为单位定义总线事件检查的持续时间。此检查将评估在恢复重新启用传输路径后恢复是否成功。如果在这段时间内发生了新的总线,CanSM将此总线评估为没有成功恢复的连续总线。由于只能够检测到母线,所以在传输PDUs时,时间必须足够长,以确保再次传输PDUs(例如,COM模块/ comtxmodetimefactor的最快循环传输PDU的时间段)。
CanSMBorTxConfirmationPolling
如果CanSM轮询CanIf_GetTxConfirmationState API,以决定恢复总线状态,而不是使用cansmbortimetxparameter进行此决策,则应配置此参数。
CanSMEnableBusOffDelay
这个参数定义了是否应该为这个网络调用<User_GetBusOffDelay>。
CanSMComMNetworkHandleRef
唯一的句柄来识别某个特定的CAN网络。对为ComM配置的网络句柄之一的引用。
CanSMTransceiverId
分配给已配置网络句柄的CAN收发器的ID。引用由CanIf模块管理的一个收发器。
CanSMController
CanSMControllerId
唯一的标识用以确定一个特定的可以控制器。引用由CanIf模块管理的一个CAN控制器。
CanSMDemEventParameterRefs
CANSM_E_BUS_OFF
参考已配置的DEM事件来报告此CAN网络的总线关闭错误。
CANSM_E_MODE_REQUEST_TIMEOUT
参考已配置的DEM事件来报告此CAN网络的总线关闭错误。
自动配置生成
ISOLAR软件可以通过导入DBC、ODX等文件,创建系统配置,进而通过系统配置生成部分底层软件配置。
以CAN模块为例,通过ConfGen工具,可以自动生成CAN节点、CANObject配置,其他配置一般以默认值填充。
Step1
DBC文件检查
删除属性: BA_ "GenSigStartValue" SG_ xxx SigName;
补充节点信息: BU_: VCU ABS …
补充每帧报文的接收发送节点: BO_ CanID MsGName: DLC ABS
SG_ SigName : 0|2@1+ (1,0) [0|3] "" VCU
Step2
导入DBC文件
Step3
生成配置
Step4
参考<模块配置>对生成的CAN模块配置进行修改、适配。
参考文档
[1] AUTOSAR_SRS_CANStateManager.pdf
[2] RTA-BSWReferenceGuide.pdf