概述
方才和软件工程师议论Matlab/Simulink下CAN信号打包解包的事变,正巧碰到J1939的坑。晚上花了不少时刻和宋先生沟通,也算有些收成,谢谢宋先生的协助~
一般的CAN解包/打包体式格局相对简朴,Simulink下主要有2种思绪:
1.CAN pack dbc完成打包
用Simulink自带的CAN pack/CAN unpack加dbc,然后生成代码,省去了许多移位运算的贫苦。
2.本身搭建CAN剖析模板(Msg->signal, Signal->Msg)
然则Simulink自带的CAN Pack和CAN Unpack在生成代码的时刻会发生许多冗余代码,手动挑选的时刻比较费力。也能够本身搭建移位运算的library只须要根据dbc协定转变接口即可,以下图所示。
Matlab/Simulink下完成J1939的解包打包相对庞杂一点,在搭建模子生成代码的过程当中,须要增加比较多的模块。
1.Simulink找到J1939 library,以下图所示。
2. 拖入相干的模块
最少须要拖入4个模块:
J1939 Network Configuration
J1939 Node Configuration
J1939 CAN Transport Layer
J1939 Receive
双击J1939 Network Configuration模块,变动Configuration name,而且导入本身增加的1939dbc文件。
双击J1939 Node Configuration模块,挑选响应的Config name和对应的Node name,以下图所示
双击J1939 CAN Transport layer模块,挑选响应的device,这个类似于一个假造的通道,不挑选的话,仿真和生成代码都邑报错。
Note: 我电脑装置的是16b版本的matlab,Device下来选项是None, 然则同事高版本的matblab内里不是空的,和宋先生沟通半天也没有找到问题在哪?Anyway,有多是matlab装置或许版本的问题,门路是能够走通的。
双击J1939 Receive模块,挑选响应的Config name以及Node name,就会涌现以下界面,把对应的信号解包出来。
仿真不报错的话,Ctrl B生成代码,把J1939剖析相干的代码拿出来本身用就能够了。
Matlab命令行输入以下指令,会出来自带的J1939案例,能够做1939相干的仿真事情,照样比较轻易的。
web(fullfile(docroot, 'vnt/examples/basic-j1939-communication-over-can.html'))
案例模子
仿真效果
最后
以上就是鳗鱼咖啡豆为你收集整理的matlab 解包,Matlab/Simulink-J1939CAN 解包实现方法的全部内容,希望文章能够帮你解决matlab 解包,Matlab/Simulink-J1939CAN 解包实现方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复