Это старая версия документа.
Содержание
raduga
Модуль управления процессом многокомпонентного дозирования. Данный модуль требует включения в задачу.
Позволяет управлять линиями дозирования двух типов:
- простая (классическая) линия - состоит из одной группы дозаторов
- комбинированная (увельская) линия - состоит из двух групп дозаторов и промежуточного контрольного дозатора
Поддерживаемые модули дозаторов
Конфигурация
plugin.raduga: module.rdsvr: database: db emulate: off deleteOtherStuff: on lines: - name: LPS num: 1 type: simple descr: Линия предсмеси hidden: off dosers: - name: "doser 11" module: d11 srcBunkers: - "b111" - name: "doser 12" module: d12 srcBunkers: - "b121" - "b122" - name: "doser 13" module: d13 srcBunkers: - "b131" - "b132" - "b133" - name: "doser 14" module: d14 srcBunkers: - "b141" - "b142" - "b143" - "b144" dstBunkers: - "b101" - "b102" params: - name: spf4 descr: СПФ4 в предкондиционер tagname: FAT%l:%p.SetFlow valtype: double - name: L1A num: 2 type: combo descr: Линия 1А ctlDoserModule: d2c dosers: - name: "doser 21" module: d21 srcBunkers: - "b211" - name: "doser 22" module: d22 srcBunkers: - "b221" - "b222" microDosers: - name: "doser 23" module: d23 srcBunkers: - "b231" - "b232" - "b233" - name: "doser 24" module: d24 srcBunkers: - "b241" - "b242" - "b243" - "b244" dstBunkers: - "b201" - "b202" - "b203" - "b204"
Параметры
Параметр | Умолчание | Описание |
---|---|---|
database | db | Модуль базы данных (database) |
emulate | off | Режим эмуляции - свободная запись в теги без использования базы данных |
deleteOtherStuff | on | Удаление записей, не относящихся к данному модулю (исключительное использование базы данных одним модулем) |
lines | - | Список линий |
params | - | Список параметров |
lines | ||
type | simple | Тип линии: simple - простая линия (одна группа дозаторов) combo - комбинированная линия (две группы дозаторов и промежуточный контрольный дозатор) |
Для всех типов линий | ||
num | - | Номер линии. Используется только для формирования имен тегов |
name | - | Уникальное имя линии |
descr | - | Описание линии (произвольный текст) |
hidden | off | Линия не будет видна в менеджере рецептов |
autostart | off | Автоматический старт циклов дозирования |
duplicate | - | Имя линии, для которой данная линия будет дублером |
dosers | - | Список дозаторов |
dstBunkers | - | Список имен бункеров готовой продукции |
Только для комбинированной линии (type=combo) | ||
ctlDoserModule | - | Имя модуля дозатора контроля |
microDosers | - | Список микродозаторов (аналогичен списку дозаторов dosers ) |
dosers, microDosers | ||
name | - | Имя (уникальное) модуля дозатора |
module | - | Имя модуля дозатора |
srcBunkers | - | Список имен бункеров сырья |
params | ||
name | - | Имя (уникальное) параметра |
descr | - | Описание параметра (произвольный текст) |
tagname | - | Имя внешнего тега, в формате: module:tagname Допускается использование подстановок: %l - имя линии %p - имя параметра |
valtype | - | Тип значения параметра: bool, int, long, double, string |
Теги
Имя тега | Тип данных | Доступ | Описание |
---|---|---|---|
connected | BOOL | | Состояние подключения к базе данных |
Линия (line) любого типа | |||
L1_Cancel | BOOL | RW | Отмена задачи (для оператора) - линия забудет установленную задачу, если дозирование еще не началось, либо после завершения цикла |
L1_CycleId | INT | | Идентификатор цикла дозирования. Генерируется автоматически при начале цикла дозирования |
L1_Descr | STRING | | Описание линии, задается в yml |
L1_Disable | BOOL | RW | Запрет выполнения загрузки/разгрузки дозаторов (для оператора) |
L1_EnableLoad | BOOL | RW | Разрешение загрузки дозаторов (для логики) |
L1_EnableUnload | BOOL | RW | Разрешение разгрузки дозаторов (для логики) |
L1_Error | STRING | | Текст текущей ошибки |
L1_ExeWeight | LONG | | Выполненный вес цикла по всем дозаторам линии |
L1_ExeWeightTot | LONG | | Суммарный выполненный вес задачи (всех циклов) |
L1_Name | STRING | | Имя линии, задается в yml |
L1_ProgressTot | INT | | Процент выполнения задачи, рассчитываемый по ExeWeightTot и SetWeightTot |
L1_RcpWeight | LONG | | Заданный вес цикла по рецепту |
L1_RecipeId | INT | | Идентификатор рецепта |
L1_RecipeName | STRING | | Название рецепта |
L1_Reset | BOOL | RW | Сброс задачи (для мастера) - линия мнгновенно забудет установленную задачу, даже если дозирование уже началось |
L1_SetWeight | LONG | RW | Заданный установочный вес цикла. Запись в тег возможно только при состоянии линии IDLE |
L1_SetWeightTot | LONG | RW | Заданный установочный вес задачи (для оператора) |
L1_Start | BOOL | RW | Старт цикла. После выполнения старта сбрасывается в off |
L1_State | INT | | Состояние линии (см. ниже) |
L1_StateMsg | STRING | | Текст состояния линии |
L1_TaskId | INT | RW | Идентификатор установленной задачи. Запись в тег возможно только при состоянии линии NONE |
Дозатор (doser) | |||
L1_D1_Connected | BOOL | | Состояния подключения к модулю дозатора |
L1_D1_CurProductName | STRING | | Имя текущего дозируемого продукта |
L1_D1_CurWeight | LONG | | Текущий набранный вес дозатора |
L1_D1_Error | STRING | | Текст ошибки подключения к модулю дозатора |
L1_D1_ExeWeight | LONG | | Выполненный вес цикла по всем питателям дозатора |
L1_D1_Name | STRING | | Имя дозатора, задается в yml |
L1_D1_PassCnt | INT | | Счетчик выполнения проходов |
L1_D1_PassQty | INT | | Количество проходов, необходимое для выполнения заданного веса цикла |
L1_D1_RcpWeight | LONG | | Заданный вес по рецепту по всем питателям дозатора |
L1_D1_SetWeight | LONG | | Заданный вес по установочный всем питателям дозатора |
Питатель (feeder) | |||
L1_D1_F1_ExeWeight | LONG | | Выполненный вес цикла |
L1_D1_F1_ProductId | INT | | Идентификатор установленного продукта по рецепту |
L1_D1_F1_ProductName | STRING | | Имя продукта |
L1_D1_F1_RcpWeight | LONG | | Заданный вес цикла по рецепту |
L1_D1_F1_SetWeight | LONG | | Заданный вес цикла установочный |
L1_D1_F1_SetWeightPass | LONG | | Заданный вес прохода |
L1_D1_F1_SumWeight | LONG | | Текущие показания счетчика веса дозатора |
L1_D1_F1_SumWeightBeg | LONG | | Зафиксированные показания счетчика веса дозатора на начало цикла |
Параметры (feeder) | |||
L1_Prm_<name> | - | | Значение параметра, которое записывается в связанный с параметром тег |
Только для комбинированной линии (type=combo) | |||
L1_CmdSeqBeforeLoadC | BOOL | | Выход для логики управления оборудованием загрузки в дозатор контроля |
L1_CmdSeqBeforeLoadMixer | BOOL | | Выход для логики управления оборудованием загрузки миксера (разгрузки дозаторов контроля и микрокомпонентов) |
L1_CmdSeqStartMixing | BOOL | | Выход для логики управления старта цикла смешивания |
L1_EnableLoadM | BOOL | RW | Разрешение загрузки основных дозаторов (для логики) |
L1_EnableLoadP | BOOL | RW | Разрешение разгрузки основных дозаторов (для логики) |
L1_EnableUnloadM | BOOL | RW | Разрешение загрузки микродозаторов (для логики) |
L1_EnableUnloadP | BOOL | RW | Разрешение разгрузки микродозаторов (для логики) |
L1_ExeWeightC | LONG | | Зафиксированный набранный вес дозатора контроля |
L1_ExeWeightM | LONG | | Выполненный вес по микродозаторам |
L1_ExeWeightP | LONG | | Выполненный вес по основным дозаторам |
L1_HoldDosers | INT | | Флаг владения основными дозаторами |
L1_HoldTransport | INT | | Флаг владения траспортом разгрузки основных дозаторов |
L1_InpCrusherEmpty | BOOL | RW | Вход для логики, сигнализирующий об опустошении дробилки |
L1_InpMixerBusy | BOOL | RW | Вход для логики, сигнализирующий о неготовности миксера к загрузке |
L1_InpSeqBeforeLoadC | BOOL | RW | Вход для логики, сигнализирующий о полном включении оборудования загрузки в дозатор контроля |
L1_InpSeqBeforeLoadMixer | BOOL | RW | Вход для логики, сигнализирующий о полном включении оборудования загрузки в миксера |
L1_RcpWeightM | LONG | | Заданный вес цикла по рецепту по микродозаторам |
L1_RcpWeightP | LONG | | Заданный вес цикла по рецепту по основным дозаторам |
L1_SetWeightM | LONG | | Заданный вес цикла установочный по микродозаторам |
L1_SetWeightP | LONG | | Заданный вес цикла установочный по основным дозаторам |
L1_TimeAfterUnloadCM | INT S | RW | Время задержки после выполнения разгрузки дозаторов контроля и микрокомпонентов |
L1_TimeCnt | INT | | Обратный счетчик времени |
L1_TimeTransportP | INT S | RW | Время задержки после выполнения разгрузки основных дозаторов |
L1_UnderweightLimitC | LONG S | RW | Допустимое недобор выполненного веса основных дозаторов и дозатора контроля |
L1_DC_Connected | BOOL | | Состояние подключения дозатора контроля |
L1_DC_CurWeight | LONG | | Текущий вес дозатора контроля |
L1_DC_Error | STRING | | Текст ошибки подключения дозатора контроля |
L1_DC_Stable | BOOL | | Флаг стабилизации текущего веса дозатора контроля |
Количество тегов линий (L*), дозаторов (L*_D*) и питателей (L*_D*_F*) зависит от конфигурации в yml-файле, нумерация от 1.
Временные задержки указываются в циклах выполнения jrobo-задачи, не в секундах.
База данных
База данных создается автоматически. Конфигурация (линии, дозаторам, питатели, бункеры, параметры) автоматически добавляются в соответствующие таблицы. Если включен параметр deleteOtherStuff
, то удаляется всё, не относящееся к текущей конфигурации.
Удаление записей происходит установкой поля DELETED=1
и в дальнейшем на стороне клиента данные записи отфильтровываются.
Установка задачи
Для установка задачи необходимо записать в тег TaskId
значение RD_TASK.ID
существующей задачи, при этом линия должна находится в состоянии NONE
. После записи в TaskId
появляется установленное значение.
Если задача установлена успешно, то State
принимает одно из соответствующий последующих значений.
Если при установке задачи возникла ошибка, то State
принимает значение ERROR
, а в теге Error
текст сообщения об ошибке.
Из состояния ошибки линию можно вывести только установкой 1 в теги Cancel
или Reset
(см. следующий раздел).
Отмена и сброс задачи
Отменить установленную задачу записью 1 в тег Cancel
можно, только если линия не начала дозирование (загрузку дозаторов), иначе отмена произойдет только после полного завершения цикла дозирования. После выполнения отмены значение тега Cancel
сбрасывается в 0. Возможность отмены задачи тегом Cancel
предоставляется оператору и является нормальным способом смены задач в линии.
Тег Reset
делает тоже, что и Cancel
, но действует без промедления, вне зависимости от текущего состояния линии. Использование тега Reset
предназначено только в аварийных ситуациях, когда завершить цикл уже нет возможности.
Параметры линии
Помимо дозируемых компонентов рецепт может содержать набор параметров с заданными значениями, которые при установке задачи должны будут прописаться в реальные внешние теги, например, задание потока жидких компонент. Количество параметров может быть любым, от 0 и более.
Если устанавливаемый в линию рецепт имеет параметры, то данная линия обязана иметь все эти же параметры, иначе установка задачи будет завершена с ошибкой. Если же ситуация обратная - линия поддерживает больше параметров, чем прописано в рецепте, то ошибки не будет.
Изменение заданного веса цикла
По умолчанию после установки задачи заданный вес цикла (т.е. вес одного замеса, дозы) принимается тот, который указан в рецепте (RcpWeight
). Однако этот вес может изменен в большую или меньшую стороны, но при условии, что цикл дозирования еще не начат и линия находится в состоянии IDLE
. Для этого новое значение веса цикла записывается в тег SetWeight
, после чего одноименные теги дозаторов и питателей также пропорционально менют свое значение.
Если линия не находится в состоянии IDLE
, то изменение SetWeight
не окажет никакого эффекта.
Изменение заданного веса задачи
Изначально вес задачи, т.е. сколько всего задача должна произвести продукта, задается на стороне клиента при формировании задачи. После того, как задачу установили в линию, клиент не может вносить какие-либо изменения, но через саму линию можно корректировать заданный вес задачи через тег SetWeightTot
. При этом значение прописывается как в тег, так и базе данных RD_TASK.SUM_WEIGHT_TOT
.
Данное действие может выполнять оператор линии.
Управление загрузкой и разгрузкой дозаторов
Для управления загрузкой и разгрузкой дозаторов в автоматическом режиме имеются теги EnableLoad
и EnableUnload
соответственно. Данные теги при необходимости связываются с внешней логикой. По умолчанию, если привязки нет, установлено значение on
(разрешено).
Для линий типа combo
разрешения кроме вышеперечисленных тегов есть дополнительные для каждой группы дозаторов (результат определяется по И):
EnableLoadP
иEnableUnloadP
- для основных дозаторовEnableLoadM
иEnableUnloadM
- для микродозаторов
Например, для разрешения загрузки микродозаторов должно быть: EnableLoad==1 && EnableLoadM==1
Проходы в цикле
Каждый дозатор имеет физическое ограничение по весу, который он может набрать за один раз. Это значение может быть прописано в модуле дозатора в сохраняемом теге SetWeightMax
. По умолчанию равно 0, что означает «без ограничений».
В тоже время задача может требовать от дозатора загрузки в одном цикле веса, превышающего его SetWeightMax
. В этом случае дозатор выполняет дозирование несколько проходов, количество которых рассчитывается в начале цикла, а заданный вес цикла дозатора, делится на равный части для каждого прохода.
Все действия по загрузке и разгрузке дозаторов выполняются синхронно, в том числе и выполнение проходов.
Состояния простой линии (simple)
0 - NONE - Задача не установлена
Для установки задачи записать в TaskId
значение RD_TASK.ID
1 - IDLE - Ожидание команды старт
Ожидание записи 1 в тег Start
, после чего:
- генерируется новое значение
CycleId
- запоминаются текущие значения счетчиков дозаторов в
SumWeightBeg
питателей - переход в состояние
PREPARING
Если линия имеет установленный параметр autostart: on
, то Start
всегда считается равным 1.
Если задача выполнена, т.е. SetWeightTot
меньше или равно ExeWeightTot
, то переход в состояние TASK_FINISHED
.
2 - PREPARING - Подготовка дозаторов к старту цикла
Посылаем дозаторам команду «старт цикла». Ожидаем от дозаторов состояния готовности к приему задачи.
Здесь и далее участвуют только дозаторы задействованные в рецепте, а остальные дозаторы игнорируются.
3 - SETTING - Установка задания дозаторам
Посылаем дозаторам команды «установить задачу». Если хотя бы один из дозаторов по каким-либо причинам не принимает задачу, то переход в состояние ERROR
.
Если все дозаторы принимают задачу, то переход в следующее состояние.
4 - LOADING - Идет дозирование (загрузка). Ожидание завершения дозирования
Если загрузка разрешена, то посылаем дозаторам команды «начать задачу» и «начать загрузку». Ожидаем все дозаторы в состоянии готовности к разгрузке и переход в следующее состояние.
5 - UNLOADING - Идет разгрузка. Ожидание завершения разгрузки
Если разгрузка разрешена, то посылаем дозаторам команды «начать разгрузку». Ожидаем все дозаторы в состоянии стоп и, если все дозаторы выполнили все проходы, то переход в следующее состояние. Если же не все дозаторы выполнили все проходы, то возврат к состоянию PREPARING
.
99 - ERROR - Ошибка установки задачи
Ожидание отмены или сброса задачи.
100 - CYCLE_FINISHED - Цикл дозирования закончен
Возврат в состояние IDLE
101 - TASK_FINISHED - Задача выполнена
Ожидание отмены или сброса задачи.
Состояния комбинированной линии (combo)
0 - NONE - Задача не установлена
1 - IDLE - Ожидание команды старт
8 - HOLD_DOSERS - Ожидание захвата дозаторов ОК
9 - PREPARING_C - Подготовка дозатора контроля к старту цикла
10 - SETTING_C - Установка задания дозатору контроля
11 - START_SEQ_BEFORE_LOAD_C - Запуск оборудования перед дозатором контроля
12 - PREPARING_P - Подготовка дозаторов ОК к старту цикла
13 - SETTING_P - Установка задания дозаторам ОК
14 - LOADING_P - Идет загрузка дозаторов ОК
15 - HOLD_TRANSPORT - Ожидание захвата транспорта ОК
16 - UNLOADING_P - Идет разгрузка дозаторов ОК
17 - DELAY_TRANSPORT_P - Задержка времени для транспорта ОК
18 - WAIT_CRUSHER_EMPTY - Ожидание опустошения дробилки
19 - LOADING_C - Идет загрузка дозатора контроля (набор мин.вес, стабилизация веса)
20 - STOP_LOAD_C - Остановка загрузки дозатора контроля
21 - PREPARING_M - Подготовка дозаторов МК к старту цикла
22 - SETTING_M - Установка задания дозаторам МК
23 - LOADING_M - Идет загрузка дозаторов МК
24 - WAIT_MIXER_READY - Ожидание готовности миксера к загрузке
25 - START_SEQ_BEFORE_LOAD_MIXER - Запуск оборудования разгрузки дозаторов контроля и МК в миксер
26 - UNLOADING_C_M - Идет разгрузка дозаторов контроля и МК
27 - DELAY_AFTER_UNLOAD_C_M - Задержка времени после разгрузки дозаторов контроля и МК
28 - START_MIXING - Запуск цикла смешивания
99 - ERROR - Ошибка установки задачи
100 - CYCLE_FINISHED - Цикл дозирования закончен
101 - TASK_FINISHED - Задача выполнена