Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:jroboplc:modules:raduga [2023/09/28 14:51]
denis [Состояния простой линии (simple)]
doc:jroboplc:modules:raduga [2023/10/01 19:16] (текущий)
denis [Состояния комбинированной линии (combo)]
Строка 271: Строка 271:
 Каждый дозатор имеет физическое ограничение по весу, который он может набрать за один раз. Это значение может быть прописано в модуле дозатора в сохраняемом теге ''​SetWeightMax''​. По умолчанию равно 0, что означает "​без ограничений"​. ​ Каждый дозатор имеет физическое ограничение по весу, который он может набрать за один раз. Это значение может быть прописано в модуле дозатора в сохраняемом теге ''​SetWeightMax''​. По умолчанию равно 0, что означает "​без ограничений"​. ​
  
-В тоже время задача может требовать от дозатора загрузки в одном цикле веса, превышающего его ''​SetWeightMax''​. В этом случае дозатор выполняет дозирование несколько проходов,​ количество которых рассчитывается в начале цикла, а заданный вес цикла дозатора,​ делится на равный части для каждого прохода.+В тоже время задача может требовать от дозатора загрузки в одном цикле веса, превышающего его ''​SetWeightMax''​. В этом случае дозатор выполняет дозирование ​в несколько проходов,​ количество которых рассчитывается в начале цикла, а заданный вес цикла дозатора,​ делится на равный части для каждого прохода.
  
 Все действия по загрузке и разгрузке дозаторов выполняются синхронно,​ в том числе и выполнение проходов. Все действия по загрузке и разгрузке дозаторов выполняются синхронно,​ в том числе и выполнение проходов.
 +
 +===== Совместное использование основных дозаторов комбинированными линиями =====
 +
 +Для дозирования основных компонентов комбинированные линии используют одну и ту же группу дозаторы. Т.к. группа основных дозаторов одномоментно может обслуживать только одну линию, то, во избежание конфликтов,​ организован шеринг основных дозаторов при помощи тегов ''​HoldDosers'',​ при этом действуют следующие правила:​
 +
 +  - Если линия хочет начать работать с основными дозаторами,​ то она должна выставить 1 в своем теге ''​HoldDosers''​
 +  - Линия не может выставить 1 в своем теге ''​HoldDosers'',​ если:
 +    - у другой линии уже установлен тег ''​HoldDosers''​
 +    - другая линия также хочет захватить основные дозаторы и она захотела это сделать раньше (соблюдение очереди)
 +  - Если две и более линий имеют у себя тег ''​HoldDosers''​ установленным,​ то линии переходят в состояние ошибки
 +
 +Аналогично с оборудованием транспорта основных компонентов,​ только с использованием тега ''​HoldTransport''​.
 +===== Описание состояний =====
 +  ​
 +
 ===== Состояния простой линии (simple) ===== ===== Состояния простой линии (simple) =====
-** 0   - NONE           ** - Задача не установлена\\+ 
 +---- 
 +** 0   - NONE           ** - Задача не установлена 
 Для установки задачи записать в ''​TaskId''​ значение ''​RD_TASK.ID''​ Для установки задачи записать в ''​TaskId''​ значение ''​RD_TASK.ID''​
 +\\
 +\\
  
 ---- ----
  
 ** 1   - IDLE           **- Ожидание команды старт ** 1   - IDLE           **- Ожидание команды старт
 +
 Ожидание записи 1 в тег ''​Start'',​ после чего: Ожидание записи 1 в тег ''​Start'',​ после чего:
   * генерируется новое значение ''​CycleId''​   * генерируется новое значение ''​CycleId''​
Строка 286: Строка 307:
   * переход в состояние ''​PREPARING''​   * переход в состояние ''​PREPARING''​
  
-Если задача выполнена,​ т.е. ''​SetWeightTot ​<= ExeWeightTot'',​ то переход в состояние ''​TASK_FINISHED''​.+Если линия имеет установленный параметр ''​autostart:​ on'',​ то ''​Start''​ всегда считается равным 1. 
 + 
 +Если задача выполнена,​ т.е. ''​SetWeightTot''​ меньше или равно ''​ExeWeightTot'',​ то переход в состояние ''​TASK_FINISHED''​. 
 +\\ 
 +\\
  
 ---- ----
 ** 2   - PREPARING ​     **- Подготовка дозаторов к старту цикла ** 2   - PREPARING ​     **- Подготовка дозаторов к старту цикла
  
 +Посылаем дозаторам команду "​старт цикла"​. Ожидаем от дозаторов состояния готовности к приему задачи.
 +
 +Здесь и далее участвуют только дозаторы задействованные в рецепте,​ а остальные дозаторы игнорируются.
 +\\
 +\\
  
 ---- ----
 ** 3   - SETTING ​       **- Установка задания дозаторам ** 3   - SETTING ​       **- Установка задания дозаторам
 +
 +Посылаем дозаторам команды "​установить задачу"​. Если хотя бы один из дозаторов по каким-либо причинам не принимает задачу,​ то переход в состояние ''​ERROR''​.
 +Если все дозаторы принимают задачу,​ то переход в следующее состояние.
 +\\
 +\\
  
 ---- ----
 ** 4   - LOADING ​       **- Идет дозирование (загрузка). Ожидание завершения дозирования ** 4   - LOADING ​       **- Идет дозирование (загрузка). Ожидание завершения дозирования
 +
 +Если загрузка разрешена,​ то посылаем дозаторам команды "​начать задачу"​ и "​начать загрузку"​. Ожидаем все дозаторы в состоянии готовности к разгрузке и переход в следующее состояние.
 +\\
 +\\
  
 ---- ----
 ** 5   - UNLOADING ​     **- Идет разгрузка. Ожидание завершения разгрузки ** 5   - UNLOADING ​     **- Идет разгрузка. Ожидание завершения разгрузки
 +
 +Если разгрузка разрешена,​ то посылаем дозаторам команды "​начать разгрузку"​. Ожидаем все дозаторы в состоянии стоп и, если все дозаторы выполнили все проходы,​ то переход в следующее состояние. Если же не все дозаторы выполнили все проходы,​ то возврат к состоянию ''​PREPARING''​.
 +\\
 +\\
  
 ---- ----
 ** 99  - ERROR          **- Ошибка установки задачи ** 99  - ERROR          **- Ошибка установки задачи
 +
 +Ожидание отмены или сброса задачи.
 +\\
 +\\
  
 ---- ----
 ** 100 - CYCLE_FINISHED **- Цикл дозирования закончен ** 100 - CYCLE_FINISHED **- Цикл дозирования закончен
 +
 +Возврат в состояние IDLE
 +\\
 +\\
  
 ---- ----
 ** 101 - TASK_FINISHED ​ **- Задача выполнена ** 101 - TASK_FINISHED ​ **- Задача выполнена
 +
 +Ожидание отмены или сброса задачи.
 +\\
 +\\
 +
  
 ===== Состояния комбинированной линии (combo) ===== ===== Состояния комбинированной линии (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
 +\\
 +\\
 +
  
doc/jroboplc/modules/raduga.1695901914.txt.gz · Последние изменения: 2023/09/28 14:51 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0