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