Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:jroboplc:modules:kkormsvr [2020/10/12 05:37] denis [Теги] |
doc:jroboplc:modules:kkormsvr [2023/02/20 18:55] (текущий) denis [Теги] |
||
---|---|---|---|
Строка 9: | Строка 9: | ||
===== Основные отличия от kkormrcpsvr2.exe ===== | ===== Основные отличия от kkormrcpsvr2.exe ===== | ||
* Опрос дозаторов и управление процессом дозирования выполняют независимые друг от друга модули. Добавление нового типа дозатора в ''peripherial'' не требует изменения программного кода модуля ''kkormsvr''. | * Опрос дозаторов и управление процессом дозирования выполняют независимые друг от друга модули. Добавление нового типа дозатора в ''peripherial'' не требует изменения программного кода модуля ''kkormsvr''. | ||
- | * Возможность работать как на сервере (старый вариант), так и в составе ПЛК с использованием сервера в качестве удаленного СУБД. Работа на одной аппаратной платформе с ПЛК позволяет отказаться от дискретных сигналов управления дозаторами без ущерба общей скорости дозирования. | + | * Возможность размещаться как на сервере (старый вариант), так и в составе ПЛК с использованием сервера в качестве удаленного СУБД. Работа на одной аппаратной платформе с ПЛК позволяет отказаться от дискретных сигналов управления дозаторами без ущерба общей скорости дозирования. |
* Хранение оперативных данных в базе данных, т.е. там же где и хранятся все остальные данные. Старый вариант использовал для сохранения оперативных данных обычные файлы, что в случае сбоя может привести к рассинхронизации. Другой минус старого варианта при использовании на борту ПЛК - это частые операции записи в файл, что также является потенциально опасным. | * Хранение оперативных данных в базе данных, т.е. там же где и хранятся все остальные данные. Старый вариант использовал для сохранения оперативных данных обычные файлы, что в случае сбоя может привести к рассинхронизации. Другой минус старого варианта при использовании на борту ПЛК - это частые операции записи в файл, что также является потенциально опасным. | ||
+ | * В ситуации когда на линии несколько дозаторов, а по рецепту используются не все, то в неиспользуемые дозаторы не посылается нулевой рецепт, как это делал ''kkormrcpsvr2''. Также ''Kkormsvr'' для выполнения задачи не требует наличия связи с неиспользуемыми дозаторами. | ||
* Работа одной транзакцией на цикл, что гарантирует целостность данных и положительно влияет на производительность приложения. | * Работа одной транзакцией на цикл, что гарантирует целостность данных и положительно влияет на производительность приложения. | ||
* Возможность отключения, включения и перезагрузки ''kkormsvr'' без прерывания выполнения задачи дозирования. | * Возможность отключения, включения и перезагрузки ''kkormsvr'' без прерывания выполнения задачи дозирования. | ||
Строка 109: | Строка 110: | ||
|kksvr.d1.Error | INT | |Текущая ошибка работы с дозатором (не путать с кодом ошибки самого дозатора):<html><br> | |kksvr.d1.Error | INT | |Текущая ошибка работы с дозатором (не путать с кодом ошибки самого дозатора):<html><br> | ||
0 - ошибки нет<br> | 0 - ошибки нет<br> | ||
- | 1 - LINK - теги дозатора не найдены (проверить есть ли теги и параметр ''bind'')<br> | + | 1 - LINK - теги дозатора не найдены (проверить, есть ли теги, правильность параметра ''bind'')<br> |
2 - DISCONNECT - нет связи<br> | 2 - DISCONNECT - нет связи<br> | ||
3 - CRC - данные не достоверны<br> | 3 - CRC - данные не достоверны<br> | ||
4 - TASKDIFFER - заданный вес в дозаторе отличается от заданного по рецепту | 4 - TASKDIFFER - заданный вес в дозаторе отличается от заданного по рецепту | ||
</html> | | </html> | | ||
+ | |kksvr.d1.ReqWeightZero | INT | | =1, если суммарный заданный вес равен нулю, иначе =0 | | ||
|kksvr.d1.Product1 | STRING | |Название продукта, заданного по рецепту. | | |kksvr.d1.Product1 | STRING | |Название продукта, заданного по рецепту. | | ||
|kksvr.d1.ReqWeight1 | LONG | |Заданный вес по рецепту. | | |kksvr.d1.ReqWeight1 | LONG | |Заданный вес по рецепту. | | ||
Строка 125: | Строка 127: | ||
|kksvr.d2.CurProduct | STRING | | ---\\--- | | |kksvr.d2.CurProduct | STRING | | ---\\--- | | ||
|kksvr.d2.Error | INT | | ---\\--- | | |kksvr.d2.Error | INT | | ---\\--- | | ||
+ | |kksvr.d1.ReqWeightZero | INT | | ---\\--- | | ||
|kksvr.d2.Product1 | STRING | | ---\\--- | | |kksvr.d2.Product1 | STRING | | ---\\--- | | ||
|kksvr.d2.ReqWeight1 | LONG | | ---\\--- | | |kksvr.d2.ReqWeight1 | LONG | | ---\\--- | | ||
Строка 136: | Строка 139: | ||
[[doc:jroboplc:modules:kkormsvr_old_tags]] | [[doc:jroboplc:modules:kkormsvr_old_tags]] | ||
+ | |||
+ | |||
+ | ===== Группы ===== | ||
+ | |||
+ | Процесс приготовления комбикормовой смеси может происходить в несколько этапов. | ||
+ | |||
+ | Например, некоторые добавки могут предварительно дозироваться и смешиваться (в предсмесителе) отдельно от основной массы ингредиентов. Затем они выгружаются в основной смеситель одновременно с разгрузкой дозаторов, дозирующих основные ингредиенты. | ||
+ | |||
+ | В таком случае для ускорения цикла приготовления комбикормовой смеси целесообразно разрешить дозаторам, разгрузка которых происходит в предсмеситель, набирать продукт заранее. Т.е. если линия выполняет первый цикл дозирования - дозаторы основного смесителя выполняют первый цикл, то дозаторы предсмесителя могут выполнять первый и (если все они выгрузились) второй цикл дозирования. | ||
+ | |||
+ | Параметр ''grouplevel'' определяет на сколько циклов дозирования группа может «обгонять» цикл дозирования линии. | ||
+ | |||
+ | В группу целесообразно объединять ДОЗАТОРЫ ОДНОВРЕМЕННО РАЗГРУЖАЕМЫЕ В ОДИН СМЕСИТЕЛЬ. | ||
+ | |||
+ | Для дозаторов группы которая заканчивает процесс приготовления комбикормовой смеси (или если группа одна) параметр ''grouplevel'' должен быть равен 0. | ||
Строка 146: | Строка 164: | ||
===== Переходный импорт данных ===== | ===== Переходный импорт данных ===== | ||
- | Для перехода со старого архиватора wessvr.exe на новый требуется перенести данные из старой базы данных в новую, создаваемою автоматически модулем ''wessvr''. Описание действий по шагам: | + | Для перехода со старого архиватора ''kkormrcpsvr2'' на новый требуется перенести данные из старой базы данных в новую, создаваемою автоматически модулем ''kkormsvr''. Описание действий по шагам: |
* создать два модуля ''database'' для подключения к новой (не существующей) и старой (существующей) базам данных.<code yaml> | * создать два модуля ''database'' для подключения к новой (не существующей) и старой (существующей) базам данных.<code yaml> | ||
plugin.database: | plugin.database: |