本文档是配置基于CAN 传输Signal的配置过程。
基于CAN发送Signal:
基于CAN接收Signal:
1. 在Ecuc里配置COM stack使用的所有PDU集合;
1) 开启Ecuc/EcucPduCollection,如果下图Name前是红色,点击切换为绿色:
2) Ecuc/EcucPduCollection/Pdu下添加COM使用的PDU队列,添加方法如下:
3) 增加接收PDU:Pdu_CounterIn_256R,PduLength是一个PDU的长度,byte为单位。SysTPduToFrameMappingRef 还未填写。
4) 增加发送PDU:Pdu_CounterOut_272T,PduLength是一个PDU的长度,byte为单位。SysTPduToFrameMappingRef 还未填写。
2. 配置Com/ComGeneral下的参数;
3. 在Com/ComConfig下增加Configuration配置项
1) 增加ComConfig配置项:
2) 在Com/ComConfig/ComConfig/ComSignal下增加接收Signal:SGCounterIn_256R。ComBitPosition=0,在PDU中的位置是0;ComBitSize=8 占位是8 bit;ComHandleId = 0 ComSignal ID是0;ComNotification = Rte_COMCbk_SGCounterIn_256R, 接收方的Com_CbkRxAck 回调函数;ComSignalEndianness = LITTLE_ENDIAN,定义信号网络表示的端序;ComSignalType = UNIT8,signal的数据类型;ComSignalInitValue = 0,signal的初始值;ComTransferProperty = TRIGGERED, 定义对该信号的写入访问是否可以触发相应I-PDU的传输。如果I-PDU被触发,也取决于相应的I-PDU的传输模式; ComSystemTemplateSystemSignalRef 未定义。
3) 在Com/ComConfig/ComConfig/ComSignal下增加发送Signal:SGCounterIn_272T。ComBitPosition=0,在PDU中的位置是0;ComBitSize=8 占位是8 bit;ComHandleId = 0 ComSignal ID是0;ComSignalEndianness = LITTLE_ENDIAN,定义信号网络表示的端序;ComSignalType = UNIT8,signal的数据类型;ComSignalInitValue = 0,signal的初始值;ComTransferProperty = TRIGGERED, 定义对该信号的写入访问是否可以触发相应I-PDU的传输。如果I-PDU被触发,也取决于相应的I-PDU的传输模式; ComSystemTemplateSystemSignalRef 未定义。
4) 开启SGCounterOut_272T 的ComFilter:
5) 在Com/ComConfig/ComConfig/ComIPdu下增加IPDU:PDPdu_CounterIn_256R。ComIPduDirection=RECEIVE 接收IPDU;ComIPduHandled = 0 IPDU ID是0;ComIPduSignalProcessing = IMMEDIATE,处理模式;ComIPduType = NORMAL, IPDU不需要分片;ComPduIdRef,引用“全局”Pdu结构,以允许COM堆栈中句柄ID的协调。
6) 把Signal SGCounterIn_256R 添加到IPDU PDPdu_CounterIn_256R里:
7) 在Com/ComConfig/ComConfig/ComIPdu下增加IPDU:PDPdu_CounterOut_272T。ComIPduDirection=SEND 发送IPDU;ComIPduHandled = 0 IPDU ID是0;ComIPduSignalProcessing = IMMEDIATE,处理模式;ComIPduType = NORMAL, IPDU不需要分片;ComPduIdRef,引用“全局”Pdu结构,以允许COM堆栈中句柄ID的协调。
8) 配置传输模式:
9)把Signal SGCounterOut_272T 添加到 IPDU PDPdu_CounterOut_272T 里:
10) 在Com/ComConfig/ComConfig/ComIPduGroup 里增加IPDU group:
11) 把IPDU PDPdu_CounterIn_256R 和PDPdu_CounterOut_272T 分别添加到IPDU Group RXCanNetwork和TGCanNetwork里
4. 配置PduR/PduRGeneral里的参数;
5. 配置PduR/PduBswModules,本实例中,Com是上层模块,CanIf是下层模块;
6. 配置PduR/PduRoutingTables:
1) 添加一个Tables:PduRRoutingTables
2) 添加一个PduRRoutingTable
3) 增加一条Routing path:Pdu_CounterIn_256R:
4) 增加一条Routing path:Pdu_CounterIn_272T:
7. 配置CanIf/CanIfPulicCfg里的参数;
8. 配置CanIf/CanIfPrivateCfg里的参数;
9. 配置CanIf/CanIfUpperLayerConfig里的参数,本示例中CanIf的上层模块只有PDUR:
10. 配置CanIf/CanIfDispatchCfg的参数,由CanIf的上层模块提供的回调函数:
11. 配置CanIf/CanIfCtrlDrvCfg的参数;
12. 配置CanIf/CanIfInitCfg的参数:
1) 增加一个CanIfInitCfg配置项 CanIfInitCfg:
2) 在CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitHohCfg下增加一项 CanIfInitHohCfg:
3) 在CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitHohCfg/CanIfInitHohCfg/CanIfHrhCfg增加一项HOH_1_EcuTestNode。CanIfHrhIdSymRef 向未填写,待CAN配置后填写。
4) 在CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitHohCfg/CanIfInitHohCfg/CanIfHthCfg增加一项HOH_0_EcuTestNode。CanIfHthIdSymRef 向未填写,待CAN配置后填写。
5) 在CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitCfg/CanIfRxPduCfg下增加接收PDU配置Pdu_CounterIn_256R;
6) 在CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitCfg/CanIfTxPduCfg下增加发送PDU配置Pdu_CounterOut_272T。 CanIfTxPduBufferRef 项还未填写,待CanIfBufferCfg配置后填写.
7) 在 CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitCfg/CanIfBufferCfg添加HOH_0_EcuTestNode:
8) HOH_0_EcuTestNode加入到Pdu_CounterOut_272T的CanIfTxPduBufferRef 里:
13. 配置CanIf/CanIfCtrlDrvCfg的参数
1) 增加一项:CanIfCtrlDrvCfg;
2) 在CanIfCtrlCfg添加一项:EcuTestNode,配置如下,有两项未填写,CanIfCtrlCanCtrlRef 需要Can配置后再填写:
14. 配置CAN的参数;
1) 配置Can/CanGeneral的参数;
2) 在Can/CanConfigSet/CanController下增加一项:EcuTestNode:
3) 为新建的EcuTestNode增加CanControllerBaudrateConfig配置:CanControllerBaudrateConfig.
4) 在Can/CanConfigSet/CanHardwareObject下增加:HOH_0_EcuTestNode:
5) 在Can/CanConfigSet/CanHardwareObject下增加:HOH_1_EcuTestNode:
15. 补填CanIf的参数
1) CanIf/CanIfInitCfg/CanIfCtrlDrvCfg/CanIfCtrlDrvCfg/EcuTestNode/CanIfCtrlCanCtrlRef:
2) CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitHohCfg/CanIfInitHohCfg/CanIfHrhCfg/HOH_1_EcuTestNode/CanIfHrhRangeCfg:
3) CanIf/CanIfInitCfg/CanIfInitCfg/CanIfInitHohCfg/CanIfInitHohCfg/CanIfHthCfg/HOH_0_EcuTestNode/CanIfHthRangeCfg: