我是靠谱客的博主 鳗鱼咖啡豆,最近开发中收集的这篇文章主要介绍matlab 解包,Matlab/Simulink-J1939CAN 解包实现方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

方才和软件工程师议论Matlab/Simulink下CAN信号打包解包的事变,正巧碰到J1939的坑。晚上花了不少时刻和宋先生沟通,也算有些收成,谢谢宋先生的协助~

一般的CAN解包/打包体式格局相对简朴,Simulink下主要有2种思绪:

1.CAN pack dbc完成打包

用Simulink自带的CAN pack/CAN unpack加dbc,然后生成代码,省去了许多移位运算的贫苦。

eddfa6dfe93d89a8c01a1234c9b783b3.png

2.本身搭建CAN剖析模板(Msg->signal, Signal->Msg)

然则Simulink自带的CAN Pack和CAN Unpack在生成代码的时刻会发生许多冗余代码,手动挑选的时刻比较费力。也能够本身搭建移位运算的library只须要根据dbc协定转变接口即可,以下图所示。

6a68c8ec1a7ab8242ff8feb478ec4d1f.png

558e8a6a8643bda849bd756df80ef418.png

Matlab/Simulink下完成J1939的解包打包相对庞杂一点,在搭建模子生成代码的过程当中,须要增加比较多的模块。

1.Simulink找到J1939 library,以下图所示。

4711fb8a9f01410f5a1bf7131e3e6d36.png

2. 拖入相干的模块

最少须要拖入4个模块:

J1939 Network Configuration

J1939 Node Configuration

J1939 CAN Transport Layer

J1939 Receive

25f7823a761c5d6d85c7f7375c39a42f.png

双击J1939 Network Configuration模块,变动Configuration name,而且导入本身增加的1939dbc文件。

3efa7d14dab2a439423216d8f8900bff.png

双击J1939 Node Configuration模块,挑选响应的Config name和对应的Node name,以下图所示

4fa2525638a89e34b3920cdb0618bb38.png

双击J1939 CAN Transport layer模块,挑选响应的device,这个类似于一个假造的通道,不挑选的话,仿真和生成代码都邑报错。

Note: 我电脑装置的是16b版本的matlab,Device下来选项是None, 然则同事高版本的matblab内里不是空的,和宋先生沟通半天也没有找到问题在哪?Anyway,有多是matlab装置或许版本的问题,门路是能够走通的。

639cb0245836ae28f489f84aa3faef5f.png

双击J1939 Receive模块,挑选响应的Config name以及Node name,就会涌现以下界面,把对应的信号解包出来。

ac0ed51fbfea9ab269faee9a6b758c4d.png

仿真不报错的话,Ctrl B生成代码,把J1939剖析相干的代码拿出来本身用就能够了。

87f5856ed5d1f4956d899523585507e5.png

Matlab命令行输入以下指令,会出来自带的J1939案例,能够做1939相干的仿真事情,照样比较轻易的。

web(fullfile(docroot, 'vnt/examples/basic-j1939-communication-over-can.html'))

案例模子

876bb7f9306b9d6994bf6fe0cc627772.png

仿真效果

17b45d9efa85a4063339485e99da49f7.png

最后

以上就是鳗鱼咖啡豆为你收集整理的matlab 解包,Matlab/Simulink-J1939CAN 解包实现方法的全部内容,希望文章能够帮你解决matlab 解包,Matlab/Simulink-J1939CAN 解包实现方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部