Автомобили используют электронику для операций управления, таких как:
Открытие и закрытие окон и люка
Регулировка зеркал и фар
Блокировка и разблокировка дверей
Эти системы подвержены жестким ограничениям операции. Отказы могут вызвать опасные и, возможно, опасные для жизни ситуации. В результате перед развертыванием необходим тщательный проект и анализ.
Этот пример посвящен проекту системы степени автомобиля, в частности окна со стороны пассажира. Критический аспект этой системы заключается в том, что она не может приложить силу более 100 Н к объекту, когда окно закроется. Когда система обнаруживает такой объект, она должна опустить окно примерно на 10 см.
В качестве части процесса проекта в примере рассматриваются:
Количественные требования к оконной системе управления, такие как время и требования к силе
Системные требования, захваченные в схемах деятельности
Определения данных для сигналов, используемых в схемах деятельности
Другие аспекты процесса проектирования, содержащиеся в этом примере, включают:
Управление компонентами системы
Создание модели
Валидация результатов системной симуляции
Генерация кода
В дополнение к Simulink этот пример использует эти дополнительные MathWorks® товары:
DSP System Toolbox™
Fixed-Point Designer™
Simscape™ Multibody™
Функции Simscape Electrical™
Simscape
Simulink® 3D Animation™
Функции Simulink Real-Time™
Функции Simulink Coverage™
Stateflow®
Количественные требования к управлению:
Окно должно полностью открыться и полностью закрыться в течение 4 секунд.
Если значение up выдается в течение от 200 мс до 1 с, окно должно полностью открыться. Если команда down выдается в течение от 200 мс до 1 с, окно должно полностью закрыться.
Окно должно начать перемещаться на 200 мс после выдачи команды.
Сила для обнаружения, когда объект присутствует, меньше 100 Н.
При закрытии окна, если объект мешает, перестаньте закрывать окно и опустите окно примерно на 10 см.
Диаграммы активности помогают вам графически захватить спецификацию и понять, как работает система. Иерархическая структура помогает с анализом даже больших систем. На верхнем уровне контекстная схема описывает окружение системы и ее взаимодействие с исследуемой системой с точки зрения операций обмена данными и управления. Затем можно разложить систему на схему действий с процессами и спецификациями управления (CSPEC).
Процессы управляют иерархическим разложением. Каждый процесс задается с помощью другой схемы действий или примитивной спецификации (PSPEC). Можно задать PSPEC в ряде представлений с формальным семантическим, таким как Диаграмма Simulink. В сложение контекстные схемы графически захватывают контекст системных операций.
Рисунок представляет контекстную схему системы степени. Квадратные коробки захватывают окружение, в этом случае, драйвер, пассажира и окно. И драйвер, и пассажир могут отправить команды в окно, чтобы переместить его вверх и вниз. Контроллер выводит правильную команду для передачи приводу окна (например, команда драйвера имеет приоритет над командой пассажира). В сложение схема контролирует состояние оконной системы, чтобы установить, когда окно полностью открыто и закрыто, и обнаружить, есть ли объект между окном и системой координат.
Кружок (также известный как пузырь) представляет контроллер окна со степенью. Кружок является графическим обозначением для процесса. Процессы захватывают преобразование входных данных в выходные данные. Примитивный процесс также может сгенерировать. CSPEC обычно состоят из комбинационной или последовательной логики, чтобы вывести выходные сигналы управления из входного управления.
Для реализации в окружение Simulink, смотрите Внедрение Контекстной Схемы: Система Степени.
Управление окном степени состоит из трех процессов и CSPEC. Два процесса подтверждают вход драйвера и пассажира, чтобы убедиться, что их вход является значимым, учитывая состояние системы. Например, если окно полностью открыто, MOVE DOWN
команда не имеет смысла. Оставшийся процесс определяет, полностью ли открыто или полностью закрыто окно и присутствует ли объект. CSPEC принимает управляющие сигналы и выводит, перемещать ли окно вверх или вниз (например, если объект присутствует, окно перемещается вниз примерно на одну секунду или пока оно не достигает конечной остановки).
Для реализации в среде Simulink смотрите Реализацию Схемы Деятельности: Управление Окна Степени.
Каждый процесс в графике действия VALIDATE DRIVER является примитивным и определяется следующим PSPEC. В MAKE EXCLUSIVE PSPEC по соображениям безопасности DOWN
команда имеет приоритет над UP
команда.
PSPEC 1.1.1: CHECK DOWN CHECKED_DOWN = DOWN and not RESET
PSPEC 1.1.2: CHECK UP CHECKED_UP = UP and not RESET
PSPEC 1.1.3: MAKE EXCLUSIVE VALIDATED_DOWN = CHECKED_DOWN VALIDATED_UP = CHECKED_UP and not CHECKED_DOWN VALIDATED_NEUTRAL = (NEUTRAL and not (CHECKED_UP and not CHECKED_DOWN)) or not (CHECKED_UP or CHECKED_DOWN)
Для реализации в среде Simulink смотрите Внедрение Схемы Деятельности: Валидация.
Внутренние элементы процесса VALIDATE PASSENGER аналогичны процессу VALIDATE DRIVER. Единственное различие - это различные входные и выходные параметры.
PSPEC 1.2.1: CHECK DOWN CHECKED_DOWN = DOWN and not RESET
PSPEC 1.2.2: CHECK UP CHECKED_UP = UP and not RESET
PSPEC 1.2.3: MAKE EXCLUSIVE VALIDATED_DOWN = CHECKED_DOWN VALIDATED_UP = CHECKED_UP and not CHECKED_DOWN VALIDATED_NEUTRAL = (NEUTRAL and not (CHECKED_UP and not CHECKED_DOWN)) or not (CHECKED_UP or CHECKED_DOWN)
Для реализации в среде Simulink смотрите Схему деятельности: Валидация пассажира.
Третий процесс в схеме активности POWER WINDOW CONTROL обнаруживает наличие препятствия или когда окно достигает верхней части или низа (ENDSTOP
). Механизм обнаружения основан на токе якоря оконного привода. Во время нормальной операции этот ток находится в пределах определенных границ. Когда окно достигает своей верхней части или низа, электромотор потребляет большой ток (более 15 А или менее -15 А), чтобы попытаться сохранить свою скорость вращения. Точно так же во время нормальной операции ток составляет около 2 А или -2 А (в зависимости от того, открывается или закрывается окно). Когда есть объект, происходит небольшое отклонение от этого значения. Чтобы сохранить силу окна на объекте менее 100 Н, управление переключается на его аварийную работу, когда обнаруживает ток, который меньше -2,5 А. Эти операции необходимы только когда окно накатывается, что соответствует отрицательному току в конкретной проводке этой модели. Схема действия ОБНАРУЖИТЬ ПРЕПЯТСТВИЕ ENDSTOP воплощает эту функциональность.
CSPEC 1.3: DETECT OBSTACLE ENDSTOP RESET = OBSTACLE or ENDSTOP
PSPEC 1.3.1: DETECT ENDSTOP ENDSTOP = WINDOW_POSITION > ENDSTOP_MAX
PSPEC 1.3.2: DETECT OBSTACLE OBSTACLE = (WINDOW_POSITION > OBSTACLE_MAX) and MOVE_UP for 500 ms
Для реализации в окружение Simulink, смотрите Схему действия: Обнаружение конца препятствия.
Функциональное разложение однозначно задает каждый процесс своим разложением или примитивной спецификацией (PSPEC). В сложение он также должен формально задать сигналы в схемах активности. Используйте определения данных для этих спецификаций.
Следующие таблицы являются определениями данных для сигналов, используемых в схемах деятельности.
Связанная схема деятельности смотрите Контекстную схему: Система Степени.
Контекстная схема: Определения системных данных окна со степенью
Сигнал | Тип информации | Непрерывный/ Дискретный | Тип данных | Значения |
---|---|---|---|---|
DRIVER_COMMAND | Данные | Дискретный | Совокупность |
|
PASSENGER_COMMAND | Данные | Дискретный | Совокупность |
|
WINDOW_POSITION | Данные | Непрерывный | Реальный | от 0 до 0,4 м |
MOVE_UP | Контроль | Дискретный | Булев |
|
MOVE_DOWN | Контроль | Дискретный | Булев |
|
Связанная схема деятельности смотрите Схему действия: Управление Окна степени.
Схема деятельности: Определения данных управления окна со степенью
Сигнал | Тип информации | Непрерывный/ Дискретный | Тип данных | Значения |
---|---|---|---|---|
DRIVER_COMMAND | Данные | Дискретный | Совокупность |
|
PASSENGER_COMMAND | Данные | Дискретный | Совокупность |
|
WINDOW_POSITION | Данные | Непрерывный | Реальный | от 0 до 0,4 м |
MOVE_UP | Контроль | Дискретный | Булев |
|
MOVE_DOWN | Контроль | Дискретный | Булев |
|
Связанная схема действия приведена в разделе «Схема действия: валидация драйвера».
Схема действия: валидация определений данных драйвера
Сигнал | Тип информации | Непрерывный/ Дискретный | Тип данных | Значения |
---|---|---|---|---|
DRIVER_COMMAND | Данные | Дискретный | Совокупность |
|
PASSENGER_COMMAND | Данные | Дискретный | Совокупность |
|
WINDOW_POSITION | Данные | Непрерывный | Реальный | от 0 до 0,4 м |
MOVE_UP | Контроль | Дискретный | Булев |
|
MOVE_DOWN | Контроль | Дискретный | Булев |
|
Связанная схема деятельности смотрите Схему деятельности: Валидация пассажира.
Схема деятельности: Валидация определений данных о пассажирах
Сигнал | Тип информации | Непрерывный/ Дискретный | Тип данных | Значения |
---|---|---|---|---|
НЕЙТРАЛЬНЫЙ | Данные | Дискретный | Булев |
|
Вверх | Данные | Дискретный | Булев |
|
ВНИЗ | Данные | Дискретный | Булев |
|
CHECKED_UP | Данные | Дискретный | Булев |
|
CHECKED_DOWN | Данные | Дискретный | Булев |
|
Связанная схема действия смотрите Схему действия: Обнаружение остановки препятствий.
Схема действия: Обнаружение определений данных конечных стопов препятствий
Сигнал | Тип информации | Непрерывный/ Дискретный | Тип данных | Значения |
---|---|---|---|---|
ENDSTOP_MIN | Данные | Постоянный | Реальный | 0,0 м |
ENDSTOP_MAX | Данные | Постоянный | Реальный | 0,4 м |
OBSTACLE_MAX | Данные | Постоянный | Реальный | 0,3 м |
Проект модели итератируется, когда мы исследуем более детальные реализации. Для получения информации о том, как итерация проекта модели происходит при введении дополнительной детализации, смотрите Итерация по проекту.
MATLAB® и Simulink поддерживает Модельно-ориентированное Проектирование для разработки встроенных систем управления, от начальной спецификации до генерации кода. Чтобы организовать большие проекты и поделиться своей работой с другими, используйте Управление проектами.
Степень Window Control Project показов, как можно использовать инструменты MathWorks и процесс Модельно-ориентированного проектирования, чтобы перейти от концепции к реализации для автомобильной степени оконной системы. Он использует проекты, чтобы организовать файлы и другие компоненты модели.
Кроме сложения, в этом примере показов, как связать модели с системной документацией.
Чтобы открыть проект Power Window Controller, в Командном Окне MATLAB, введите:
slexPowerWindowStart
Исследуйте папки проекта. В частности, обратите внимание на task папки. Эта папка содержит скрипты, которые запускают частые задачи для модели. Для проекта контроллера окна со степенью, следующие скрипты:
Настройте модель, чтобы управлять перемещением окна по сети зоны контроллера (CAN).
Настройте модель, чтобы использовать программное обеспечение Stateflow и Simulink, чтобы смоделировать реактивное поведение при дискретных событиях и непрерывное поведение во времени с помощью модели объекта управления низкого порядка.
Настройте модель с более подробной моделью объекта управления, которая включает эффекты степени в электрической и механической областях. Модель объекта управления подтверждает силу, приложенную окном к захваченному объекту.
Настройте модель с моделью, которая включает другие эффекты, которые могут изменить модель, такие как квантование измерений.
Примечание
Эти скрипты также моделируют модель. Чтобы сконфигурировать модель, смотрите скрипты в папке configureModel.
Используйте модель покрытия увеличения, чтобы сгенерировать отчет о покрытии модели.
В Project Shortcuts разделе содержатся команды быстрого доступа, которые можно дважды щелкнуть, чтобы выполнить общие задачи, такие как:
Добавьте проекты к путям MATLAB.
Выполните интерактивную проверку.
Проверьте проверку модели с покрытием модели.
Откройте основную модель.
Симулируйте модель с различными строениями.
Сгенерируйте отчет о покрытии модели для увеличения покрытия модели.
Откройте модель, используемую для увеличения покрытия модели.
В этой теме описывается спецификация управления дискретными событиями высокого уровня для управления окна со степенью.
Можно смоделировать управление дискретным событием окна с помощью диаграммы Stateflow. Диаграмма Stateflow является конечным конечным автоматом с иерархией и параллелизмом. Этот конечный автомат содержит основные состояния системы окна со степенью: вверх, автоматически вверх, вниз, автоматически вниз, отдых и аварийная ситуация. Он моделирует изменения состояния и учитывает приоритет команд драйвера над командами пассажира. Это также включает аварийное поведение, которое активируется, когда программное обеспечение обнаруживает объект между окном и системой координат во время движения вверх.
Начальная модель Simulink для управления окна со степенью, slexPowerWindowControl
, является контроллером дискретных событий, который запускается с заданной частотой дискретизации.
В этой реализации откройте подсистему управления окна со степенью и заметьте, что диаграмма Stateflow с управлением дискретным событием образует CSPEC, представленный наклоненной толстой планкой в правом нижнем углу. Подсистема detect_obstacle_endstop инкапсулирует механизмы обнаружения порога.
Управление дискретным событием является моделью Stateflow, которая расширяет диаграмму переходов состояний понятие с иерархией и параллелизмом. Изменения состояния из-за команд пассажира инкапсулируются в супер состоянии, которое не соответствует активной команде драйвера.
Рассмотрите управление пассажирским окном. Пассажир или драйвер может перемещать это окно вверх и вниз.
Этот конечный автомат содержит основные состояния системы окна со степенью: вверх, автоматически вверх, вниз, автоматически вниз, отдых и аварийная ситуация.
Управляйте входом. The slexPowerWindowCntlInteract
модель включает этот управляющий вход в качестве переключателей. Дважды кликните эти переключатели, чтобы вручную управлять ими.
Протестируйте конечный автомат, который управляет окна со степенью, запустив входные тестовые векторы и проверив, что он достигает необходимого внутреннего состояния и генерирует выход. Окно степени имеет следующие внешние входные параметры:
Вход пассажира
Вход драйвера
Окно вверх или вниз
Препятствие в окне
Каждый вход состоит из вектора с этими входами.
Вход пассажира
Элемент | Описание |
---|---|
neutral | Переключатель управления пассажирами не нажат. |
up | Переключатель управления пассажирами генерирует сигнал увеличения. |
down | Переключатель управления пассажирами генерирует сигнал отключения. |
Вход драйвера
Элемент | Описание |
---|---|
neutral | Переключатель управления драйвером не нажат. |
up | Переключатель управления драйвером генерирует сигнал увеличения. |
down | Переключатель управления драйвером генерирует сигнал опускания. |
Окно Вверх или Вниз
Элемент | Описание |
---|---|
0 | Окно свободно перемещается между верхней или нижней точками. |
1 | Окно застряло сверху или снизу из-за физических ограничений. |
Препятствие в окне
Элемент | Описание |
---|---|
0 | Окно свободно перемещается между верхней или нижней точками. |
1 | Окно имеет препятствие в системе координат. |
Сгенерируйте входные сигналы пассажира и драйвера путем отображения сигналов вверх и вниз в соответствии с этой таблицей:
Исходные данные | Выходы | |||
---|---|---|---|---|
вверх | вниз | вверх | вниз | нейтральный |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Входы явно генерируют neutral
событие из up
и down
события, сгенерированные нажатием кнопки управления окна со степенью. Входы вводятся как таблица истинности в нейтральной, вверх, вниз карте пассажира и нейтральной, вверх, вниз карте драйвера.
Дело 1: Window Up. Чтобы наблюдать поведение конечного автомата:
Откройте slexPowerWindowCntlInteract
модель.
Запустите симуляцию и дважды кликните переключатель пассажира.
Если вы нажимаете переключатель физического окна более одной секунды, окно перемещается вверх до тех пор, пока не будет отпущен переключатель вверх (или не будет достигаемы верхние части окна системы координат и endstop
событие сгенерировано).
Дважды кликните выбранный переключатель вверх пассажира, чтобы отпустить его.
Симулируйте модель.
Установка ключа endstop генерирует событие endstop.
Случай 2: Автоматическое обновление окна. Если вы нажимаете на переключатель окна физического пассажира в течение короткого периода времени (менее секунды), программное обеспечение активирует поведение автозапуска, и окно продолжает двигаться вверх.
Нажмите на переключатель окна физического пассажира в течение короткого периода времени (менее секунды).
В конечном счете окно достигает верхней части системы координат, и программное обеспечение генерирует endstop
событие. Это событие возвращает конечный автомат в его нейтральное состояние.
Симулируйте модель.
Случай 3: Приоритет на стороне драйвера. Переключатель драйвера для окна пассажира имеет приоритет над командами драйвера. Чтобы наблюдать поведение конечного автомата в этом случае:
Запустите симуляцию, а затем переместите систему в passenger up
Состояние двойным щелчком по окну пассажира вверх.
Дважды кликните переключатель вниз драйвера.
Симулируйте модель.
Заметьте, как конечный автомат перемещается к элементу управления драйвером, чтобы сгенерировать выход окна вниз вместо выхода окна вверх.
Дважды кликните элемент управления драйвером для увеличения драйвера. Дважды кликните переключатель вниз драйвера.
Достигается состояние окна вверх драйвера, которое генерирует выход вверх снова, т.е. windowUp = 1
.
Чтобы наблюдать поведение состояния, когда объект находится между окном и системой координат, дважды кликните переключатель препятствий.
Симулируйте модель.
В течение следующего шага расчета конечный автомат переходит к своему emergencyDown
состояние, чтобы опустить окно на несколько дюймов. Как далеко программное обеспечение опускает окно, зависит от того, как долго конечный автомат находится в emergencyDown
состояние. Это поведение является частью следующей фазы анализа.
Если драйвер или пассажира все еще активен, конечный автомат переходит в состояние вверх или вниз после следующего шага расчета после выхода из аварийного состояния. Если переключатель препятствий также все еще активен, программное обеспечение снова активирует аварийное состояние в следующий шаг расчета.
Валидация Подсистемы Управления. Проверьте управление дискретным событием окна с помощью инструмента model coverage. Этот инструмент помогает вам определить, в какой степени тест модели использует условные ветви контроллера. Это помогает оценить, все ли переходы в управлении дискретными событиями приняты, учитывая тест, и стали ли все предложения в условии, которое включает конкретный переход. Несколько предложений могут включать один переход, например, переход от аварийного обратного к нейтральному происходит, когда произошло или 100 такты или если достигнута конечная остановка.
Чтобы достичь полного покрытия, каждое предложение оценивает как true и false для используемых тестов. Процент переходов, которые выполняются в тесте, называется его model coverage. Покрытие модели является мерой того, насколько тщательно тест упражняет модель.
Используя программное обеспечение Simulink Coverage, можно применить следующий тест к контроллеру окна со степенью.
Положение | Шаг | ||||||
---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
Пассажир вверх | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Пассажир вниз | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
Драйвер вверх | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
Драйвер вниз | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
С помощью этого теста все коммутаторы неактивны во время 0. На регулярных шагах 1 с состояние одного или нескольких коммутаторов изменяется. Для примера через 1 с активизируется переключатель вниз драйвера. Чтобы автоматически запустить эти входные векторы, замените ручные переключатели предписанными последовательностями входов. Чтобы увидеть предварительно построенную модель:
В Командном Окне MATLAB введите:
slexPowerWindowCntlCoverage
Симулируйте модель, чтобы сгенерировать Simulink Coverage отчет о покрытии.
Для slexPowerWindowCntlCoverage
модель, отчет показывает, что этот тест обрабатывает 100% результатов решения от нейтрального, вверх, вниз блока карты драйвера. Однако тест достигает только 50% покрытия для нейтрального, вверх, вниз блока карты пассажира. Это покрытие означает общее покрытие для slexPowerWindowCntlCoverage
составляет 45%, в то время как общий охват slexPowerWindowControl
модель составляет 42%. Некоторые из факторов, способствующих уровням охвата, включают:
Блок пассажира не меняется.
Блоки эндстоп и препятствия не меняются.
Увеличение покрытия модели. Чтобы увеличить общий охват до 100%, необходимо учесть все возможные комбинации настроек драйвера, пассажира, препятствия и эндстопа. Когда вы удовлетворены поведением управления, можно создать систему окна со степенью. Для получения дополнительной информации см. «Создание модели с использованием Модельно-ориентированного проектирования».
Этот пример увеличивает покрытие модели для валидации управления дискретными событиями окна. Чтобы начать, в примере используются входы от slexPowerWindowCntlCoverage
в качестве базового уровня для покрытия модели. Затем, чтобы дополнительно реализовать управление дискретным событием окна, это создает больше входных наборов. Файл электронной таблицы, inputCntlCoverageIncrease.xlsx
, содержит эти входные наборы, использующие по одному входному набору на листе.
В примере slexPowerWindowSpreadsheetGeneration
Служебная функция, который создает шаблон электронной таблицы из моделей контроллеров, slexPowerWindowControl
, создает inputCntlCoverageIncrease.xlsx
. В inputCntlCoverageIncrease.xlsx
функция использует имена блоков в моделях контроллеров в качестве имен сигналов. slexPowerWindowSpreadsheetGeneration
определяет имена листов. The slexWindowSpreadsheetAddInput
Служебная функция заполняет inputCntlCoverageIncrease.xlsx
с данными сигнала.
Имена листов этих входных наборов и их описания:
Имя листа | Описание |
---|---|
| Входы, записанные из |
| Входы, записанные из |
| Входы, записанные из |
| Входы, записанные из |
| Входы, записанные из |
| Драйвер опускает окно, и пассажир не предпринимает никаких действий |
| Драйвер поднимает окно, и пассажир не предпринимает никаких действий |
| Драйвер опускает окно на одну секунду (авто-вниз), и пассажир не предпринимает никаких действий |
| Драйвер ставит окно на одну секунду (авто-вверх), и пассажир не предпринимает никаких действий |
| Пассажир опускает окно на одну секунду (авто-вниз), и драйвер не предпринимает никаких действий |
| Пассажир ставит окно на одну секунду (авто-вверх), и драйвер не предпринимает никаких действий |
Чтобы автоматически запустить эти входные векторы, замените входы в управление дискретным событием на блок From Spreadsheet с помощью файла, inputCntlCoverageIncrease.xlsx
. Этот файл содержит несколько входных наборов. Чтобы увидеть предварительно построенную модель:
В Командном Окне MATLAB введите:
slexPowerWindowCntlCoverageIncrease
Чтобы сгенерировать отчет о Simulink Coverage покрытии для нескольких наборов входа, дважды нажатие кнопки подсистему Запуска покрытия в модели.
Для slexPowerWindowCntlCoverageIncrease
модель, отчет показывает, что использование нескольких входных наборов успешно увеличило общее покрытие для slexPowerWindowControl
модель от 42% до 78%. Уровни покрытия менее 100% из-за отсутствующих входных наборов для:
Состояние пассажира вверх
Состояния драйвера вверх и вниз
Автоматическое отключение пассажиров и автоматическое увеличение их состояний
Реализация диаграммы активности: Обнаружение торца препятствия
Гибридная динамическая система: комбинируйте управление дискретными событиями и непрерывный объект
В Модельно-ориентированное Проектирование системная модель находится в центре процесса разработки, от разработки требований до реализации проекта и проверки. Используйте основанную на модели разработку для:
Используйте общую среду проектирования для проектных групп.
Соедините проекты непосредственно с требованиями.
Интеграция проверки с проектом для постоянного выявления и исправления ошибок.
Уточните алгоритмы посредством многодоменной симуляции.
Автоматически сгенерируйте код встроенного программного обеспечения.
Разрабатывайте и повторно используйте тестовые наборы.
Автоматически сгенерируйте документацию для модели.
Повторно используйте проекты для развертывания систем на нескольких процессорах и аппаратных целевых устройствах.
Требования, представленные в виде контекстной схемы, см. в Контекстной схеме: Система степени питания.
Создайте модель Simulink, чтобы напоминать контекстную схему.
Поместите поведение объекта в одну подсистему.
Создайте две подсистемы, которые содержат драйверы и пассажира.
Добавьте механизм управления, чтобы удобно переключаться между присутствием и отсутствием объекта.
Поместите управление в одну подсистему.
Подключите новые подсистемы.
Чтобы увидеть реализацию этой модели, в Командном Окне MATLAB, введите:
slexPowerWindowStart
Можно использовать схему действия управления степени окном (Activity Diagne: Степень Window Control), чтобы разложить степень контроллер окна контекстной схемы на части. Эта схема показывает входные и выходные сигналы, присутствующие в контекстной схеме для более легкого отслеживания их источников.
Чтобы удовлетворить полным требованиям, управление окна со степенью должно работать с валидацией входов драйвера и пассажира и обнаруживать конечную остановку.
Требования, представленные как схема деятельности, смотрите в Схеме деятельности: Управление Окна степени.
Дважды кликните блок slexPowerWindowExample/power_window_control_system, чтобы открыть следующую подсистему:
Требования, представленные в качестве схем деятельности, см. в Схеме деятельности: Валидация драйвера и Схема деятельности: Валидация пассажира.
Схема действия добавляет функциональность валидации данных для команд драйвера и пассажира, чтобы гарантировать правильность операции. Например, когда окно достигает верхней части, программное обеспечение блокирует up
команда. Реализация разлагает каждый процесс валидации в новых подсистемах. Рассмотрите валидацию команд драйвера (валидация команд пассажира аналогична). Проверьте, может ли модель выполнить up
или down
команды, согласно следующим:
Модель позволяет down
команда только, когда окно не полностью открыто.
Модель позволяет up
команда только, когда окно не полностью закрыто и не обнаружен объект.
Третий процесс схемы действия проверяет, чтобы программное обеспечение отправляло только одну из трех команд (neutral
, up
, down
) контроллеру. В фактической реализации оба up
и down
может быть одновременно верно (для примера, из-за эффектов скачка переключателя).
Из подсистемы power_window_control_system это подсистема validate_driver_state:
Из подсистемы power_window_control_system это подсистема validate_passenger_state:
Требования, представленные как схема деятельности, смотрите в Схеме деятельности: Обнаружение остановки препятствий.
В slexPowerWindowExample
модель, блок power_window_control_system/detect_obstacle_endstop реализует эту схему деятельности в непрерывном варианте блока Variant Subsystem. Во время итераций проектирования можно добавить дополнительные варианты.
Дважды кликните slexPowerWindowExample
модель power_window_control_system/detect_obstacle_endstop/Continuous/verify_position блок:
После того, как вы разработали и проверили управление дискретными событиями, интегрируйте его с поведением объекта в непрерывном времени. Этот шаг является первой итерацией проекта с самой простой версией объекта.
В проекте перейдите к Files и нажмите Project. В папке configureModel запустите slexPowerWindowContinuous
утилита для открытия и инициализации модели.
Блок window_system использует блок Variant Subsystem, чтобы позволить изменять уровни точности в моделировании объекта. Дважды кликните window_system/Continuous/2nd_order_window_system блок, чтобы увидеть непрерывный вариант.
Объект моделируется как дифференциальное уравнение второго порядка с пошаговыми изменениями во входе:
Когда диаграмма Stateflow генерирует windowUp
, вход равен 1.
Когда диаграмма Stateflow генерирует windowDown
, вход -1.
В противном случае вход равен 0.
Эта фаза позволяет анализировать взаимодействие между поведением состояния дискретного события, его частотой дискретизации и непрерывным поведением движения окна. Существуют пороговые значения, чтобы сгенерировать систему координат окна сверху и снизу:
endStop
Событие, когда препятствие присутствует, то есть obstacle
Другие события
Дважды кликните slexPowerWindowExample
моделируйте power_window_control_system/detect_obstacle_endstop/Continuous/verify_position блок, чтобы увидеть непрерывный вариант.
Когда вы запускаете slexPowerWindowContinuous
configureModel утилиты, модель использует решатель непрерывного времени ode23 (Богацки-Шампайн).
Структурный анализ системы приводит к:
Функциональное разложение системы
Определения данных со спецификой системных сигналов
Ограничения по времени
Структурный анализ может также включать архитектуру реализации (вне возможностей этого обсуждения).
Реализация также добавляет механизм управления, чтобы удобно переключаться между присутствием и отсутствием объекта.
Ожидаемый ответ контроллера. Чтобы просмотреть движение окна, в Project Shortcuts, дважды кликните мышью SimHybridPlantLowOrder
. Также можно запустить задачу slexPowerWindowContinuousSim
.
Позиционные возможности показывают ожидаемый результат от контроллера. После 30 см модель генерирует obstacle
событие и диаграмма Stateflow переходит в свою emergencyDown
состояние. В этом состоянии windowDown
выводится до тех пор, пока окно не опустится примерно на 10 см. Поскольку переключатель окна пассажира все еще включен, окно снова начинает двигаться вверх, и этот процесс повторяется. Остановите симуляцию и откройте возможности положения, чтобы наблюдать процесс колебаний. В случае чрезвычайной ситуации управление дискретным событием катится вниз по окну приблизительно 10 см.
После первоначального анализа управления дискретными событиями и непрерывной динамики можно использовать подробную модель объекта управления для оценки эффективности в более реалистичной ситуации. Лучше всех моделей проекта на таком уровне детализации в степень области, другими словами, как энергетические потоки. В этом может помочь несколько доменных blocksets MathWorks.
Чтобы учесть энергетические потоки, добавьте более подробный вариант, состоящий из силовой электроники и системы мультитела, к подсистеме window_system варианта.
Чтобы открыть модель и исследовать более подробный вариант объекта, в проекте запустите configureModel slexPowerWindowPowerEffects
.
Дважды кликните slexPowerWindowExample
model window_system/Power Effects - Visualization/detailed_window_system блок.
Степень электронную подсистему. Модель должна усилить сигналы управления, сгенерированные контроллером дискретных событий, чтобы быть достаточно мощной, чтобы привести в действие двигатель постоянного тока, который перемещает окно.
Модули усиления моделируют это поведение. Они показывают, что переключатель либо соединяет двигатель постоянного тока с напряжением батареи, либо с землей. При обратном соединении батареи система генерирует отрицательное напряжение, и окно может двигаться вверх, вниз или оставаться неподвижным. Окно всегда вращается на максимальной степени. Другими словами, ни один контроллер двигателя постоянного тока не применяет предписанную скорость.
Чтобы увидеть реализацию, дважды кликните slexPowerWindowExample
model window_system/Power Effects - Visualization/detailed_window_system/amplification_up блок.
Система мультитела. Эта реализация моделирует окно с использованием блоков Simscape Multibody.
Чтобы увидеть реализацию привода, дважды кликните slexPowerWindowExample
model window_system/Power Effects - Visualization/detailed_window_system/actuator блок.
Чтобы увидеть реализацию окна, дважды кликните slexPowerWindowExample
model window_system/Power Effects - Visualization/detailed_window_system/plant блок.
Эта реализация использует блоки Simscape Multibody для тел, соединений и приводов. Модель окна состоит из:
Червячная передача
Рычаг для перемещения держателя окна в вертикальном направлении
Рисунок показывает перемещение механических деталей.
Итерация в проекте. Важным эффектом более подробной реализации является отсутствие возможности измерения положения окна. Вместо этого модель измеряет ток двигателя постоянного тока и использует его, чтобы обнаружить торцы и увидеть, присутствует ли препятствие. Следующий этап разработки системы анализирует управление, чтобы убедиться, что оно не вызывает чрезмерной силы, когда присутствует препятствие.
В исходной системе проект удаляет препятствие и обнаружение остановки на основе положения окна и заменяет его текущей реализацией. Это также соединяет процесс с контроллером и измерения положения и силы. Чтобы отразить различные используемые сигналы, необходимо изменить определение данных. В сложение заметьте, что из-за степени эффектов модулей теперь являются усилителями.
PSPEC 1.3.1: DETECT ENDSTOP ENDSTOP = ARMATURE_CURRENT > ENDSTOP_MAX
PSPEC 1.3.2: DETECT OBSTACLE OBSTACLE = (ARMATURE_CURRENT > OBSTACLE_MAX) and MOVE_UP for 500 ms
PSPEC 1.3.3: ABSOLUTE VALUE ABSOLUTE_ARMATURE_CURRENT = abs(ARMATURE_CURRENT)
В этой таблице приведен дополнительный сигнал для определений данных Контекстной схемы: Системы Степени.
Контекстная схема: Изменения в определении данных системы окна со степенью
Сигнал | Тип информации | Непрерывный/ Дискретный | Тип данных | Значения |
---|---|---|---|---|
ARMATURE_CURRENT | Данные | Непрерывный | Реальный | - От 20 до 20 А |
В этой таблице перечислены измененные сигналы для определений данных Activity Diagna: Detect Brestacle Endstop.
Схема действия: Обнаружение изменений в определении данных конечной остановки препятствий
Сигнал | Тип информации | Непрерывный/ Постоянный | Тип данных | Значения |
---|---|---|---|---|
ABSOLUTE_ARMATURE_CURRENT | Данные | Непрерывный | Реальный | от 0 до 20 А |
ENDSTOP_MAX | Данные | Постоянный | Реальный | 15 А |
OBSTACLE_MAX | Данные | Постоянный | Реальный | 2,5 А |
Чтобы увидеть подсистему окна, дважды кликните slexPowerWindowExample
model window_system/Power Effects - Visualization/detailed_window_system/plant/window блок.
Реализация использует интерполяционную таблицу и добавляет шум, чтобы позволить оценить робастность управления. Чтобы увидеть реализацию подсистемы трения, дважды кликните slexPowerWindowExample
model window_system/Power Effects - Visualization/detailed_window_system/plant/window/friction блок.
Идеализированный непрерывный объект позволяет доступ к окну положения для endStop
и obstacle
генерация событий. В более реалистичной реализации модель должна генерировать эти события из доступных физических переменных. Для систем окна со степенью эта физическая переменная обычно является током якоря, Ia
, двигателя постоянного тока, который управляет червячной передачей.
Когда окно движется, этот ток имеет приблизительное значение 2 A. Когда вы включаете окно, модель потребляет переходный ток, который может достигнуть значения приблизительно 10 A. Когда ток превышает 15 A, модель активирует обнаружение конечной остановки. Модель потребляет этот ток, когда скорость вращения двигателя сохраняется на почти 0, несмотря на положительное или отрицательное входное напряжение.
Обнаружить присутствие объекта сложнее в этой настройке. Поскольку безопасность ограничивает силу окна не более 100 Н, ток якоря, намного меньший 10 А, должен обнаружить объект. Однако это поведение конфликтует с переходными значениями, достигнутыми во время нормальной операции.
Реализуйте закон управления, который отключает обнаружение объектов во время достигнутых переходных значений. Теперь, когда система обнаруживает ток якоря более 2 А, она рассматривает объект как присутствующий и входит в emergencyDown
состояние управления дискретным событием. Откройте окно возможностей силы (измерения указаны в ньютонах), чтобы проверить, что приложенная сила остается меньше 100 Н, когда объект присутствует, и окно меняет свою скорость на противоположную.
В действительности возможны и осуществляются гораздо более сложные законы о контроле. Для примера можно реализовать методы обучения на основе нейронной сети feedforward управления, чтобы эмулировать характеристики трения каждого отдельного транспортного средства и изменения с течением времени.
Если у вас установлено программное обеспечение Simulink 3D Animation, можно просмотреть геометрию системы в движении через мир виртуальной реальности. Если блок VR Sink еще не открыт, в slexPowerWindowExample/window_world/Simulink_3D_Animation View
дважды кликните блок VR Sink.
Чтобы симулировать модель с жестким решателем:
В проекте запустите задачу, slexPowerWindowPowerEffectsSim
. Это пакетное задание устанавливает решатель на ode23tb (жесткий/TR-BDF2).
В slexPowerWindowExample
модель passenger_switch/Normal блок, включите переключатель passer up.
В slexPowerWindowExample
Модель driver_switch/Normal блока, отключите переключатель драйвера up.
Симулируйте модель.
Между 10 мс и 1 с во времени симуляции отключите slexPowerWindowExample/passenger_switch/Normal блокируйте переключатель пассажира, чтобы инициировать поведение автозапуска.
Наблюдайте, как держатель окна начинает перемещаться вертикально, чтобы закрыть окно. Когда модель встречается с объектом, она катит окно вниз.
Дважды кликните slexPowerWindowExample
моделируйте passenger_switch/Normal блокируйте драйвер download, чтобы полностью опустить окно, а затем симулируйте модель. В этом блоке, менее чем на одну секунду времени симуляции, отключите переключатель вниз драйвера, чтобы инициировать поведение автоматического отключения.
Когда окно достигнет нижней части системы координат, остановите симуляцию.
Посмотрите на измерение положения (в метрах) и на измерение тока якоря (Ia) (в амперах).
Примечание
Абсолютное значение переходного процесса тока якоря во время нормального поведения не превышает 10 А. Модель обнаруживает препятствие, когда абсолютное значение тока якоря, необходимого для перемещения окна вверх, превышает 2,5 А (фактически это меньше -2,5 А). Во время нормальной операции это около 2 А. Вам, возможно, придется масштабировать возможности, чтобы увидеть это измерение. Модель обнаруживает конец окна, когда абсолютное значение тока якоря превышает 15 А.
Изменение тока якоря во время нормальной операции происходит из-за трения, которое включается путем измерения скоростей и положений соединений и применения оконных специфических коэффициентов.
Ток якоря, используемый в управлении окна со степенью, является идеальным значением, которое доступно из-за использования модели привода. В более реалистичной ситуации компоненты сбора данных должны измерить это текущее значение.
Чтобы включить компоненты сбора данных, добавьте более реалистичный вариант измерения к подсистеме window_system варианта. Этот реалистичный вариант измерения содержит блок формирования сигнала, в котором ток выводится на основе измерения напряжения.
Чтобы открыть модель и сконфигурировать реалистичное измерение, в проекте запустите задачу configureModel slexPowerWindowRealisticArmature
.
Чтобы просмотреть содержимое блока Realistic Armature - Communications Protocol, дважды кликните SlexPowerWindowExample
модель window_system/Realistic якорь - коммуникационные Protocol/detailed_window_system_with_DAQ.
Напряжение измерения находится в области значений аналого-цифрового преобразователя (АЦП), который дискретизирует на основе заданного количества бит. Вы должны масштабировать полученное значение на основе значения резистора и области значений АЦП.
Включите эти операции в качестве расчетов с фиксированной точкой. Для достижения необходимого разрешения при заданной области значений требуется 16 бит вместо 8.
Изучите тот же сценарий:
В блоке slexPowerWindowExample/passenger_switch/Normal установите переключатель пассажира.
Запустите симуляцию.
Через некоторое время в блоке slexPowerWindowExample/passenger_switch/Normal отключите переключатель пассажира вверх.
Когда окно будет сведено вниз, нажмите кнопку slexPowerWindowExample/passenger_switch/Normal блока driver down switch.
Через некоторое время отключите переключатель отключения драйвера slexPowerWindowExample/passenger_switch/Normal блока.
Когда окно достигнет нижней части системы координат, остановите симуляцию.
Увеличьте изображение в armature_current окне возможностей и заметьте дискретизированный внешний вид.
Подобна степень окну выхода управлению, оборудование должно генерировать события входа. В этом случае оборудование являются оконными переключателями в дверных и центральных панелях управления. Локальные процессоры генерируют эти события и затем передают их контроллеру окна через шину CAN.
Для включения этих событий добавьте вариант, содержащий вход от шины CAN и компонентов switch, которые генерируют события, доставляемые на шине CAN, в подсистемы переключателя драйвера и варианта переключателя пассажира. Чтобы открыть модель и сконфигурировать коммуникационные протоколы CAN, запустите задачу configureModel, slexPowerWindowCommunicationProtocolSim
.
Чтобы увидеть реализацию подсистемы switch, дважды кликните блок slexPowerWindowExample/driver_switch/Communication Protocol/Driver window control switch.
Наблюдайте структуру, которая очень похожа на систему управления окном. Эта структура содержит:
Модель объекта управления, которая представляет переключатель управления
Подсистема сбора данных, которая включает, помимо прочего, компоненты обусловленности сигнала
Модуль управления для отображения команд от физического коммутатора на логические команды
Модуль CAN для размещения событий на шине данных транспортного средства
Можно добавить эффекты связи, такие как другие системы, использующие шину CAN, и более реализм, подобный описанным фазам. Каждая фаза позволяет анализировать контроллер дискретных событий во все более реалистичной ситуации. Когда у вас достаточно деталей, вы можете автоматически сгенерировать код контроллера для любой конкретной целевой платформы.
Можно сгенерировать код для разработанной модели управления, slexPowerWindowExample
.
Отобразите частоты дискретизации контроллера. В редакторе Simulink Editor на вкладке Debug выберите Information Overlays > Sample Time > Colors. Заметьте, что контроллер запускается с равномерной частотой дискретизации.
Щелкните правой кнопкой мыши блок power_window_control_system и выберите C/C++ Code > Build This Subsystem.
Мостермен, Питер Дж., Янош Сзтипэновитс и Себастьян Энджелл, «Автоматизированная компьютером Мультипарадигма, Моделирующая в Технологии Систем управления», Сделки IEEE на Технологии Систем управления, Издании 12, Номере 2, 2004, стр 223-234.