Я хочу смоделировать выход определенной зубчатой системы, которая у меня есть. То, как выглядит зубчатая передача, не имеет особого значения для задачи, мне удалось получить необходимое дифференциальное уравнение из механической системы. Вот код, который у меня есть
% parameters
N2 = 90;
N1 = 36;
Jn1 = 0.5;
Jn2 = 0.8;
J2 = 2;
D = 8;
K = 5;
J = (N2/N1)^2 * Jn1 + Jn2 + J2;
% define the system
sys = ss([0 1; -K/J -D/J], [0; N2/(N1*J)], [1 0], 0);
% initial state: (position, velocity) [rad; rad/s]
x0 = [0; 0];
% define the time span
t = linspace(0, 15, 10000)';
% define the input step
T1 = zeros(length(t), 1);
T1(t>=0) = 1;
% compute the system step response at once
theta1 = lsim(sys, T1, t, x0);
% compute the system response as aggregate of the forced and unforced
% temporal evolutions
theta2 = lsim(sys, T1, t, [0; 0]) + initial(sys, x0, t);
% plot results
figure('color', 'white');
hold on;
yyaxis left;
plot(t, T1, '-.', 'linewidth', 2);
ylabel('[N]');
yyaxis right;
plot(t, theta1, 'linewidth', 3);
plot(t, theta2, 'k--');
xlabel('t [s]');
ylabel('[rad]');
grid minor;
legend({'$T_1$', '$\theta_1$', '$\theta_2$'}, 'Interpreter', 'latex',...
'location', 'southeast');
hold off;
Это должно работать при создании графика, показывающего позиции, мои результаты, для ввода Хевисайда/шага. Мой вопрос в том, как бы я сделал это для синусоидального входа. Думаю, у меня должно быть sin(w*t)
вместо (t>=0)
, где w — частота пульса. Тем не менее, я не могу заставить эту работу работать. Любая помощь могла бы быть полезна! :)
lsim
, но разве недостаточно определитьT1
как синусоидальную волну вместо ступенчатой функции? Например,T1 = sin(2*pi*f*t + phi)
, гдеf
— нужная частота, аphi
— начальная фаза. - person Luis Mendo   schedule 03.02.2021lsim
на самом деле простая в использовании команда, в основном вы моделируете систему в MATLAB с произвольным количеством входных данных и временем. Вот полезная ссылка об этом mathworks.com/help/control/ref /lti.lsim.html Также да; достаточно определитьT1
как синусоидальную волну вместо ступенчатой функции, но по какой-то причине у меня это не работает. Я рекомендую вам использовать мой код и реализовать свое решение, дайте мне отзыв. Я запускаю свой код на R2018b - person Marx   schedule 03.02.2021