Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:jroboplc:modules:raduga [2023/09/28 15:40] denis [Состояния простой линии] |
doc:jroboplc:modules:raduga [2023/10/01 19:16] (текущий) denis [Состояния комбинированной линии (combo)] |
||
---|---|---|---|
Строка 271: | Строка 271: | ||
Каждый дозатор имеет физическое ограничение по весу, который он может набрать за один раз. Это значение может быть прописано в модуле дозатора в сохраняемом теге ''SetWeightMax''. По умолчанию равно 0, что означает "без ограничений". | Каждый дозатор имеет физическое ограничение по весу, который он может набрать за один раз. Это значение может быть прописано в модуле дозатора в сохраняемом теге ''SetWeightMax''. По умолчанию равно 0, что означает "без ограничений". | ||
- | В тоже время задача может требовать от дозатора загрузки в одном цикле веса, превышающего его ''SetWeightMax''. В этом случае дозатор выполняет дозирование несколько проходов, количество которых рассчитывается в начале цикла, а заданный вес цикла дозатора, делится на равный части для каждого прохода. | + | В тоже время задача может требовать от дозатора загрузки в одном цикле веса, превышающего его ''SetWeightMax''. В этом случае дозатор выполняет дозирование в несколько проходов, количество которых рассчитывается в начале цикла, а заданный вес цикла дозатора, делится на равный части для каждого прохода. |
Все действия по загрузке и разгрузке дозаторов выполняются синхронно, в том числе и выполнение проходов. | Все действия по загрузке и разгрузке дозаторов выполняются синхронно, в том числе и выполнение проходов. | ||
===== Совместное использование основных дозаторов комбинированными линиями ===== | ===== Совместное использование основных дозаторов комбинированными линиями ===== | ||
- | todo | + | |
- | | + | Для дозирования основных компонентов комбинированные линии используют одну и ту же группу дозаторы. Т.к. группа основных дозаторов одномоментно может обслуживать только одну линию, то, во избежание конфликтов, организован шеринг основных дозаторов при помощи тегов ''HoldDosers'', при этом действуют следующие правила: |
+ | |||
+ | - Если линия хочет начать работать с основными дозаторами, то она должна выставить 1 в своем теге ''HoldDosers'' | ||
+ | - Линия не может выставить 1 в своем теге ''HoldDosers'', если: | ||
+ | - у другой линии уже установлен тег ''HoldDosers'' | ||
+ | - другая линия также хочет захватить основные дозаторы и она захотела это сделать раньше (соблюдение очереди) | ||
+ | - Если две и более линий имеют у себя тег ''HoldDosers'' установленным, то линии переходят в состояние ошибки | ||
+ | |||
+ | Аналогично с оборудованием транспорта основных компонентов, только с использованием тега ''HoldTransport''. | ||
===== Описание состояний ===== | ===== Описание состояний ===== | ||
| | ||
- | ==== Состояния простой линии ==== | + | |
+ | ===== Состояния простой линии (simple) ===== | ||
---- | ---- | ||
Строка 316: | Строка 325: | ||
** 3 - SETTING **- Установка задания дозаторам | ** 3 - SETTING **- Установка задания дозаторам | ||
- | Посылаем дозаторам команды "установить задачу". Если хотя бы один из дозаторов по каким-либо причинам не принимает задачу, то переход в состояние ''ERROR''. | + | Посылаем дозаторам команды "установить задачу". Если хотя бы один из дозаторов по каким-либо причинам не принимает задачу, то переход в состояние ''ERROR''. |
Если все дозаторы принимают задачу, то переход в следующее состояние. | Если все дозаторы принимают задачу, то переход в следующее состояние. | ||
\\ | \\ | ||
Строка 357: | Строка 366: | ||
- | ==== Состояния комбинированной линии ==== | + | ===== Состояния комбинированной линии (combo) ===== |
+ | Далее обозначение "Аналогично simple" означает "тоже самое, что и для простой линии". | ||
+ | |||
+ | ---- | ||
** 0 - NONE **- Задача не установлена | ** 0 - NONE **- Задача не установлена | ||
+ | Аналогично simple | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 1 - IDLE **- Ожидание команды старт | ** 1 - IDLE **- Ожидание команды старт | ||
+ | Аналогично simple | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 8 - HOLD_DOSERS **- Ожидание захвата дозаторов ОК | ** 8 - HOLD_DOSERS **- Ожидание захвата дозаторов ОК | ||
+ | Ожидаем ''HoldDosers==0'' по всем combo-линиям, после чего, в соответствии с очередностью, устанавливаем 1 в ''HoldDosers'' и переход в следующее состояние. | ||
+ | С этого момента основными дозаторами владеет данная линия. Остальные линии только читают и ничего не пишут в дозаторы, а также никак не реагируют на изменения счетчиков. | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 9 - PREPARING_C **- Подготовка дозатора контроля к старту цикла | ** 9 - PREPARING_C **- Подготовка дозатора контроля к старту цикла | ||
+ | Аналогично simple, только для дозатора контроля | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 10 - SETTING_C **- Установка задания дозатору контроля | ** 10 - SETTING_C **- Установка задания дозатору контроля | ||
+ | Аналогично simple, только для дозатора контроля | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 11 - START_SEQ_BEFORE_LOAD_C **- Запуск оборудования перед дозатором контроля | ** 11 - START_SEQ_BEFORE_LOAD_C **- Запуск оборудования перед дозатором контроля | ||
+ | Устанавливаем тег ''CmdSeqBeforeLoadC'' и ожидаем 1 в теге ''InpSeqBeforeLoadC'' | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 12 - PREPARING_P **- Подготовка дозаторов ОК к старту цикла | ** 12 - PREPARING_P **- Подготовка дозаторов ОК к старту цикла | ||
+ | Аналогично simple, только для основных дозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 13 - SETTING_P **- Установка задания дозаторам ОК | ** 13 - SETTING_P **- Установка задания дозаторам ОК | ||
+ | Аналогично simple, только для основных дозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 14 - LOADING_P **- Идет загрузка дозаторов ОК | ** 14 - LOADING_P **- Идет загрузка дозаторов ОК | ||
+ | Аналогично simple, только для основных дозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 15 - HOLD_TRANSPORT **- Ожидание захвата транспорта ОК | ** 15 - HOLD_TRANSPORT **- Ожидание захвата транспорта ОК | ||
+ | Аналогично состоянию ''HOLD_DOSERS'', только для тега ''HoldTransport'' | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 16 - UNLOADING_P **- Идет разгрузка дозаторов ОК | ** 16 - UNLOADING_P **- Идет разгрузка дозаторов ОК | ||
+ | Аналогично simple, только для основных дозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 17 - DELAY_TRANSPORT_P **- Задержка времени для транспорта ОК | ** 17 - DELAY_TRANSPORT_P **- Задержка времени для транспорта ОК | ||
+ | Сбрасываем тег ''HoldDosers''. | ||
+ | |||
+ | Задержка задается в теге ''TimeTransportP''. В теге ''TimeCnt'' идет обратный отсчет. Это время необходимо для полного прохождения | ||
+ | продукта после разгрузки основных дозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 18 - WAIT_CRUSHER_EMPTY **- Ожидание опустошения дробилки | ** 18 - WAIT_CRUSHER_EMPTY **- Ожидание опустошения дробилки | ||
+ | Сбрасываем тег ''HoldTransport''. | ||
+ | |||
+ | Ожидание 1 в теге ''InpCrusherEmpty'' | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 19 - LOADING_C **- Идет загрузка дозатора контроля (набор мин.вес, стабилизация веса) | ** 19 - LOADING_C **- Идет загрузка дозатора контроля (набор мин.вес, стабилизация веса) | ||
+ | Сбрасываем тег ''CmdSeqBeforeLoadC''. | ||
+ | |||
+ | Если загрузка разрешена, то посылаем дозатору контроля команды «начать задачу» и «начать загрузку». | ||
+ | Ожидаем на дозаторе контроля стабилизацию текущего веса ''Stable==1'' и достижение текущего веса до значения заданного с учетом допустимого недобора: | ||
+ | SetWeightP - <контрольный дозатор>.CurWeight <= UnderweightLimitC | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 20 - STOP_LOAD_C **- Остановка загрузки дозатора контроля | ** 20 - STOP_LOAD_C **- Остановка загрузки дозатора контроля | ||
+ | Посылаем контрольному дозатору команду "стоп загрузки". | ||
+ | Ожидаем на дозаторе контроля стабилизацию текущего веса и состояния готовности к разгрузке, после чего: | ||
+ | * фиксируем текущий вес контрольного дозатора в теге ''ExeWeightC'' | ||
+ | * сохраняем зафиксированный вес в таблице ''RD_TASK_CTL'' | ||
+ | * рассчитываем ''SetWeight'' для микродозаторов в соответствии с зафиксированным весом | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 21 - PREPARING_M **- Подготовка дозаторов МК к старту цикла | ** 21 - PREPARING_M **- Подготовка дозаторов МК к старту цикла | ||
+ | Аналогично simple, только для микродозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 22 - SETTING_M **- Установка задания дозаторам МК | ** 22 - SETTING_M **- Установка задания дозаторам МК | ||
+ | Аналогично simple, только для микродозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 23 - LOADING_M **- Идет загрузка дозаторов МК | ** 23 - LOADING_M **- Идет загрузка дозаторов МК | ||
+ | Аналогично simple, только для микродозаторов | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 24 - WAIT_MIXER_READY **- Ожидание готовности миксера к загрузке | ** 24 - WAIT_MIXER_READY **- Ожидание готовности миксера к загрузке | ||
+ | Ожидание 1 в теге ''InpMixerBusy'' | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 25 - START_SEQ_BEFORE_LOAD_MIXER **- Запуск оборудования разгрузки дозаторов контроля и МК в миксер | ** 25 - START_SEQ_BEFORE_LOAD_MIXER **- Запуск оборудования разгрузки дозаторов контроля и МК в миксер | ||
+ | Устанавливаем тег ''CmdSeqBeforeLoadMixer'' и ожидаем 1 в теге ''InpSeqBeforeLoadMixer'' | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 26 - UNLOADING_C_M **- Идет разгрузка дозаторов контроля и МК | ** 26 - UNLOADING_C_M **- Идет разгрузка дозаторов контроля и МК | ||
+ | Аналогично simple, только для микродозаторов и дозатора контроля | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 27 - DELAY_AFTER_UNLOAD_C_M **- Задержка времени после разгрузки дозаторов контроля и МК | ** 27 - DELAY_AFTER_UNLOAD_C_M **- Задержка времени после разгрузки дозаторов контроля и МК | ||
+ | Аналогично DELAY_TRANSPORT_P, только для тега ''TimeAfterUnloadCM'' | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 28 - START_MIXING **- Запуск цикла смешивания | ** 28 - START_MIXING **- Запуск цикла смешивания | ||
+ | Устанавливаем тег ''CmdSeqStartMixing'' и ожидаем 1 в теге ''InpMixerBusy'', после чего сбрасываем теги ''CmdSeqBeforeLoadMixer'' и ''CmdSeqStartMixing'' | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 99 - ERROR **- Ошибка установки задачи | ** 99 - ERROR **- Ошибка установки задачи | ||
+ | Аналогично simple | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 100 - CYCLE_FINISHED **- Цикл дозирования закончен | ** 100 - CYCLE_FINISHED **- Цикл дозирования закончен | ||
+ | Аналогично simple | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
** 101 - TASK_FINISHED **- Задача выполнена | ** 101 - TASK_FINISHED **- Задача выполнена | ||
+ | |||
+ | Аналогично simple | ||
+ | \\ | ||
+ | \\ | ||
+ | |||