Изменение уровня возмущения блоков, возмущенных во время линеаризации

Блоки, которые не имеют предварительно запрограммированных аналитических якобианов, линеаризируются с помощью численного возмущения. Вы можете изменить размер состояния и уровни возмущения входного сигнала для вашего приложения.

Изменение уровня возмущения блока

В этом примере показано, как изменить уровень возмущения на блок Magnetic Ball Plant в модели магбола. Изменение уровня возмущения изменяет результаты линеаризации.

Для этой модели значение состояния и входного сигнала являются значениями двойной точности. Размер возмущения по умолчанию для состояния и входных сигналов в этой модели, 10-5(1+|x|), где x - значение рабочей точки возмущенного состояния или входного сигнала.

Откройте модель перед изменением уровня возмущения.

open_system('magball')

Измените уровень возмущения состояний на 10-7(1+|x|), где x - значение состояния.

blockname = 'magball/Magnetic Ball Plant';
set_param(blockname,'StatePerturbationForJacobian','1e-7');

Чтобы изменить уровень возмущения входного сигнала для этого блока на 10-3(1+|x|), где x является значением входного сигнала, сначала получите указатели на порт блока и получите указатель на вход значение порта.

ph = get_param(blockname,'PortHandles');
p_in = ph.Inport(1);

Затем установите уровень возмущения порта входа.

set_param(p_in,'PerturbationForJacobian','1e-3');

Чтобы получить уровень возмущения тока для состояний блока, используйте следующий код.

statePerturb = get_param(blockname,'StatePerturbationForJacobian');

Чтобы получить уровень возмущения тока для входных сигналов блока, используйте следующий код.

inputPerturb = get_param(p_in,'PerturbationForJacobian');

Когда соответствующее состояние или уровень возмущения входного сигнала находится на своем значении по умолчанию, оба statePerturb и inputPerturb являются 'auto'.

Уровни возмущения по умолчанию

Размер возмущения по умолчанию для состояний двойной точности и входных сигналов, 10-5(1+|x|), где x - значение рабочей точки возмущенного состояния или входного сигнала. Для состояний с одной точностью и входных сигналов, размер возмущения по умолчанию является 0.005(1+|x|).

Чтобы восстановить уровень возмущения по умолчанию для состояний блока, используйте следующий код.

set_param(blockname,'StatePerturbationForJacobian','auto');

Чтобы восстановить уровень возмущения по умолчанию для входных сигналов блоков, используйте следующий код.

set_param(p_in,'PerturbationForJacobian','auto');

Уровни возмущения целочисленных блоков

Пользовательский блок, который требует целого числа портов входа для индексации, может иметь проблемы с линеаризацией, когда блок не поддерживает небольшие возмущения в вход значении. Чтобы исправить проблему, попробуйте задать уровень возмущения такого блока на нуль, который устанавливает линеаризацию блока на коэффициент усиления 1.

См. также

Похожие темы