Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
doc:jroboplc:modules:kkmansvr [2022/02/22 16:28] denis [Теги] |
doc:jroboplc:modules:kkmansvr [2023/09/28 12:14] (текущий) denis [Установка задачи] |
||
|---|---|---|---|
| Строка 53: | Строка 53: | ||
| |''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 можно менять в процессе работы | | ||
| Строка 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 '' | '' '' |Ручной дозатор | | ||
| Строка 85: | Строка 85: | ||
| |''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''. |