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

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

Существует два общих подхода к программированию графика 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. Модель должна теперь выглядеть так:

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

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

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

  • На

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

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

  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.

    Примечание

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

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

Примечание

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

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

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

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

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

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

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

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

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

  1. Для данных partsFed: в столбце Data 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), чтобы указать на текущий рабочий режим. Более низкая ось показывает количество частей, питаемых следующую станцию блока, которая увеличивается инкрементно, пока сигнал тревоги не выключает машину и затем сбрасывает. Однако основанная на событии симуляция кормит большим количеством частей следующую станцию блока должным синхронизировать и различия в решателе.