В этом примере показано, как объединить Stateflow® с Simulink®, чтобы эффективно смоделировать гибридные системы. Этот тип моделирования особенно полезен для систем, которые имеют многочисленные возможные операционные режимы на основе дискретных событий. Традиционный поток сигналов обработан в Simulink, в то время как изменения в настройке управления реализованы в Stateflow. Модель, описанная ниже, представляет топливную систему управления для бензинового двигателя. Система очень устойчива в том отдельном датчике, отказы обнаруживаются, и система управления динамически реконфигурирована для непрерывной операции.
Физические и эмпирические отношения формируют базис для дросселя и динамики впускного коллектора этой модели. Состав топливно-воздушной смеси вычисляется путем деления скорости потока жидкости массы воздуха (подававшийся из впускного коллектора) топливным массовым расходом жидкости (введенный в клапанах). Идеал (i.e. стехиометрический), отношение смеси обеспечивает хороший компромисс между степенью, экономией топлива и эмиссией. Целевой состав топливно-воздушной смеси для этой системы 14.6. Как правило, датчик определяет количество остаточного кислорода, существующего в выхлопном газе (EGO). Это дает хорошую индикацию относительно отношения смеси и обеспечивает измерение обратной связи для управления с обратной связью. Если датчик указывает на высокий кислородный уровень, закон о надзоре увеличивает топливный уровень. Когда датчик обнаруживает богатую топливом смесь, соответствуя очень низкому уровню остаточного кислорода, контроллер уменьшает топливный уровень.
Рисунок 1 показывает верхний уровень модели Simulink. Чтобы открыть модель, нажмите Open Model. Нажмите кнопку воспроизведения на панели инструментов окна модели, чтобы запустить симуляцию. Модель загружает необходимые данные в рабочее пространство модели от sldemo_fuelsys_data.m
. Модель регистрирует соответствующие данные к рабочему пространству MATLAB в структуре данных под названием sldemo_fuelsys_output
и потоки данные Инспектору Данных моделирования. Регистрируемые сигналы отмечены синим индикатором, в то время как потоковая передача сигналов отмечена голубым значком (см. рисунок 1).
Обратите внимание на то, что загрузка начальных условий в рабочее пространство модели сохраняет данные моделирования изолированными от данных в других открытых моделях, которые вы можете иметь открытый. Это также помогает избежать создания помех рабочего пространства MATLAB. Чтобы просмотреть содержимое рабочего пространства модели выбирают Modeling> Model Explorer и нажимают на Model Workspace из списка Иерархий модели.
Заметьте, что модули отображаются на модели и значках подсистемы и сигнальных линиях. Модули заданы на портах и на объекте шины.
Рисунок 1: схема верхнего уровня для топливной модели системы управления
Подсистема Инструментальной панели (показанный в рисунке 2) позволяет вам взаимодействовать с моделью в процессе моделирования. Переключатели Внесения неисправности могут быть перемещены от Нормального, чтобы Привести положение к сбою, чтобы симулировать отказы датчика, в то время как селекторный переключатель Скорости вращения двигателя может быть переключен, чтобы изменить скорость вращения двигателя. Топливо и сигналы отношения воздуха/топлива визуализируются с помощью приборов инструментальной панели и осциллографов, чтобы обеспечить визуальную обратную связь во время запущенной симуляции.
Рисунок 2: подсистема Инструментальной панели для топливной модели системы управления
fuel_rate_control использует сигналы от датчиков системы, чтобы определить топливный уровень, который дает стехиометрическую смесь. Топливный уровень объединяется с фактическим воздушным потоком в модели динамики газа механизма, чтобы определить получившееся отношение смеси, как обнаружено в выхлопе.
Можно выборочно отключить каждый из этих четырех датчиков (угол дросселя, скорость, EGO и разнообразное абсолютное давление [MAP]) при помощи переключателей ползунка в подсистеме инструментальной панели, чтобы симулировать отказы. Simulink выполняет это обязательными переключателями ползунка к параметру, передаваемому по значению постоянного блока. Дважды кликните на подсистеме инструментальной панели, чтобы открыть инструментальную панель управления, чтобы сменить положение переключателя. Точно так же можно вызвать условие отказа высокой скорости вращения двигателя путем переключения скорости вращения двигателя, включают подсистему инструментальной панели. Блок Repeating Table обеспечивает угловой вход дросселя и периодически повторяет последовательность данных, заданных в маске.
Блок fuel_rate_control, показанный в рисунке 3, использует вход датчика и сигналы обратной связи настроить топливный уровень, чтобы дать стехиометрическое отношение. Модель использует три подсистемы, чтобы реализовать эту стратегию: управляющая логика, вычисление потока воздуха и топливное вычисление. При нормальном функционировании модель оценивает уровень потока воздуха и умножает оценку обратной величины желаемого отношения, чтобы дать топливный уровень. Обратная связь от кислородного датчика обеспечивает корректировку с обратной связью оценки уровня для того, чтобы обеспечить идеальное отношение смеси.
Рисунок 3: Топливная подсистема контроллера скорости
Одна диаграмма Stateflow, состоя из набора шести параллельных состояний, реализует управляющую логику в целом. Четыре параллельных состояния, показанные наверху рисунка 4, соответствуют четырем отдельным датчикам. Остающиеся два параллельных состояния в нижней части рассматривают состояние этих четырех датчиков одновременно и определяют полный системный рабочий режим. Модель синхронно вызывает целую схему Stateflow в регулярном интервале шага расчета 0,01 секунд. Это разрешает условиям для переходов к правильному режиму быть протестированными на своевременном базисе.
Чтобы открыть control_logic диаграмму Stateflow, дважды кликните на нем в fuel_rate_control подсистеме.
Рисунок 4: график управляющей логики
Когда выполнение начинается, все состояния запускаются в их normal
режим за исключением кислородного датчика (EGO). O2_warmup
состояние вводится первоначально, пока период прогрева не завершен. Система обнаруживает дроссель и отказы датчика давления, когда их измеренные значения выходят за пределы их номинальных областей значений. Разнообразный вакуум в отсутствие сигнала скорости указывает на отказ датчика скорости. Кислородный датчик также имеет номинальную область значений для условий отказа, но, потому что нуль является и минимальным уровнем сигнала и нижней частью области значений, отказ может быть обнаружен только, когда это превышает верхний предел.
Независимо от которого перестал работать датчик, модель всегда генерирует направленную широковещательную передачу события Fail.INC
. Таким образом инициирование универсальной логики отказа датчика независимо от датчика. Модель также использует соответствующее событие восстановления датчика, Fail.DEC
. Fail
состояние отслеживает количество не пройдено датчиков. Счетчик постепенно увеличивается на каждом Fail.INC
событие и декременты на каждом Сбое. Событие 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: блок Mixing & Combustion в подсистеме Динамики Газа Двигателя
Нелинейный кислородный датчик (блок EGO Sensor) найден в блоке Mixing & Combustion (см. рисунок 8) в подсистеме Динамики Газа Двигателя (см. рисунок 7). Датчик EGO моделируется как гиперболическая функция тангенса, и он обеспечивает значимый сигнал когда около 0,5 вольт. Необработанная ошибка в обратной связи таким образом обнаруживается с переключающимся порогом, как обозначено в уравнении 2. Если состав топливно-воздушной смеси является низким (смесь является наклоном), исходная воздушная оценка слишком мала и должна быть увеличена. С другой стороны, когда кислородный датчик, выход высок, воздушная оценка, является слишком большим и должен быть уменьшен. Интегральное управление используется так, чтобы термин коррекции достиг уровня, который вызывает нулевую установившуюся ошибку в отношении смеси.
Нормальный режим работы с обратной связью, LOW, настраивает интегратор динамически, чтобы минимизировать ошибку. Интегрирование выполняется в дискретное время с обновлениями каждые 10 миллисекунд. При работе разомкнутым контуром однако, в RICH или типах отказа O2, проигнорирована ошибка обратной связи, и интегратор сохранен. Это дает лучшую коррекцию на основе новой допустимой обратной связи.
fuel_calc подсистема (в fuel_rate_control подсистеме, смотрите, рисунок 9) устанавливает сигнал инжектора совпадать с данным вычислением потока воздуха и состоянием отказа. Первый вход является вычисленной оценкой потока воздуха. Это умножается с целевым отношением топлива/воздуха, чтобы получить топливный уровень, которым управляют. Обычно цель является стехиометрической, i.e. равняется оптимальному воздуху, чтобы питать отношение 14,6. Когда отказ датчика происходит, управляющая логика Stateflow устанавливает вход режима на значение 2 или 3 (RICH или ОТКЛЮЧЕННЫЙ) так, чтобы смесь была или немного богата из стехиометрических или была закрыта полностью.
Рисунок 9: подсистема fuel_calc
fuel_calc подсистема (рисунок 9) использует корректируемую компенсацию (рисунок 10) для того, чтобы достигнуть различных целей в различных режимах. В нормальном функционировании ведущая компенсация фазы сигнала коррекции обратной связи добавляет к запасу устойчивости с обратной связью. В режиме RICH и во время отказа датчика EGO (разомкнутый контур), однако, составным топливным сигналом является lowpass, отфильтрованный, чтобы ослабить шум, введенный в процессе оценки. Конечный результат является сигналом, представляющим топливную скорость потока, которая, в фактической системе, была бы переведена во времена импульса инжектора.
Рисунок 10: Переключаемая подсистема компенсации
Результаты симуляции показывают в рисунке 11 и рисунке 12. Симуляция запущена с входом дросселя, который сползает от 10 до 20 градусов в течение двух секунд, затем возвращается к 10 градусам за следующие две секунды. Этот цикл повторяется постоянно, в то время как механизм сохранен на постоянной скорости так, чтобы пользователь мог экспериментировать с различными условиями отказа и типами отказа. Нажмите на переключатель отказа датчика в подсистеме инструментальной панели, чтобы симулировать отказ связанного датчика. Повторите эту операцию, чтобы двигать переключатель назад для нормального функционирования.
Рисунок 11: Сравнение топливной скорости потока для различных отказов датчика
Рисунок 11 сравнивает топливную скорость потока при безотказных условиях (базовая линия) с уровнем, примененным в присутствии одного отказа в каждом датчике индивидуально. В каждых документах по делу нелинейное отношение между топливом текут и треугольная команда дросселя (показанный в рисунке 13). В базовом случае топливный уровень отрегулирован плотно, показав маленькую пульсацию из-за переключающейся природы входной схемы датчика EGO. В других четырех случаях система управляет разомкнутым контуром. Стратегия управления доказана эффективной при поддержании правильного топливного профиля в одно типе отказа. В каждом из условий отказа топливный уровень - по существу 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 способствуют моделированию и разработке систем полного контроля.