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


msc (сервисное обслуживание со считывателями)

Модуль msc (Machinery Service Control) предназначен для работы со считывателями rfid-карт, установленными на технологическом оборудовании, которое требует периодического тех.обслуживания. Поднесение карты к считывателю фиксирует факт выполнения поставленное мастером задачи по обслуживанию конкретного оборудования.

Модуль msc осуществляет подключение к серверу данных по протоколу rpsvr, опрашивающему считыватели, и подключение к базе данных firebird.

Если база данных не существует, то создается автоматически. Для существующей базы данных проводится проверка на наличие определенных метаданных, и если не найдено, то создается необходимая структура. Все объекты метаданных имеют в имени определенный префикс, называемый схемой. Таким образом модуль msc может соседствовать в базе с другими данными, например, с весовым учетом.

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

Пример конфигурационного файла:

<?xml version="1.0" encoding="UTF-8" ?>
 
<configuration
    password="admin" >
 
<dbscr>
  <include file="inc/dbscr.utils.xml"/>
  <include file="inc/dbscr.msc.xml"/>
</dbscr>
 
<works>
    <work id="work_msc" period="1000" enabled="true">
        <module id="db"/>
        <module id="rpcl"/>
        <module id="msc"/>
    </work>
</works>
 
<modules>
    <module id="db" class="database" enabled="true"
        driver="FIREBIRD"
        host="localhost"
        dbname="/home/denis/asutp/promauto/db/fb25/msctest1.fdb"
        username="SYSDBA"
        password="masterkey"
        reconnect_time_sec="5"
    />
 
    <module id="rpcl" class="rpclient" enabled="true"
        host="localhost"
        port="3040"
        tagfilter="*"
        reconnect_time_sec="5"
    />
 
    <module id="msc" class="msc" enabled="true"
        db="db"
        refmod="rpcl"
        scheme="msc"
        script="msc"
    />
 
</modules>
</configuration>
ПараметрПо умолчаниюОписание
db db Модуль базы данных
refmod - Модуль, содержащий теги от считывателей
script msc Имя dbscr-скрипта
schema msc Название схемы (префикс для имен метаобъектов в базе данных)

Основные таблицы

Во многих таблицах встречается поле deleted. Если значение в нем не равно 0, то запись считается удаленной и не будет участвовать при создании новых задач.

reader

            CREATE TABLE {schema}_READER (
                ID INTEGER NOT NULL PRIMARY KEY,
		ISGROUP SMALLINT DEFAULT 0,
                NAME VARCHAR(128),
                IDNAME VARCHAR(64),
                READERTYPE VARCHAR(64),
                DELETED SMALLINT DEFAULT 0
              )

ISGROUP – 0 - обычная запись, 1 - группа
NAME - текстовое название считывателя
IDNAME - имя модуля считывателя, по которому будут созданы теги
READERTYPE - пока только promauto

person

            CREATE TABLE {schema}_PERSON (
                ID INTEGER NOT NULL PRIMARY KEY,
		ISGROUP SMALLINT DEFAULT 0,
                NAME VARCHAR(128),
                DELETED SMALLINT DEFAULT 0
              )

card

            CREATE TABLE {schema}_CARD (
                ID INTEGER NOT NULL PRIMARY KEY,
                PERSON_ID INTEGER REFERENCES {schema}_PERSON ON DELETE cascade ON UPDATE cascade,
                CODE VARCHAR(32),
                DT_CREATE TIMESTAMP,
                DELETED SMALLINT DEFAULT 0
              )

schedule

            CREATE TABLE {schema}_SCHEDULE (
                ID INTEGER NOT NULL PRIMARY KEY,
                READER_ID INTEGER REFERENCES {schema}_READER ON DELETE cascade ON UPDATE cascade,
	        TIMETBL VARCHAR(1024),
		DURATION INTEGER,
                DESCR VARCHAR(256),
		AUTOTASK SMALLINT DEFAULT 1,
                DELETED SMALLINT DEFAULT 0
              )

Расписание по которому будут генерироваться задачи.

TIMETABLE - задание время для автоматического создания задач. Формат записи на примерах:

e/0800 Ежедневно в 8:00
e/0800 0830 Ежедневно в 8:00 и 8:30
w 1 2 3 4 5/0800 0830 Каждую неделю по будням в 8:00 и 8:30
m 1 10 20/0000 1200 Каждый месяц 1-го, 10-го и 20-го числа в 00:00 и 12:00
d 20160621 20160622/0800 0830 21.06.2016 и 22.06.2016 в 8:00 и 8:30
e/0800;m 1 4/0830 Ежедневно в 8:00 и в каждый понедельник и четверг в 8:30

task

            CREATE TABLE {schema}_TASK (
                ID INTEGER NOT NULL PRIMARY KEY,
                SCHEDULE_ID INTEGER REFERENCES {schema}_SCHEDULE ON DELETE cascade ON UPDATE cascade,
                READER_ID INTEGER REFERENCES {schema}_READER ON DELETE cascade ON UPDATE cascade,
                PERSON_ID INTEGER REFERENCES {schema}_PERSON ON DELETE SET NULL ON UPDATE cascade,
                DT_CREATE TIMESTAMP,
                DT_BEGIN TIMESTAMP,
                DT_END TIMESTAMP,
                DT_REG TIMESTAMP,
                STATUS SMALLINT,
                DELETED SMALLINT DEFAULT 0
              )

Задача - это предписание на обслуживание определенного оборудование в установленное время.

input

            CREATE TABLE {schema}_INPUT (
                ID INTEGER NOT NULL PRIMARY KEY,
                CARD_ID INTEGER REFERENCES {schema}_CARD ON DELETE cascade ON UPDATE cascade,
                READER_ID INTEGER REFERENCES {schema}_READER ON DELETE cascade ON UPDATE cascade,
                PERSON_ID INTEGER REFERENCES {schema}_PERSON ON DELETE SET NULL ON UPDATE cascade,
                DT TIMESTAMP
              )

Работа модуля

При запуске модуль ожидает подключений к базе данных и к серверу данных, после чего циклически выполняет действия:

  1. проверка поступления нового кода от считывателей, и если есть, фиксирование его в базе данных.
  2. генерирование новых задач
  3. закрытие просроченных задач
doc/arccnt/mod/msc.1466479865.txt.gz · Последние изменения: 2016/06/21 06:31 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0