В этом примере показано, как объединить Stateflow ® и Simulink ® для эффективного моделирования гибридных систем. Этот тип моделирования особенно полезен для систем, которые имеют многочисленные возможные режимы работы, основанные на дискретных событиях. Традиционный поток сигналов обрабатывается в Simulink, а изменения в конфигурации управления реализуются в Stateflow. Описанная ниже модель представляет систему управления топливом для бензинового двигателя. Система очень надежна в том, что обнаруживаются отдельные отказы датчиков и система управления динамически реконфигурируется для бесперебойной работы.
Физические и эмпирические отношения составляют основу динамики дроссельного и впускного коллектора этой модели. Соотношение воздух-топливо вычисляется делением массового расхода воздуха (перекачиваемого из впускного коллектора) на массовый расход топлива (впрыскиваемого в клапаны). Идеальное (т.е. стехиометрическое) соотношение смеси обеспечивает хороший компромисс между мощностью, экономией топлива и выбросами. Целевое соотношение воздух-топливо для этой системы составляет 14,6. Обычно датчик определяет количество остаточного кислорода, присутствующего в выхлопном газе (ЭГО). Это дает хорошую индикацию соотношения смесей и обеспечивает измерение обратной связи для управления с замкнутым контуром. Если датчик показывает высокий уровень кислорода, закон управления увеличивает расход топлива. Когда датчик обнаруживает обогащенную топливом смесь, соответствующую очень низкому уровню остаточного кислорода, контроллер уменьшает расход топлива.
На рисунке 1 показан верхний уровень модели Simulink. Чтобы открыть модель, щелкните Открыть модель (Open Model). Для запуска моделирования нажмите кнопку «Воспроизведение» на панели инструментов окна модели. Модель загружает необходимые данные в рабочее пространство модели из sldemo_fuelsys_data.m. Модель регистрирует релевантные данные в рабочей области MATLAB в структуре данных с именем sldemo_fuelsys_output и передает данные в инспектор данных моделирования. Регистрируемые сигналы помечаются синим индикатором, а потоковые сигналы - светло-синим значком (см. рис. 1).
Обратите внимание, что при загрузке начальных условий в рабочую область модели данные моделирования изолированы от данных в других открытых моделях. Это также помогает избежать загромождения рабочей области MATLAB. Чтобы просмотреть содержимое рабочего пространства модели, выберите Моделирование (Modeling) > Обозреватель моделей (Model Explorer) и щелкните Рабочее пространство модели (Model Workspace) в списке Иерархия модели (Model Hierarchy).
Обратите внимание, что единицы измерения отображаются на значках модели и подсистемы и сигнальных линиях. Единицы измерения указываются на портах и на объекте шины.

Рисунок 1 - Схема верхнего уровня модели топливорегулирующей системы
Подсистема приборной панели (показана на рис. 2) позволяет взаимодействовать с моделью во время моделирования. Переключатели Fault Injection могут быть перемещены из положения Normal to Fail для моделирования отказов датчиков, в то время как переключатель Engine Speed (частота вращения двигателя) может быть переключен для изменения частоты вращения двигателя. Сигналы соотношения топлива и воздуха и топлива визуализируются с помощью измерительных приборов и пространств для обеспечения визуальной обратной связи во время имитационного прогона.

Рисунок 2: Подсистема приборной панели для модели системы регулирования расхода топлива
Для определения расхода топлива, который дает стехиометрическую смесь, fuel_rate_control использует сигналы от датчиков системы. Расход топлива комбинируется с фактическим потоком воздуха в модели динамики газа двигателя для определения результирующего соотношения смеси, измеренного на выхлопе.
Можно выборочно отключить каждый из четырех датчиков (угол дроссельной заслонки, скорость, EGO и абсолютное давление в коллекторе [MAP]) с помощью ползунковых переключателей в подсистеме приборной панели для моделирования отказов. Simulink выполняет это, связывая ползунок переключается на параметр значения блока констант. Дважды щелкните подсистему пульта управления, чтобы открыть пульт управления для изменения положения переключателя. Аналогично, можно вызвать состояние отказа при высокой частоте вращения двигателя, включив переключатель частоты вращения двигателя в подсистеме приборной панели. Блок повторяющейся таблицы обеспечивает ввод угла дроссельной заслонки и периодически повторяет последовательность данных, указанных в маске.
Блок fuel_rate_control, показанный на фиг.3, использует входные сигналы датчика и сигналы обратной связи для регулировки расхода топлива для получения стехиометрического отношения. Для реализации этой стратегии модель использует три подсистемы: логику управления, расчет воздушного потока и расчет топлива. При нормальной работе модель оценивает расход воздуха и умножает оценку на величину, обратную желаемому соотношению, чтобы получить расход топлива. Обратная связь от датчика кислорода обеспечивает замкнутую регулировку оценки скорости для поддержания идеального соотношения смеси.

Рис. 3: Подсистема регулятора расхода топлива
Одна диаграмма Stateflow, состоящая из набора из шести параллельных состояний, реализует логику управления целиком. Четыре параллельных состояния, показанные в верхней части фиг.4, соответствуют четырем отдельным датчикам. Остальные два параллельных состояния в нижней части рассматривают состояние четырех датчиков одновременно и определяют общий режим работы системы. Модель синхронно вызывает всю диаграмму Stateflow с регулярным интервалом времени выборки 0,01 сек. Это позволяет своевременно тестировать условия перехода в правильный режим.
Чтобы открыть диаграмму control_logic Stateflow, дважды щелкните ее в подсистеме fuel_rate_control.

Рис. 4: Логическая схема управления
Когда начинается выполнение, все состояния начинаются в их normal режим за исключением кислородного датчика (ЭГО). O2_warmup состояние вводится первоначально до завершения периода прогрева. Система обнаруживает отказы дросселя и датчика давления, когда их измеренные значения выходят за пределы номинальных диапазонов. Вакуум в коллекторе при отсутствии сигнала скорости указывает на отказ датчика скорости. Датчик кислорода также имеет номинальный диапазон для условий отказа, но, поскольку ноль является и минимальным уровнем сигнала, и нижней частью диапазона, отказ может быть обнаружен только тогда, когда он превышает верхний предел.
Независимо от того, какой датчик неисправен, модель всегда генерирует направленную трансляцию событий Fail.INC. Таким образом, срабатывание логики отказа универсального датчика не зависит от датчика. Модель также использует соответствующее событие восстановления датчика, Fail.DEC. Fail состояние отслеживает количество неисправных датчиков. Приращение счетчика на каждом Fail.INC события и уменьшения для каждого события Fail.DEC. Модель использует сверхсостояние, Multi, для группирования всех случаев отказа нескольких датчиков.
Нижнее параллельное состояние представляет собой режим заправки двигателя топливом. Если один датчик выходит из строя, работа продолжается, но смесь воздух/топливо богаче, чтобы обеспечить более плавную работу при более высоких затратах на выбросы. Если отказало более одного датчика, двигатель отключается в качестве меры безопасности, поскольку соотношение воздух/топливо не может надежно регулироваться.
Во время прогрева кислородного датчика модель поддерживает смесь на нормальном уровне. Если это неудовлетворительно, можно изменить конструкцию, переместив состояние прогрева в Rich_Mixture сверхгосударство. Если отказ датчика происходит во время периода прогрева, Single_Failure состояние вводится по истечении времени прогрева. В противном случае Normal в это время активируется состояние.
В модель добавлен защитный элемент превышения скорости путем создания нового состояния в Fuel_Disabled сверхгосударство. Используя соединения истории, мы заверили, что диаграмма возвращается в соответствующее состояние, когда модель выходит из состояния превышения скорости. По мере уточнения требований безопасности для двигателя мы можем добавить дополнительные состояния останова к Fuel_Disabled сверхгосударство.
При сбое датчика модель вычисляет оценку датчика. Например, откройте расчет датчика давления. При нормальной работе датчика модель использует значение датчика давления. В противном случае модель оценивает значение.

Модель вычисляет оценку давления в коллекторе как функцию частоты вращения двигателя и положения дросселя. Для вычисления значения модель использует функцию Simulink в Stateflow.

Блок расчета воздушного потока (показан на рис. 6) является местом расположения центральных законов управления. Этот блок находится внутри подсистемы fuel_rate_control (откройте этот блок). Блок оценивает поток всасываемого воздуха для определения расхода топлива, который дает соответствующее соотношение воздух/топливо. Управление по замкнутому контуру регулирует оценку в соответствии с обратной связью по остаточному кислороду, чтобы поддерживать точное соотношение смеси. Даже если неисправность датчика требует работы с разомкнутым контуром, последняя настройка с замкнутым контуром сохраняется для наилучшего выполнения задач управления.

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






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







Рис. 7: Подсистема динамики газа двигателя

Рис. 8: Блок смешивания и сжигания в подсистеме динамики газа двигателя
Нелинейный датчик кислорода (блок датчика EGO) находится внутри блока смешивания и сжигания (см. рис. 8) в подсистеме динамики газа двигателя (см. рис. 7). EGO Sensor моделируется как гиперболическая касательная функция и обеспечивает значимый сигнал, когда он находится вблизи 0,5 В. Таким образом, необработанная ошибка в контуре обратной связи обнаруживается с пороговым значением переключения, как указано в уравнении 2. Если соотношение воздух-топливо низкое (смесь обедненная), первоначальная оценка воздуха слишком мала и должна быть увеличена. И наоборот, когда выходной сигнал датчика кислорода высок, оценка воздуха слишком велика и должна быть уменьшена. Интегральное управление используется так, чтобы поправочный член достигал уровня, который приводит к нулевой стационарной ошибке в соотношении смеси.
Обычный режим работы по замкнутому контуру LOW динамически настраивает интегратор для минимизации ошибки. Интеграция выполняется в дискретное время с обновлениями каждые 10 миллисекунд. Однако при работе в режимах отказа RICH или O2 ошибка обратной связи игнорируется, и интегратор удерживается. Это дает наилучшую коррекцию на основе последней действительной обратной связи.
Подсистема fuel_calc (в подсистеме fuel_rate_control, см. рис. 9) устанавливает сигнал инжектора в соответствии с расчетами расхода воздуха и состоянием неисправности. Первым входным сигналом является вычисленная оценка воздушного потока. Это умножается на целевое соотношение топливо/воздух для получения заданного расхода топлива. Обычно цель является стехиометрической, т.е. равна оптимальному соотношению воздуха и топлива 14,6. При возникновении неисправности датчика управляющая логика Stateflow устанавливает на входе режима значение 2 или 3 (RICH или DISABLED), так что смесь либо немного богата стехиометрией, либо полностью отключается.

Рис. 9: Подсистема fuel_calc
В подсистеме fuel_calc (рис. 9) используется регулируемая компенсация (рис. 10) для достижения различных целей в различных режимах. При нормальной работе компенсация фазового вывода сигнала коррекции обратной связи добавляет запас устойчивости по замкнутому контуру. Однако в режиме RICH и при отказе датчика EGO (разомкнутая петля) составной топливный сигнал фильтруется на низких частотах для ослабления шума, введенного в процесс оценки. Конечным результатом является сигнал, представляющий расход топлива, который в реальной системе будет преобразован в импульсы инжектора.

Рис. 10: Переключаемая компенсационная подсистема

Результаты моделирования показаны на фиг.11 и фиг.12. Моделирование выполняется с дроссельным входом, который отклоняется от 10 до 20 градусов в течение двух секунд, затем возвращается к 10 градусам в течение следующих двух секунд. Этот цикл повторяется непрерывно, пока двигатель удерживается на постоянной скорости, так что пользователь может экспериментировать с различными условиями отказа и режимами отказа. Щелкните переключатель неисправности датчика в подсистеме приборной панели, чтобы смоделировать отказ соответствующего датчика. Повторите эту операцию, чтобы сдвинуть переключатель для нормальной работы.

Рисунок 11: Сравнение расхода топлива при различных отказах датчиков
На рисунке 11 сравнивается расход топлива в безаварийных условиях (базовая линия) с расходом, применяемым при наличии единичного отказа в каждом датчике по отдельности. В каждом случае следует отметить нелинейное соотношение между расходом топлива и командой треугольного дросселя (показано на рисунке 13). В базовом случае расход топлива жестко регулируется, проявляя небольшую пульсацию вследствие коммутационного характера входной схемы ЭГО-датчика. В других четырех случаях система работает по разомкнутому контуру. Стратегия управления доказала свою эффективность в поддержании правильного профиля топлива в режиме единичного отказа. В каждом из состояний неисправности расход топлива составляет, по существу, 125% от базового расхода, что соответствует расчетной цели 80%.

Рис. 12: Сравнение соотношения воздуха и топлива при различных отказах датчиков
Фиг.12 изображает соответствующее соотношение воздух/топливо для каждого случая. На графике базовой линии показаны эффекты работы с замкнутым контуром. Соотношение смеси регулируется очень жестко до стехиометрической цели 14,6. Богатое соотношение смесей показано на четырех нижних графиках фиг.12. Хотя они жестко не регулируются, как в случае с замкнутым контуром, они аппроксимируют цель воздух/топливо (0,8 * 14,6 = 11,7).

Рис. 13: Команда «Дроссель»
Переходное поведение системы показано на фиг.14. При постоянном 12 градусном угле дросселя и системе в установившемся состоянии отказ дросселя вводят при t = 2 и корректируют при t = 5. При наступлении отказа расход топлива немедленно увеличивается. Эффекты наблюдаются на выхлопе, когда богатое соотношение распространяется через систему. Установившееся состояние затем быстро восстанавливается, когда восстанавливается работа по замкнутому контуру.

Рис. 14: Переходная реакция на обнаружение неисправности
Если включить анимацию в отладчике Stateflow, переходы состояний подсвечиваются на диаграмме Stateflow (см. рис. 4), когда активируются различные состояния. Последовательность активации обозначается изменением цветов. Эта тесно связанная синергия между Stateflow и Simulink способствует моделированию и разработке полных систем управления.