Смоделируйте контроллер окна со стеклоподъемником

В этом примере показано, как создать интерфейс между графиком Stateflow®, который использует MATLAB® в качестве языка действия и приложения MATLAB, созданного в App Designer. Для получения дополнительной информации о соединении диаграммы Stateflow, которая использует C в качестве языка действия к приложению MATLAB, смотрите, Симулируют Медиаплеер.

В этом примере автомобильная система окна со стеклоподъемником повышает и понижает окно пассажирской стороны в ответ на пару переключателей управления окном. Переключатели в приложении MATLAB представляют средства управления на драйвере и пассажирских дверях. Приложение также содержит несколько ламп индикатора, которые контролируют состояние системы окна со стеклоподъемником и кнопки для представления препятствия в пути окна.

Диаграмма Stateflow App Interface обеспечивает двунаправленную связь между приложением MATLAB и управлением и системами объекта в модели Simulink®. Когда вы указываете переключатель в приложении к новой позиции, график повышает соответствие, "Вниз", или "Нейтральную" команду к системе управления окна со стеклоподъемником. С другой стороны, когда состояние изменений системы управления, график включает или отключает соответствующие лампы состояния в приложении.

Чтобы запустить пример, откройте модель Simulink и нажмите Run. График App Interface открывает приложение и инициализирует управление и системы объекта в системе окна со стеклоподъемником. Чтобы остановить симуляцию, нажмите Stop или закройте приложение.

Соедините график с приложением MATLAB

График App Interface уже сконфигурирован, чтобы передать с приложением MATLAB sf_power_window_app. Чтобы создать двунаправленную связь между вашим приложением MATLAB и диаграммой Stateflow, которая использует MATLAB в качестве языка действия, выполните эти шаги. В приложении MATLAB:

  1. Создайте пользовательское свойство взаимодействовать через интерфейс с графиком в процессе моделирования. Приложение использует это свойство получить доступ к входным параметрам графика, строить диаграмму выходных параметров и локальных данных. Для получения дополнительной информации смотрите, Осуществляют обмен данными В рамках Приложений App Designer.

  2. Измените startupFcn коллбэк для приложения путем добавления нового входного параметра и хранения его значения как свойства, которое вы создали на предыдущем шаге. Для получения дополнительной информации смотрите Коллбэки Записи в App Designer.

В диаграмме Stateflow:

  1. Создайте локальный объект данных взаимодействовать через интерфейс с приложением. График использует этот локальный объект данных в качестве аргумента, когда это вызывает функции помощника в приложении.

  2. Установите тип локального объекта данных, который вы создали на предыдущем шаге к Inherit: From definition in chart. Для получения дополнительной информации смотрите, Задают Тип Данных Stateflow.

  3. Вызовите coder.extrinsic функция, чтобы объявить приложение и любого помощника функционирует как внешний код MATLAB. Для получения дополнительной информации смотрите функции MATLAB Значения внешних параметров Вызова в диаграммах Stateflow.

  4. Запустите приложение с помощью ключевого слова this в качестве аргумента, чтобы дать доступ к приложениям графику в процессе моделирования. Сохраните значение, возвращенное вызовом функции к приложению как локальный объект данных, который вы создали, чтобы взаимодействовать через интерфейс с приложением.

В этом примере приложение окна со стеклоподъемником использует свойство под названием chart соединять интерфейсом с графиком с App Interface. Коллбэки приложения используют это свойство записать в график выходные параметры:

  • Когда вы перемещаете переключатель управления водительской стороны в новое положение, DriverControlValueChanged коллбэк устанавливает значения switches.driver_up и switches.driver_down.

  • Когда вы перемещаете переключатель управления пассажирской стороны в новое положение, PassengerControlValueChanged коллбэк устанавливает значения switches.passenger_up и switches.passenger_down.

  • Когда вы нажимаете кнопку Obstacle, ObstacleButtonPushed коллбэк устанавливает значение obstacle к true.

  • Когда вы закрываете приложение, UIFigureCloseRequest коллбэк устанавливает значение stop к true.

С другой стороны, в графике, действиях записи в InterfaceWithApp государственный приложение sf_power_window_app и сохраните возвращенное значение как локальный объект данных app. График использует этот локальный объект данных, когда это вызывает функцию помощника updateLamps. В приложении эта функция помощника включает и выключает лампы на основе значения входа lamps графика.

Проект системы управления

Система управления окна со стеклоподъемником использует логику режима, чтобы определить, когда окно должно переместить и выводит объединенную команду движения к сервоприводу. Чтобы понизить производственные затраты, система управления не отслеживает положение окна. Вместо этого это использует сигнал от сервопривода, чтобы определить, когда окно полностью открыто или полностью закрытое, или когда это сталкивается с препятствием.

Система управления соответствует этим требованиям к производительности:

  1. Окно должно открыться или закрыться полностью через 5 секунд.

  2. Двигатель должен остановиться, когда окно достигает полностью открытый или положение полностью закрытого отверстия.

  3. Двигатель должен смочь обнаружить препятствие, когда окно перемещается вверх. Когда двигатель обнаруживает препятствие в пути окна, окно должно быть понижено в течение одной секунды или пока окно не полностью открыто.

  4. Двигатель должен остановиться после 10 секунд непрерывного перемещения в любом направлении. Это требование обеспечивает отказоустойчивую защиту для механизма окна, двигателя и диска.

  5. Если у переключателя управления требуют меньше половины секунды, или если это нажимается для дольше, чем одна секунда, окно должно остановиться, когда переключатель выпущен.

  6. Если переключатель управления нажимается для дольше, чем половина секунды и выпущенный, прежде чем одна секунда, окно должно будет открыться или закрыться полностью, если это не прервано новой командой или препятствием. Это требование представляет возможность автоматического режима окна со стеклоподъемником.

  7. Управление водительской стороны имеет приоритет над управлением пассажирской стороны.

  8. Обнаружение препятствия имеет приоритет и над водительской стороной и над средствами управления пассажирской стороны.

Диаграмма Stateflow Control System моделирует событийно-управляемый контроллер, который удовлетворяет этим требованиям. График состоит из двух состояний (Switch и Logic) в параллельном разложении. Эти состояния реагируют на изменения во входных параметрах графика, определяют рабочий режим системы окна со стеклоподъемником и управляют выходными сигналами, которые активируют сервопривод.

Контролируйте вход контроллера

Switch состояния читает значения входных параметров графика и широковещательных сообщений локальные события, чтобы изменить рабочий режим системы окна со стеклоподъемником. Для получения дополнительной информации смотрите Широковещательную передачу Локальные События, чтобы Синхронизировать Параллельные состояния.

На каждом временном шаге симуляции состояние вызывает функцию таблицы истинности checkSwitches чтобы определить положения водительской стороны и пассажирской стороны управляют переключателями. В зависимости от значения входной структуры switches, этот функциональные широковещательные сообщения UP, DOWN, и NEUTRAL события. Поскольку функция игнорирует любой вход от управления пассажирской стороны, когда управление водительской стороны не находится в "Нейтральном" положении, управление водительской стороны имеет приоритет над управлением пассажирской стороны, как задано требованием 7.

Похожим способом состояние вызывает графическую функцию detectObstacles определить силу тока якоря в сервоприводе. Если значение current является малым и является ненулевым, препятствие присутствует так функциональные широковещательные сообщения событие OBSTACLE. В отличие от этого, если значение current является большим, окно достигло полностью открытого или полностью закрытого положения клапанов так функциональные широковещательные сообщения событие ENDSTOP. Поскольку график вызывает detectObstacles перед checkSwitches, обнаружение препятствия имеет приоритет и над водительской стороной и над средствами управления пассажирской стороны, как задано требованием 8.

Определите рабочий режим

Logic состояния включает алгоритмы обнаружения отказа, чтобы защитить оборудование окна и любые препятствия в пути окна. Состояние содержит три подсостояния, Stopперемещение, и EmergencyDown, это представляет рабочие режимы системы окна со стеклоподъемником.

Первоначально, Stop состояния активно. Это состояние содержит два параллельных подсостояния, названные Mode и Position.

  • Mode определяет, когда энергосистема готова принять новые команды от переключателей управления. Система готова к новым командам, когда оба переключателя управления находятся в "Нейтральном" положении.

  • Position записи, полностью открыто ли окно, полностью закрытое, или где-нибудь в середине. График делает это определение путем замечания направления, в которое перемещается окно, когда сервопривод достигает конца своей области значений.

Stop остается активным до широковещательной передачи событий UP или DOWN указывает на команду от одного из переключателей управления. Пока окно не полностью открыто или полностью закрытое, эти события инициировали переход к Move состояния. Однако событие UP рассматривается недопустимым, когда окно уже полностью закрывается. Аналогично, событие DOWN недопустимо, когда окно полностью открыто.

Move состояния активно каждый раз, когда окно находится в движении. Это состояние реализует несколько из требований окна со стеклоподъемником, связанных с автоматическим перемещением окна и обнаружением отказа. Состояние имеет два параллельных подсостояния, названные Direction и Mode.

  • Direction определяет направление, в котором окно должно переместить и вызывает функции go.up и go.down, как соответствующий. Эти функции устанавливают значения выходных сигналов, которые управляют сервоприводом и лампами состояния "Up" и "Down" в приложении.

  • Mode реализует автоматические и ручные режимы окна со стеклоподъемником, заданного требованиями 5 и 6. Это состояние имеет три исключительных подсостояния (Initializing'auto', и Manual). Первоначально, Initializing подсостояния активно. Подсостояние ожидает широковещательной передачи NEUTRAL событие, которое указывает, что переключатели управления возвратились к "Нейтральному" положению. Если широковещательная передача происходит в течение половины секунды после Initializing становясь активным, событие инициировало переход к Stop состояние, указывая, что окно должно прекратить перемещаться. Если широковещательная передача происходит после половины секунды, но перед одной секундой Initializing становясь активным, событие инициировало переход к Auto подсостояния, указание, что система окна со стеклоподъемником действует в ее автоматическом режиме. Это подсостояние остается активным, пока оно не прервано широковещательной передачей событий ENDSTOP (когда окно полностью открыто или полностью закрытое), OBSTACLE (когда окно сталкивается с препятствием), или UP или DOWN (когда система получает новую команду от одного из переключателей управления). Наконец, если широковещательная передача не происходит перед одной секундой Initializing становясь активным, временное логическое выражение after(1,sec) инициировал переход к Manual подсостояния. Это подсостояние остается активным до широковещательной передачи события NEUTRAL инициировал переход назад к Stop состояние.

Независимый от того, является ли система в автоматическом или ручном режиме, переходы графика непосредственно от Move к Stop на широковещательной передаче события ENDSTOP или когда Move активно для дольше, чем FAILSAFE_TIMEOUT секунды, как задано требованиями 2 и 4. По умолчанию значение этой константы установлено к 10.

Обнаружьте препятствия

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

В этом примере Подсистема Simulink симулирует сервопривод. Положение окна вычисляется блоком Integrator с пределами насыщения 0 (полностью открытый) и 10 (полностью закрытый). Поскольку вход с этим блоком имеет усиление 2, окно открывается и закрывается полностью через 5 секунд, как задано требованием 1. Когда блок Integrator достигает точки насыщения, система выход armature current увеличения к 10. Это значение указывает, что окно полностью открыто или полностью закрыто.

Чтобы ввести препятствие в пути окна, нажмите кнопку Obstacle в приложении, в то время как окно перемещается вверх. App Interface график отвечает путем отправки положительного сигнала в сервопривод, который в свою очередь производит маленькое повышение тока якоря. В Control System стройте диаграмму, функциональный detectObstacles регистры это изменение в текущем и широковещательных сообщениях событие OBSTACLE. В Logic состояние, это событие инициировало переход от Move подсостояния к EmergencyDown подсостояния. В то время как это подсостояние активно, система перемещает окно вниз в течение одной секунды или пока окно не полностью открыто. Затем переходы графика назад к Stop подсостояния, указание, что окно должно прекратить перемещаться, как задано требованием 3.

Смотрите также

| | | | | (MATLAB Coder)

Похожие темы