恢复表单part 1
代表系统的基本方案:
我们假设两个轴的连接是用离合器完成的
方程:
• J1*dw1/dt + Td(w12)+Ts(phi12) = T1;
• J2*dw2/dt - Td(w12) -Ts(phi12) = T2;
where w1 = dphi1/dt,
w2 = dphi2/dt,
phi12 = phi1 - phi2
w12 = w1 - w2
Td(w12) = c12 * w12
Ts(phi12) = ks * phi12
c12 and ks are some coefficients
• dphi12/dt = w12
• dw12/dt = T1/J1 - T2/J2 - Td(w12)/Jeq - Ts(phi12)/Jeq
ccr = 2*Jeq*wn
wn = sqrt(ks/Jeq)
Jeq = (J1*J2)/(J1+J2)
T1(t) = T0*1(t), T0 = 1 T2(t) = 0
J1+J2 = 10 wn = 100 rad/s c12 = 0 Ts(phi12) = ks*phi12
我的第二个任务是绘制非线性离合器如何影响转动惯量。
鉴于:
T1(t) = T0*1(t), T0 = 1, T2(t) = 0,
J1 = J2 = 5, c12 = 0, wn = 100,
Ts(phi12) = k1*phi12 + k2*(phi12)^3
k20 = 10e14, k2 = [10e-6 10e-5 10e-4 10e-3 10e-2 10e-1 10e0 10e1 10e2 10e3 10e4]
我需要绘制Tsmax/T0 = f(log(k2/k20))
;
到目前为止,我的进展是:
MATLAB代码
T2 = 0;
J1 = 5;
J2 = J1;
wn = 100;
Jz = J1.*J2/(J1+J2);
ckr = 2.*Jz*wn;
ks = (wn^2)*Jz;
c12 = 0;
k20 = 10e14;
k2 = [10e-6 10e-5 10e-4 10e-3 10e-2 10e-1 10e0 10e1 10e2 10e3 10e4];
Tsmax = zeros(size(k2));
k2a = 0;
plpl = zeros(size(k2));
k1 = 1;
sim ('model_2');
for ii=1:length(k2)
k2a = k2(ii);
sim ('model_2');
Tsmax(ii) = max(Ts);
plpl(ii) = log(k2a/k20);
end
figure()
plot(plpl,Tsmax)
grid on
产生
和Simulink模型:
嗯,我确定我的情节不应该是它的样子。
答案 0 :(得分:0)
一些观点/建议:
K2a
对Simulink模型进行参数化(除非我从截图中看不到很好),但它没有在任何地方定义。您在代码中定义k2a
,但MATLAB区分大小写,因此它与K2a
不同。Fcn1
区块没有做任何事情,你可以摆脱它。除此之外,我并没有看到你所做的事情有什么不妥,我们不知道你的情节应该是什么样的,所以我们不能真正帮助你,而不是我害怕。
修改强>:
我认为这就是你的情节应该是什么样子。我在Octave中尝试过它,只使用MATLAB代码&使用logspace
的颂歌解算器(没有Simulink),以便在10^(-6)
和10^4
之间有50个数据点对数空间,并得到非常相似的东西。
我认为您使用较大的k2
值来解决数值刚度问题,因此我建议使用ode15s
和最大步长1e-4
。这可能需要更长的时间才能运行,但是当系统在数字上僵硬时,您可能会避免出现数值问题。