Это старая версия документа.
Содержание
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 )
Работа модуля
При запуске модуль ожидает подключений к базе данных и к серверу данных, после чего циклически выполняет действия:
- проверка поступления нового кода от считывателей, и если есть, фиксирование его в базе данных.
- генерирование новых задач
- закрытие просроченных задач