Моделируйте питатель сборочной линии

Типичные подходы к программированию на графике

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

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

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

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

Требования к проектированию

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

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

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

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

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

  • После включения системы он начинает подсчет количества подаваемых деталей.

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

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

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

  • Если сигнал all-clear звучит, возобновите нормальную операцию и сбросьте количество частей, подаваемых в нуль.

  • Светодиодный индикатор фидера изменяет цвет в соответствии с режимом работы системы - оранжевый для «инициализации системы», зеленый для «on» и красный для «failure state».

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

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

ПризнакОсобенность
Рабочие режимы
  • Инициализация системы, для выполнения системных проверок перед включением машины

  • On, для нормальной операции

  • Отказ системы для восстановления отказа машины, отмеченный аварийным сигналом

Переходы
  • Инициализация системы в On

  • Инициализация системы в состояние отказа

  • On to Failure state (включено в состояние отказа)

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

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

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

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

  • Цвет светодиода на фидере

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

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

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

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

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

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

    The 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. Щелкните значок Инструмент, чтобы привести состояние в график.

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

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

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

Определите тип состояния активности

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

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

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

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

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

     Синтаксис действия входа

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

    entry:
    Light = RED;

    Красный светодиодный индикатор указывает на вход в FailState.

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

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

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

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

    The 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, чтобы убедиться, что модель захватывает ожидаемое поведение питателя.

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

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

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

В предыдущем примере, когда вы используете входные данные для представления события, график периодически просыпается и проверяет, действительны ли условия переходов. В этом случае, если ALARM = = 1, переход в состояние отказа происходит на следующем временном шаге. Однако создание диаграммы Stateflow, которая реагирует на входные события, позволяет вам реагировать на сигнал тревоги, когда событие запускается.

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

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

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

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

Признаки Особенности
СобытияДва асинхронных события: сигнал тревоги и all-clear сигнал
Исходные данныеТри показания датчика, чтобы обнаружить, переместилась ли деталь на нижестоящую сборочную станцию

График питателя, активированная входными событиями

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

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

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

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

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

См. также

|