Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:jroboplc:modules:kkmansvr [2022/02/22 16:25] denis [База данных] |
doc:jroboplc:modules:kkmansvr [2023/09/28 12:14] (текущий) denis [Установка задачи] |
||
---|---|---|---|
Строка 49: | Строка 49: | ||
^ Имя тега ^ Тип данных ^ Доступ ^ Описание ^ | ^ Имя тега ^ Тип данных ^ Доступ ^ Описание ^ | ||
- | |''LineId '' | ''INT '' | '' '' |id линии (KM_LINE.ID) | | + | |''LineId '' | ''INT '' | '' '' |id линии (''KM_LINE.ID'') | |
|''LineName '' | ''STRING'' | '' '' |Название линии | | |''LineName '' | ''STRING'' | '' '' |Название линии | | ||
|''TaskInstall '' | ''STRING'' | ''RW'' |см. [[doc:jroboplc:modules:kkmansvr#Установка задачи]] | | |''TaskInstall '' | ''STRING'' | ''RW'' |см. [[doc:jroboplc:modules:kkmansvr#Установка задачи]] | | ||
- | |''TaskId '' | ''INT '' | '' '' |id задачи (KM_TASK.ID) | | + | |''TaskId '' | ''INT '' | '' '' |id задачи (''KM_TASK.ID'') | |
- | |''RecipeId '' | ''INT '' | '' '' |id рецепта (KM_RECIPE.ID) | | + | |''RecipeId '' | ''INT '' | '' '' |id рецепта (''KM_TASK.RECIPE.ID'') | |
- | |''RecipeName '' | ''STRING'' | '' '' |Название рецепта (KM_RECIPE.NAME) | | + | |''RecipeName '' | ''STRING'' | '' '' |Название рецепта (''KM_RECIPE.NAME'') | |
|''CycleReq '' | ''INT '' | ''RW'' |Заданное количество циклов. Если ''CycleReq''>0 и ''СусleCnt''>=''CycleReq'', то запуск нового цикла невозможен. Если =0, то работать без ограничений. CycleReq можно менять в процессе работы | | |''CycleReq '' | ''INT '' | ''RW'' |Заданное количество циклов. Если ''CycleReq''>0 и ''СусleCnt''>=''CycleReq'', то запуск нового цикла невозможен. Если =0, то работать без ограничений. CycleReq можно менять в процессе работы | | ||
|''CycleCnt '' | ''INT '' | '' '' |Кол-во выполненных циклов | | |''CycleCnt '' | ''INT '' | '' '' |Кол-во выполненных циклов | | ||
Строка 65: | Строка 65: | ||
|''SumWeightFin '' | ''INT '' | '' '' |Зафиксированный суммарный вес по всем компонентам | | |''SumWeightFin '' | ''INT '' | '' '' |Зафиксированный суммарный вес по всем компонентам | | ||
|''SumWeightCtl '' | ''INT '' | '' '' |Зафиксированный контрольный вес | | |''SumWeightCtl '' | ''INT '' | '' '' |Зафиксированный контрольный вес | | ||
- | |''ControlId '' | ''INT '' | '' '' |id контрольного дозатора (далее //ControlDoser//). Если 0, то не используется | | + | |''ControlId '' | ''INT '' | '' '' |id контрольного дозатора (далее **''//ControlDoser//''**). Если 0, то не используется | |
|''ControlName '' | ''STRING'' | '' '' |Имя модуля контрольного дозатора. Если пусто, то не используется. Если ''NOT FOUND'', то модуль с ''ControlId'' не найден | | |''ControlName '' | ''STRING'' | '' '' |Имя модуля контрольного дозатора. Если пусто, то не используется. Если ''NOT FOUND'', то модуль с ''ControlId'' не найден | | ||
|''ControlStable '' | ''BOOL '' | '' '' |Транслируется значение с ''//ControlDoser//.Stable'' | | |''ControlStable '' | ''BOOL '' | '' '' |Транслируется значение с ''//ControlDoser//.Stable'' | | ||
|''ControlWeight '' | ''INT '' | '' '' |Транслируется значение с ''//ControlDoser//.WeightTot'' | | |''ControlWeight '' | ''INT '' | '' '' |Транслируется значение с ''//ControlDoser//.WeightTot'' | | ||
- | |''Run '' | ''BOOL '' | ''RW'' |Если записать 1, то начать весовой цикл. Нельзя извне Run=1. Если TaskId=0, то нельзя Run=1. Нельзя Run=1, если Disable=1. | | + | |''Run '' | ''BOOL '' | ''RW'' |Если записать 1, то начать весовой цикл. Нельзя извне ''Run=0''. Если ''TaskId=0'', то нельзя ''Run=1''. Нельзя ''Run=1'', если ''Disable=1''. | |
- | |''Disable '' | ''BOOL '' | ''RW'' |Запрет начала весового цикла. Нельзя Disable=1, если Run=1 | | + | |''Disable '' | ''BOOL '' | ''RW'' |Запрет начала весового цикла. Нельзя ''Disable=1'', если ''Run=1'' | |
|''Commit '' | ''BOOL '' | ''RW'' |Записать весовой цикл в базу данных и перейти к разгрузке | | |''Commit '' | ''BOOL '' | ''RW'' |Записать весовой цикл в базу данных и перейти к разгрузке | | ||
|''Cancel '' | ''BOOL '' | ''RW'' |Отменить весовой цикл. Сбрасываются все зафиксированные весовые значения | | |''Cancel '' | ''BOOL '' | ''RW'' |Отменить весовой цикл. Сбрасываются все зафиксированные весовые значения | | ||
^Компоненты ^^^^ | ^Компоненты ^^^^ | ||
- | |''Comp0.DoserId '' | ''INT '' | '' '' |id дозатора компонента (далее CompDoser) (KM_TASK_PRODUCT.DOSER_ID) | | + | |''Comp0.DoserId '' | ''INT '' | '' '' |id дозатора компонента (далее **''//CompDoser//''**) (''KM_TASK_PRODUCT.DOSER_ID'') | |
|''Comp0.DoserName '' | ''STRING '' | '' '' |Имя модуля дозатора | | |''Comp0.DoserName '' | ''STRING '' | '' '' |Имя модуля дозатора | | ||
|''Comp0.Manual '' | ''BOOL '' | '' '' |Ручной дозатор | | |''Comp0.Manual '' | ''BOOL '' | '' '' |Ручной дозатор | | ||
- | |''Comp0.ProdId '' | ''INT '' | '' '' |id продукта (KM_TASK_PRODUCT.PRODUCT_ID) | | + | |''Comp0.ProdId '' | ''INT '' | '' '' |id продукта (''KM_TASK_PRODUCT.PRODUCT_ID'') | |
- | |''Comp0.ProdName '' | ''STRING '' | '' '' |Название продукта (KM_PRODUCT.NAME) | | + | |''Comp0.ProdName '' | ''STRING '' | '' '' |Название продукта (''KM_PRODUCT.NAME'') | |
|''Comp0.WeightReq '' | ''INT '' | '' '' |Заданный вес | | |''Comp0.WeightReq '' | ''INT '' | '' '' |Заданный вес | | ||
|''Comp0.WeightFin '' | ''INT '' | '' '' |Зафиксированный измеренный вес | | |''Comp0.WeightFin '' | ''INT '' | '' '' |Зафиксированный измеренный вес | | ||
- | |''Comp0.WeightCur '' | ''INT '' | '' '' |Транслируется значение с ''CompDoser.WeightCur'' | | + | |''Comp0.WeightCur '' | ''INT '' | '' '' |Транслируется значение с ''//CompDoser//.WeightCur'' | |
|''Comp0.Status '' | ''INT '' | '' '' |См. [[doc:jroboplc:modules:kkmansvr#Статус компонента]] | | |''Comp0.Status '' | ''INT '' | '' '' |См. [[doc:jroboplc:modules:kkmansvr#Статус компонента]] | | ||
- | |''Comp0.Run '' | ''BOOL '' | ''RW'' |Если записать 1, то начать дозирование. Нельзя извне Run=0. Обнуление происходит по окончанию дозирования. Установка возможна только при Comp*.Status=IDLE по всем компонентам с таким же DoserId и при статусе линии =LOADING. | | + | |''Comp0.Run '' | ''BOOL '' | ''RW'' |Если записать 1, то начать дозирование. Нельзя извне ''Run=0''. Обнуление происходит по окончанию дозирования. Установка возможна только при ''Comp*.Status=IDLE'' по всем компонентам с таким же ''DoserId'' и при статусе линии ''=LOADING'' | |
|''Comp0.Cancel '' | ''BOOL '' | ''RW'' |Отменить зафиксированный вес и перейти в ожидание | | |''Comp0.Cancel '' | ''BOOL '' | ''RW'' |Отменить зафиксированный вес и перейти в ожидание | | ||
- | | //остальные Comp1..CompN аналогично// |||| | + | | остальные ''Comp1..CompN'' аналогично |||| |
===== База данных ===== | ===== База данных ===== | ||
Строка 93: | Строка 93: | ||
База данных создается автоматически. Данные по линии и дозаторам автоматически добавляются в таблицы ''KM_LINE'' и ''KM_DOSER''. | База данных создается автоматически. Данные по линии и дозаторам автоматически добавляются в таблицы ''KM_LINE'' и ''KM_DOSER''. | ||
- | Если необходимо удалить запись в таблице, имеющей поле ''DELETED'', то установить в ''DELETED=1'' и в дальнейшем на стороне клиента отфильтровывать подобные записи. Фактическое удаление не делать! | + | Если необходимо удалить запись в таблице, имеющей поле ''DELETED'', то установить в ''DELETED=1'' и в дальнейшем на стороне клиента отфильтровывать подобные записи. На стороне клиента в таблицах с полем ''DELETED'' фактическое удаление не делать! |
===== Установка задачи ===== | ===== Установка задачи ===== | ||
- | Для установка задачи необходимо записать в тег ''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'' для полного сброса данных по ранее установленной задаче. | + | Для установка задачи необходимо записать в тег TaskInstall значение KM_TASK.ID нужной задачи. После записи в TaskInstall возвращается результат выполнения установки: |
- | Запись id возможна только при статусе линии ''IDLE''. | + | * 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'': | Значени тeга ''Status'': | ||
- | === IDLE === | + | === 0 - IDLE === |
Ожидание. Если извне прописать в ''Run=1'' и при этом ''Disable==0'' и ''TaskId>0'' и (''CycleReq==0'' или ''CycleCnt<CycleReq''), то ''Status=PREPARING''. | Ожидание. Если извне прописать в ''Run=1'' и при этом ''Disable==0'' и ''TaskId>0'' и (''CycleReq==0'' или ''CycleCnt<CycleReq''), то ''Status=PREPARING''. | ||
- | === PREPARING === | + | === 1 - PREPARING === |
Подготовка. Если используется контрольный дозатор, то выполняется запись в ''//ControlDoser//.SetEmptyTot=1'' и ожидание ''//ControlDoser//.IsEmptyTot==1'', после чего ''Status=LOADING''. | Подготовка. Если используется контрольный дозатор, то выполняется запись в ''//ControlDoser//.SetEmptyTot=1'' и ожидание ''//ControlDoser//.IsEmptyTot==1'', после чего ''Status=LOADING''. | ||
Если контрольный дозатор не используется, то сразу ''Status=LOADING''. | Если контрольный дозатор не используется, то сразу ''Status=LOADING''. | ||
- | === LOADING === | + | === 2 - LOADING === |
Загрузка и взвешивание. Ожидание по всем используемым компонентам ''Comp*.Status==FINISHED'' (используемые компоненты - это те, у которых ''WeightReq > 0''), после чего ''Status=COMMITING''. | Загрузка и взвешивание. Ожидание по всем используемым компонентам ''Comp*.Status==FINISHED'' (используемые компоненты - это те, у которых ''WeightReq > 0''), после чего ''Status=COMMITING''. | ||
- | === COMMITTING === | + | === 3 - COMMITTING === |
Фиксация контрольного веса и запись весового цикла в базу данных. Если извне прописать в ''Commit=1'', то выполняется запись цикла и ''Status=UNLOADING''. При этом, если используется контрольный дозатор, то запись извне в ''Commit=1'' разрешена только при ''//ControlDoser//.Stable=1''. | Фиксация контрольного веса и запись весового цикла в базу данных. Если извне прописать в ''Commit=1'', то выполняется запись цикла и ''Status=UNLOADING''. При этом, если используется контрольный дозатор, то запись извне в ''Commit=1'' разрешена только при ''//ControlDoser//.Stable=1''. | ||
- | === UNLOADING === | + | === 4 - UNLOADING === |
Разгрузка. Выполняется запись ''UnloadStart=1'' и ожидание записи извне в ''UnloadFinished=1''. Если ''UnloadTimerCnt < UnloadTimerSet'', то ''UnloadFinished'' считается ''==0''. После появления в ''UnloadFinished==1'' сбрасывается зафиксированный вес и ''Status=IDLE''. | Разгрузка. Выполняется запись ''UnloadStart=1'' и ожидание записи извне в ''UnloadFinished=1''. Если ''UnloadTimerCnt < UnloadTimerSet'', то ''UnloadFinished'' считается ''==0''. После появления в ''UnloadFinished==1'' сбрасывается зафиксированный вес и ''Status=IDLE''. | ||
Строка 132: | Строка 135: | ||
Значения тега ''Comp0.Status'': | Значения тега ''Comp0.Status'': | ||
- | === IDLE === | + | === 0 - IDLE === |
Ожидание. Если извне прописать в ''Comp0.Run=1'' и при этом по все компоненты с таким же ''DoserId'' находятся в ожидании, и при статусе линии ''Status=LOADING'', и компонент используется (''Comp0.WeightReq>0''), то ''Comp0.Status=PREPARING''. | Ожидание. Если извне прописать в ''Comp0.Run=1'' и при этом по все компоненты с таким же ''DoserId'' находятся в ожидании, и при статусе линии ''Status=LOADING'', и компонент используется (''Comp0.WeightReq>0''), то ''Comp0.Status=PREPARING''. | ||
- | === PREPARING === | + | === 1 - PREPARING === |
Подготовка. | Подготовка. | ||
* Выполнить: | * Выполнить: | ||
Строка 150: | Строка 153: | ||
- | === LOADING === | + | === 2 - LOADING === |
Загрузка и взвешивание. | Загрузка и взвешивание. | ||
* Ожидание: | * Ожидание: | ||
Строка 163: | Строка 166: | ||
- | === FINISHED === | + | === 3 - FINISHED === |
- | Взвешивание выполнено. | + | Взвешивание выполнено. Ожидание полного завершения цикла на линии, после чего ''Comp0.Status=0''. |