Смоделируйте фидер сборочного конвейера

Типичные подходы, чтобы строить диаграмму программирования

Существует два общих подхода к программированию графика Stateflow® в модели Simulink®:

  • Идентифицируйте рабочие режимы своей системы.

  • Идентифицируйте системный интерфейс, такой как события, на которые реагирует ваша система.

Этот пример использует первый подход — то есть, запустите путем идентификации рабочих режимов системы, чтобы программировать график.

Конструктивные требования

В этом примере показано, как создать диаграмму Stateflow с помощью MATLAB® в качестве языка действия. Модель представляет машину на сборочном конвейере, который кормит сырьем другие части линии. Этот фидер ведет себя можно следующим образом:

  • При системной инициализации проверяйте, что три значения датчика нормальны.

    Положительное значение означает, что датчик работает правильно. Нуль означает, что датчик не работает.

  • Если все значения датчика нормальны, переход от "системной инициализации" к "на".

  • Если фидер не оставляет режим инициализации после 5 секунд, обеспечьте фидер в состояние отказа.

  • После того, как система включает, она начинает считать количество частей питаемым.

  • На каждом временном шаге, если какое-либо чтение датчика равняется 2 или больше, часть переместилась в следующую станцию.

  • Если сигнал тревоги звучит, обеспечьте систему в состояние отказа.

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

  • Если звуки сигнала отбоя, возобновите нормальное функционирование и сбросьте количество частей, питаемых нуль.

  • Фидер LED изменяет цвет, чтобы совпадать с системным рабочим режимом — оранжевый для "системной инициализации", зеленый для "на", и красный для "состояния отказа".

Идентифицируйте атрибуты системы

На основе описания поведения фидера можно идентифицировать ключевые атрибуты системы.

АтрибутХарактеристика
Рабочие режимы
  • Системная инициализация, чтобы выполнить системные проверки перед включением машины

  • На, для нормального функционирования

  • Системный отказ, для восстанавливаемого аппаратного сбоя отмечается предупреждением

Переходы
  • Системная инициализация к На

  • Системная инициализация к состоянию Отказа

  • На состоянии Отказа

  • Состояние отказа к Системной инициализации

Параллельные режимыНикакие рабочие режимы не запущены параллельно. Только один режим может быть активным в любое время.
Режим по умолчаниюСистемная инициализация
Входные параметры
  • Три показаний датчика, чтобы обнаружить, если часть переместилась в нисходящую станцию блока

  • Сигнал тревоги, который может принять одно из двух значений: 1 для на и 0 для прочь

Выходные параметры
  • Количество частей, которые были обнаружены, как питается нисходящую станцию блока

  • Цвет Вовлеченного фидер

Создайте модель сами или используйте предоставленную модель

В этом осуществлении вы добавляете диаграмму Stateflow в модель Simulink, которая содержит датчик и сигнальные входные сигналы к фидеру.

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

Добавьте диаграмму Stateflow в модель фидера

  1. Откройте частично созданную модель.

  2. Дважды кликните SensorSignals блокируйтесь, чтобы видеть три сигнала датчика, представленные импульсными блоками генератора.

    sensors сигнал указывает, когда часть блока готова переместиться в следующую станцию.

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

    Когда ALARM сигнал активен, машина выключает.

  4. Запустите модель, чтобы видеть выход датчика и сигналов тревоги в блоке Scope.

    Верхняя ось показывает сигналы датчика. Только два сигнала датчика появляются, потому что два из датчиков имеют тот же сигнал. Более низкая ось показывает сигнал тревоги, который выключает фидер между временем симуляции 45 - 80 секунд.

  5. Откройте Библиотеку Stateflow путем выполнения sflib в командной строке MATLAB.

  6. Выберите Chart и перетащите его в свою модель.

    Совет

    Чтобы создать новую модель с пустой диаграммой Stateflow, которая использует MATLAB в качестве языка действия, используйте функцию sfnew.

  7. Удалите связи от подсистемы SensorSignals до осциллографа и от подсистемы AlarmSignal до осциллографа.

  8. Переименуйте метку Chart расположенный под диаграммой Stateflow к Feeder. Модель должна теперь выглядеть так:

Добавьте состояния, чтобы представлять рабочие режимы

На основе системных атрибутов, ранее описанных, существует три рабочих режима:

  • Системная инициализация

  • On

  • Состояние отказа

Добавить состояния для моделирования поведения этих рабочих режимов:

  1. Дважды кликните График Фидера, чтобы начать добавлять состояния.

    Примечание

    Значок MATLAB в левом нижнем углу графика указывает, что вы используете диаграмму Stateflow с синтаксисом MATLAB.

  2. Нажмите State Tool icon, чтобы принести состояние в график.

  3. Кликните по левому верхнему углу состояния и введите имя, InitializeSystem.

  4. Повторите шаги 2 и 3, чтобы добавить еще два состояния под названием On и FailState.

Реализуйте состояния активности

Решите тип состояния активности

Состояния выполняют действия в различных фазах их цикла выполнения со времени, они становятся активными ко времени, они становятся неактивными. Три основных состояния активности:

Тип действияКогда выполняетсяКак часто выполняемый, в то время как состояние активно
ЗаписьТо, когда состояние вводится (становится активным),Однажды
Во времяВ то время как состояние активно, и никакой допустимый переход к другому состоянию не доступенНа каждом временном шаге
ВыходПрежде чем переход взят к другому состояниюОднажды

Например, можно использовать entry действия, чтобы инициализировать данные, during действия, чтобы обновить данные и exit действия, чтобы сконфигурировать данные для следующего перехода. Для получения дополнительной информации о других типах состояний активности, смотрите Синтаксис для состояний и Переходов.)

  1. Нажмите возвращаются после InitializeSystem утвердите называют и добавляют этот текст, чтобы задать действие записи состояния:

    entry:
    Light = ORANGE;
    Оранжевый светодиод указывает на запись в InitializeSystem состояние.

     Синтаксис для действия записи

  2. Добавьте следующий код после FailState утвердите имя, чтобы задать действие записи:

    entry:
    Light = RED;

    Красный LED указывает на запись в FailState.

  3. Добавьте следующий код после On утвердите имя, чтобы задать действие записи:

    entry:
    Light = GREEN;
    partsFed = 0;
    Зеленый LED указывает на запись в On состояние. Количество питаемых частей инициализируется к 0 каждым разам, когда мы вводим On состояние.

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

    during:
    if(any(sensors >= 2))
    	partsFed = partsFed + 1;
    end

    On утвердите проверяет сигнал датчика определить, готова ли часть питаться следующую станцию блока. Если сигнал датчика силен (количество датчиков, которые работают, больше или равен 2), то график считает часть как шедший дальше к следующей станции.

     Синтаксис для во время действий

    График должен теперь выглядеть так фигура.

Задайте условия перехода

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

На основе описания поведения фидера задайте правила для переходов между состояниями:

  1. Соедините переход по умолчанию к InitializeSystem состояние, чтобы указать на точку входа графика.

    Переходы по умолчанию задают, где начать симуляцию.

  2. Чертите переход от InitializeSystem утвердите к On состояние:

    1. Переместите мышь через более низкое ребро InitializeSystem состояние до формы указателя превращается в крест нитей.

    2. Перетащите мышь к верхнему ребру On состояние. Вы затем видите переход от InitializeSystem утвердите к On состояние.

    3. Дважды кликните переход, чтобы добавить это условие:

      [all(sensors>0)]

    Это условие перехода проверяет, имеют ли все датчики значения, больше, чем нуль.

  3. Повторите эти шаги, чтобы создать эти остающиеся условия перехода.

    ПереходУсловие
    On к FailState[Alarm == 1]
    FailState к InitializeSystem[Alarm == 0]

  4. Чертите другой переход от InitializeSystem к FailState. На этом переходе введите следующее, чтобы создать событие перехода:

    after(5,sec)
    Если датчики не включили после 5 секунд этот синтаксис задает переход от InitializeSystem к FailState.

    Примечание

    Синтаксис на этом переходе является событием, а не условием перехода. Для получения дополнительной информации смотрите Выполнение Диаграммы управления при помощи Временной Логики.

    График теперь выглядит так фигура.

Примечание

Исходящие переходы от InitializeSystem имейте маленькое, маркируют 1 и 2, чтобы указать на порядок, в котором оценены сегменты перехода. Если числа от фигуры не совпадают с вашей моделью, щелкните правой кнопкой мыши по переходу и затем измените его путем нажатия на Execution Order. Смотрите Порядок Оценки Перехода для деталей.

Задайте данные для своей системы

Проверьте свойства данных графика

Запустите симуляцию своей модели. Ошибки о неразрешенных символах появляются, наряду с Мастером Символа.

Мастер Символа автоматически не добавляет данных в ваш график. Это идентифицирует неразрешенные данные и выводит класс и осциллограф тех данных с помощью правил вывода выражений MATLAB в действиях Stateflow. В графике:

  • Данные, которые считаны из, но не записаны в, выведены как входные данные. Однако, если имя данных находится во всех прописных буквах, Мастер Символа выводит данные в качестве параметра

  • Данные, которые записаны в, но не считаны из, выведены как выходные данные.

  • Данные, которые считаны из и записаны в, выведены как локальные данные.

Мастер Символа выводит осциллограф входных данных в вашем графике. Однако необходимо зафиксировать осциллограф данных для partsFed Вывод . Выполните эти шаги:

  1. Для данных partsFed: в столбце Scope выберите Output из списка.

    Мастер Символа теперь выглядит так фигура.

  2. Чтобы добавить данные, которые предлагает Мастер Символа, нажмите OK.

  3. Добавьте начальные значения для параметров. В командной строке MATLAB введите:

    RED = 0;

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

    ПараметрЗначение
    RED0
    ORANGE1
    GREEN2
  5. Возвратитесь к модели и соедините вводы и выводы с их соответствующими портами.

Проверьте системное представление

  1. Запустите симуляцию.

Дважды кликните блок Scope, чтобы проверить, что модель получает ожидаемое поведение фидера.

Верхняя ось показывает сигнал LED, который варьируется между оранжевым (1), зеленый (2), и красный (0), чтобы указать на текущий рабочий режим. Более низкая ось показывает количество частей, питаемых следующую станцию блока, которая увеличивается инкрементно, пока сигнал тревоги не выключает машину и затем сбрасывает.

Альтернативный подход: основанный на событии график

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

В предыдущем примере, когда вы используете входные данные, чтобы представлять событие, график периодически просыпается и проверяет, допустимы ли условия на переходах. В этом случае, если ПРЕДУПРЕЖДЕНИЕ == 1, то переход к состоянию отказа происходит на следующем временном шаге. Однако создание диаграммы Stateflow, которая реагирует, чтобы ввести события, позволяет вам реагировать на сигнал тревоги, когда событие инициировано.

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

Идентифицируйте атрибуты системы для событийно-управляемых систем

В основанном на событии подходе системные атрибуты, чтобы рассмотреть сначала являются событиями, входными параметрами и выходными параметрами.

В следующей таблице рассмотрите характеристики событийно-управляемой Модели Фидера, которые отличаются от системы на основе условий перехода.

Атрибуты Характеристики
СобытияДва асинхронных события: сигнал тревоги и сигнал отбоя
Входные параметрыТри показаний датчика, чтобы обнаружить, если часть переместилась в нисходящую станцию блока

График фидера, активированный входными Событиями

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

График теперь имеет только один входной порт слева, и событие инициировало вход на верхней части. Для получения дополнительной информации о том, как создать диаграмму Stateflow, активированную событиями, смотрите, Активируют диаграмму Stateflow путем Отправки Входных Событий

Когда ALARM предупредите инициировал график, график отвечает на триггер в том временном шаге. Если текущим состоянием является On когда предупреждение инициировано, затем переходы текущего состояния к FailState.

Выход scope для инициированного Событием графика в следующем рисунке.

Верхняя ось показывает сигнал LED, который варьируется между красным (0), оранжевый (1), и зеленый (2), чтобы указать на текущий рабочий режим. Более низкая ось показывает количество частей, питаемых следующую станцию блока, которая увеличивается инкрементно, пока сигнал тревоги не выключает машину и затем сбрасывает. Однако основанная на событии симуляция кормит большим количеством частей следующую станцию блока должным синхронизировать и различия в решателе.

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

|