脚本写的时间较早了,近期要学习新的东西准备记录过程,草草把之前写过的一些内容汇总下吧。

基于 MATLAB App Designer 开发Simulink 开发全流程自动化工具,把平时高频使用的功能全部整合到一个界面里,实现 “点一下按钮就搞定”。

一、模型搭建区

在模型搭建过程中一些提效脚本

1.Startup

一个很简单的脚本,用处是把工程所在的文件夹一键添加到Matlab路径里,方便模型识别自建的模型库。

function startup(~)
%获取当前文件夹路径
filePath=pwd;
%获取当前文件夹下所有子文件夹路径
allpaths=genpath(filePath)
%将文件夹子路径加入matlab搜索路径
addpath(allpaths);
end

2.生成.p

前两篇博客内容之一,不再贴图了,就是用excel管理模型的参数。

3.信号解析

将顶层模型的输入与输出设置为解析为simulink对象,进行信号传递

%%将顶层模型的输入与输出设置为解析为simulink对象,进行信号传递
function SgnDataLog
inportCell = find_system(bdroot,'FindAll','on','BlockType','Inport');
for i=1:length(inportCell)
    InportName = get_param(inportCell(i),'Name');
    InportHandle = get_param(inportCell(i),'Handle');
    PortHandle = get(InportHandle,'PortHandles');
    OutputHandle = PortHandle.Outport;
    LineHandele = find_system(bdroot,'SearchDepth',1,'FindAll','on','Type','Line','SrcPortHandle',OutputHandle);
    set(LineHandele,'Name',InportName);
    set(LineHandele,'MustResolveToSignalObject',1);
  
end

OutportCell = find_system(bdroot,'FindAll','on','BlockType','Outport');
for i=1:length(OutportCell)
    OutportName = get_param(OutportCell(i),'Name');
    OutportHandle = get_param(OutportCell(i),'Handle');
    PortHandle = get(OutportHandle,'PortHandles');
    OutputHandle = PortHandle.Inport;
    LineHandele = find_system(bdroot,'SearchDepth',1,'FindAll','on','Type','Line','DstPortHandle',OutputHandle);
    set(LineHandele,'Name',OutportName);
    set(LineHandele,'MustResolveToSignalObject',1)
    %OutportName = Simulink.Signal ;
    %OutportName.CoderInfo.CustomStorageClass = 'ImportedExtern' ;
end

4.Block查找

在较大的模型里模块成千上万,找一个特定功能的模块,靠肉眼找效率极低。

5.port排列

子系统的输入输出端口,手动排列总是歪歪扭扭,连线像蜘蛛网,模型可读性极差。通过脚本自动获取子系统端口数量,按从上到下 / 从左到右的顺序等间距排列,支持自定义间距和对齐方式,一键让模型 “颜值” 提升 N 个档次。参考了:Simulink递归接口排布_simiulink 遍历subsytem的port-CSDN博客

6.接口延申

对于大模型有众多子层级,在最子层添加一个port口需要重复很多次外层port的创建和连接线,效率极低,该脚本实现内层创建port,一键将外层所需要的port和线自动创建并连接。

7.模块标准化

前两篇内容之一

二、模型仿真区

1.生成仿真模型

仿真阶段的痛点主要集中在 “数据准备 - 运行 - 观测 - 分析” 的手动操作上,这个模块就是为了让仿真流程 “全自动”。

直接在主模型上做仿真修改,容易误改原模型,每次手动复制模型、修改配置又很麻烦。一键复制主模型为仿真专用副本,自动添加仿真用的输入信号模块、观测模块,同时保留原模型的原有属性,避免误操作。

2.创建仿真数据

手动创建不同工况的仿真输入数据,写 M 文件生成又要反复修改参数,效率低下。根据excel模板内容创建自己仿真所需的必要输入数据,自动创建工作区仿真输入。


 

3.信号观测

前两篇内容之一

4.取消观测

前两篇内容之一

 打开仿真模型,创建好仿真数据,在想要观测的内容子层级中点击信号观测一键增加所有变量,点击运行仿真后可查看仿真结果。

三、代码生成区

1.生成代码配置

前两篇内容之一

2.一键生成代码

前两篇内容之一

四、将这些内容都集成到一个app界面即可

这款工具本质上就是把我平时写的零散自动化脚本,用 App Designer 做了个统一的界面,让非脚本开发的同事也能直接用,不用再手动跑 M 文件。如果你也经常和 Simulink 打交道,不妨试试把自己常用的脚本整合起来,做一个属于自己的效率工具,把重复劳动交给脚本,把时间留给真正有技术含量的工作。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐