我是靠谱客的博主 矮小蜻蜓,这篇文章主要介绍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脚本实现


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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标定量内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部