NI HIL自动化测试19-Matlab-Simulink自动化建模 重复的复制、粘贴和修改让人感觉到很是枯燥无味对于有规律的Simulink 建模可以通过M脚本来实现。下面以CAN解析为例主要功能包括根据信号名称的个数自动添加Constant、Convert等模块然后自动连线。第一步第二步选择要解析的信号名称第三步 运行脚本function dbc DBC()%获取句柄handle gcbh;%获取编辑模型Parentpath get(gcbh,‘Parent’);%获取信号信息里面包含了一帧报文里面的所有信号名称signals get(handle,‘SignalInfo’)%获取的位置根据这个位置来确定信号的名称locatinstrfind(signals,′的位置根据这个位置来确定信号的名称 locatinstrfind(signals,的位置根据这个位置来确定信号的名称locatinstrfind(signals,′‘);%获取信号名称的个数number0fsignals str2num(get(handle,‘NSignals’));%定义一个字符向量元胞数组,长度根据信号名称的个数用来存放信号名称signal {number0fsignals};%提取信号名称for i1:number0fsignalsif i1%disp(signals(1:locatin(1)-1));signal{i}signals(1:locatin(1)-1);else%disp(signals(locatin((i-1)*11)2:locatin(((i-1)*11)1)-1));signal{i}signals(locatin((i-1)*11)2:locatin(((i-1)*11)1)-1);endend%提取信号符号标识位、信号长度、转换因子、偏移量signalinfmation{number0fsignals};for k1:number0fsignalssignalinf[0,0,0,0];for a1:4signalinf(1) str2num(signals(locatin(2(k-1)11)1:locatin(3(k-1)11)-1));%将 数据长度 添加到数组的第1个位置signalinf(2) str2num(signals(locatin(6(k-1)11)1:locatin(7(k-1)11)-1));%将 有符号无符号 添加到数组的第2个位置signalinf(3) str2num(signals(locatin(7(k-1)11)1:locatin(8(k-1)11)-1));%将 转换因子 添加到数组的第3个位置signalinf(4) str2num(signals(locatin(8(k-1)11)1:locatin(9(k-1)11)-1));%将 偏移量 数据长度添加到数组的第4个位置endsignalinfmation{k} signalinf;end%删除CANPACK 模块调试显示用后期删除%delete_block(‘m_control_mdl03/CAN Pack’);%显示用后期删除%disp(str);%添加模块,根据获得的信号个数number0fsignals和信号名称number0fsignals进行自动添加for j1:number0fsignals%向指定的模型中增加Constant模块并且指定控件的位置add_block(‘simulink/Sources/Constant’,strcat(path,‘/’,signal{j}),‘Position’,[30 (10060(j-1)) 100 (10060(j-1))30]);%向指定模型中增加Data Type Conversion模块并且指定控件的位置add_block(‘simulink/Commonly Used Blocks/Data Type Conversion’,strcat(path,‘/’,‘Con’,signal{j}),‘Position’,[300 (10060(j-1)) 400 (10060(j-1))30]);%向指定模型中增加AM_HIL_Signal模块并且指定控件的位置add_block(‘dfdfd_ModleLib/TestBase_IO_LIB/AM_HIL_Signal’,strcat(path,‘/’,‘Switch’,signal{j}),‘Position’,[600 (10060(j-1)) 700 (10060(j-1))30]);%向指定模型中增加NIVeriStand Out1模块并且指定控件的位置add_block(‘NIVeriStandBlocks/NIVeriStand Out1’,strcat(path,‘/’,‘NI’,signal{j}),‘Position’,[1000 (10060(j-1)) 1080 (10060(j-1))30]);%自动连线add_line(path,strcat(signal{j},’/‘,‘1’),strcat(‘Con’,signal{j},’/‘,‘1’));add_line(path,strcat(‘Con’,signal{j},’/‘,‘1’),strcat(‘Switch’,signal{j},’/‘,‘1’));add_line(path,strcat(‘Switch’,signal{j},’/‘,‘1’),strcat(‘NI’,signal{j},’/‘,‘1’));%修改Data Type Conversion模块参数set_param([path,strcat(’/‘,‘Con’,signal{j})],‘OutDataTypeStr’,strcat(‘fixdt(’, num2str(signalinfmation{j}(2)),’,‘,num2str(signalinfmation{j}(1)),’,‘,num2str(signalinfmation{j}(3)),’,‘,num2str(signalinfmation{j}(4)),’)));endend效果如下总结原本一个项目可能建模需要1天现在几分钟就搞定了。还有优化的空间以实际需求为向导总有实现的方式。遗憾的是没有LIN解析模块。

相关新闻

最新新闻

3分钟快速上手:Chrome视频下载助手终极使用指南

3分钟快速上手:Chrome视频下载助手终极使用指南

3分钟快速上手:Chrome视频下载助手终极使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网页视频而烦恼吗&…

2026/8/4 20:46:53
Ubuntu服务器(先马坦克)运维日志

Ubuntu服务器(先马坦克)运维日志

Guidelines (1)达到5G的文件或目录尽量进行记录 1. 机箱:先马坦克3 2. 主板:技嘉 Z390 AORUS PRO WIFI 3. 内存:金士顿 16G X 2 (套条)【京东】 3200MHz 【官方微信验证】 4. 硬盘 4.1 三…

2026/8/4 20:46:53
2026年北京智慧燃气安全监管平台的建设与厂商观察

2026年北京智慧燃气安全监管平台的建设与厂商观察

燃气管网是一座超大城市最不能出事的地下系统之一。在北京,燃气管道总里程持续增长,部分管线已运行二三十年,老化锈蚀、占压、第三方施工破坏等隐患交织叠加;每到冬季供暖高峰,用气量陡增,餐饮场所、老旧小…

2026/8/4 20:46:53
NANDO开源闪存编程器:用STM32 DIY专业级硬件修复工具

NANDO开源闪存编程器:用STM32 DIY专业级硬件修复工具

NANDO开源闪存编程器:用STM32 DIY专业级硬件修复工具 【免费下载链接】nand_programmer NANDO - NAND Open programmer 项目地址: https://gitcode.com/gh_mirrors/na/nand_programmer 想象一下这个场景:你心爱的游戏机突然无法启动,路…

2026/8/4 20:46:53
解锁iOS 15-16.6设备激活锁:applera1n工具深度解析与技术指南

解锁iOS 15-16.6设备激活锁:applera1n工具深度解析与技术指南

解锁iOS 15-16.6设备激活锁:applera1n工具深度解析与技术指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 面对iOS设备的激活锁困境,许多用户常常束手无策。无论是二手交易中…

2026/8/4 20:46:53
可灵首尾帧控制实战手册:从崩溃到丝滑,97%用户忽略的4个关键参数调优技巧

可灵首尾帧控制实战手册:从崩溃到丝滑,97%用户忽略的4个关键参数调优技巧

更多请点击: https://codechina.net 第一章:可灵首尾帧控制的核心原理与崩溃根源剖析 可灵(Kling)在视频生成中引入的首尾帧控制机制,本质是通过隐式扩散路径约束实现时空一致性锚定。其核心依赖于两个关键张量&#…

2026/8/4 20:41:53