Simulink常见功能的封装笔记

01--范围限制

当某输入工况落在两个边界值之间,则输出置1,且该两个边界可选。

比如,燃电电堆可以设定一个最佳工作温度,当工作的温度在最佳工作温度范围内时,输出1

伪代码:

输入温度为x,输出标志位为y,温度范围边界为a和b

那么有:

a<=x<=b,y=1,

若边界可选则分为如下情况

a<=x<=b,a<x<=b,a<=x<b,a<=x<=b,

建模:

stateflow

将该状态机进行封装子系统,

封装选项卡按如下设置:

Icon & Ports:

Icon drawing commands 中m脚本:

 
if   strcmp(get_param(gcbh, 'ShowOutp1'), 'on')
     text(0.5,0.78,['\fontsize{10}\color{green}a \color{orange}≤ \color{green}x \color{orange}≤\color{green} b'],'verticalAlignment','Bottom','horizontalAlignment','Center','texmode','on');
 end
 if  strcmp(get_param(gcbh, 'ShowOutp2'), 'on')
     text(0.5,0.53,['\fontsize{10}\color{green}a \color{orange}< \color{green}x \color{orange}≤ \color{green}b'],'verticalAlignment','Bottom','horizontalAlignment','Center','texmode','on');
 end
 if  strcmp(get_param(gcbh, 'ShowOutp3'), 'on')
     text(0.5,0.28,['\fontsize{10}\color{green}a \color{orange}≤ \color{green}x \color{orange}< \color{green}b'],'verticalAlignment','Bottom','horizontalAlignment','Center','texmode','on');
 end
  if  strcmp(get_param(gcbh, 'ShowOutp4'), 'on')
     text(0.5,0.05,['\fontsize{10}\color{green}a \color{orange}< \color{green}x \color{orange}< \color{green}b'],'verticalAlignment','Bottom','horizontalAlignment','Center','texmode','on');
 end

Parameter & Dialog:

Initialization:

set_param(gcb, 'MaskSelfModifiable', 'on');
prtnum = 0;
if   strcmp(get_param(gcbh, 'ShowOutp1'), 'on')
	 replace_block([gcb '/flg1'],'Terminator','Outport','noprompt');
     prtnum = prtnum +1;
     set_param([gcb '/flg1'],'Port',num2str(prtnum));
 else
	 replace_block([gcb '/flg1'],'Outport','Terminator','noprompt');
 end
 if  strcmp(get_param(gcbh, 'ShowOutp2'), 'on')
	 replace_block([gcb '/flg2'],'Terminator','Outport','noprompt');
     prtnum = prtnum +1;
     set_param([gcb '/flg2'],'Port',num2str(prtnum));
 else
	 replace_block([gcb '/flg2'],'Outport','Terminator','noprompt');
 end
 if  strcmp(get_param(gcbh, 'ShowOutp3'), 'on')
	 replace_block([gcb '/flg3'],'Terminator','Outport','noprompt');
     prtnum = prtnum +1;
     set_param([gcb '/flg3'],'Port',num2str(prtnum));     
 else
	 replace_block([gcb '/flg3'],'Outport','Terminator','noprompt');
 end
  if  strcmp(get_param(gcbh, 'ShowOutp4'), 'on')
	 replace_block([gcb '/flg4'],'Terminator','Outport','noprompt');
     prtnum = prtnum +1;
     set_param([gcb '/flg4'],'Port',num2str(prtnum));      
 else
	 replace_block([gcb '/flg4'],'Outport','Terminator','noprompt');
 end

Documentation:

最终效果:

 输出可以针对边界进行选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值