Это старая версия документа.
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/handler.php on line 1458
Warning: Declaration of syntax_plugin_tablecalc::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 41
Warning: Declaration of syntax_plugin_tablecalc::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 72
Warning: Declaration of syntax_plugin_offline::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 60
Warning: Declaration of syntax_plugin_offline::render($format, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 67
Warning: preg_match(): Compilation failed: invalid range in character class at offset 3416 in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/lexer.php on line 118
====== kkmansvr ====== Модуль управления процессом ручного многокомпонентного дозирования. Данный модуль требует включения в задачу. ===== Поддерживаемые модули дозаторов ===== [[doc:jroboplc:modules:peripherial:promauto_gelios_dozman]] ===== Конфигурация ===== <code yaml> plugin.kkmansvr: module.kkman: emulate: off database: db lineId: 1 lineName: My line compQnt: 4 dosers: - name: d1 descr: Big automatic doser manual: off canControl: on - name: d2 descr: Small human-being driven doser manual: on canControl: off </code> ===== Параметры ===== ^ Параметр ^ Умолчание ^ Описание ^ |**database**| ''db'' |Модуль базы данных ([[doc:jroboplc:modules:database]]) | |**lineId**| '''' |id линии | |**lineName**| ''Line<lineId>'' |Название линии (произвольный текст) | |**compQnt**| '''' |Максимальное количество компонентов в задаче | |**dosers**| '''' |Список дозаторов | ^dosers ^^^ |**name**| '''' |Имя периферийного модуля дозатора | |**descr**| '''' |Название дозатора (произвольный текст) | |**manual**| ''off'' |Ручной дозатор | |**canControl**| ''off'' |Дозатор может использоваться как контрольный | ===== Теги ===== ^ Имя тега ^ Тип данных ^ Доступ ^ Описание ^ |''LineId '' | ''INT '' | '' '' |id линии (KM_LINE.ID) | |''LineName '' | ''STRING'' | '' '' |Название линии | |''TaskInstall '' | ''STRING'' | ''RW'' |см. [[doc:jroboplc:modules:kkmansvr#Установка задачи]] | |''TaskId '' | ''INT '' | '' '' |id задачи (KM_TASK.ID) | |''RecipeId '' | ''INT '' | '' '' |id рецепта (KM_RECIPE.ID) | |''RecipeName '' | ''STRING'' | '' '' |Название рецепта (KM_RECIPE.NAME) | |''CycleReq '' | ''INT '' | ''RW'' |Заданное количество циклов. Если ''CycleReq''>0 и ''СусleCnt''>=''CycleReq'', то запуск нового цикла невозможен. Если =0, то работать без ограничений. CycleReq можно менять в процессе работы | |''CycleCnt '' | ''INT '' | '' '' |Кол-во выполненных циклов | |''UnloadStart '' | ''BOOL '' | '' '' |Команда старт оборудованию разгрузки | |''UnloadFinished'' | ''BOOL '' | ''RW'' |Сигнал завершения от оборудования разгрузки | |''UnloadTimerCnt'' | ''INT '' | '' '' |Счетчик задержки разгрузки. Если ''UnloadTimerCnt'' < ''UnloadTimerSet'', то ''UnloadFinished'' считается =0 | |''UnloadTimerSet'' | ''INT '' | ''RW'' |Минимальное время разгрузки (ед.изм. - кол-во циклов jrobo-задачи) | |''Status '' | ''INT '' | '' '' |См. [[doc:jroboplc:modules:kkmansvr#Статус линии]] | |''SumWeightReq '' | ''INT '' | '' '' |Заданный в задаче суммарный вес по всем компонентам | |''SumWeightFin '' | ''INT '' | '' '' |Зафиксированный суммарный вес по всем компонентам | |''SumWeightCtl '' | ''INT '' | '' '' |Зафиксированный контрольный вес | |''ControlId '' | ''INT '' | '' '' |id контрольного дозатора (далее //ControlDoser//). Если 0, то не используется | |''ControlName '' | ''STRING'' | '' '' |Имя модуля контрольного дозатора. Если пусто, то не используется. Если ''NOT FOUND'', то модуль с ''ControlId'' не найден | |''ControlStable '' | ''BOOL '' | '' '' |Транслируется значение с ''//ControlDoser//.Stable'' | |''ControlWeight '' | ''INT '' | '' '' |Транслируется значение с ''//ControlDoser//.WeightTot'' | |''Run '' | ''BOOL '' | ''RW'' |Если записать 1, то начать весовой цикл. Нельзя извне Run=1. Если TaskId=0, то нельзя Run=1. Нельзя Run=1, если Disable=1. | |''Disable '' | ''BOOL '' | ''RW'' |Запрет начала весового цикла. Нельзя Disable=1, если Run=1 | |''Commit '' | ''BOOL '' | ''RW'' |Записать весовой цикл в базу данных и перейти к разгрузке | |''Cancel '' | ''BOOL '' | ''RW'' |Отменить весовой цикл. Сбрасываются все зафиксированные весовые значения | ^Компоненты ^^^^ |''Comp0.DoserId '' | ''INT '' | '' '' |id дозатора компонента (далее CompDoser) (KM_TASK_PRODUCT.DOSER_ID) | |''Comp0.DoserName '' | ''STRING '' | '' '' |Имя модуля дозатора | |''Comp0.Manual '' | ''BOOL '' | '' '' |Ручной дозатор | |''Comp0.ProdId '' | ''INT '' | '' '' |id продукта (KM_TASK_PRODUCT.PRODUCT_ID) | |''Comp0.ProdName '' | ''STRING '' | '' '' |Название продукта (KM_PRODUCT.NAME) | |''Comp0.WeightReq '' | ''INT '' | '' '' |Заданный вес | |''Comp0.WeightFin '' | ''INT '' | '' '' |Зафиксированный измеренный вес | |''Comp0.WeightCur '' | ''INT '' | '' '' |Транслируется значение с ''CompDoser.WeightCur'' | |''Comp0.Status '' | ''INT '' | '' '' |См. [[doc:jroboplc:modules:kkmansvr#Статус компонента]] | |''Comp0.Run '' | ''BOOL '' | ''RW'' |Если записать 1, то начать дозирование. Нельзя извне Run=0. Обнуление происходит по окончанию дозирования. Установка возможна только при Comp*.Status=IDLE по всем компонентам с таким же DoserId и при статусе линии =LOADING. | |''Comp0.Cancel '' | ''BOOL '' | ''RW'' |Отменить зафиксированный вес и перейти в ожидание | | //остальные Comp1..CompN аналогично// |||| ===== База данных ===== [[doc:jroboplc:modules:kkmansvr_db|Скрипт]] База данных создается автоматически. Данные по линии и дозаторам автоматически добавляются в таблицы KM_LINE и KM_DOSER. Если необходимо удалить запись в таблице, имеющей поле DELETED, то установить в DELETED=1 и в дальнейшем на стороне клиента отфильтровывать подобные записи. Фактическое удаление не делать! ===== Установка задачи ===== Для установка задачи необходимо записать в тег ''TaskInstall'' значение ''KM_TASK.ID'' нужной задачи. После записи в ''TaskInstall'' возвращается результат выполнения установки: * ''OK'' - задача успешно установлена * ''NOT EMPTY'' - тег ''TaskInstall'' не был очищен перед запись id задачи * ''LINK ERROR'' - необходимо проверить конфигурацию, т.к. имеются не найденные модули дозаторов * ''WRONG LINE'' - задача предназначена для другой линии * ''NOT FOUND'' - задача с указанным id не найдена * ''TOO MANY PRODUCTS'' - задача рассчитана но большее кол-во компонентов, чем указано в параметре ''compQnt'' Перед записью нового id в ''TaskInstall'' необходимо записать пустую строку. Далее при успешной записи id задачи обнуляются все счетчики веса и циклов, а в соответствующии теги устанавливаются данные по указанной задаче. Также в ''TagInstall'' можно записать ''RESET'' для полного сброса данных по ранее установленной задаче. Запись id возможна только при статусе линии ''IDLE''. ===== Статус линии ===== Значени тeга Status: === IDLE === Ожидание. Если извне прописать в Run=1 и при этом Disable==0 и TaskId>0 и (CycleReq==0 или CycleCnt<CycleReq), то Status=PREPARING. === PREPARING === Подготовка. Если используется контрольный дозатор, то выполняется запись в //ControlDoser//.SetEmptyTot=1 и ожидание //ControlDoser//.IsEmptyTot==1, после чего Status=LOADING. Если контрольный дозатор не используется, то сразу Status=LOADING. === LOADING === Загрузка и взвешивание. Ожидание по всем используемым компонентам Comp*.Status==FINISHED (используемые компоненты - это те, у которых WeightReq > 0), после чего Status=COMMITING. === COMMITTING === Фиксация контрольного веса и запись весового цикла в базу данных. Если извне прописать в Commit=1, то выполняется запись цикла и Status=UNLOADING. При этом, если используется контрольный дозатор, то запись извне в Commit=1 разрешена только при //ControlDoser//.Stable=1. === UNLOADING === Разгрузка. Выполняется запись UnloadStart=1 и ожидание записи извне в UnloadFinished=1. Если UnloadTimerCnt < UnloadTimerSet, то UnloadFinished считается ==0. После появления в UnloadFinished==1 сбрасывается зафиксированный вес и Status=IDLE. ===== Статус компонента ===== Значения тега Comp0.Status: === IDLE === Ожидание. Если извне прописать в Comp0.Run=1 и при этом по все компоненты с таким же DoserId находятся в ожидании, и при статусе линии Status=LOADING, и компонент используется (Comp0.WeightReq>0), то Comp0.Status=PREPARING. === PREPARING === Подготовка. * Выполнить: * //CompDoser//.Weight=Comp0.WeightReq * //CompDoser//.SetEmptyCur=1 * //CompDoser//.Run=0 * после чего, ожидание: * //CompDoser//.SYSTEM.ErrorFlag==0 * //CompDoser//.IsEmptyCur==1 * //CompDoser//.Status==0 * если ожидание выполнено: * //CompDoser//.Run=1 * Comp0.Status=LOADING. === LOADING === Загрузка и взвешивание. * Ожидание: * //CompDoser//.SYSTEM.ErrorFlag==0 * //CompDoser//.Finished==1 * если ожидание выполнено, то: * //CompDoser//.Run=0 * Comp0.WeightFin=//CompDoser//.WeightCur * Comp0.Run=0 * Comp0.Status=FINISHED === FINISHED === Взвешивание выполнено.