我是靠谱客的博主 矮小蜻蜓,最近开发中收集的这篇文章主要介绍Simulink标定量的自动赋值问题描述解决思路Matlab脚本实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述


工作中遇到对一些信号的处理,要用到大量同一封装模块,见图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5Lya5YaZ5a2X55qE6Zi_6L2p,size_20,color_FFFFFF,t_70,g_se,x_16

上图中,名为signIn的信号从Inport输入,封装系统端口2、3、4、5均连接Constant模块,值为外部定义的量。这些量的命名特点是:前缀+Port1端口输入信号名或其部分+后缀。比如端口1输入信号名为qwer,端口2、3分别命名为qianzhui2_er_houzhui2,qianzhui3_er_houzhui3,中间er为输入信号名的最后两位,前缀后缀则均不同。需要说明的是,对于不同封装模块的相同端口,其前缀和后缀又是相同的。

1812130e2ff5441c85c75cfdf670d46b.png

解决思路


  1. 通过名称找到我们需要的封装模块。
  2. 在找到封装模块后,通过端口句柄寻找输入信号,并获取输入信号名称。
  3. 取2步骤中获得的信号名加以处理,形成端口2、3、4所需要的信号名,作为Constant模块的Value赋值。

Matlab脚本实现


clear;
subsys_cell = find_system(gcs,'SearchDepth',1,'BlockType','SubSystem');
% 找到当前SYSTEM下所有子系统,SearchDepth可更改

for i = 1:length(subsys_cell)
  subsys_handle = get_param(subsys_cell{i},'Handle');
  subsys_name = get_parm(subsys_cell{i},'Name');
  pre_name = subsys_name(1:7); % 取子系统名字前七位,用于选取目标封装模块
  if strcmp(pre_name,'aaaaaaa') % 假定目标封装模块命名为aaaaaaa1,aaaaaaa2....
     port_handle = get_param(subsys_handle,'PortHandles');
     preline_handle = get_param(port_handle.Inport(1),'Line') % 获取输入端口1信号线句柄
     presrc_handle = get_param(preline_handle,'SrcBlockHandle');
     port1_name = get_param(persrc_handle,'InputSgnalNames');
     strpotr1_name = char(port1_name); % 获取端口1输入信号名称并转化为char类型

     pre_name = strport1_name(2:end); 
% 对信号名进行处理,我需要从第2位开始到结束的字符段,比如qwer,我需要的是er;
     preport2_name = strcat('qianzhui1_',pre_name,'_houzhui1');
% 处理端口2输入信号的变量名,最终形式为qianzhui1_er_houzhui1;
     preport3_name = strcat('qianzhui2_',pre_name,'_houzhui2');

     port2_name = char(perport2_name);
     port3_name = cahr(perport3_name); 
% 将元胞数转化为char,这样才能作为变量写入Constant的Value
     
     for j = 2:3
       line_handel = get_param(port_handle.Inpotr(j),'Line');
       src_handle = get_param(line_handle,'SrcBlockHandle');
       if j == 2
         set_param(src_handle,'Value',potr2_name);
       else
         set_param(src_handle,'Value',port3_name);
       end
     end
   end
end

有误还请指正。

 

 

 

最后

以上就是矮小蜻蜓为你收集整理的Simulink标定量的自动赋值问题描述解决思路Matlab脚本实现的全部内容,希望文章能够帮你解决Simulink标定量的自动赋值问题描述解决思路Matlab脚本实现所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部