Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:jroboplc:modules:raduga [2023/09/28 16:21] 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''. | ||
===== Описание состояний ===== | ===== Описание состояний ===== | ||
| | ||
Строка 359: | Строка 367: | ||
===== Состояния комбинированной линии (combo) ===== | ===== Состояния комбинированной линии (combo) ===== | ||
+ | |||
Далее обозначение "Аналогично simple" означает "тоже самое, что и для простой линии". | Далее обозначение "Аналогично simple" означает "тоже самое, что и для простой линии". | ||
Строка 365: | Строка 374: | ||
Аналогично simple | Аналогично simple | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
** 1 - IDLE **- Ожидание команды старт | ** 1 - IDLE **- Ожидание команды старт | ||
+ | |||
Аналогично simple | Аналогично simple | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 379: | Строка 389: | ||
Ожидаем ''HoldDosers==0'' по всем combo-линиям, после чего, в соответствии с очередностью, устанавливаем 1 в ''HoldDosers'' и переход в следующее состояние. | Ожидаем ''HoldDosers==0'' по всем combo-линиям, после чего, в соответствии с очередностью, устанавливаем 1 в ''HoldDosers'' и переход в следующее состояние. | ||
С этого момента основными дозаторами владеет данная линия. Остальные линии только читают и ничего не пишут в дозаторы, а также никак не реагируют на изменения счетчиков. | С этого момента основными дозаторами владеет данная линия. Остальные линии только читают и ничего не пишут в дозаторы, а также никак не реагируют на изменения счетчиков. | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 386: | Строка 396: | ||
Аналогично simple, только для дозатора контроля | Аналогично simple, только для дозатора контроля | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 393: | Строка 403: | ||
Аналогично simple, только для дозатора контроля | Аналогично simple, только для дозатора контроля | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 400: | Строка 410: | ||
Устанавливаем тег ''CmdSeqBeforeLoadC'' и ожидаем 1 в теге ''InpSeqBeforeLoadC'' | Устанавливаем тег ''CmdSeqBeforeLoadC'' и ожидаем 1 в теге ''InpSeqBeforeLoadC'' | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 407: | Строка 417: | ||
Аналогично simple, только для основных дозаторов | Аналогично simple, только для основных дозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 414: | Строка 424: | ||
Аналогично simple, только для основных дозаторов | Аналогично simple, только для основных дозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 421: | Строка 431: | ||
Аналогично simple, только для основных дозаторов | Аналогично simple, только для основных дозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 428: | Строка 438: | ||
Аналогично состоянию ''HOLD_DOSERS'', только для тега ''HoldTransport'' | Аналогично состоянию ''HOLD_DOSERS'', только для тега ''HoldTransport'' | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 435: | Строка 445: | ||
Аналогично simple, только для основных дозаторов | Аналогично simple, только для основных дозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 445: | Строка 455: | ||
Задержка задается в теге ''TimeTransportP''. В теге ''TimeCnt'' идет обратный отсчет. Это время необходимо для полного прохождения | Задержка задается в теге ''TimeTransportP''. В теге ''TimeCnt'' идет обратный отсчет. Это время необходимо для полного прохождения | ||
продукта после разгрузки основных дозаторов | продукта после разгрузки основных дозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 454: | Строка 464: | ||
Ожидание 1 в теге ''InpCrusherEmpty'' | Ожидание 1 в теге ''InpCrusherEmpty'' | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 465: | Строка 475: | ||
Ожидаем на дозаторе контроля стабилизацию текущего веса ''Stable==1'' и достижение текущего веса до значения заданного с учетом допустимого недобора: | Ожидаем на дозаторе контроля стабилизацию текущего веса ''Stable==1'' и достижение текущего веса до значения заданного с учетом допустимого недобора: | ||
SetWeightP - <контрольный дозатор>.CurWeight <= UnderweightLimitC | SetWeightP - <контрольный дозатор>.CurWeight <= UnderweightLimitC | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 476: | Строка 486: | ||
* сохраняем зафиксированный вес в таблице ''RD_TASK_CTL'' | * сохраняем зафиксированный вес в таблице ''RD_TASK_CTL'' | ||
* рассчитываем ''SetWeight'' для микродозаторов в соответствии с зафиксированным весом | * рассчитываем ''SetWeight'' для микродозаторов в соответствии с зафиксированным весом | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 483: | Строка 493: | ||
Аналогично simple, только для микродозаторов | Аналогично simple, только для микродозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 490: | Строка 500: | ||
Аналогично simple, только для микродозаторов | Аналогично simple, только для микродозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 497: | Строка 507: | ||
Аналогично simple, только для микродозаторов | Аналогично simple, только для микродозаторов | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 504: | Строка 514: | ||
Ожидание 1 в теге ''InpMixerBusy'' | Ожидание 1 в теге ''InpMixerBusy'' | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 511: | Строка 521: | ||
Устанавливаем тег ''CmdSeqBeforeLoadMixer'' и ожидаем 1 в теге ''InpSeqBeforeLoadMixer'' | Устанавливаем тег ''CmdSeqBeforeLoadMixer'' и ожидаем 1 в теге ''InpSeqBeforeLoadMixer'' | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 518: | Строка 528: | ||
Аналогично simple, только для микродозаторов и дозатора контроля | Аналогично simple, только для микродозаторов и дозатора контроля | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 525: | Строка 535: | ||
Аналогично DELAY_TRANSPORT_P, только для тега ''TimeAfterUnloadCM'' | Аналогично DELAY_TRANSPORT_P, только для тега ''TimeAfterUnloadCM'' | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
Строка 532: | Строка 542: | ||
Устанавливаем тег ''CmdSeqStartMixing'' и ожидаем 1 в теге ''InpMixerBusy'', после чего сбрасываем теги ''CmdSeqBeforeLoadMixer'' и ''CmdSeqStartMixing'' | Устанавливаем тег ''CmdSeqStartMixing'' и ожидаем 1 в теге ''InpMixerBusy'', после чего сбрасываем теги ''CmdSeqBeforeLoadMixer'' и ''CmdSeqStartMixing'' | ||
- | // | + | \\ |
- | // | + | \\ |
---- | ---- | ||
** 99 - ERROR **- Ошибка установки задачи | ** 99 - ERROR **- Ошибка установки задачи | ||
- | Аналогично | + | |
- | // | + | Аналогично simple |
- | // | + | \\ |
+ | \\ | ||
---- | ---- | ||
** 100 - CYCLE_FINISHED **- Цикл дозирования закончен | ** 100 - CYCLE_FINISHED **- Цикл дозирования закончен | ||
- | Аналогично | + | |
- | // | + | Аналогично simple |
- | // | + | \\ |
+ | \\ | ||
---- | ---- | ||
** 101 - TASK_FINISHED **- Задача выполнена | ** 101 - TASK_FINISHED **- Задача выполнена | ||
- | Аналогично | + | |
- | // | + | Аналогично simple |
- | // | + | \\ |
+ | \\ | ||