Этот пример скрипта показывает, как можно линеаризировать модель Simscape™ Electrical™ для поддержки анализа устойчивости системы и проекта. Он использует пример модели ee_sm_governor_control_design.
Синхронная Машина в этом примере работает как генератор. Машина инициализируется для запуска в периодическом установившемся состоянии для подачи нагрузки 250 MW/15 Mvar.
Альтернативным и рекомендуемым способом линеаризации моделей Simulink ® и Simscape является использование Simulink Control Design™. Simulink Control Design линеаризирует вашу модель в заданных вами рабочих точках. Он также возвращает объект модели пространства состояний с именами состояний. Если у вас есть Simulink Control Design, откройте ee_sm_governor_control_design модели. На вкладке Apps, в разделе Control Systems, нажмите Model Linearizer. В модуле Model Linearizer, на вкладке Linear Analysis, в разделе Setup, выберите Рабочая точка > Линеаризация At. Установите время моментального снимка симуляции равным 4 секундам, затем нажмите кнопку OK. В разделе Linearize нажмите Bode.
Откройте модель.
open_system('ee_sm_governor_control_design') set_param(find_system('ee_sm_governor_control_design','FindAll', 'on','type','annotation','Tag','ModelFeatures'),'Interpreter','off')
Обрезайте модель, запустив систему с обратной связью и выбрав состояние в 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
Постройте график Bode-схемы.
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