Это старая версия документа.


kkormsvr

Модуль управления процессом многокомпонентного дозирования. Предназначен для замены старого приложения kkormrcpsvr2.exe. Данный модуль требует включения в задачу.

Поддерживаемые модули дозаторов

Основные отличия от kkormrcpsvr2.exe

  • Опрос дозаторов и управление процессом дозирования выполняют независимые друг от друга модули. Добавление нового типа дозатора в peripherial не требует изменения программного кода модуля kkormsvr.
  • Возможность размещаться как на сервере (старый вариант), так и в составе ПЛК с использованием сервера в качестве удаленного СУБД. Работа на одной аппаратной платформе с ПЛК позволяет отказаться от дискретных сигналов управления дозаторами без ущерба общей скорости дозирования.
  • Хранение оперативных данных в базе данных, т.е. там же где и хранятся все остальные данные. Старый вариант использовал для сохранения оперативных данных обычные файлы, что в случае сбоя может привести к рассинхронизации. Другой минус старого варианта при использовании на борту ПЛК - это частые операции записи в файл, что также является потенциально опасным.
  • В ситуации когда на линии несколько дозаторов, а по рецепту используются не все, то в неиспользуемые дозаторы не посылается нулевой рецепт, как это делал kkormrcpsvr2. Также Kkormsvr для выполнения задачи не требует наличия связи с неиспользуемыми дозаторами.
  • Работа одной транзакцией на цикл, что гарантирует целостность данных и положительно влияет на производительность приложения.
  • Возможность отключения, включения и перезагрузки kkormsvr без прерывания выполнения задачи дозирования.
  • При потери связи с удаленным СУБД восстановление происходит автоматически без прерывания выполнения задачи дозирования.
  • Состав и именование тегов полностью обновлено. Новые теги кроме текущего состояния процесса также позволяют видеть названия рецептов и продуктов, выполнять сброс и приостановку работы линий.
При работе с удаленными модулями дозаторов использовать протокол jrbustcp!

Например, в jrobo 1 работает roboplant логика и выполняется опрос всех устройств ввода/вывода (peripherial), в т.ч. и многокомпонентных дозаторов, а также работает модуль jrbustcp в режиме server. В jrobo 2 работает модуль kkormsvr, взаимодействуя с локальной, либо удаленной базой данных, а теги по дозаторам поставляются при помощи модуля jrbustcp в режиме client. Использовать связку rpsvrtcp и rpclient недопустимо, т.к. данный протокол не поддерживает передачу тегов типа LONG.

Структура базы данных осталась прежней Модель базы данных. При миграции старой системы на kkormsvr НЕЛЬЗЯ работать непосредственно со старой базой как есть, а необходимо создать новую и сделать импорт.

Конфигурация

plugin.kkormsvr:

  module.kksvr:
    database: db

    lines:
      - linenum:  1
        name:     "Линия 1"

        dosers:
          - name:       "d1"
            bind:       "D001"
            grouplevel:  0

            storages:
              1: 101, Бункер 101
              2: 102, Бункер 102
              3: 103, Бункер 103

          - name:       "d2"
            storages:
              1: 201
              2: 202
              3: 203

Параметры

Параметр Умолчание Описание
database db Модуль базы данных (database)
lines Список линий
dosers Список дозаторов, принадлежащих линии
storages Список бункеров/питателей, принадлежащих дозатору
lines
linenum 0 Номер линии
name Line<linenum> Название линии
dosers
name Имя дозатора. Используется для формирование имен тегов
bind <name> Имя peripherial-модуля многокомпонентного дозатора
grouplevel 0 Указывает принадлежность дозатора к группе с заданным уровнем опережения выполнения циклов. Отсчет уровня от нуля
storages
<addr> Формат записи: stornum [, storname], где
addr - адрес питателя в дозаторе (число)
stornum - уникальный номер бункера (число), соответствующего питателю дозатора
storname - название бункера (текст). Если не указывать, то будет Бункер <stornum>

Теги

Имя тега Тип данных Доступ Описание
kksvr.connected BOOL Подключение к базе данных.
Линия 1
kksvr.Line1.CycleCnt INT Количество выполненных полных циклов.
kksvr.Line1.CycleReq INT rw Заданное количество циклов.
kksvr.Line1.State INT Состояние линии:
0 - остановлено
1 - работа
2 - работа приостановлена
3 - ошибка: новая задача не распределилась между дозаторами
4 - ошибка: один из дозаторов не принял задачу
kksvr.Line1.TaskId INT TaskId текущей задачи из таблицы KK_TASK. Если задача отсутствут, равно 0.
kksvr.Line1.Receipt STRING Название рецепта текущей задачи.
kksvr.Line1.Reset BOOL rw 1 - Сброс линии.
kksvr.Line1.Suspend BOOL rw 1 - Приостановить работу линии. 0 - возобновить.
Линия 1 - Группа 0
kksvr.Line1.Group0.CycleCnt INT Количество выполненных циклов.
kksvr.Line1.Group0.State INT Состояние группы:
0 - остановлено
1 - подача дозаторам команды "Старт цикла". Ожидание готовности к установке задачи.
2 - установка задачи
3 - дозирование
4 - ошибка установки задачи одним из дозаторов. Какой именно дозатор - смотреть тег дозатора SendTask на отрицательное значение.
Линия 1 - Группа 1
kksvr.Line1.Group1.CycleCnt INT —\\—
kksvr.Line1.Group1.State INT —\\—
Линия 1 - Дозатор d1
kksvr.d1.CurStorNum INT номер stornum текущего бункера
kksvr.d1.CurStorName STRING название name текущего бункера
kksvr.d1.CurProduct STRING название текущего загружаемого продукта
kksvr.d1.Error INT Текущая ошибка работы с дозатором (не путать с кодом ошибки самого дозатора):
0 - ошибки нет
1 - LINK - теги дозатора не найдены (проверить, есть ли теги, правильность параметра ''bind'')
2 - DISCONNECT - нет связи
3 - CRC - данные не достоверны
4 - TASKDIFFER - заданный вес в дозаторе отличается от заданного по рецепту
kksvr.d1.ReqWeightZero INT =1, если суммарный заданный вес равен нулю, иначе =0
kksvr.d1.Product1 STRING Название продукта, заданного по рецепту.
kksvr.d1.ReqWeight1 LONG Заданный вес по рецепту.
kksvr.d1.Product2 STRING —\\—
kksvr.d1.ReqWeight2 LONG —\\—
kksvr.d1.Product3 STRING —\\—
kksvr.d1.ReqWeight3 LONG —\\—
Линия 1 - Дозатор d2
kksvr.d2.CurStorNum INT —\\—
kksvr.d2.CurStorName STRING —\\—
kksvr.d2.CurProduct STRING —\\—
kksvr.d2.Error INT —\\—
kksvr.d1.ReqWeightZero INT —\\—
kksvr.d2.Product1 STRING —\\—
kksvr.d2.ReqWeight1 LONG —\\—
kksvr.d2.Product2 STRING —\\—
kksvr.d2.ReqWeight2 LONG —\\—
kksvr.d2.Product3 STRING —\\—
kksvr.d2.ReqWeight3 LONG
doc/jroboplc/modules/kkormsvr.1676908475.txt.gz · Последние изменения: 2023/02/20 18:54 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0