我怎么能使用matlab函数fcn块吗
31日视图(30天)
显示旧的评论
你好,
例如当我写基本的弹簧阻尼方程,我有错误。在fcn块,写(1 / m2) * (k1 * (u (3) - u (1)) + k2 * (u (3) - u (5)) + c1 * (u (4) - u (2)) + c2 * (u (4) - u (6)))。我怎么能使用matlab函数fcn块吗?
函数y = fcn (u)
m2 = 40;
c1 = 1000;
c2 = 0;
k1 = 13000;
k2 = 220000;
y = (1 / m2) * (k1 * (u (3) - u (1)) + k2 * (u (3) - u (5)) + c1 * (u (4) - u (2)) + c2 * (u (4) - u (6)));
结束
接受的答案
Sulaymon Eshkabilov
2023年2月17日
有一个丢失块从导数的阶跃输入信号。注意,使用导数块不推荐使用,可能导致不稳定的结果。
另一个重要的观点是,阻尼系数c = 0,然后如果c2 = c1,系统响应会变得阻尼否则振动相当长一段时间。你应该调整刚度和MATLAB Fcn块adamping系数值。
相对公差也收紧了(1)的军医在模型中设置。
参阅附上的两个修正模型。
愿一切都好!
这里是仿真结果:
S = sim卡(“M_Fcn_万博1manbetxSimulink.slx”);
情节(S.ScopeData {1} . values。时间,S.ScopeData {1} .Values.Data,的r -)
0评论
更多的答案(4)
Sulaymon Eshkabilov
2023年2月17日
MATLAB Fcn块可以嵌入-请看附呈仿真软件模型的练习做了一些调整。万博1manbetx它的工作原理非常好。有一个importnat的观点是,在MATLAB fcn忽视语法——MATLAB fcn块的看到下面的语法:
函数y = fcn (u1, u2, u3,愉快,u5, u6)
m2 = 40;
c1 = 1000;
c2 = 0;
k1 = 13000;
k2 = 220000;
y = (1 / m2) * (k1 *(就是u1) + k2 * (u3-u5) + c1 * (u4-u2) + c2 * (u4-u6));
结束
保罗
2023年2月18日
嗨titor7,
这个问题可以通过两种方式解决。“干净”的方法是双击Matlab功能块,转到功能选项卡,然后单击“编辑数据。”On the Symbols pane click on 'y' and in the Property Inspector change the Size from - 1, which means inherited, to 1. Do the same for the other Matlab Function block.
最快速的方法是将一行代码添加到Matlab功能块强制解析器承认y是一个标量。像这样
函数y = fcn (u)
y = 0;% y定义为一个标量
m2 = 40;
c1 = 1000;
c2 = 0;
k1 = 13000;
k2 = 220000;
y = (1 / m2) * (k1 * (u (3) - u (1)) + k2 * (u (3) - u (5)) + c1 * (u (4) - u (2)) + c2 * (u (4) - u (6)));
结束
函数y = fcn (u)
y = 0;% y定义为一个标量
m1 = 290;
c1 = 1000;
k1 = 13000;
% y = (1 / m1) [(k1 * (u1-u3)) + (c1 * (u2-u4)];
y = (1 / m1) * (k1 * (u (1) - u (3))) + (c1 * (u (2) - u (4)));
结束
你仍然必须解决如何近似阶跃函数的导数,但至少现在模型的更新和运行。