matlab给s-function改,simulink模块参数用s-function修改问题

simulink一个集成模块,我想把其中三个参数修改成可以控制的随时间变化的量。然后写了s-function,在simulink和m文件中

都定义了全局变量,用set_param设置。但是simulink跑出来后,这三个参数仍然不受s-function控制。网上的帖子都看了一遍,逐一修改后还是不知道

哪里出了问题,求各位大神指路。

程序和模型可以发给大神帮忙修正!

function [sys,x0,str,ts] = sfcn_parameter(t,x,u,flag)

switch flag,

case 0,   %初始化

[sys,x0,str,ts]=mdlInitializaSizes();

case 1,

sys= mdlOutputs(t,x,u);

case { 2, 3 ,4, 9 }

sys = [];

otherwise

error(['Unhandled flag = ',num2str(flag)]);

end

function [sys,x0,str,ts] = mdlInitializaSizes()

sizes = simsizes;

sizes.NumContStates  = 0;

sizes.NumDiscStates  = 0;

sizes.NumOutputs     = 3;  %对应s-funtion输出数目

sizes.NumInputs      = -1;  %对应s-function输入数目,这里u就是输入,对应仿真时间

sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1;

sys = simsizes(sizes);

global PloadA PloadB PloadC;

PloadA = 7e6;

PloadB = 7e6;

PloadC = 7e6;

x0  = [];

str = [];

ts  = [-1 0];

function sys=mdlOutputs(t,x,u)

global PloadA PloadB PloadC;

if  u<=0.1

PloadA = 7e6;

PloadB = 7e6;

PloadC = 7e6;

elseif  0.1

PloadA = 7.1e6+randn(1);

PloadB = 7e6+randn(1);

PloadC = 7e6+randn(1);

else  u>0.4

PloadA = 7e6+10e4*randn(1);  % u就是输入,仿真时间,可以自己加判断语句在特定时刻修改PloadA

PloadB = 7e6+10e4*randn(1);

PloadC = 7e6+10e4*rand(1);

end

set_param('Diff_deltaCurrent_Three_1017/delta connected active load','PloadA',num2str(PloadA));% 修改模型中参数

set_param('Diff_deltaCurrent_Three_1017/delta connected active load','PloadB',num2str(PloadB));% 修改模型中参数

set_param('Diff_deltaCurrent_Three_1017/delta connected active load','PloadC',num2str(PloadC));% 修改模型中参数

sys = [PloadA PloadB PloadC];

2017-10-18 10:59 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

15dd8704c6b2076839ac34af7a262adb.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值