CAN/CANFD
CCP/UDS
Bootloader/OTA
ECU/VCU/FCU
Simulink/ECUCoder
Ethernet
Hardware
Download
上一篇
下一篇
ECUCoder常用模块参考手册
ECUCoder软件MATLAB版本对照表
一.RapidECUSetting模块
二.BasicInput基本输入模块库
三.BasicOutput基本输出模块库
四.CANCommucation模块库
-4.1.CAN报文接收模块
-4.2.CAN报文发送模块
-4.3.CAN5WakeUp模块
-4.4.CANPackMessage模块
五.CANFDCommucation模块库
-5.1.Max08Bytes子库模块
-5.2.CANFDUnPackMessage模块
六.LINCommucation模块库
七.MemoryManagement模块库
八.PowerManagement模块库
九.MCUManagement模块库
-9.1.Initialization、PIT1模块
-9.2.RamStack与温度监控模块
-9.3.WDGEnable、WDGFeed模块
-9.4.SystemTime系统时间模块
十.Calibration标定模块库
十一.EasyTask任务调度模块库
十二.DBCTool模块库
十三.UDS诊断模块库
十四.IMU传感器模块库
十五.FrequentlyUsedModels
回到顶部
ECUCoder常用模块参考手册
一.RapidECUSetting模块
二.BasicInput基本输入模块库
三.BasicOutput基本输出模块库
四.CANCommucation模块库
-4.1.CAN报文接收模块
-4.2.CAN报文发送模块
-4.3.CAN5WakeUp模块
-4.4.CANPackMessage模块
五.CANFDCommucation模块库
-5.1.Max08Bytes子库模块
-5.2.CANFDUnPackMessage模块
六.LINCommucation模块库
七.MemoryManagement模块库
八.PowerManagement模块库
九.MCUManagement模块库
-9.1.Initialization、PIT1模块
-9.2.RamStack与温度监控模块
-9.3.WDGEnable、WDGFeed模块
-9.4.SystemTime系统时间模块
十.Calibration标定模块库
十一.EasyTask任务调度模块库
十二.DBCTool模块库
十三.UDS诊断模块库
十四.IMU传感器模块库
十五.FrequentlyUsedModels
回到顶部
# ECUCoder常用模块参考手册 本文以RapidECU-U34控制器为例讲解了ECUCoder常用模块的功能与用法,对于其它型号的控制器,模块的功能与用法是相似的。 ## ECUCoder软件MATLAB版本对照表
![](images/2023-09-05-15-43-11-image.png) ## 一.RapidECUSetting模块
RapidECUSetting模块的功能主要有三个: 1. 新建模型时将RapidECUSetting模块拖入模型顶层可以完成模型参数的全自动设置,以避免用户手动设置模型参数的重复工作。 2. 双击RapidECUSetting模块展开模块界面可以获取一些控制器与模型的基本信息,比如点击Core-CPU可以获取当前控制器主控芯片的基础参数(型号、功能安全等级、存储器容量等)与处理器主频信息。 3. 双击RapidECUSetting模块可以设置CAN总线与LIN总线的通信参数,比如点击Commucation-CAN0可以设置CAN0通道的波特率、CAN FD使能、CAN FD数据域波特率、CAN FD有效负载等参数,如下图所示。 RapidECUSetting模块的用法:新建模型时将RapidECUSetting模块拖入模型顶层。双击RapidECUSetting模块可以查看或者修改控制器的参数。 ![](images/2023-07-30-16-43-24-image.png) ## 二.BasicInput基本输入模块库
BasicInput基本输入模块库中的模块用于获取控制器的基本输入信息。 1. **AnalogInput模拟量输入模块** AnalogInput模拟量输入模块的功能:用于获取控制器模拟量输入管脚的值,模块有1个输出端口,端口的数据类型为uint16,数据单位为mV。对于0~5V输入范围的管脚,当外部输入大于5V时,端口输出的值为5000mV。 模块的用法:将AnalogInput模块拖入到模型中(通常是周期性任务中),并选择相应的管脚,即可获取相应管脚的输入值。 注意事项: ①在模拟量输入的值进入模型算法之前,通常需要滤波处理(算术平均值滤波或者抗扰平均值滤波),推荐使用ECUCoder自带的滤波模块(位于FrequentlyUsedModels 子库中)。 ②对于电阻量输入的通道,通常需要将采集到的电压值转换为电阻值,推荐使用ECUCoder自带的VolToRes模块(位于FrequentlyUsedModels 子库中)。VolToRes 模块内部已经包含滤波模块,因此用户不再需要额外的信号滤波处理。 对于控制器模拟量输入管脚,命名方式见下图: ![](images/2023-07-30-16-59-34-image.png) 2. **FrequencyRead、PulseWidthRead频率量输入模块** FrequencyRead频率量输入频率读取模块的功能:用于获取控制器频率量输入管脚频率的值,模块有1个输出端口,端口的数据类型为uint32,数据单位为Hz。频率量输入管脚的有效频率范围通常为10Hz~10kHz,当外部输入信号频率小于10Hz或者大于10kHz时,端口输出的值为0。 PulseWidthRead频率量输入脉宽读取模块功能:用于获取控制器频率量输入管脚脉宽的值,模块有1个输出端口,端口的数据类型为uint32,数据单位为us。频率量输入管脚的有效频率范围通常为12us~120000us,当外部输入信号脉宽小于12us或者大于120000us时,端口输出的值为0。 模块的用法:将FrequencyRead或者PulseWidthRead模块拖入到模型中(通常是周期性任务中),并选择相应的管脚,即可获取相应管脚的输入值。 注意事项: ①频率量输入和开关量输入复用控制器管脚,在一个模型中,一个控制器管脚只能选择一种功能使用,不可将同一管脚同时用作频率量输入和开关量输入。 ②FrequencyRead和PulseWidthRead模块复用控制器管脚,在一个模型中,一个控制器管脚只能选择一种功能使用,不可将同一管脚同时用作FrequencyRead和PulseWidthRead。 ③在频率量输入的值进入模型算法之前,通常需要滤波处理(先限速滤波后抗扰平均值滤波),推荐使用ECUCoder自带的滤波模块(位于FrequentlyUsedModels 子库中)。 ④对于频率较低的频率信号,在数据输入时容易出现信号抖动的情况。比如,在10ms 周期的信号采集任务中采集频率小于100Hz 的频率信号,因为有些周期内没有采集到有效频率信号,信号会突然掉到零。因此,在建模过程中,需要对这样的信号进行消抖处理。推荐使用ECUCoder 自带的较低频率信号消抖处理模型LowFrequencyProcessing(位于FrequentlyUsedModels 子库中)。 对于控制器频率量输入管脚,命名方式见下图: ![](images/2023-07-30-19-19-50-image.png) 3. **SENT1FastChnMsg~SENT4FastChnMsg SENT信号输入模块** SENT1FastChnMsg~SENT4FastChnMsg SENT信号输入模块的功能:获取4 路SENT 信号输入端口连接的SENT接口传感器的值。对于每个模块,输出端口1(OK):未收到信号时为0;收到正确信号时为1;收到错误信号时为8。输出端口2(StatusCommunication):通信状态位,可以接收长度4bit 的数据。输出端口3-8(Nibble1-Nibble8):SENT 数据,每个端口都可以接收长度4bit 的数据。通信状态位与SENT数据所代表的物理意义由传感器厂家定义,使用时需要查询传感器厂家的相关数据手册。 模块的用法:将SENTxFastChnMsg模块拖入到模型中(通常是周期性任务中),即可获取SENTx相应管脚连接的SENT接口传感器的值。 注意事项:SENT输入和开关量输入复用控制器管脚,在一个模型中,一个控制器管脚只能选择一种功能使用,不可将同一管脚同时用作SENT输入和开关量输入。 4. **SwitchInput开关量输入模块** SwitchInput模拟量输入模块的功能:用于获取控制器开关量输入管脚的值,模块有1个输出端口,端口的数据类型为boolean,无单位。对于高有效开关量输入的管脚,管脚悬空时模块输出0,管脚输入大于4V时模块输出1,管脚输入小于1V时模块输出0。对于低有效开关量输入的管脚,管脚悬空时模块输出1,管脚输入大于4V时模块输出1,管脚输入小于1V时模块输出0。 模块的用法:将SwitchInput模块拖入到模型中(通常是周期性任务中),并选择相应的管脚,即可获取相应管脚的输入值。 注意事项: ①开关量输入和其它输入(比如频率量输入或者SENT输入)复用控制器管脚,在一个模型中,一个控制器管脚只能选择一种功能使用,不可将同一管脚同时用作开关量输入和其它输入。 ②对于开关量信号,一般不需要滤波;当外部干扰较为严重时,可以采用抗扰平均值滤波,推荐使用ECUCoder自带的滤波模块(位于FrequentlyUsedModels 子库中)。 对于控制器开关量输入管脚,命名方式见下图: ![](images/2023-07-30-20-46-55-image.png) ## 三.BasicOutput基本输出模块库
BasicOutput基本输出模块库中的模块用于控制控制器的基本输出状态。 1. **HBridge H桥驱动模块** HBridge H桥驱动模块的功能:用于控制H桥驱动的输出状态,模块有4个输入端口,输入端口1:H 桥使能,数据类型为boolean,输入0关闭H桥驱动,输入1使能H桥驱动。输入端口2:PWM 周期,数据类型为uint32,单位us。输入端口3:占空比,数据类型为uint32,单位us。输入端口4:电机转向,数据类型为boolean,输入0正转,输入1反转。 模块的用法:将HBridge模块拖入到模型中(通常是周期性任务中),按需求为输入口赋值,即可控制相应H桥驱动的输出值。 注意事项: ①由于部分高端功率驱动与H 桥驱动复用控制器管脚,在一个模型中,一个控制器管脚只能选择一种功能使用,不可将同一管脚同时用作H 桥驱动与高端功率驱动。 ②H桥驱动模块的PWM周期通常使用常数,比如500us或者100us,具体数值请参考电机/电磁阀厂家的数据手册。 2. **PowerDriverSwitch(HS)、PowerDriverSwitch(LS)功率驱动开关模块** PowerDriverSwitch(HS)高端功率驱动开关模块的功能:用于控制高端功率驱动开关的输出状态,模块有1个输入端口,输入0断开高端功率驱动开关,此时管脚处于高阻状态;输入1闭合高端功率驱动开关,此时管脚处于高电平(等于UBR电压)状态。 PowerDriverSwitch(LS)低端功率驱动开关模块的功能:用于控制低端功率驱动开关的输出状态,模块有1个输入端口,输入0断开低端功率驱动开关,此时管脚处于高阻状态;输入1闭合低端功率驱动开关,此时管脚处于低电平(等于电源负极电压)状态。 模块的用法:将PowerDriverSwitch 模块拖入到模型中(通常是周期性任务中),并选择需要的管脚,按需求为输入口赋值,即可控制相应管脚的输出值。 注意事项:部分管脚为功率驱动开关与功率驱动PWM 复用控制器管脚,在一个模型中,一个控制器管脚只能选择一种功能使用,不可将同一管脚同时用作功率驱动开关与功率驱动PWM。也不可将同一管脚同时用作高端功率驱动开关与低端功率驱动开关。 对于功率驱动开关管脚,命名方式见下图: ![](images/2023-07-31-14-09-33-image.png) 3. **HighSideSwitchStatus高端功率驱动开关状态模块** HighSideSwitchStatus高端功率驱动开关状态模块的功能:用于获取高端功率驱动开关状态,模块有1个输出端口,数据类型为boolean,正常状态下高端功率驱动开关的输出为0(即高端功率驱动开关模块的输入给0) 时状态为0,输出为1(即高端功率驱动开关模块的输入给1) 时状态为1;开路或者短路到电源时状态始终为1;过热或者短路到地时状态始终为0。 模块的用法:将HighSideSwitchStatus模块拖入到模型中(通常是周期性任务中),并选择相应的管脚,即可获取相应管脚的状态值。 注意事项:功率驱动模块的状态值与输出值之间存在延时误差,当状态值不符合预期时,至少需要连续十个采样周期为相同采样值才能判定出现故障以及故障的种类。 4. **LowSideSwitchStatus低端功率驱动开关状态模块** LowSideSwitchStatus低端功率驱动开关状态模块的功能:用于获取低端功率驱动开关状态,模块有1个输出端口,数据类型为boolean,正常状态下低端功率驱动开关的输出为0(即低端功率驱动开关模块的输入给0) 时状态为1,输出为1(即高端功率驱动开关模块的输入给1) 时状态为0;开路或者短路到地时状态始终为0;短路到电源时状态始终为1。 模块的用法:将LowSideSwitchStatus模块拖入到模型中(通常是周期性任务中),并选择相应的管脚,即可获取相应管脚的状态值。 注意事项:功率驱动模块的状态值与输出值之间存在延时误差,当状态值不符合预期时,至少需要连续十个采样周期为相同采样值才能判定出现故障以及故障的种类。 5. **PowerDriverPWM功率驱动PWM模块** PowerDriverPWM功率驱动PWM模块的功能:用于控制功率驱动PWM的输出状态,模块有2个输入端口,输入端口1:PWM 周期,数据类型为uint32,单位us。输入端口2:占空比,数据类型为uint32,单位us。 模块的用法:将PowerDriverPWM模块拖入到模型中(通常是周期性任务中),并选择需要的管脚,按需求为输入口赋值,即可控制相应功率驱动PWM的输出值。 注意事项: ①由于部分功率驱动PWM与高端/低端功率驱动复用控制器管脚,在一个模型中,一个控制器管脚只能选择一种功能使用,不可将同一管脚同时用作功率驱动PWM与高端/低端功率驱动。 ②功率驱动PWM模块的PWM周期通常使用常数,比如1000us或者5000us,具体数值请参考执行器厂家的数据手册。 ③功率驱动PWM模块的PWM输出是以低端或者高端开关的方式输出的,管脚需要外接负载才能输出PWM波形。PWM占空比是有极性的,请用示波器观察不同占空比时的PWM波形以确认PWM波形是否符合项目需求。 对于功率驱动PWM管脚,命名方式见下图: ![](images/2023-07-31-16-14-10-image.png) ## 四.CANCommucation CAN通信模块库
CANCommucation CAN通信模块库中的模块用于收发CAN报文。控制器CAN模块默认设置波特率为500kbps,传统CAN网络,默认不启用CAN FD功能,如控制器用于传统CAN总线网络且波特率为500kbps,则无需再设置波特率。如波特率为其它数值,则需要修改CAN Baudrate 的值(在RapidECUSetting模块中可设置各个CAN通道的波特率),可供设定的范围为:1000、500、250、125,对应1Mbps、500kbps、250kbps、125Kbps,如果填写其它数值,控制器则自动设定为500。 ### 1.CAN0to2Receive、CAN3to5Receive报文接收模块
CAN0to2Receive报文接收模块的功能:CAN0to2Receive报文接收模块用于定时接收指定ID的CAN报文,适用于CAN0~CAN2。 CAN3to5Receive报文接收模块的功能:CAN3to5Receive报文接收模块用于定时接收指定ID的CAN报文,适用于CAN3~CAN5。 CAN接收模块的参数见下表: | 选项 | 选项说明 | 可选值 | | ---------------- | ------------ | ----------------------------------- | | CAN Module | CAN模块,即CAN通道 | 0、1、2、4、5 | | CAN Buffer | CAN缓存 | 0~63(与相应通道的CAN发送模块共用缓存,值随通道不同而有所不同) | | CAN Message ID | CAN 报文ID | ID(十六进制) | | CAN Message Type | CAN报文类型 | 标准帧、扩展帧 | | CAN Data Length | 数据长度 | 0~8 | | Sample Time | 采样时间 | 自定义,通常使用-1 | CAN接收模块有四个输出端口,端口说明见下表: | 端口名称 | 端口说明 | 数据类型 | | ------- | ---------------------- | ------------------- | | f() | 触发端口 | 专门用于触发子系统模块 | | CAN_OK | 是否接收到CAN 报文,接收到为1,否则为0 | uint8 | | ID | CAN报文ID | uint32 | | CAN Msg | CAN报文数据 | uint8(数据的维数取决于数据长度) | 模块的用法:将CAN接收模块拖入到模型中(通常是周期性任务中),按需求为模块设置所有参数,即可定时接收指定ID的CAN报文。通常情况下,CAN接收模块需要触发一个子系统模块,如下图所示: ![](images/2023-07-31-17-42-51-image.png) 注意事项:CAN接收模块与CAN发送模块共用CAN缓存,建议用户为每一帧CAN报文指定一个CAN缓存并用文件(比如Excel文件)记录管理,以防止出现混乱。对于CAN0-CAN2,每个通道最多可以收发64帧报文。对于CAN3-CAN5,每个通道最多可以收发32帧报文。 ### 2.CAN0to2Transmit、CAN3to5Transmit报文发送模块
CAN0to2Transmit报文发送模块的功能:CAN0to2Transmit报文发送模块用于发送指定ID的CAN报文,适用于CAN0~CAN2。 CAN3to5Transmit报文发送模块的功能:CAN3to5Transmit报文发送模块用于发送指定ID的CAN报文,适用于CAN3~CAN5。 CAN发送模块的参数见下表: | 选项 | 选项说明 | 可选值 | | ---------------- | ------------ | ----------------------------------- | | CAN Module | CAN模块,即CAN通道 | 0、1、2、4、5 | | CAN Buffer | CAN缓存 | 0~63(与相应通道的CAN接收模块共用缓存,值随通道不同而有所不同) | | CAN Message ID | CAN 报文ID | ID(十六进制) | | CAN Message Type | CAN报文类型 | 标准帧、扩展帧 | | CAN Data Length | 数据长度 | 0~8 | | Sample Time | 采样时间 | 自定义,通常使用-1 | 模块的用法:将CAN发送模块拖入到模型中(通常是周期性任务中),按需求为模块设置所有参数,即可发送指定ID的CAN报文,如下图所示: ![](images/2023-07-31-18-56-31-image.png) 注意事项:CAN发送模块与CAN接收模块共用CAN缓存,建议用户为每一帧CAN报文指定一个CAN缓存并用文件(比如Excel文件)记录管理,以防止出现混乱。对于CAN0-CAN2,每个通道最多可以收发64帧报文。对于CAN3-CAN5,每个通道最多可以收发32帧报文。 ### 3.CAN5WakeUp CAN5唤醒模块
CAN5WakeUp CAN5唤醒模块的功能:控制CAN5总线收发器,模块有1个输入端口,数据类型为boolean,输入1(持续200ms以上)唤醒CAN5总线收发器,200ms内CAN5总线收发器进入激活状态。先输入1持续200ms以上再输入0可以关闭CAN5总线收发器,此时CAN5总线收发器进入休眠状态。 模块的用法:将CAN5WakeUp模块拖入到模型中(通常是周期性任务中),按需求为输入端口赋值,即可控制CAN5总线收发器。 注意事项: ①对于某些型号的控制器(比如U34控制器),CAN5为总线唤醒CAN,为了使用CAN5收发CAN报文,必须先唤醒CAN5总线收发器(即CAN5WakeUp模块输入1),唤醒CAN5的时间最长需要200ms,因此输入1的持续时间需要200ms以上。当不再需要使用CAN5收发CAN报文时,CAN5WakeUp模块输入0持续200ms以上即可关闭CAN5总线收发器。 ②对于不需要使用CAN5的应用场合,不需要使用CAN5WakeUp模块。 ### 4.CANPackMessage、CANUnPackMessage模块
CANPackMessage模块的功能:与Simulink自带的CANPack 工具模块配合使用的模块,用于自动解析DBC 文件并将物理信号打包成CAN报文后发送CAN报文。 CANPackMessage模块的用法:CANPackMessage 模块与CANPack 工具模块配合使用方法如下图所示,CANPackMessage 模块的输入端口与CANPack 工具模块的输出端口直连,CANPackMessage 模块的输出端口与CANTransmit模块的输入端口直连,CANPackMessage 模块不需要额外设置,连线即可使用。 ![](images/2023-08-20-18-24-26-image.png) CANUnPackMessage模块的功能:与Simulink自带的CANUnPack 工具模块配合使用的模块,用于接收CAN报文并自动解析DBC文件将CAN报文解包为物理信号。 CANUnPackMessage模块的用法:CANUnpackMessage 模块与CANUnpack 工具模块配合使用方法如下图所示,CANUnPackMessage模块需要设置ID 的类型(标准帧或者扩展帧),然后连线即可使用。 ![](images/2023-07-31-19-43-13-image.png) ![](images/2023-08-20-18-35-02-image.png) ## 五.CANFDCommucation CANFD通信模块库
CANFDCommucation CANFD通信模块库中的模块用于收发CAN FD报文。模块库包含Max08Bytes、Max16Bytes、Max32Bytes、Max64Bytes四个子库,功能是类似的。 使用CAN FD功能,首先需要设置CAN FD通道。在RapidECUSetting 模块模块中,将 CAN FD Enable 设置为1,开启CAN FD 功能,在发送与接收CAN FD 消息帧时,如果数据域与仲裁域速率相同,均采用CAN Baudrate设定的波特率。在发送与接收CANFD 加速帧时,需要设置CAN Data Baudrate,即数据域速率,Data Baudrate可供设定的范围为:4000、2000、1000、500、250、125,对应4Mbps、2Mbps、1Mbps、500kbps、250kbps、125kbps。如果填写其他数值,控制器则自动设定为500。FD Payload 为数据场最大负载,请按照CAN FD 通信协议中报文数据场最长的报文设定,可供设定的范围为8,16,32,64,如果填写其他数值,控制器则自动设定为8。 双击RapidECUSetting 模块,从左边的树中选择Communication - CAN0选项,出现的界面如下图所示,开启CAN FD 功能,仲裁域波特率为500kbps,数据域波特率为2Mbps,CAN FD Payload 为16 即一帧CANFD 报文允许的数据场最大长度为16 个字节。 ![](images/2023-07-31-20-27-25-image.png) ### 1.Max08Bytes子库模块
当某个CAN FD通道的CAN FD Payload参数设置为8时,收发报文需要Max08Bytes子库模块。当某个CAN FD通道的CAN FD Payload参数设置为16时,收发报文需要Max16Bytes子库模块,设置为32与64同理。 1. **M8CAN0to2Receive、M8CAN3to5Receive报文接收模块** M8CAN0to2Receive报文接收模块的功能:M8CAN0to2Receive报文接收模块用于定时接收指定ID的CAN FD报文,适用于CAN0~CAN2。 M8CAN3to5Receive报文接收模块的功能:M8CAN3to5Receive报文接收模块用于定时接收指定ID的CAN FD报文,适用于CAN3~CAN5。 CAN FD接收模块的参数见下表: | 选项 | 选项说明 | 可选值 | | ---------------------- | ---------------- | ----------------------------------- | | CAN Module | CAN模块,即CAN通道 | 0、1、2、4、5 | | CAN Buffer | CAN缓存 | 0~63(与相应通道的CAN发送模块共用缓存,值随通道不同而有所不同) | | CAN Message ID | CAN 报文ID | ID(十六进制) | | CAN Message Type | CAN报文类型 | 标准帧、扩展帧 | | CAN Data Length | 数据长度 | 0~8 | | Used with CANFD UnPack | 是否使用CANFD UnPack | 请按照实际需求勾选 | | Sample Time | 采样时间 | 自定义,通常使用-1 | CAN FD接收模块有五个输出端口,端口说明见下表: | 端口名称 | 端口说明 | 数据类型 | | ------- | ---------------------- | ------------------- | | f() | 触发端口 | 专门用于触发子系统模块 | | CAN_OK | 是否接收到CAN 报文,接收到为1,否则为0 | uint8 | | ID | CAN报文ID | uint32 | | CAN Msg | CAN报文数据 | uint8(数据的维数取决于数据长度) | | DLC | CAN报文数据长度 | uint8 | 模块的用法:将CAN FD接收模块拖入到模型中(通常是周期性任务中),按需求为模块设置所有参数,即可定时接收指定ID的CAN FD报文。通常情况下,CAN FD接收模块需要触发一个子系统模块,如下图所示(图中为M16CAN0to2Receive模块): ![](images/2023-07-31-20-59-41-image.png) 注意事项:CAN FD接收模块与CAN FD发送模块共用CAN缓存,建议用户为每一帧CAN报文指定一个CAN缓存并用文件(比如Excel文件)记录管理,以防止出现混乱。对于CAN0-CAN2,每个通道最多可以收发64帧报文。对于CAN3-CAN5,每个通道最多可以收发32帧报文。 2. **M8CAN0to2Transmit、M8CAN3to5Transmit报文发送模块** M8CAN0to2Transmit报文发送模块的功能:M8CAN0to2Transmit报文发送模块用于发送指定ID的CAN FD报文,适用于CAN0~CAN2。 M8CAN3to5Transmit报文发送模块的功能:M8CAN3to5Transmit报文发送模块用于发送指定ID的CAN FD报文,适用于CAN3~CAN5。 CAN FD发送模块的参数见下表: | 选项 | 选项说明 | 可选值 | | -------------------- | -------------- | ------------------------------------- | | CAN Module | CAN模块,即CAN通道 | 0、1、2、4、5 | | CAN Buffer | CAN缓存 | 0~63(与相应通道的CAN接收模块共用缓存,值随通道不同而有所不同) | | CAN Message ID | CAN 报文ID | ID(十六进制) | | CAN Message Type | CAN报文类型 | 标准帧、扩展帧 | | CAN Type | 报文总线类型 | Classic CAN、CAN FD、CAN FD Accelerated | | CAN Data Length | 数据长度 | 0~8 | | Used with CANFD Pack | 是否使用CANFD Pack | 请按照实际需求勾选 | | Sample Time | 采样时间 | 自定义,通常使用-1 | 模块的用法:将CAN FD发送模块拖入到模型中(通常是周期性任务中),按需求为模块设置所有参数,即可发送指定ID的CAN FD报文,如下图所示(图中为M16CAN0to2Transmit模块): ![](images/2023-07-31-21-13-11-image.png) 注意事项:CAN FD发送模块与CAN FD接收模块共用CAN缓存,建议用户为每一帧CAN FD报文指定一个CAN缓存并用文件(比如Excel文件)记录管理,以防止出现混乱。对于CAN0-CAN2,每个通道最多可以收发64帧报文。对于CAN3-CAN5,每个通道最多可以收发32帧报文。 Max16Bytes、Max32Bytes、Max64Bytes三个子库模块的用法与Max08Bytes子库类似。 ### 2.CANFDUnPackMessage 模块
CANFDUnPackMessage 模块的功能:与Simulink自带的CAN FD UnPack 工具模块配合使用的模块,用于接收CAN FD报文并自动解析DBC文件将CAN FD报文解包为物理信号。 CANFDUnPackMessage 模块的用法:在CANReceive 模块中勾选Used with CANFD UnPack选项,在CANUnPackMessage 模块中设置ID 的类型(标准帧或者扩展帧),然后连线即可使用,如下图所示: ![](images/2023-07-31-21-21-53-image.png) ![](images/2023-08-20-18-42-00-image.png) CAN FD Pack 工具模块配合CANTransmit 模块使用方法如下图所示,在CANTransmit 模块中勾选Used with CANFD Pack,在两个模块之间添加一个Bus Selector 模块,选择data,连线即可使用。 ![](images/2023-08-20-18-39-32-image.png) 注意事项: ①MATLAB 2019a 及以上的版本才完整支持CAN FD Pack/CAN FD Unpack 工具对DBC 文件解析与生成代码的工作。 ②CANTransmit 模块与CAN FD Pack 工具模块配合使用时需要勾选Used with CANFD Pack 选项。CANReceive 模块与CAN FD Unpack 工具模块配合使用时需要勾选Used with CANFD Unpack选项,否则模型会报错,无法正常仿真与生成代码。 ## 六.LINCommucation LIN通信模块库
LINCommucation LIN通信模块库中的模块用于收发LIN报文。控制器LIN模块默认设置波特率为19200bps,如控制器用于波特率为19200bps的LIN总线,则无需再设置波特率。如波特率为其它数值,则需要修改LIN Baudrate 的值(在RapidECUSetting模块中可设置各个LIN通道的波特率),可供设定的范围为:19200、9600、2400,对应19200bps、9600bps、2400bps,如果填写其它数值,控制器则自动设定为9600bps。 1. **LIN0Receive报文接收模块** LIN0Receive报文接收模块的功能:LIN0Receive报文接收模块用于定时接收指定ID的LIN报文。 LIN接收模块的参数见下表: | 选项 | 选项说明 | 可选值 | | --------------------------- | -------- | ---------------------------------- | | LIN ID | LIN 报文ID | 0x00-0x3F,其中0x3C-0x3F 保留作为命令与扩展标识符 | | LIN Rx Buffer | LIN 接收缓存 | RxBuffer0~RxBuffer3 | | Data Length | 数据长度 | 0~255,LIN 总线规范中一般使用2、4 或者8 | | LIN Classic Checksum Enable | 标准型校验和 | 根据实际LIN 协议版本进行勾选 | | Sample Time | 采样时间 | 自定义,通常使用-1 | LIN接收模块有两个输出端口,端口说明见下表: | 端口名称 | 端口说明 | 数据类型 | | -------- | --------------------- | ------------------- | | LIN_OK | 是否接收到LIN报文,接收到为1,否则为0 | uint8 | | LIN DATA | LIN报文数据 | uint8(数据的维数取决于数据长度) | 模块的用法:将LIN接收模块拖入到模型中(通常是周期性任务中),按需求为模块设置所有参数,即可定时接收指定ID的LIN报文。 2.**LIN0Transmit报文发送模块** LIN0Transmit报文发送模块的功能:LIN0Transmit报文发送模块用于发送指定ID的LIN报文。 LIN发送模块的参数见下表: | 选项 | 选项说明 | 可选值 | | --------------------------- | -------- | ----------------------------------- | | LIN ID | LIN 报文ID | 0x00-0x3F,其中0x3C-0x3F 保留作为命令与扩展帧标识符 | | LIN Tx Buffer | LIN 发送缓存 | TxBuffer0~TxBuffer3 | | Data Length | 数据长度 | 0~255,LIN 总线规范中一般使用2、4 或者8 | | LIN Classic Checksum Enable | 标准型校验和 | 根据实际LIN 协议版本进行勾选 | | Sample Time | 采样时间 | 自定义,通常使用-1 | 模块的用法:将LIN发送模块拖入到模型中(通常是周期性任务中),按需求为模块设置所有参数,即可发送指定ID的LIN报文,如下图所示: ![](images/2023-08-01-17-36-58-image.png) 注意事项: ①LIN发送模块与LIN接收模块的缓存是独立的,建议用户为每一帧LIN报文指定一个LIN缓存并用文件(比如Excel文件)记录管理,以防止出现混乱。 ②由于LIN总线属于低速通信总线,在常规的LIN总线通信协议中收发LIN报文的周期一般较长,比如50ms或者100ms。禁止使用过快频率(比如100Hz)收发LIN报文,否则会导致LIN总线出现异常。 ## 七.MemoryManagement存储器管理模块库
MemoryManagement存储器管理模块库中的模块用于管理控制器的存储器,此处的存储器是指提供给用户应用程序使用的存储器,通常是EEPROM或者FRAM。 1. **EEPROMEnable存储器使能模块** EEPROMEnable存储器使能模块的功能:用于使能控制器的EEPROM存储器。 EEPROMEnable存储器使能模块的用法:将模块拖入模型顶层并勾选模块的EEPROM Enable选项即可使能控制器的EEPROM存储器。 2. **EEPROMBIST存储器自检模块** EEPROMBIST存储器自检模块的功能:用于获取EEPROM存储器的上电自检结果,模块有1个输出端口,端口的数据类型为uint8,无单位。模块输出1时代表EEPROM存储器的上电自检结果通过,输出0代表EEPROM存储器的上电自检结果未通过。。 EEPROMBIST存储器使能模块的用法:将EEPROMBIST模块拖入到模型中(通常是周期性任务中),即可获取EEPROM存储器的上电自检结果。 3. **EEPROMRead存储器读模块** EEPROMRead存储器读模块的功能:用于从存储器中读数据,模块有1个输出端口,端口的数据类型为single,无单位。模块参数Buffer NO为EEPROM的缓存编号,可用值为0~699。 EEPROMRead存储器读模块的用法:将EEPROMRead模块拖入到模型中(通常是周期性任务中),双击模块设置模块的Buffer NO参数,即可获取指定缓存的读取结果。 EEPROMReadDP是另一种存储器读模块,区别在于EEPROMReadDP模块的缓存编号是通过端口输入的而不是通过模块参数设置的。输入值的范围也是0~699。 EEPROMUINT32Read是另一种存储器读模块,区别在于EEPROMUINT32Read模块的输出端口数据类似为uint32而不是single。 注意事项:EEPROMRead、EEPROMReadDP与EEPROMUINT32Read共用存储器缓存,因此对于某个特定编号的缓存,只能使用其中一种模块来读取数据。 4. **EEPROMWrite存储器写模块** EEPROMWrite存储器写模块的功能:用于往存储器中写入数据,模块有1个输入端口,端口的数据类型为single,无单位。模块参数Buffer NO为EEPROM的缓存编号,可用值为0~699。 EEPROMWrite存储器读模块的用法:将EEPROMWrite模块拖入到模型中(通常是周期性任务中),双击模块设置模块的Buffer NO参数,即可往指定缓存的存储器中写入结果。 EEPROMWriteDP是另一种存储器写模块,区别在于EEPROMWriteDP模块的缓存编号是通过端口输入的而不是通过模块参数设置的。输入值的范围也是0~699。 EEPROMUINT32Write是另一种存储器写模块,区别在于EEPROMUINT32Write模块的输入端口数据类似为uint32而不是single。 注意事项: ①EEPROMWrite、EEPROMWriteDP与EEPROMUINT32Write共用存储器缓存,因此对于某个特定编号的缓存,只能使用其中一种模块来写数据。 ②使用EEPROMWrite 模块(或者EEPROMWriteDP模块或EEPROMUINT32Write 模块)往EEPROM 存储器中写入数据并不是在程序执行时立即将数据写入存储器,而是在控制器下电(常电保持,激活信号断开)时统一将所有更改的缓存数据写入存储器。 ## 八.PowerManagement电源管理模块库
PowerManagement电源管理模块库中的模块用于管理控制器的电源,包括电源电压监控,激活信号监控与AfterRun功能等。 1. **ActSigMonitor激活信号监控模块** ActSigMonitor激活信号监控模块的功能:用于监控控制器激活信号,模块输出为0 时表示激活信号无效,模块输出为1时表示激活信号有效。一般控制器有多路激活信号,比如U34 控制器的激活信号有3:I_KL15,32:I_ACT1,33:I_ACT2,CAN5:ACT,All_Activation 等多个激活信号,这些激活信号的逻辑关系见下图。3:I_KL15,32:I_ACT1,33:I_ACT2,CAN5:ACT 四个硬件激活信号构成逻辑或的关系产生All_Activation 信号,以上5 个信号均可以通过ActSigMonitor 模块实时读取。 ![](images/2023-07-28-16-10-33.png) ActSigMonitor激活信号监控模块的用法:将ActSigMonitor模块拖入到模型中(通常是周期性任务中),并选择相应的信号,即可获取相应信号的监控值。 2. **PowerVoltageMonitor电源电压监控模块** PowerVoltageMonitor电源电压监控模块的功能:用于监控控制器的各个电源,包括外部输入电源与控制器内部电源。模块有1个输出端口,端口的数据类型为uint16,数据单位为mV。 PowerVoltageMonitor电源电压监控模块的用法:将PowerVoltageMonitor模块拖入到模型中(通常是周期性任务中),并选择相应的电源信号,即可获取相应电源信号的电压值。 3. **AfterRunSwitch掉电延时模块** AfterRunSwitch掉电延时模块的功能:用于电源控制。AfterRunSwitch 掉电延时模块与All_Activation 构成或逻辑来给控制器供电,即AfterRunSwitch 与All_Activation 中间只要一个为1,则控制器上电。在All_Activation 闭合控制器上电初始化时,将AfterRunSwitch 模块置1,则当All_Activation 无效时,控制器仍然有电,只有将AfterRunSwitch 模块清0 后控制器才会掉电,即可实现掉电延时。 AfterRunSwitch掉电延时模块的用法:将AfterRunSwitch掉电延时模块拖入到模型中(通常是周期性任务中),模块输入0时AfterRun功能无效,模块输入1时AfterRun功能有效,控制器保持上电状态。 ## 九.MCUManagement单片机管理模块库
MCUManagement单片机管理模块库中的模块主要用于管理单片机即控制器的主控芯片。 ### 1.Initialization、PIT1任务管理模块
Initialization模块是初始化任务模块,PIT1模块是周期性任务模块。 Initialization模块的功能:有些任务仅需要在控制器上电时执行一次,而不是周期性执行,利用Initialization 模块可实现此功能,即添加初始化任务。 Initialization模块的用法:将Initialization 模块拖入模型顶层,并与相应的任务模块相连,如下图所示,可在InitTask 模块中添加各类初始化任务,比如控制某个低边驱动输出。 ![](images/2023-08-16-16-27-12-image.png) PIT1模块的功能:有些任务需要按照一定时序严格执行,利用PIT 模块可实现此功能,即添加周期性任务。 PIT1模块的用法:将PIT 模块拖入模型顶层,并与相应的任务模块相连,如下图所示,可在PeriodTask 模块中添加各类周期性任务,比如实现一个软件计数器。 ![](images/2023-08-16-16-54-35-image.png) ![](images/2023-08-16-16-54-58-image.png) 注意事项:PIT 模块采用硬件中断实现,请勿在周期性任务中添加大运算量任务,否则将无法保证正确执行任务。 ### 2.RamStack、TemperatureMonitor单片机监控模块
RamStack模块是单片机RAM堆栈监控模块,TemperatureMonitor模块是单片机温度监控模块。 RAMStack模块的功能:监控单片机的RAM 堆栈,模块有1个输出端口,端口的数据类型为single,数据单位为%。在高可靠性的系统中需要监控单片机的RAM堆栈,利用RAMStack 模块可实现此功能。 RAMStack模块的用法:将RAMStack 模块拖入到模型的特定任务中(比如10ms 任务中),即可获取当前模块所处10ms 任务的RAM 堆栈使用率。 注意事项:RAM 堆栈使用率是实时变化的,在不同的任务中RAM 堆栈使用率是不同的,因此往往需要多点监控才能获取比较完整的RAM 堆栈使用率信息。 TemperatureMonitor模块的功能:监控单片机的温度,模块有1个输出端口,端口的数据类型为single,数据单位为℃摄氏度。在高可靠性的系统中需要监控控制器内部的温度,利用TemperatureMonitor模块可实现此功能。 TemperatureMonitor模块的用法:将TemperatureMonitor模块拖入到模型的特定任务中(比如10ms 任务中),即可获取当前单片机的温度。 ### 3.WDGEnable、WDGFeed看门狗管理模块
WDGEnable模块是看门狗使能模块,WDGFeed模块是看门狗喂狗模块。看门狗是一种常用的用于监控单片机运行状况的设备,当程序没有按照设计者的要求运行(没有按时喂狗)时,导致看门狗计数器溢出,引发单片机复位。 WDGEnable模块的功能:看门狗使能模块,模块有1个输入端口,端口的数据类型为boolean,数据无单位,输入0关闭看门狗,输入1使能看门狗。 WDGEnable模块的用法:将WDGEnable模块拖入到模型的特定任务中(比如10ms 任务中),按需求为输入口赋值,即可使能或者关闭看门狗。 WDGFeed模块的功能:看门狗喂狗模块,模块有1个输入端口,端口的数据类型为boolean,数据无单位,先输入0再输入1是一次喂狗操作。 WDGFeed模块的用法:将WDGFeed 模块置于一个周期性触发的子系统中,程序即按照该周期反复喂狗,保证控制器程序的正常执行。喂狗的基本方法是周期性交替给WDGFeed 模块赋值0 与1,如下图所示,下述喂狗模型的任务调度周期可以为10ms~50ms。 ![](images/2023-08-19-17-18-38-image.png) ### 4.SystemTime系统时间模块
系统时间SystemTime 模块有两种典型用途:测试任务调度周期与测试任务执行时间。 (1)测试任务调度周期 通过读取系统时间SystemTime 的值,可以测试周期性任务的实际调度周期。如下图示例模型的作用就是测试100ms 任务的实际调用周期。通过测量量ECU_SYSTIME_100ms 的值,可以知道100ms 任务的实际调用周期(单位为us)。 ![](images/2023-08-19-17-26-34-image.png) ![](images/2023-08-19-17-27-11-image.png) (2)测试任务执行时间 通过读取系统时间SystemTime 的值,可以测试任务的实际执行时间。如下图示例模型的作用就是测试10msTask2 任务的实际调用周期。通过测量量TASK_ETIME 的值,可以知道10msTask2 任务的实际执行时间(单位为us)。 ![](images/2023-08-19-17-29-07-image.png) ![](images/2023-08-19-17-29-26-image.png) ![](images/2023-08-19-17-30-12-image.png) 注意事项:测试任务调度周期是一种常见的调试手段,通过实际任务调度周期的值可以判断当前控制器的实时任务调度机制有没有异常。测试任务执行时间也是一种常见的调试手段,通过任务执行时间可以找出模型中的一些异常(比如异常的状态机),另外,通过计算多个任务的执行时间还能估算当前模型的CPU使用率。 ## 十.Calibration标定模块库
Calibration标定模块库中的模块用于测量标定。 1. **MeaModule测量模块** MeaModule测量模块的功能:为模型添加测量变量,模块有1个输入端口,1个输出端口,端口兼容各种数据类型,模块的参数可以实时在线测量。 MeaModule测量模块的用法:将MeaModule 模块拖入模型中,并与需要的模块相连接,如下图所示。双击模块,可以按照MATLAB变量命名规则对参数任意命名。 ![](images/2023-08-19-18-35-17-image.png) 在之后自动生成的A2L 文件中,会出现变量名为该模块参数名的信号的具体描述。 2. **ECCalVar标定模块** ECCalVar标定模块的功能:为模型添加标定变量,模块有1个输出端口,端口兼容各种数据类型,模块的参数可以实时在线标定。 ECCalVar标定模块的用法:将ECCalVar 模块拖入模型中,并与需要的模块相连接,如下图所示。双击模块,可以按照MATLAB变量命名规则对参数任意命名。 ![](images/2023-08-19-18-39-33-image.png) 在之后自动生成的A2L 文件中,会出现变量名为该模块参数名的信号的具体描述。 3. **INCAA2L模块** INCAA2L模块的功能:ECUCoder 模型直接生成的A2L 文件支持MeCa 与CANape 等常用测量标定软件,但是无法直接导入INCA 软件,对于需要使用INCA 来进行测量标定的用户,ECUCoder 提供了INCAA2L 模块来帮助用户生成支持INCA 软件的A2L 文件。 INCAA2L模块的用法:在用户生成完代码之后将INCAA2L 模块拖入模型顶层并双击模块,即可直接生成支持INCA 软件的A2L 文件,生成的文件名为model_inca.a2l。 注意事项:INCAA2L 模块不可用于仿真以及自动代码生成,所以当生成完支持INCA 软件的A2L文件需要将INCAA2L 模块从模型中删除。 ## 十一.EasyTask任务调度模块库
EasyTask任务调度模块库中的模块用于实时任务调度。从各个模块的名称可以直观看出任务的调度周期,模块的用法为使用模块触发Function-Call Subsystem,如下图所示。 ![](images/2023-08-19-19-09-16-image.png) 当需要指定任务的执行顺序的时候,可以使用Demux模块,如下图所示。 ![](images/2023-08-19-19-11-50-image.png) 注意事项:EasyTask任务调度模块库提供了大约10种周期的调度模块,当需要调度其它周期(比如25ms)的任务时,可以直接使用Simulink模块库Ports & Subsystems子库中的Function-Call Generator模块。 ## 十二.DBCTool模块库
DBCTool模块库中的DBCTool模块可以实现DBC 文件导入与解析自动化。 由于MATLAB 内部命令的版本问题,ECUCoder 自带的DBC 工具在MATLAB 2016a 及更新版本上无法正常运行, 对于MATLAB 2016a 及更新版本的用户, 推荐使用ATLAB/Simulink 自带的CANPack/CANUnpack 工具。 此处不再详解DBCTool模块的使用方法,需要使用的用户请参考ECUCoder软件自带的ECUCoder使用说明书中章节《DBC 工具的使用》的内容。 ## 十三.UDS诊断模块库
UDS诊断模块库中的模块用于UDS诊断。 1. **UDSEnable UDS使能模块** UDSEnable UDS使能模块的功能:用于使能控制器的UDS功能。 UDSEnable UDS使能模块的用法:将UDSEnable 模块拖至RapidECUSetting 模块所在的模型顶层,双击UDSEnable 模块,勾选UDS Enable复选框,然后点击“OK”按钮,便可启用控制器的UDS 功能,将模型编译后生成的s19 文件下载到ECU中,ECU 即能够实现0x10、0x11、0x3E、0x27、0x22、0x2E、0x14 等基础UDS 服务。 除了UDSEnable 模块之外,由于UDS 需要使用EEPROM,因此还需要将EEPROMEnable 模块拖至模型顶层并勾选EEPROM Enable 复选框。 上位机软件/诊断仪通过标定CAN 总线与控制器连接,进行UDS 通信,通信协议如下图所示。 ![](images/2023-08-19-20-33-42-image.png) 通信协议说明: (1)UDS 通信协议默认波特率为500kbps,标准帧格式,不可修改。 (2)U34、F23 等控制器的标定CAN 总线接口为CAN3(50 与69 号管脚)。 (3)上位机软件可以是UDSTool,也可以是ZCANPRO 软件的UDS 诊断程序或者用户自行开发的上位机诊断软件。 2. **其它UDS模块** UDS诊断模块库提供了十多个模块,关于这些模块的具体使用方法可以参考ECUCoder软件文档《UDS使用说明书》,此处不再赘述。 ## 十四.IMU传感器模块库
IMU传感器模块库中的模块可用于获取三轴加速度、三轴角速度、姿态角等。库中包含IMUEnable、Accelerometer、Gyroscope、Attitude等四个模块,分别用于使能IMU,获取三轴加速度、三轴角速度、姿态角等。关于这些模块的具体使用方法可以参考ECUCoder软件文档《IMU模块使用说明书》,此处不再赘述。 ## 十五.FrequentlyUsedModels常用模型库
FrequentlyUsedModels常用模型库的模块用于简化用户的建模过程,库中的模块可以分为滤波模型,排序模型,较低频率信号消抖处理模型,电压值转换为电阻值模型等四类。关于这些模块的具体使用方法可以参考ECUCoder软件自带的ECUCoder使用说明书中章节《常用模型简介》的内容。