Этот пример демонстрирует склад с автономными роботами для управления порядком. Цель примера состоит в том, чтобы показать, как упростить сложные модели, созданные с Simulink®, Stateflow®, и SimEvents® компоненты и их коммуникация с помощью сообщений. Различия в Виде на море Между сообщениями Stateflow, Событиями и Данными (Stateflow) для получения дополнительной информации о сообщениях.
Прикажите, чтобы модель выполнения имела два главных компонента
Компонент Очереди Порядка представляет очередь онлайн-заказа блоками из библиотеки SimEvents®.
Складской компонент представляет доставку элементов порядка автономными роботами. Это использует блоки из Simulink® и библиотек SimEvents® и графика Stateflow®. График требует лицензии Stateflow®.
В этой модели онлайн-заказ для нескольких элементов прибывает в компонент Очереди Порядка. Местоположения упорядоченных элементов передаются с блока Processing Order на автономных роботов в Складском компоненте. Три робота присвоены трем проходам. Робот поднимает элемент со своего местоположения прохода и возвращает его в его начальное местоположение для доставки. Порядок может иметь один, два, или три элемента. Когда все упорядоченные элементы поставляются роботами, порядок завершен, и прибывает новый порядок. Пока порядок не завершен, никакие новые заказы не получены к компоненту Очереди Порядка.
Склад имеет три прохода. Первый проход содержит элементы одежды, второй проход содержит игрушки, и третий проход содержит электронику. Три робота доставки идентичны, и их движущие силы управляются линейной независимой от времени системой, которой управляет настроенный ПИД-регулятор. Например, блок подсистемы Aisle1 состоит из подсистемы Robot1 и блока Discrete-Event Chart как планировщик.
Подсистема Robot1 имеет типовой цикл управления с обратной связью с динамикой робота, представленного блоком State-Space и ПИД-регулятором.
Подсистема Robot1 спроектирована, чтобы отследить опорный сигнал от блока In1, который является out
сигнал от блока Discrete-Event Chart. Система сравнивает входное значение с выходом от блока State-Space, и различие между сигналами питается блок PID Controller.
Например, если сигнал от блока In1 является константой со значением 10
, запуск с начального состояния 0
, выход системы сходится к 10
.
В x - оси и y - ось, Robot1 перемещается можно следующим образом.
Robot1 первоначально в x1 и y1 = 0 координат. Для вывоза и доставки элемента это перемещается только в y - ось и ее координата x1 остаются то же самое.
Каждый элемент порядка в Aisle1 имеет координату yaisle на y - ось. yaisle становится постоянным входным опорным сигналом, который будет прослежен подсистемой Robot1.
Когда подсистема Robot1 достигает yaisle, она берет элемент порядка и автономно повторно выполняется назад к y1 = 0 местоположений для доставки.
Осциллограф отображает траекторию в качестве примера для подсистемы Robot1, которая получает значение yaisle 10
как постоянный ссылочный вход во времени симуляции 265
. Когда расстоянием между местоположением робота и y = 10 является 0.1
, ссылочным входным сигналом является 0
и робот возвращается к его начальному местоположению для доставки.
Подсистема Robot2 и подсистема Robot3 имеют идентичную динамику и поведение для доставки элемента в подсистеме Aisle2 и подсистеме Aisle3. Их координатами x является x2 и x3, и они также перемещаются в вертикальный y - ось.
В траектории предыдущего примера Robot1 имеет три состояния. Блок Discrete-Event Chart используется, чтобы запланировать переходы между этими состояниями робота.
Робот ожидает в Wait
состояние, пока это не получает координату элемента yaisle. Подсистема Robot1 находится в Wait
состояние, пока временем симуляции не является 265
.
Робот переходы к PickUp
состояние, когда существует входящее сообщение, несущее значение yaisle элемента с блоком Discrete-Event Chart. Это значение присвоено out
, который является выходным сигналом блока Discrete-Event Chart. out
сигнал питается подсистему Robot1 как входной сигнал, In1, который будет прослежен и робот, двигает местоположение элемента yaisle. Переходы подсистемы Robot1 к PickUp
состояние во время 265
.
Когда роботом является 0.1
модули далеко от yaisle, это берет элемент. Затем переходы робота к Deliver
состояние. out
сигнал становится 0
и робот возвращается назад к y = 0 для доставки. Во времени симуляции 290
, Подсистемой Robot1 является 0.1
модуль далеко от y = 10 и переходы к Deliver
состояние.
Когда робот возвращается, и это - 0.1
модули далеко от y = 0, это переходит к Wait
состояние. Приблизительно в 320
, Подсистема Robot1 поставляет элемент и переходы назад к Wait
состояние.
Когда робот поставляет свой элемент, элемент отправляется, чтобы сгенерировать пакет порядка. Это поведение представлено блоком Message Send, который генерирует сообщение в блоке Item from Aisle Simulink Function. Затем сгенерированное сообщение вводит блок Entity Queue.
Блок Composite Entity Creator ожидает всех трех элементов от трех блоков Entity Queue, чтобы создать составную сущность, которая представляет порядок.
Чтобы завершить порядок, все элементы из этих трех проходов требуются, чтобы быть поставленными.
Когда все элементы поставляются, порядок завершен, и он прибывает в блок Package Ready.
Запись порядка с блоком Package Ready инициировала блок Simulink Function1, чтобы сгенерировать сообщение и открыть логический элемент для завершения порядка.
Когда порядок отключен, новый порядок прибывает в блок Processing Order, который перезапускает процесс доставки.
Пока порядок не завершен, никакие новые заказы не получены, таким образом, роботы, которые поставляют их элементы, ожидают порядка, который будет завершен.
Блок очереди порядка является простой системой массового обслуживания, состоявшей из Entity Generator, Entity Queue, Entity Server, Entity gate и блока Entity Terminator. Для получения дополнительной информации о создании простой системы массового обслуживания, смотрите, Управляют Сущностями Используя Действия События.
Блок Entity Generator случайным образом генерирует порядки. Время межгенерации чертится от экспоненциального распределения со средним 100
.
Каждая сгенерированная сущность имеет три случайным образом сгенерированных атрибута aisle1
, aisle2
, и aisle3
это представляет координаты yaisle элементов в Aisle1, Aisle2 и подсистемах Aisle3.
entity.Aisle1 = randi([1,30]); entity.Aisle2 = randi([1,30]); entity.Aisle3 = randi([1,30]);
Это принято, что элементы расположены вертикально между y = 1 и y = 30.
Прибытие порядка с блоком Entity Server активирует роботов путем передачи координат yaisle элементов. Ввод этого MATLAB® код в поле Entry action.
LocateAisle1(entity.Aisle1); LocateAisle2(entity.Aisle2); LocateAisle3(entity.Aisle3);
Вызов LocateIsle()
функция передает координату yaisle элемента к соответствующему роботу.
Порядок ожидает в блоке Entity Server, пока блок Entity Gate не открывается.
Когда все элементы поставляются, пакет порядка вводит блок Package Ready, и его запись вызывает блок Simulink Function1 через функциональный ordercomplete()
. Блок Simulink Function1 генерирует сообщение, чтобы открыть логический элемент.
Когда логический элемент открывается, порядок отключен, и новый порядок прибывает в блок Entity Server.
Смотрите пропускную способность порядка от Очереди Порядка.
Увеличьте время симуляции до 1000
.
Симулируйте модель и заметьте, что осциллограф отображает 7
как общее количество завершенных порядков.
Entity Server | Entity Generator | Entity Queue | Entity Terminator | Discrete-Event Chart