exponenta event banner

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

  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. Дважды щелкните по блоку внешнего запланированного контроллера (Function-Call Subsystem).

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

  4. Задать тип времени образца как periodic.

    Оставьте значение времени выборки равным 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);

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

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

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

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

Блок Преобразовать в массовый заряд (Convert to mass charge) аппроксимирует взаимосвязь между воздушным зарядом, давлением в коллекторе и частотой вращения двигателя как квадратичным многочленом.

Воздушный заряд = p1 ×  частота вращения двигателя + p2 ×   давление в манифольде + p3 × (давление в манифольде)  2 + p4 × давление в манифольде ×   частота вращения двигателя + p5

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

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

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

Связанные темы