NI HIL自动化测试19-Matlab-Simulink自动化建模

发布时间:2026/10/2 6:42:01
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解析模块。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询