Линеаризуйте основанные на событии подсистемы (внешне запланированные подсистемы)

Линеаризация основанных на событии подсистем

Основанные на событии подсистемы (триггируемые подсистемы) и другие основанные на событии модели требуют специальной обработки во время линеаризации.

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

Примером основанной на событии подсистемы является механизм внутреннего сгорания (IC). Когда поршень механизма приближается к верхней части рабочего хода, искра вызывает сгорание. Синхронизация искры для сгорания зависит от скорости и положения коленчатого вала механизма.

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

Подходы для линеаризации основанных на событии подсистем

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

  • Смешанная средняя модель, которая аппроксимирует основанное на событии поведение в зависимости от времени.

  • Подсистема вызова периодической функции, с Нормальным режимом симуляции.

    В случае подсистем вызова периодической функции подсистема линеаризует к выборке, при которой периодически выполняется подсистема.

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

Если переделка основанной на событии динамики не приводит к хорошим результатам линеаризации, пробует оценку частотной характеристики. См., что Оценочная Частотная характеристика Использует Model Linearizer.

Примечание

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

Аппроксимируйте основанные на событии подсистемы Используя Curve Fitting (средняя глыбой модель)

В этом примере показано, как использовать аппроксимирование кривыми, чтобы аппроксимировать основанную на событии динамику механизма.

scdspeed модель линеаризует, чтобы обнулить потому что scdspeed/Throttle & Manifold/Intake Manifold триггируемая подсистема события.

Можно аппроксимировать основанную на событии динамику scdspeed/Throttle & Manifold/Intake Manifold подсистема путем добавления блока Convert to mass charge в подсистеме.

Блок Convert to mass charge аппроксимирует отношение между Воздушным Зарядом, Разнообразным Давлением и Скоростью вращения двигателя как квадратичный полином.

Air Charge = p1×Engine Speed + p2×Manifold Pressure + p3×(Manifold Pressure)2+ p4×Manifold Pressure×Engine Speed + p5

Если результаты измерений для внутренних сигналов не доступны, используйте данные моделирования из исходной модели, чтобы вычислить неизвестные параметры p1, p2, p3, p4, и p5 с помощью метода выравнивания методом наименьших квадратов.

Когда у вас есть результаты измерений для внутренних сигналов, можно использовать Simulink® Программное обеспечение Design Optimization™, чтобы вычислить неизвестные параметры. Смотрите Оценку Параметра модели Скорости вращения двигателя (Simulink Design Optimization), чтобы узнать больше о вычислении параметров модели, линеаризации этой аппроксимированной модели и разработке обратной связи, которой управляют для линейной модели.

Следующая фигура сравнивает симуляции исходной основанной на событии модели и аппроксимированной модели. Каждый из импульсов соответствует ступенчатому изменению в скорости вращения двигателя. Размер ступенчатого изменения между 1 500 и 5500. Таким образом можно использовать аппроксимированную модель, чтобы точно симулировать и линеаризовать механизм между 1 500 об/мин и 5 500 об/мин.

Аппроксимируйте основанную на событии динамику Используя подсистему вызова периодической функции

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

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

mdl = 'scdPeriodicFcnCall';
open_system(mdl)

Линеаризуйте модель в рабочей точке модели.

io = getlinio(mdl);
linsys = linearize(mdl,io)
linsys =
 
  D = 
                 Desired  Wat
   Water-Tank S             0
 
Static gain.

Линеаризация является нулем, потому что подсистема не является вызовом периодической функции.

Откройте блок Externally Scheduled Controller, который является блоком Function-Call Subsystem.

Откройте функциональный блок и сконфигурируйте его.

  • Установите параметр типа Шага расчета на periodic.

  • Установите параметр Шага расчета на 0.01, который является шагом расчета контроллера.

В качестве альтернативы можно сконфигурировать функциональный блок программно с помощью следующего кода.

block = 'scdPeriodicFcnCall/Externally Scheduled Controller/function';
set_param(block,'SampleTimeType','periodic')
set_param(block,'SampleTime','0.01')

Линеаризуйте модель.

linsys2 = linearize(mdl,io);
bode(linsys2)

Figure contains 2 axes objects. Axes object 1 with title From: Desired Water Level To: Water-Tank System contains an object of type line. This object represents linsys2. Axes object 2 contains an object of type line. This object represents linsys2.

Линеаризация больше не является нулем.

Похожие темы