Этот пример показывает, как объединить Stateflow ® с Simulink ®, чтобы эффективно моделировать гибридные системы. Этот тип моделирования особенно полезен для систем, которые имеют множество возможных рабочих режимов, основанных на дискретных событиях. Традиционный поток сигналов обрабатывается в Simulink, в то время как изменения в строении управления реализованы в Stateflow. Модель, описанная ниже, представляет систему управления топливом для бензинового двигателя. Система обладает высокой устойчивостью, поскольку обнаруживаются отдельные отказы датчиков, и система управления динамически перенастраивается для бесперебойной операции.
Физические и эмпирические отношения формируют базис для динамики дросселя и впускного коллектора этой модели. Вычисление состава топливно-воздушной смеси осуществляется путем деления массового расхода жидкости воздуха (откачиваемого из впускного коллектора) топливным массовым расходом жидкости (впрыскиваемой в клапаны). Идеальное (то есть стехиометрическое) соотношение смеси обеспечивает хороший компромисс между степенью, экономией топлива и выбросами. Целевой состав топливно-воздушной смеси для этой системы составляет 14,6. Обычно датчик определяет количество остаточного кислорода в выхлопном газе (ЭГО). Это дает хорошее представление о соотношении смеси и обеспечивает измерение обратной связи для регулирования с обратной связью. Если датчик указывает на высокий уровень кислорода, закон управления увеличивает расход топлива. Когда датчик обнаруживает обогащенную топливом смесь, соответствующую очень низкому уровню остаточного кислорода, контроллер уменьшает расход топлива.
Рисунок 1 показывает верхний уровень модели Simulink. Чтобы открыть модель, щелкните Открыть модель (Open Model). Нажмите кнопку Play на панели инструментов окна модели, чтобы запустить симуляцию. Модель загружает необходимые данные в рабочее пространство модели из sldemo_fuelsys_data.m
. Модель регистрирует релевантные данные в рабочем пространстве MATLAB в структуре данных sldemo_fuelsys_output
и передает данные в Данные моделирования Inspector. Зарегистрированные сигналы помечаются синим индикатором, а потоковые сигналы - светло-синим значком (см. фигуру 1).
Обратите внимание, что загрузка начальных условий в рабочее пространство модели сохраняет данные моделирования изолированными от данных в других открытых моделях, которые вы, возможно, имели открытые. Это также помогает избежать загромождения рабочего пространства MATLAB. Чтобы просмотреть содержимое рабочего пространства модели, выберите Моделирование > Model Explorer и нажатием кнопки в Рабочем пространстве модели из списка Иерархии модели.
Заметьте, что модули видны на значках модели и подсистемы и сигнальных линиях. Модули заданы для портов и объекта шины.
Фигура 1: Схема верхнего уровня для системной модели топливного регулирования
Подсистема приборной панели (показана на фигуре 2) позволяет вам взаимодействовать с моделью во время симуляции. Переключатели Fault Injection могут быть перемещены из положения Normal в положение Fail для симуляции отказов датчика, в то время как переключатель Скорость Вращения Двигателя может быть переключен, чтобы изменить скорость вращения двигателя. Сигналы соотношения топлива и воздуха к топливу визуализируются с помощью манометров приборной панели и возможностей для обеспечения визуальной обратной связи во время запуска симуляции.
Фигура 2: Подсистема приборной панели для системной модели управления топливом
fuel_rate_control использует сигналы от датчиков системы, чтобы определить расход топлива, который дает стехиометрическую смесь. Расход топлива сочетается с фактическим потоком воздуха в модели динамики газа двигателя, чтобы определить полученное соотношение смеси, измеренное на выхлопе.
Можно выборочно отключить каждый из четырех датчиков (угол дросселя, скорость, EGO и абсолютное давление манифольда [MAP]) с помощью переключателей ползунка в подсистеме приборной панели, чтобы симулировать отказы. Simulink выполняет это путем привязки переключателей ползунка к параметру значения постоянного блока. Дважды кликните подсистему панели мониторинга, чтобы открыть панель управления, чтобы изменить положение переключателя. Точно так же можно вызвать условие отказа высокой скорости вращения двигателя путем переключения переключателя скорости вращения двигателя на подсистеме приборной панели. Блок Повторяющаяся Таблица обеспечивает вход угла дросселя и периодически повторяет последовательность данных, заданных в маске.
Блок fuel_rate_control, показанный на фигура, использует входные сигналы датчика и сигналы обратной связи, чтобы настроить расход топлива, чтобы получить стехиометрическое отношение. Модель использует три подсистемы для реализации этой стратегии: логика управления, вычисление воздушного потока и расчет топлива. При нормальной операции модель оценивает скорость воздушного потока и умножает оценку на обратную требуемому отношению, чтобы задать скорость топлива. Обратная связь с датчиком кислорода обеспечивает регулирование скорости с обратной связью в порядок для поддержания идеального соотношения смеси.
Фигура 3: Подсистема контроллера расхода топлива
Одна диаграмма Stateflow, состоящая из набора из шести параллельных состояний, реализует логику управления полностью. Четыре параллельных состояния, показанных в верхней части фигура, соответствуют четырем отдельным датчикам. Оставшиеся два параллельных состояния внизу учитывают состояние четырех датчиков одновременно и определяют общий режим работы системы. Модель синхронно вызывает всю схему Stateflow с регулярным интервалом шага расчета 0,01 сек. Это позволяет проверять условия перехода к правильному режиму на своевременном базисный.
Чтобы открыть control_logic Диаграммы Stateflow, дважды кликните по нему в fuel_rate_control подсистеме.
Фигура 4: Логический график управления
Когда начинается выполнение, все состояния начинаются в своей normal
режим за исключением кислородного датчика (ЭГО). The O2_warmup
состояние вводится первоначально до завершения периода прогрева. Система обнаруживает отказы дросселя и датчика давления, когда их измеренные значения падают за пределы номинальных областей значений. Вакуум в коллекторе при отсутствии сигнала скорости указывает на отказ датчика скорости. Датчик кислорода также имеет номинальную область значений для условий отказа, но, поскольку нуль является минимальным уровнем сигнала и нижней частью области значений, отказ может быть обнаружен только, когда он превышает верхний предел.
Независимо от того, какой датчик выходит из строя, модель всегда генерирует направленное широковещательное Fail.INC
события. Таким образом, срабатывание универсальной логики отказа датчика не зависит от датчика. Модель также использует соответствующее событие восстановления датчика,
Fail.DEC
. The Fail
состояние отслеживает количество отказавших датчиков. Счетчик шагов на каждом Fail.INC
событие и сокращения на каждом событии Fail.DEC. Модель использует сверхсостояние, Multi
, чтобы сгруппировать все случаи, когда отказало более одного датчика.
Нижнее параллельное состояние представляет режим заправки двигателя. Если один датчик отказывает, операция продолжается, но смесь воздух/топливо богаче, чтобы обеспечить более плавное вращение за счет более высоких выбросов. Если отказало более одного датчика, двигатель отключается в качестве меры безопасности, поскольку соотношение воздух/топливо не может управляться надежно.
Во время прогрева датчика кислорода модель поддерживает смесь на нормальном уровне. Если это неудовлетворительно, можно изменить проект, переместив состояние прогрева в Rich_Mixture
сверхсостояние. Если отказ датчика происходит в период прогрева, Single_Failure
состояние вводится после истечения времени прогрева. В противном случае Normal
в это время активируется состояние.
Защитная функция превышения скорости был добавляема к модели путем создания нового состояния в Fuel_Disabled
сверхсостояние. Посредством использования исторических соединений мы заверяли, что график возвращается в соответствующее состояние, когда модель выходит из состояния превышения скорости. Когда требования безопасности для двигателя становятся более уточненными, мы можем добавить дополнительные состояния завершения работы к Fuel_Disabled
сверхсостояние.
Когда датчик отказывает, модель вычисляет оценку датчика. Например, откройте расчет датчика давления. При нормальной операции датчика в модели используется значение датчика давления. В противном случае модель оценивает значение.
Модель вычисляет оценку давления в коллекторе как функцию от скорости вращения двигателя и положения дросселя. Чтобы вычислить значение, модель использует функцию Simulink внутри Stateflow.
Блок Airflow Calculation (показан на фигуре 6) является местом для центральных законов управления. Этот блок находится внутри подсистемы fuel_rate_control (откройте этот блок). Блок оценивает расход всасываемого воздуха, чтобы определить расход топлива, который задает соответствующее отношение воздух/топливо. Управление с обратной связью регулирует оценку в соответствии с остаточной кислородной обратной связью в порядок, чтобы точно поддерживать соотношение смеси. Даже когда отказ датчика предписывает операцию без разомкнутого контура, самая последняя регулировка с обратной связью сохраняется, чтобы наилучшим образом соответствовать целям управления.
Фигура 6: Оценка и коррекция воздушного потока
Уравнение 1
Поток всасываемого воздуха двигателя может быть сформулирован как продукт скорости вращения двигателя, давления в коллекторе и изменяющегося во времени масштабного коэффициента.
Cpump
вычисляется интерполяционной таблицей и умножается на скорость и давление, чтобы сформировать начальную оценку потока. Во время переходных процессов скорость дросселя с производной, аппроксимированной высокочастным фильтром, корректирует воздушный поток для заполнения динамики. Алгоритм управления обеспечивает дополнительную коррекцию согласно уравнению 2.
Уравнение 2
Фигура 7: Подсистема динамики газа двигателя
Фигура 8: Блок смешения и сгорания в Подсистеме Динамики Газа Двигателя
Нелинейный кислородный датчик (блок EGO Sensor) находится внутри блока Смешивания и Сгорания (см. Фигуру 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 (разомкнутый контур) составной сигнал топлива фильтруется lowpass, чтобы ослабить шум, введенный в процессе оценки. Конечным результатом является сигнал, представляющий скорости потока жидкости топлива, которое в фактической системе будет переведено во время импульса инжектора.
Фигура 10: Переключаемая компенсационная подсистема
Результаты симуляции показаны на фигура и фиг.12. Симуляция выполняется с входом дросселя, который наклоняется от 10 до 20 степени в течение двух секунд, затем возвращается к 10 степеням в течение следующих двух секунд. Этот цикл повторяется постоянно, пока двигатель удерживается на постоянной скорости, так что пользователь может экспериментировать с различными условиями отказа и типами отказа. Щелкните на переключателе отказа датчика в подсистеме приборной панели, чтобы симулировать отказ соответствующего датчика. Повторите эту операцию, чтобы сдвинуть переключатель назад для нормального функционирования.
Фигура 11: Сравнение скорости потока жидкости топлива для различных отказов датчика
Фигура 11 сравнивает скорость потока жидкости топлива в безаварийных условиях (базовый уровень) со скоростью, применяемой при наличии единственного отказа в каждом датчике индивидуально. В каждом случае обратите внимание на нелинейное соотношение между расходом топлива и командой треугольного дросселя (показано на фигуре 13). В базовом случае расход топлива регулируется плотно, проявляя небольшую пульсацию из-за характера переключения входной схемы датчика EGO. В остальных четырех случаях система работает с разомкнутым контуром. Стратегия управления доказана эффективной в поддержании правильного профиля топлива в режиме одного отказа. В каждом из условий отказа расход топлива составляет по существу 125% от базового расхода, выполняя проект задачу 80% -ного обогащения.
Фигура 12: Сравнение состава топливно-воздушной смеси для различных отказов датчика
На рисунке 12 показано соответствующее соотношение воздух/топливо для каждого случая. Базовый график показывает эффекты операции с обратной связью. Соотношение смеси регулируется очень плотно к стехиометрическому целевому значению 14,6. Соотношение обогащенной смеси показано на четырех нижних графиках, показанных на фиг.12. Хотя они не жестко регулируются, как в случае с обратной связью, они аппроксимируют цель воздуха/топлива (0,8 * 14,6 = 11,7).
Фигура 13: Команда дросселя
Переходное поведение системы показано на фигура. При постоянном угле дросселя 12 степеней и системе в установившемся состоянии отказ дросселя вводится при t = 2 и корректируется при t = 5. В начале отказа расход топлива немедленно увеличивается. Эффекты видны на выхлопе, когда богатое соотношение распространяется через систему. Установившееся условие затем быстро восстанавливается, когда восстанавливается операция с обратной связью.
Фигура 14: Переходный процесс на обнаружение отказа
Если вы включите анимацию в отладчике Stateflow, переходы состояния подсвечиваются в схеме Stateflow (см. Фигуру 4), когда активируются различные состояния. Последовательность активации обозначается изменением цветов. Эта тесно связанная синергия между Stateflow и Simulink способствует моделированию и разработке полных систем управления.