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

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

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

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

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

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

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

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

  • Объединенная средняя модель, которая аппроксимирует основанное на событиях поведение с течением времени.

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

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

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

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

Примечание

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

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

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

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

    sys = 'scdPeriodicFcnCall';
    open_system(sys)
  2. Линеаризация модели в рабочей точке модели.

    io = getlinio(sys);
    linsys = linearize(sys,io)

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

    D = 
                     Desired  Wat
       Water-Tank S             0
     Static gain.

    Теперь задайте блок Внешне Запланированный Контроллер как Подсистему Периодического Вызова Функции.

  3. Дважды кликните блок Externally Scheduled Controller (Подсистема Вызова Функций).

    Дважды кликните функциональный блок, чтобы открыть диалоговое окно Параметров блоков.

  4. Установите Sample time type как periodic.

    Оставьте значение Sample time равным 0.01, которое представляет шаг расчета вызова функции.

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

    linsys2 = linearize(sys,io)
    A = 
                            H  Integrator
       H               0.9956    0.002499
       Integrator  -0.0007774           1
     
    B = 
                   Desired  Wat
       H               0.003886
       Integrator     0.0007774
     
    C = 
                              H  Integrator
       Water-Tank S           1           0
     
    D = 
                     Desired  Wat
       Water-Tank S             0
     
    Sampling time: 0.01
    Discrete-time model.
  6. Постройте график переходной характеристики.

    step(linsys2)

  7. Закройте модель.

    bdclose(sys);

Аппроксимация основанных на событиях подсистем с использованием аппроксимирования кривыми (Lump-Average Model)

Этот пример показов, как использовать аппроксимирование кривыми для аппроксимации основанной на событиях динамики двигателя.

The 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), чтобы узнать больше о вычислениях модели, линеаризации этой приблизительной модели и разработке обратной связи, управляемой для линейной модели.

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

Похожие темы