Автомобили используют электронику для операций управления, таких как:
Открытие и закрытие окон и крыши с окошком
Корректировка зеркал и фар
Блокировка и разблокирование дверей
Эти системы подвергаются строгим ограничениям операции. Отказы могут вызвать опасный и возможно опасные для жизни ситуации. В результате тщательный проект и анализ необходимы перед развертыванием.
Этот пример фокусируется на проекте системы окна со стеклоподъемником автомобиля, в частности, окна пассажирской стороны. Критический аспект этой системы - то, что она не может породить силу больше чем 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 с.
Если выпущен для между 200 мс и 1 с, окно должно полностью открытый. Если вниз команда дается для между 200 мс и 1 с, окно должно полностью близко.
Окно должно запустить движущиеся 200 мс после того, как команда будет дана.
Сила, чтобы обнаружить, когда объект присутствует, меньше 100 Н.
Когда закрытие окна, если объект находится в пути, прекращает закрывать окно и понижает окно приблизительно на 10 см.
Схемы действия помогают вам графически получить спецификацию и изучить, как система действует. Иерархическая структура помогает с анализом даже больших систем. В верхнем уровне схема контекста описывает системную среду и ее взаимодействие с системой при исследовании в терминах операций обмена данными и управления. Затем можно разложить систему на схему действия с процессами и управлять техническими требованиями (CSPEC).
Процессы ведут иерархическое разложение. Вы задаете каждый процесс с помощью другой схемы действия или примитивной спецификации (PSPEC). Можно задать PSPEC во многих представлениях с формальным семантическим, таким как Диаграмма Simulink. Кроме того, схемы контекста графически получают контекст работы системы.
Фигура представляет схему контекста системы окна со стеклоподъемником. Квадратные поля получают среду, в этом случае, драйвер, пассажира и окно. И драйвер и пассажир могут отправить команды в окно, чтобы переместить его вверх и вниз. Контроллер выводит правильную команду, чтобы отправить на привод окна (e.g., команда драйвера имеет приоритет над пассажирской командой). Кроме того, схема контролирует состояние оконной системы, чтобы установить, когда окно полностью открывается и закрывается и обнаружить, если существует объект между окном и системой координат.
Круг (также известный как пузырь) представляет контроллер окна со стеклоподъемником. Круг является графическим обозначением для процесса. Процессы получают преобразование входных данных в выходные данные. Примитивный процесс может также сгенерировать. CSPECs обычно состоят из комбинационной или последовательной логики, чтобы вывести сигналы элемента управления выводом из элемента управления вводом.
Для реализации в окружении Simulink смотрите Реализацию Схемы Контекста: Система Окна со стеклоподъемником.
Управление окном со стеклоподъемником состоит из трех процессов и CSPEC. Два процесса подтверждают драйвер и пассажирский вход, чтобы гарантировать, что их вход значим, учитывая состояние системы. Например, если окно полностью открыто, MOVE DOWN
команда не целесообразна. Остающийся процесс обнаруживает, если окно полностью открывается или полностью закрывается и если объект присутствует. CSPEC берет управляющие сигналы и выводит, переместить ли окно вверх или вниз (e.g., если объект присутствует, движения вниз окна в течение приблизительно одной секунды или пока это не достигает endstop).
Для реализации в окружении Simulink смотрите Реализацию Схемы Действия: Управление Окном со стеклоподъемником.
Каждый процесс в ПОДТВЕРЖДАТЬ диаграмме операций ДРАЙВЕРА примитивен и задан следующим 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 смотрите Реализацию Схемы Действия: Подтвердить.
Внутренности ПОДТВЕРЖДАТЬ процесса PASSENGER совпадают с ПОДТВЕРЖДАТЬ процессом ДРАЙВЕРА. Единственной разницей является различный ввод и вывод.
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 см. Схему Действия: Подтвердите Пассажира.
Третий процесс в схеме действия УПРАВЛЕНИЯ ОКНОМ СО СТЕКЛОПОДЪЕМНИКОМ обнаруживает присутствие препятствия или когда окно достигает своей верхней части или нижней части (ENDSTOP
). Механизм обнаружения основан на токе якоря привода окна. Во время нормального функционирования этот ток в определенных границах. Когда окно достигает своей верхней части или нижней части, электродвигатель чертит большой ток (больше чем 15 А или меньше чем-15 А), чтобы попытаться выдержать его скорость вращения. Точно так же во время нормального функционирования ток составляет приблизительно 2 А или-2 А (в зависимости от того, открывается ли окно или закрывается). Когда существует объект, существует небольшое отклонение от этого значения. Чтобы сохранить силу окна на объекте меньше чем 100 Н, управление переключается на свою неотложную операцию, когда это обнаруживает ток, который меньше-2.5 А. Это операции необходимы только, когда окно свертывается, который соответствует отрицательному току в конкретном проводном соединении этой модели. ОБНАРУЖИТЬ схема действия OBSTACLE 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 см. Схему Действия: Обнаружьте Препятствие Endstop.
Функциональное разложение однозначно задает каждый процесс своим разложением или примитивной спецификацией (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.
Схема действия: обнаружьте препятствие определения данных Endstop
Сигнал | Тип информации | Непрерывный / Дискретный | Тип данных | Значения |
---|---|---|---|---|
ENDSTOP_MIN | Данные | Постоянный | Действительный | 0,0 м |
ENDSTOP_MAX | Данные | Постоянный | Действительный | 0,4 м |
OBSTACLE_MAX | Данные | Постоянный | Действительный | 0,3 м |
Проект модели выполняет итерации, когда мы исследуем более подробные реализации. Для получения информации о том, как проект модели выполняет итерации, когда вы вводите больше детали, смотрите, Выполняют итерации на Проекте.
MATLAB® и Simulink поддерживают Модельно-ориентированное проектирование для встроенной системы управления от первоначальной спецификации до генерации кода. Чтобы организовать крупные проекты и совместно использовать вашу работу с другими, используйте управление проектами.
Проект Управления Окном со стеклоподъемником показывает, как можно использовать инструменты Mathworks и процесс Модельно-ориентированного проектирования, чтобы пойти от концепции до реализации для автомобильной системы окна со стеклоподъемником. Это использует проекты организовать файлы и другие компоненты модели.
Кроме того, этот пример показывает, как соединить модели с документацией по системе.
Чтобы открыть Контроллер Окна со стеклоподъемником проект, в командном окне MATLAB, введите:
slexPowerWindowStart
Исследуйте папки проекта. В частности, отметьте папки task. Эта папка содержит скрипты, которые запускают частые задачи для модели. Для Контроллера Окна со стеклоподъемником Проект, эти скрипты:
Настройте модель, чтобы управлять перемещением окна на сети области контроллера (CAN).
Настройте модель, чтобы использовать программное обеспечение Stateflow и Simulink для дискретного события модели реактивное поведение и непрерывное поведение времени с моделью объекта управления младшего разряда.
Настройте модель с более подробной моделью объекта управления, которая включает эффекты степени в электрические и механические области. Модель объекта управления подтверждает силу, порожденную окном на захваченный объект.
Настройте модель с моделью, которая включает другие эффекты, которые могут изменить модель, такую как квантование измерений.
Примечание
Эти скрипты также симулируют модель. Чтобы только сконфигурировать модель, см. скрипты в папке configureModel.
Используйте модель покрытия увеличения, чтобы сгенерировать отчет покрытия модели.
Раздел Project Shortcuts содержит команды быстрого доступа, которые можно дважды кликнуть, чтобы выполнить общие задачи, такие как:
Добавьте проекты в пути MATLAB.
Выполните интерактивное тестирование.
Подтвердите тестирование модели с покрытием модели.
Откройте основную модель.
Симулируйте модель с различными настройками.
Сгенерируйте отчет покрытия модели для увеличенного покрытия модели.
Откройте модель, используемую для увеличения покрытия модели.
Эта тема описывает высокоуровневую спецификацию управления дискретного события для управления окном со стеклоподъемником.
Можно смоделировать управление дискретного события окна с диаграммой Stateflow. Диаграмма Stateflow является конечным автоматом с иерархией и параллелизмом. Этот конечный автомат содержит основные состояния системы окна со стеклоподъемником: авто, вниз, автовниз, отдых и чрезвычайная ситуация. Это моделирует изменения состояния и составляет приоритет команд драйвера по пассажирским командам. Это также включает экстренное поведение, которое активируется, когда программное обеспечение обнаруживает объект между окном и системой координат при продвижении.
Первоначальная модель Simulink для управления окном со стеклоподъемником, slexPowerWindowControl
, контроллер дискретного события, который запускается на уровне данной частоты дискретизации.
В этой реализации откройте подсистему управления окном со стеклоподъемником и заметьте, что диаграмма Stateflow с управлением дискретного события формирует CSPEC, представленный наклоненной толстой панелью в правом нижнем углу. detect_obstacle_endstop подсистема инкапсулирует пороговые механизмы обнаружения.
Управление дискретного события является моделью Stateflow, которая расширяет понятие диаграммы переходов состояний с иерархией и параллелизмом. Изменения состояния из-за пассажирских команд инкапсулируются в супер состоянии, которое не соответствует активной команде драйвера.
Рассмотрите управление пассажирского окна. Пассажир или драйвер могут переместить это окно вверх и вниз.
Этот конечный автомат содержит основные состояния системы окна со стеклоподъемником: авто, вниз, автовниз, отдых и чрезвычайная ситуация.
Вход управления. slexPowerWindowCntlInteract
модель включает этот вход управления как переключатели. Дважды кликните эти переключатели, чтобы вручную управлять ими.
Протестируйте конечный автомат, который управляет окном со стеклоподъемником путем выполнения входных тестовых векторов и проверки, что он достигает желаемого внутреннего состояния и генерирует выход. Окно со стеклоподъемником имеет следующие внешние входные параметры:
Пассажирский вход
Вход Driver
Окно или вниз
Препятствие в окне
Каждый вход состоит из вектора с этими входными параметрами.
Пассажирский вход
Элемент | Описание |
---|---|
neutral | Пассажирский переключатель управления не подавлен. |
up | Пассажирский переключатель управления генерирует сигнал. |
down | Пассажирский переключатель управления генерирует вниз сигнал. |
Вход драйвера
Элемент | Описание |
---|---|
neutral | Переключатель управления драйвером не подавлен. |
up | Переключатель управления драйвером генерирует сигнал. |
down | Переключатель управления драйвером генерирует вниз сигнал. |
Окно или вниз
Элемент | Описание |
---|---|
0
| Окно перемещается свободно между верхней частью или нижней частью. |
1
| Окно застревает наверху или нижняя часть из-за физических ограничений. |
Препятствие в окне
Элемент | Описание |
---|---|
0
| Окно перемещается свободно между верхней частью или нижней частью. |
1
| Окно имеет препятствие в системе координат. |
Сгенерируйте пассажира и входные сигналы драйвера путем отображения вверх и вниз по сигналам согласно этой таблице:
Входные параметры | Выходные параметры | |||
---|---|---|---|---|
вниз | вниз | нейтральный | ||
0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 1 |
Входные параметры явным образом генерируют neutral
событие от up
и down
события, сгенерированные путем нажатия окна со стеклоподъемником, управляют переключателем. Входные параметры вводятся, когда таблица истинности в нейтральном пассажире, вниз сопоставляет и нейтральный драйвер, вниз сопоставляет.
Случай 1: Окно. Наблюдать поведение конечного автомата:
Откройте slexPowerWindowCntlInteract
модель.
Запустите симуляцию и затем дважды кликните, пассажир переключаются.
Если вы требуете у физического переключателя окна больше одной секунды, перемещений окна вплоть до, переключатель выпущен (или верхняя часть рамки окна достигнута и endstop
событие сгенерировано).
Дважды кликните выбранный пассажир переключаются, чтобы выпустить его.
Симулируйте модель.
Установка переключателя endstop генерирует endstop событие.
Случай 2: Окно Авто. Если вы нажимаете, физическое пассажирское окно переключаются в течение короткого периода времени (меньше, чем секунда), программное обеспечение активирует авто поведение, и окно продолжает перемещаться вверх.
Нажмите физическое пассажирское окно переключаются в течение короткого периода времени (меньше, чем секунда).
В конечном счете окно достигает верхней части системы координат, и программное обеспечение генерирует endstop
событие. Это событие кладет обратно конечный автомат к своему нейтральному состоянию.
Симулируйте модель.
Случай 3: Приоритет водительской стороны. Переключатель драйвера для пассажирского окна более приоритетен по сравнению с командами драйвера. Наблюдать поведение конечного автомата в этом случае:
Запустите симуляцию, и затем переместите систему в passenger up
состояние путем двойного клика по пассажирскому окну переключается.
Дважды кликните драйвер вниз переключаются.
Симулируйте модель.
Заметьте, как конечный автомат перемещается в часть управления драйвером, чтобы сгенерировать окно, вниз выведенное вместо окна выход.
Дважды кликните управление драйвером к драйверу. Дважды кликните драйвер вниз переключаются.
Работоспособное состояние окна драйвера достигнуто, который генерирует окно выход снова, т.е. windowUp = 1
.
Чтобы наблюдать поведение состояния, когда объект будет между окном и системой координат, дважды кликните переключатель препятствия.
Симулируйте модель.
На следующем шаге расчета конечный автомат перемещается в свой emergencyDown
утвердите, чтобы понизить окно несколько дюймов. Как далеко программное обеспечение понижается, окно зависит от того, какой длины конечный автомат находится в emergencyDown
состояние. Это поведение является частью следующей фазы анализа.
Если драйвер или пассажирский переключатель окна все еще активны, перемещения конечного автомата в или неработоспособные состояния на следующий шаг расчета после отъезда чрезвычайного состояния. Если переключатель препятствия также все еще активен, программное обеспечение снова активирует чрезвычайное состояние в следующем шаге расчета.
Валидация Подсистемы Управления. Подтвердите управление дискретного события окна с помощью инструмента model coverage. Этот инструмент помогает вам определить степень, до которой тест модели осуществляет условные переходы контроллера. Это помогает оценить, взяты ли все переходы в управлении дискретного события, даны тест, и стали ли все пункты в условии, которое включает конкретный переход, верными. Несколько пунктов могут включить один переход, e.g., переход от чрезвычайной ситуации назад к нейтральному происходит, когда или 100 меток деления произошли или если endstop достигнут.
Чтобы достигнуть полного охвата, каждый пункт оценивает к истине и лжи для используемых тестов. Процент переходов, которые осуществляет тест, называется его 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%. Несколько влияющих факторов для уровней покрытия:
Пассажир блокируется, не изменяется.
Endstop и блоки препятствия не изменяются.
Увеличьте Покрытие модели. Чтобы увеличить общее покрытие до 100%, необходимо учесть все возможные комбинации драйвера, пассажира, препятствия и endstop настроек. Когда вы удовлетворены поведением управления, можно создать систему окна со стеклоподъемником. Для получения дополнительной информации смотрите, Создают Модель Используя Модельно-ориентированное проектирование.
Этот пример увеличивает покрытие модели для валидации управления дискретного события окна. Чтобы запуститься, пример использует входные параметры от slexPowerWindowCntlCoverage
как базовая линия для покрытия модели. Затем, чтобы далее осуществить контроль дискретного события над окном, это создает более входные наборы. Файл электронной таблицы, inputCntlCoverageIncrease.xlsx
, содержит эти входные наборы с помощью одного входного набора на лист.
В примере, slexPowerWindowSpreadsheetGeneration
служебная функция, которая создает шаблон электронной таблицы из моделей контроллеров, slexPowerWindowControl
, создает inputCntlCoverageIncrease.xlsx
. В inputCntlCoverageIncrease.xlsx
, функция использует имена блока в моделях контроллеров как имена сигнала. slexPowerWindowSpreadsheetGeneration
задает имена листа. slexWindowSpreadsheetAddInput
служебная функция заполняет inputCntlCoverageIncrease.xlsx
с данными сигнала.
Имена листа этих входных наборов и их описаний:
Покройте имя | Описание |
---|---|
| Входные параметры регистрируются от |
| Входные параметры регистрируются от |
| Входные параметры регистрируются от |
| Входные параметры регистрируются от |
| Входные параметры регистрируются от |
| Драйвер кладет окно, и пассажир не принимает мер |
| Драйвер поднимает окно, и пассажир не принимает мер |
| Драйвер кладет окно в течение одной секунды (автовниз), и пассажир не принимает мер |
| Драйвер поднимает окно в течение одной секунды (авто), и пассажир не принимает мер |
| Пассажир кладет окно в течение одной секунды (автовниз), и драйвер не принимает мер |
| Пассажир поднимает окно в течение одной секунды (авто), и драйвер не принимает мер |
Чтобы автоматически запустить эти входные векторы, замените входные параметры к управлению дискретного события с блоком From Spreadsheet с помощью файла, inputCntlCoverageIncrease.xlsx
. Этот файл содержит несколько входных наборов. Видеть предварительно созданную модель:
В Командном Окне MATLAB введите:
slexPowerWindowCntlCoverageIncrease
Чтобы сгенерировать отчет покрытия Simulink Coverage для нескольких, входные, набора дважды щелкают по подсистеме Покрытия Запуска в модели.
Для slexPowerWindowCntlCoverageIncrease
модель, доклад показывает, что использование нескольких входных наборов успешно повысило полное покрытие для slexPowerWindowControl
модель от 42% до 78%. Уровни покрытия меньше 100% из-за пропавших без вести входных наборов для:
Пассажирское работоспособное состояние
Драйвер вверх и вниз по состояниям
Пассажир, автоматический вниз и автоматические работоспособные состояния
Почему модельно-ориентированное проектирование использования?
Реализация схемы контекста: система окна со стеклоподъемником
Гибридная динамическая система: объедините управление Дискретного События и непрерывный объект
В Модельно-ориентированном проектировании системная модель находится в центре процесса разработки, от разработки требований, посредством реализации проекта и тестирования. Используйте Модельно-ориентированное проектирование для:
Используйте общую среду проектирования через проектные группы.
Соедините проекты непосредственно с требованиями.
Интегрируйте тестирование с проектом, чтобы постоянно идентифицировать и откорректировать ошибки.
Совершенствуйте алгоритмы посредством многодоменной симуляции.
Автоматически сгенерируйте код встроенного программного обеспечения.
Разрабатывайте и переиспользуйте тестовые наборы.
Автоматически сгенерируйте документацию для модели.
Повторное использование проектирует, чтобы развернуть системы через несколько процессоров и аппаратных целей.
Для требований, представленных как схема контекста, см. Схему Контекста: Система Окна со стеклоподъемником.
Создайте модель Simulink, чтобы напомнить схему контекста.
Поместите поведение объекта в одну подсистему.
Создайте две подсистемы, которые содержат драйвер и пассажирские переключатели.
Добавьте механизм управления, чтобы удобно переключиться между присутствием и отсутствием объекта.
Поместите управление в одну подсистему.
Соедините новые подсистемы.
Чтобы видеть реализацию этой модели, в командном окне MATLAB, введите:
slexPowerWindowStart
Можно использовать схему действия управления окном со стеклоподъемником (Схема Действия: Управление Окном со стеклоподъемником), чтобы анализировать контроллер окна со стеклоподъемником контекста схематически изображают в части. Эта схема показывает сигналы ввода и вывода, существующие в схеме контекста для более легкой трассировки до их источников.
Чтобы удовлетворить полным требованиям, управление окном со стеклоподъемником должно работать с валидацией драйвера и пассажирских входных параметров и обнаружить endstop.
Для требований, представленных как схема действия, см. Схему Действия: Управление Окном со стеклоподъемником.
Дважды кликните блок 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 подсистема:
Для требований, представленных как схема действия, см. Схему Действия: Обнаружьте Препятствие Endstop.
В slexPowerWindowExample
модель, блок power_window_control_system/detect_obstacle_endstop реализует эту схему действия в непрерывном варианте Различного блока 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 см.
После начального анализа управления дискретного события и непрерывной динамики, можно использовать подробную модель объекта управления, чтобы оценить эффективность в более реалистической ситуации. Лучше модели проекта в таком уровне детализации в домене питания, другими словами, как энергетические потоки. Несколько проблемно-ориентированных библиотек MathWorks могут помочь с этим.
Чтобы учесть энергетические потоки, добавьте более подробный вариант, состоящий из силовой электроники и системы мультитела к window_system различной подсистеме.
Чтобы открыть модель и исследовать более подробный вариант объекта, в проекте, запускают configureModel slexPowerWindowPowerEffects
.
Дважды кликните slexPowerWindowExample
модель window_system/Power блок Effects - Visualization/detailed_window_system.
Подсистема Силовой электроники. Модель должна усилить управляющие сигналы, сгенерированные контроллером дискретного события, чтобы быть достаточно мощной, чтобы управлять двигателем постоянного тока, который перемещает окно.
Модули усиления моделируют это поведение. Они показывают, что переключатель или соединяет двигатель постоянного тока с напряжением батареи или землей. Путем соединения батареи наоборот, система генерирует отрицательное напряжение, и окно может переместиться вверх, вниз, или остаться тихим. Окно всегда управляется в максимальной мощности. Другими словами, никакой контроллер двигателя постоянного тока не применяет предписанную скорость.
Чтобы видеть реализацию, дважды кликните slexPowerWindowExample
модель window_system/Power блок Effects - Visualization/detailed_window_system/amplification_up.
Система мультитела. Эта реализация моделирует окно с помощью блоков Simscape Multibody.
Чтобы видеть реализацию привода, дважды кликните slexPowerWindowExample
модель window_system/Power блок Effects - Visualization/detailed_window_system/actuator.
Чтобы видеть реализацию окна, дважды кликните slexPowerWindowExample
модель window_system/Power блок Effects - Visualization/detailed_window_system/plant.
Эта реализация использует блоки Simscape Multibody для тел, соединений и приводов. Модель окна состоит из:
Червячная передача
Рычаг, чтобы переместить держателя окна в вертикальное направление
Рисунок показывает, как механические детали перемещаются.
Выполните итерации на Проекте. Важный эффект более подробной реализации состоит в том, что нет никакого доступного измерения положения окна. Вместо этого модель измеряет текущий двигатель постоянного тока и использует его, чтобы обнаружить endstops и видеть, присутствует ли препятствие. Следующий этап разработки системы анализирует управление, чтобы убедиться, что это не вызывает чрезмерную силу, когда препятствие присутствует.
В исходной системе проект удаляет препятствие и endstop обнаружение на основе положения окна и заменяет его на текущую реализацию. Это также соединяет процесс с контроллером и измерения положения и силы. Чтобы отразить различные используемые сигналы, необходимо изменить определение данных. Кроме того, заметьте, что из-за эффектов степени модули являются теперь усилителями.
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 А |
Эта таблица приводит измененные сигналы для Схемы Действия: Обнаружьте Препятствие определения данных Endstop.
Схема действия: обнаружьте препятствие изменения определения данных Endstop
Сигнал | Тип информации | Непрерывный / Постоянный | Тип данных | Значения |
---|---|---|---|---|
ABSOLUTE_ARMATURE_CURRENT | Данные | Непрерывный | Действительный | От 0 до 20 А |
ENDSTOP_MAX | Данные | Постоянный | Действительный | 15 А |
OBSTACLE_MAX | Данные | Постоянный | Действительный | 2.5 A |
Чтобы видеть подсистему окна, дважды кликните slexPowerWindowExample
модель window_system/Power блок Effects - Visualization/detailed_window_system/plant/window.
Реализация использует интерполяционную таблицу и добавляет шум, чтобы позволить оценку робастности управления. Чтобы видеть реализацию подсистемы трения, дважды кликните slexPowerWindowExample
модель window_system/Power блок Effects - Visualization/detailed_window_system/plant/window/friction.
Идеализированный непрерывный объект предоставляет доступ к положению окна для endStop
и obstacle
генерация события. В более реалистической реализации модель должна сгенерировать эти события от доступных физических переменных. Для систем окна со стеклоподъемником эта физическая переменная обычно является током якоря, Ia
, из двигателя постоянного тока, который управляет червячной передачей.
Когда окно перемещается, этот ток имеет приближенное значение 2 А. Когда вы включаете окно, модель чертит переходный ток, который может достигнуть значения приблизительно 10 А. Когда ток превышает 15 А, модель активирует endstop обнаружение. Модель чертит этот ток, когда скорость вращения двигателя сохранена в почти 0 несмотря на положительное или отрицательное входное напряжение.
Обнаружение присутствия объекта больше затрудняет в этой настройке. Поскольку проблемы безопасности ограничивают силу окна не больше, чем 100 Н, ток якоря, намного меньше чем 10 А должны обнаружить объект. Однако это поведение конфликтует с переходными значениями, достигнутыми во время нормального функционирования.
Реализуйте закон о надзоре, который отключает обнаружение объектов во время достигнутых переходных значений. Теперь, когда система обнаруживает ток якоря больше чем 2 А, она рассматривает объект присутствовать и вводит emergencyDown
состояние управления дискретного события. Откройте окно scope силы (измерения находятся в ньютонах) проверять, что порожденная сила остается меньше чем 100 Н, когда объект присутствует, и окно инвертирует свою скорость.
В действительности намного более сложные законы о надзоре возможны и реализованы. Например, можно реализовать основанное на нейронной сети изучение методы управления прямого распространения, чтобы эмулировать характеристику трения каждого отдельного транспортного средства и изменений в зависимости от времени.
Если вам установили программное обеспечение Simulink 3D Animation, можно просмотреть геометрики системы в движении через мир виртуальной реальности. Если блок VR Sink еще не открыт в slexPowerWindowExample/window_world/Simulink_3D_Animation View
модель, дважды кликните блок VR Sink.
Симулировать модель с жестким решателем:
В проекте запустите задачу, slexPowerWindowPowerEffectsSim
. Это пакетное задание устанавливает решатель на ode23tb (stiff/TR-BDF2).
В slexPowerWindowExample
модель passenger_switch/Normal блок, набор пассажир переключаются на на.
В slexPowerWindowExample
модель driver_switch/Normal блок, набор драйвер переключаются на прочь.
Симулируйте модель.
Между 10 мс и 1 с во времени симуляции, выключите пассажира блока slexPowerWindowExample/passenger_switch/Normal, переключаются, чтобы инициировать авто поведение.
Наблюдайте, как держатель окна начинает перемещаться вертикально, чтобы закрыть окно. Когда модель сталкивается с объектом, она прокручивает окно вниз.
Дважды кликните slexPowerWindowExample
модель passenger_switch/Normal драйвер блока вниз переключается, чтобы скатиться по окну полностью и затем симулировать модель. В этом блоке, меньше чем в одном втором времени симуляции, выключают драйвер, вниз переключаются, чтобы инициировать автовниз поведение.
Когда окно достигнет нижней части системы координат, остановите симуляцию.
Посмотрите на измерение положения (в метрах) и в токе якоря (Ia) измерение (в усилителях).
Примечание
Абсолютное значение переходного процесса тока якоря во время нормального поведения не превышает 10 А. Модель обнаруживает препятствие, когда абсолютное значение тока якоря, требуемого перемещать окно вверх, превышает 2,5 А (на самом деле, это меньше-2.5 А). Во время нормального функционирования это - приблизительно 2 А. Вам придется масштабировать в осциллограф, чтобы видеть это измерение. Модель обнаруживает окно endstop, когда абсолютное значение тока якоря превышает 15 А.
Изменение тока якоря во время нормального функционирования происходит из-за трения, которое включено путем обнаружения объединенных скоростей и положений и применения окна определенные коэффициенты.
Ток якоря, как используется в управлении окном со стеклоподъемником является идеальным значением, которое доступно из-за использования модели привода. В более реалистической ситуации компоненты сбора данных должны измерить это текущее значение.
Чтобы включать компоненты сбора данных, добавьте более реалистический вариант измерения в window_system различную подсистему. Этот реалистический вариант измерения содержит блок создания условий сигнала, в котором ток выведен на основе измерения напряжения.
Чтобы открыть модель и сконфигурировать реалистическое измерение, в проекте, запускают configureModel задачу slexPowerWindowRealisticArmature
.
Чтобы просмотреть содержимое блока Realistic Armature - Communications Protocol, дважды кликните SlexPowerWindowExample
модель window_system/Realistic Арматура - Коммуникации Protocol/detailed_window_system_with_DAQ.
Напряжение измерения в области значений аналого-цифрового конвертера (ADC), который дискретизирует на основе данного количества битов. Необходимо масштабировать получившееся значение на основе значения резистора и области значений ADC.
Включайте эти операции как расчеты фиксированной точки. Чтобы достигнуть необходимого разрешения с данной областью значений, 16 битов требуются вместо 8.
Изучите тот же сценарий:
В блоке slexPowerWindowExample/passenger_switch/Normal, набор пассажир переключаются.
Запустите симуляцию.
Через какое-то время, в блоке slexPowerWindowExample/passenger_switch/Normal, выключите пассажира, переключаются.
Когда по окну скатились, щелкните, драйвер блока slexPowerWindowExample/passenger_switch/Normal вниз переключаются.
Через какое-то время выключите драйвер блока slexPowerWindowExample/passenger_switch/Normal, вниз переключаются.
Когда окно достигнет нижней части системы координат, остановите симуляцию.
Масштабируйте в armature_current окно scope и заметьте дискретизированный внешний вид.
Подобно элементу управления выводом окна со стеклоподъемником оборудование должно сгенерировать входные события. В этом случае оборудование является переключателями управления окном в двери и центральных панелях управления. Локальные процессоры генерируют эти события и затем передают их контроллеру окна через шину CAN.
Чтобы включать эти события, добавьте различное, содержащее вход от шины CAN и компонентов переключателя, которые генерируют события, поставленные на шине CAN переключателю драйвера, и пассажир переключают различные подсистемы. Чтобы открыть модель и сконфигурировать протоколы связи CAN, запустите configureModel задачу, slexPowerWindowCommunicationProtocolSim
.
Чтобы видеть реализацию подсистемы переключателя, дважды кликните блок switch управления окном slexPowerWindowExample/driver_switch/Communication Protocol/driver.
Наблюдайте структуру, которая очень похожа на систему управления окна. Эта структура содержит a:
Модель объекта управления, которая представляет переключатель управления
Подсистема сбора данных, которая включает, среди прочего, компоненты создания условий сигнала
Управляющий модуль, чтобы сопоставить команды от физического переключателя до логических команд
Модуль CAN, чтобы отправить события на шину данных транспортного средства
Можно добавить эффекты взаимопонимания, такие как другие системы с помощью шины CAN и другие реализм, похожий на описанные фазы. Каждая фаза позволяет анализ контроллера дискретного события во все больше реалистической ситуации. Когда у вас есть достаточно детали, можно автоматически сгенерировать код контроллера для любой определенной целевой платформы.
Можно сгенерировать код для спроектированной модели управления, slexPowerWindowExample
.
Отобразите частоты дискретизации контроллера. В Редакторе Simulink, на вкладке Debug, выбирают Information Overlays> Sample Time> Colors. Заметьте, что контроллер запускается на уровне универсальной частоты дискретизации.
Щелкните правой кнопкой по блоку power_window_control_system и выберите C/C++ Code> Build This Subsystem.
Мостермен, Питер Дж., Янош Сзтипэновитс и Себастьян Энджелл, “Автоматизированное Моделирование Мультипарадигмы в Технологии Систем управления”, Транзакции IEEE на Технологии Систем управления, Издании 12, Номере 2, 2004, стр 223–234.