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解析模块。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/28 1:37:33
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/27 19:13:42
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/27 15:27:56
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/27 19:54:03
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 9:16:41
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/28 2:08:29

日新闻

周新闻