Это старая версия документа.
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/handler.php on line 1458
Warning: Declaration of syntax_plugin_tablecalc::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 41
Warning: Declaration of syntax_plugin_tablecalc::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 72
Warning: Declaration of syntax_plugin_offline::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 60
Warning: Declaration of syntax_plugin_offline::render($format, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 67
Warning: preg_match(): Compilation failed: invalid range in character class at offset 3416 in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/lexer.php on line 118
====== msc (сервисное обслуживание со считывателями) ====== Модуль msc (Machinery Service Control) предназначен для работы со считывателями rfid-карт, установленными на технологическом оборудовании, которое требует периодического тех.обслуживания. Поднесение карты к считывателю фиксирует факт выполнения поставленное мастером задачи по обслуживанию конкретного оборудования. Модуль msc осуществляет подключение к серверу данных по протоколу rpsvr, опрашивающему считыватели, и подключение к базе данных firebird. Если база данных не существует, то создается автоматически. Для существующей базы данных проводится проверка на наличие определенных метаданных, и если не найдено, то создается необходимая структура. Все объекты метаданных имеют в имени определенный префикс, называемый схемой. Таким образом модуль msc может соседствовать в базе с другими данными, например, с весовым учетом. ====== Конфигурация ====== Пример конфигурационного файла: <code xml> <?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> </code> ^Параметр^По умолчанию^Описание^ |**db** | ''db'' |Модуль базы данных | |**refmod** | - |Модуль, содержащий теги от считывателей | |**script** | ''msc'' |Имя dbscr-скрипта | |**schema** | ''msc'' |Название схемы (префикс для имен метаобъектов в базе данных) | ====== Основные таблицы ====== Во многих таблицах встречается поле deleted. Если значение в нем не равно 0, то запись считается удаленной и не будет участвовать при создании новых задач. ===== reader ===== <code sql> 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 ) </code> **ISGROUP** -- 0 - обычная запись, 1 - группа\\ **NAME** - текстовое название считывателя\\ **IDNAME** - имя модуля считывателя, по которому будут созданы теги\\ **READERTYPE** - пока только ''promauto''\\ ===== person ===== <code sql> create table {schema}_PERSON ( ID integer not null primary key, ISGROUP smallint default 0, NAME varchar(128), DELETED smallint default 0 ) </code> ===== card ===== <code sql> 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 ) </code> ===== schedule ===== <code sql> 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 ) </code> Расписание по которому будут генерироваться задачи. **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 | **DURATION** - длительность задачи в минутах. В течение этого времени от начала задачи требуется ее выполнение.\\ **AUTOTASK** - если 1, то разрешена автоматическая генерация задач по данному расписанию. ===== task ===== <code sql> 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_EXPIRE timestamp, DT_REG timestamp, STATUS smallint, DELETED smallint default 0 ) </code> Таблица содержит задачи на обслуживание определенного оборудования со считывателемя. **DT_CREATE** - создание задачи - момент создания записи в таблицы.\\ **DT_BEGIN** - начало задачи - с какого момента можно подносить карту к считывателю.\\ **DT_END** - окончание задачи - поднесение карты после этого момента будет засчитано как выполнение с опозданием.\\ **DT_EXPIRE** - максимальное время жизни открытой задачи, после которого она автоматически закрывается со статусом ''3''.\\ **DT_REG** - дата и время выполнения задачи (поднесения карты).\\ **PERSON_ID** - человек, выполнивший задачу.\\ **STATUS** - статус задачи: ^Код статуса ^Описание ^ | 0 |Открыта | | 1 |Закрыта во время | | 2 |Закрыта с опозданием | | 3 |Закрыта по просрочке | | 4 |Отменена | ===== input ===== <code sql> 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 ) </code> ====== Работа модуля ====== При запуске модуль ожидает подключений к базе данных и к серверу данных, после чего циклически выполняет действия: - проверка поступления нового кода от считывателей, и если есть, фиксирование его в базе данных. - генерирование новых задач - закрытие просроченных задач