====== raduga ====== Модуль управления процессом многокомпонентного дозирования. Данный модуль требует включения в задачу. Позволяет управлять линиями дозирования двух типов: * простая (классическая) линия - состоит из одной группы дозаторов * комбинированная (увельская) линия - состоит из двух групп дозаторов и промежуточного контрольного дозатора ===== Поддерживаемые модули дозаторов ===== [[doc:jroboplc:modules:peripherial:promauto_gelios_dozman]] ===== Конфигурация ===== 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'' |Модуль базы данных ([[doc:jroboplc:modules: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_ '' | ''-'' | '''' |Значение параметра, которое записывается в связанный с параметром тег | | Только для комбинированной линии (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-задачи, не в секундах. ===== База данных ===== [[doc:jroboplc:modules:raduga_db|sql]], [[doc:jroboplc:modules:raduga_dbscr|dbscr]] База данных создается автоматически. Конфигурация (линии, дозаторам, питатели, бункеры, параметры) автоматически добавляются в соответствующие таблицы. Если включен параметр ''deleteOtherStuff'', то удаляется всё, не относящееся к текущей конфигурации. Удаление записей происходит установкой поля ''DELETED=1'' и в дальнейшем на стороне клиента данные записи отфильтровываются. ===== Установка задачи ===== Для установка задачи необходимо записать в тег ''TaskId'' значение ''RD_TASK.ID'' существующей задачи, при этом линия должна находится в состоянии ''NONE''. После записи в ''TaskId'' появляется установленное значение. Если задача установлена успешно, то ''State'' принимает одно из соответствующий последующих значений. Если при установке задачи возникла ошибка, то ''State'' принимает значение ''ERROR'', а в теге ''Error'' текст сообщения об ошибке. Из состояния ошибки линию можно вывести только установкой 1 в теги ''Cancel'' или ''Reset'' (см. [[doc:jroboplc:modules:raduga#отмена_и_сброс_задачи|следующий раздел]]). ===== Отмена и сброс задачи ===== Отменить установленную задачу записью 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''. В этом случае дозатор выполняет дозирование в несколько проходов, количество которых рассчитывается в начале цикла, а заданный вес цикла дозатора, делится на равный части для каждого прохода. Все действия по загрузке и разгрузке дозаторов выполняются синхронно, в том числе и выполнение проходов. ===== Совместное использование основных дозаторов комбинированными линиями ===== Для дозирования основных компонентов комбинированные линии используют одну и ту же группу дозаторы. Т.к. группа основных дозаторов одномоментно может обслуживать только одну линию, то, во избежание конфликтов, организован шеринг основных дозаторов при помощи тегов ''HoldDosers'', при этом действуют следующие правила: - Если линия хочет начать работать с основными дозаторами, то она должна выставить 1 в своем теге ''HoldDosers'' - Линия не может выставить 1 в своем теге ''HoldDosers'', если: - у другой линии уже установлен тег ''HoldDosers'' - другая линия также хочет захватить основные дозаторы и она захотела это сделать раньше (соблюдение очереди) - Если две и более линий имеют у себя тег ''HoldDosers'' установленным, то линии переходят в состояние ошибки Аналогично с оборудованием транспорта основных компонентов, только с использованием тега ''HoldTransport''. ===== Описание состояний ===== ===== Состояния простой линии (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 **- Ошибка установки задачи Аналогично simple \\ \\ ---- ** 100 - CYCLE_FINISHED **- Цикл дозирования закончен Аналогично simple \\ \\ ---- ** 101 - TASK_FINISHED **- Задача выполнена Аналогично simple \\ \\