Трехфазная синхронная система управления регулятора машины

Этот скрипт в качестве примера показывает, как можно линеаризовать модель Simscape™ Electrical™, чтобы поддержать анализ и проектирование устойчивости системы управления. Это использует модель в качестве примера ee_sm_governor_control_design.

Альтернативный и рекомендуемый способ линеаризовать Simulink® и модели Simscape состоит в том, чтобы использовать Simulink Control Design™. Simulink Control Design линеаризует вашу модель в рабочих точках, которые вы задаете. Это также возвращает объект модели в пространстве состояний с именами состояния. Если вы имеете Simulink Control Design в наличии, открываете модель ee_sm_governor_control_design, и от панели инструментов выбирают Analysis-> Control Design-> Linear Analysis. Затем выберите Linearize At... из меню Operating Point и установите время снимка состояния симуляции на 4 секунды. Наконец нажмите значок Bode на панели инструментов.

Открытая модель

Откройте модель.

open_system('ee_sm_governor_control_design')

Модель для обрезки

Обрежьте модель путем выполнения с обратной связью и выбора состояния в 4 секунды, когда генератор будет в установившемся.

assignin('base','ClosedLoop',1); % Close the speed-control feedback loop
[t,x,y] = sim('ee_sm_governor_control_design');
idx = find(t>4,1);
X = x(idx,:); U = y(idx);

Линеаризуйте обратную связь регулировки скорости

Откройте обратную связь регулировки скорости, линеаризуйте модель и закройте обратную связь регулировки скорости.

assignin('base','ClosedLoop',0); % Open the speed-control feedback loop
[a,b,c,d]=linmod('ee_sm_governor_control_design',X,U);
assignin('base','ClosedLoop',1); % Close the speed-control feedback loop

Диаграмма Боде

Постройте диаграмму Боде.

c = -c; d = -d; % Negative feedback convention
npts = 100; w = logspace(-3,5,npts); G = zeros(1,npts);
for i=1:npts
    G(i) = c*(1i*w(i)*eye(size(a))-a)^-1*b +d;
end
figure
ax1 = subplot(2,1,1);
semilogx(w,20*log10(abs(G)))
grid on
ylabel('Magnitude (dB)')
title('Bode diagram: speed-control feedback loop')
ax2 = subplot(2,1,2);
semilogx(w,180/pi*unwrap(angle(G)))
ylabel('Phase (degrees)')
xlabel('Frequency (rad/s)')
linkaxes([ax1,ax2],'x')
xlim(w([1 end]))
grid on

Для просмотра документации необходимо авторизоваться на сайте