在VCU应用层开发中,VCU接收输入信号后,按照控制策略计算判断后,输出控制信号或者状态量,输出信号大多需要通过CAN信号的形式发送至CAN总线,以达到控制其他执行器或控制器执行VCU指令或者接收VCU发送的状态。今天通过VCU3_MCU报文的打包及CAN信号的设置介绍一下在Simulink应用层开发中CAN报文的打包及CAN信号设置方法。1、新建一个Simulink空白模型,在库浏览器中Vehicle Network Toolbox-CAN Communication选择CAN Pack模块拖动至空白处2、双击CAN Pack模块,Data is input as选项选择CANdb specified signals,从DBC文件解析进行CAN打包3、CAN file 选项Browse选项选择DBC文件,打开4、Message list选择要打包的CAN报文VCU3_MCU,确定5、勾选output as bus,输出为总线数据,signal栏显示出DBC文件中定义的信号内容,确定根据DBC定义的发送信号,新建输入信号1-8,实际VCU模型搭建中,这些输入信号来自于控制模块输出的控制信号或状态信号1)其中信号2 HrtBt为心跳信号,持续循环发送,在库浏览器Sources中选择Counter Free-Running2)在库浏览器Commonly Used Blocks中选择Data Type Conversion,设置为uint81)信号1 为校验信号,通讯协议中定义为byte7×OR byte6×OR byte5×OR byte4×OR byte3×OR byte2×OR byte1,即byte1-byte7字节进行位与运算输出;复制CAN pack模块,作为校验信号计算使用2)分别连接各输入信号至复制的CAN Pack模块输入端,其中ChkSum值是要计算的输出值,在输入端接地3)接地信号是为了防止出现关于未连接的输入端口的警告4)在库浏览器CAN Communication中选择CAN Unpack,拖动至空白处5)双击CAN Unpack模块,Data to output as选择manually specified signals,即手动设置报文内容6)Name设置为VCU3_MCU,CAN Identifier 设置为309,Length(bytes)设置为87)点击Add signal添加7个信号,并设置Name为Byte1-Byte7,起始位和字节长度设置如图所示,设置完成,确定8)连接CAN Pack模块输出信号与CAN Unpack模块输入信号,并将CAN Unpack输出信号格式分别转换为unit89)在库浏览器Logic and Bit Operation中选择Bitwise OR,拖动至空白处10)不勾选使用位掩码,输入端口数目设置为7,确定12)选中所搭建的校验模块,右键选择给予所选内容创建子系统13)创建的子系统输出信号与CAN Pack模块输入信号1 VCU3_ChkSum连接,输入信号模型搭建完成1、新建输出信号,CAN_EcanMessage_0x135,即将信号打包为CAN信号后发送至Ecan2、在库浏览器Signal Attributes中选择Signal Copy,拖动至空白处,该信号为信号复制模块3、新建输出信号2 CAN_Pcan_CanMessage_0x135,通过Signal Copy模块连接至CAN Pack打包模块输出信号,即将CAN Pack信号同时发送至Ecan和Pcan2、在模型资源管理器窗口选择Base Workspace,并点击红框图标,添加Simulink Signal5、选择Base Workspace右键导出为mat文件7、双击打开test.mat,在工作区显示设置的输入信号及输出信号8、在菜单栏选择建模-模型设置,求解器类型选择定步长,离散(无连续状态),固定步长为0.01s9、在菜单栏选择仿真-运行,对模型惊进行仿真测试,测试无问题,模型搭建完成本文通过VCU3_MCU报文Simulink CAN打包模块模型搭建及输入输出信号设置,说明了Simulink CAN打包模块设置的一般方法。其他CAN打包模块可以用同样的方法设置。希望通过本文的介绍能给相关技术人员带来一些参考和帮助。
创作不易,欢迎点赞再看收藏关注!
汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。