1、函数关系【开度—匀速度】【开度—启动时间】【开度变化—运动时间】
输入开度和最终液压阀转动速度之间的关系:
开度和启动时间之间的关系:
启动之后,开度变化与时间的关系
2、实现流程
Simulink框架
之前用S-function表示这个模型的总是理不清时序逻辑,因为有很多参数受到上一时刻的影响,如果把输出端的数据重新引进输入端,出了各种错误**。后面才意识到可以用全局变量来解决,
如何在Simulink里面添加全局变量参考这篇文章,除了在代码里面申明Global参数以外,还要添加数据存储模块才可以用。
Simulink中matlab Function模块全局变量的使用方法总结
Fcn函数的代码:
function y = fcn(u)
global t_start; % Edit Data中设置初值为零
global C_before;% Edit Data中设置初值为零
global w0 w delt vel
t = u(1);
C = u(2);
if C ~= C_before
w0=vel;
t_start = t;
% 获得w参数
if C<=0.2
w = 0;
else
w = 3.28168377*C-0.656336753;
end
% 获得时间间隔delt参数
if w0 ==0
if C<= 0.2
delt = 0;
elseif C>0.2&&C<=0.45
delt = -20*C+12;
else
delt = 3;
end
else
if abs(C-C_before)<0.2
delt = 20*abs(C-C_before);
else
delt = 4;
end
end
end
% 根据处于的阶段确定速度
if t-t_start < delt
vel = (w -w0)/delt * (t-t_start)+w0;
else
vel = w;
end
if C ~= C_before
C_before = C;
end
y = vel;
结果显示,