Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:jroboplc:modules:arcsvr [2020/10/07 06:48] denis [Общие параметры] |
doc:jroboplc:modules:arcsvr [2021/11/05 13:36] (текущий) denis [Алгоритм архивации сообщений версии 2] |
||
---|---|---|---|
Строка 111: | Строка 111: | ||
- SCR.Device1_Temperature | - SCR.Device1_Temperature | ||
- | tagsources: | ||
- | - rpcl_zlak | ||
- | - rpcl_resurs | ||
| | ||
</code> | </code> | ||
Строка 121: | Строка 118: | ||
===== Параметры архивации тегов ===== | ===== Параметры архивации тегов ===== | ||
^ Параметр ^ Умолчание ^ Описание ^ | ^ Параметр ^ Умолчание ^ Описание ^ | ||
- | |**arcval.robo**| '''' |Список atg-файлов из roboplant-проекта. В нескольких файлах может использоваться одно и то же имя архивной таблицы (например, ARC_2SEC и ARC_4SEC), при этом значения размера и периода архивирования будут взяты из последнего. Формат atg-файла [[doc:jroboplc:modules:arcsvr_atg|здесь]]. | | + | |**arcval.robo**| '''' |Список atg-файлов из roboplant-проекта. В нескольких файлах может использоваться одно и то же имя архивной таблицы (например, ARC_2SEC и ARC_4SEC), при этом значения размера и периода архивирования будут взяты из последнего. Привязка выполнения записи ко времени, кратному period_ms, выполняется при указании period_ms>=60000. Формат atg-файла [[doc:jroboplc:modules:arcsvr_atg|здесь]]. | |
|**arcval.regex**| '''' |Набор описаний архивных таблиц с использованием regex-выражений. Внутри данного параметра содержатся имена архивных таблиц. Внутри имени архивной таблицы, содержится описание архива. Имя таблицы не должно использоваться другими архивами. | | |**arcval.regex**| '''' |Набор описаний архивных таблиц с использованием regex-выражений. Внутри данного параметра содержатся имена архивных таблиц. Внутри имени архивной таблицы, содержится описание архива. Имя таблицы не должно использоваться другими архивами. | | ||
- | ^ **Описание архивной таблицы** ^^^ | + | ^ **Описание архивной таблицы для arcval.regex** ^^^ |
|**mode**| ''period'' |Режим архивирования: ''period'' и ''change'' | | |**mode**| ''period'' |Режим архивирования: ''period'' и ''change'' | | ||
- | |**type**| ''int16'' |Тип поля данных:<html><br>int16 - SMALLINT<br>int32 - INTEGER<br>float - FLOAT<br>double - DOUBLE PRECISION</html> | | + | |**type**| ''int16'' |Тип поля данных:<html><br> |
+ | int16 - SMALLINT<br> | ||
+ | int32 - INTEGER<br> | ||
+ | int64 - BIGINT<br> | ||
+ | float - FLOAT<br> | ||
+ | double - DOUBLE PRECISION | ||
+ | </html> | | ||
|**size**| ''604800'' |Количество записей в архивной таблице | | |**size**| ''604800'' |Количество записей в архивной таблице | | ||
|**period_ms**| ''1000'' |Период архивирования, мс. См.[[doc:jroboplc:modules:arcsvr#периодичность_архивирования|"Периодичность архивирования"]] | | |**period_ms**| ''1000'' |Период архивирования, мс. См.[[doc:jroboplc:modules:arcsvr#периодичность_архивирования|"Периодичность архивирования"]] | | ||
- | |**force_s**| ''0'' |Период обязательной записи. Только для режима ''change''. | | + | |**force_s**| ''60'' |Период обязательной записи. Только для режима ''change''. | |
- | |**period_align**| ''off'' |Привязка выполнения записи к кратному period_ms или force_s для архивов режима ''period'' или ''change'' соответственно | | + | |**period_align**| ''off'' |Привязка выполнения записи ко времени, кратному period_ms или force_s для архивов режима ''period'' или ''change'' соответственно | |
|**tags**| '''' |Список регулярных выражения, задающих правила отбора тегов. Соответствие определяется в заданной списком последовательности. Символ ''~'' обозначает исключающее правило. | | |**tags**| '''' |Список регулярных выражения, задающих правила отбора тегов. Соответствие определяется в заданной списком последовательности. Символ ''~'' обозначает исключающее правило. | | ||
Строка 171: | Строка 174: | ||
place: Крупоцех | place: Крупоцех | ||
- | tagsources: | ||
- | - rpcl_zlak | ||
- | - rpcl_resurs | ||
- | | ||
arcmes.robo: | arcmes.robo: | ||
- projects/NRMEL.ams; Элеватор | - projects/NRMEL.ams; Элеватор | ||
Строка 234: | Строка 233: | ||
===== Параметры архивации сообщений ===== | ===== Параметры архивации сообщений ===== | ||
^ Параметр ^ Умолчание ^ Описание ^ | ^ Параметр ^ Умолчание ^ Описание ^ | ||
+ | |**version**| ''1'' |Версия алгоритма архивации сообщений: 1 - старый вариант, 2 - новый (см. ) | | ||
|**arcmes.robo**| '''' |Список ams-файлов из roboplant-проекта. Имя файла указывается через точку с запятой с местом:<code>- путь_и_имя_ams-файла[;место]</code> В нескольких файлах может использоваться сообщения с одинаковыми MesId, при этом остальные параметры сообщения будут взяты из последнего файла. Формат ams-файла [[doc:jroboplc:modules:arcsvr_ams|здесь]]. | | |**arcmes.robo**| '''' |Список ams-файлов из roboplant-проекта. Имя файла указывается через точку с запятой с местом:<code>- путь_и_имя_ams-файла[;место]</code> В нескольких файлах может использоваться сообщения с одинаковыми MesId, при этом остальные параметры сообщения будут взяты из последнего файла. Формат ams-файла [[doc:jroboplc:modules:arcsvr_ams|здесь]]. | | ||
|**arcmes.plain**| '''' |Список описаний простых сообщений (plain). | | |**arcmes.plain**| '''' |Список описаний простых сообщений (plain). | | ||
Строка 396: | Строка 396: | ||
arcmes:sweepmes 2016 | arcmes:sweepmes 2016 | ||
Данная команда, посылаемая модулю с именем ''arcmes'', удаляет все записи старше 2016 года включительно. | Данная команда, посылаемая модулю с именем ''arcmes'', удаляет все записи старше 2016 года включительно. | ||
+ | |||
+ | ===== Алгоритм архивации сообщений V2 ===== | ||
+ | Для работы по данному алгоритму необходимо пересоздать базу сообщений. | ||
+ | |||
+ | В таблице ''MESSAGES'' добавлены поля ''DTEND'' и ''DTACK'': | ||
+ | <code sql> | ||
+ | CREATE TABLE MESSAGES ( | ||
+ | IDM INTEGER NOT NULL, | ||
+ | DT TIMESTAMP, | ||
+ | DTEND TIMESTAMP, | ||
+ | DTACK TIMESTAMP, | ||
+ | IDMSG INTEGER, | ||
+ | IDTAG INTEGER, | ||
+ | IDUSER INTEGER, | ||
+ | IDPLACE INTEGER, | ||
+ | DATA VARCHAR(128), | ||
+ | ACT CHAR(1), | ||
+ | CLB INTEGER, | ||
+ | CLF INTEGER | ||
+ | ) | ||
+ | </code> | ||
+ | |||
+ | При работе в режиме ''version: 1'' поля ''DTEND'' и ''DTACK'' не используются. | ||
+ | |||
+ | При работе в режиме ''version: 2'' поля дат имеют следующее назначение: | ||
+ | * ''DT'' - дата наступления события | ||
+ | * ''DTEND'' - дата ухода события (перестает быть актуальным). Если ''null'', то сообщение считается актуальным. | ||
+ | * ''DTACK'' - дата подтверждения. Если ''null'', то сообщение считается не подтвержденным. | ||
+ | | ||
+ | При наступлении события в ''MESSAGES'' создается запись (сообщение), где ''DT'' содержит текущую дату, а ''DTEND'' и ''DTACK'' содержат null. | ||
+ | |||
+ | При уходе события в ''MESSAGES'' находится соответствующее актуальное сообщение с ''DTEND'' = null и прописывается текущая дата в ''DTEND''. | ||
+ | |||
+ | В ''DTACK'' значение прописывает scada-клиент. | ||
+ | |||
+ | Для удобства использования в scada-клиентах в базе данных имеются дополнительные метаобъекты: | ||
+ | * view MESMONITOR - выдает отсортированный список текущих сообщений (используется для мониторинга сообщений) <code sql> | ||
+ | CREATE VIEW MESMONITOR( | ||
+ | IDM, | ||
+ | ORD, | ||
+ | DT, | ||
+ | DTEND, | ||
+ | DTACK, | ||
+ | IDPLACE, | ||
+ | PLACENAME, | ||
+ | IDUSER, | ||
+ | USERNAME, | ||
+ | MESTEXT, | ||
+ | TAGTEXT, | ||
+ | DATA, | ||
+ | FULLTEXT, | ||
+ | CLB, | ||
+ | CLF) | ||
+ | </code> | ||
+ | * view MESVIEW - выдает отсортированный список всех сообщений (используется для просмотра архива) <code sql> | ||
+ | CREATE VIEW MESVIEW( | ||
+ | IDM, | ||
+ | DT, | ||
+ | DTEND, | ||
+ | DTACK, | ||
+ | IDPLACE, | ||
+ | PLACENAME, | ||
+ | IDUSER, | ||
+ | USERNAME, | ||
+ | MESTEXT, | ||
+ | TAGTEXT, | ||
+ | DATA, | ||
+ | FULLTEXT, | ||
+ | CLB, | ||
+ | CLF, | ||
+ | ACT) | ||
+ | </code> | ||
+ | |||
+ | * procedure SAVE_MESSAGE - сохраняет текстовое сообщение (используется для фиксации действий пользователя) <code sql> | ||
+ | create procedure SAVE_MESSAGE ( | ||
+ | MSGTEXT varchar(1024), | ||
+ | TAGTEXT varchar(1023), | ||
+ | DATATEXT varchar(128), | ||
+ | IDUSER integer, | ||
+ | IDPLACE integer, | ||
+ | CLB integer, | ||
+ | CLF integer) | ||
+ | returns ( | ||
+ | IDM integer, | ||
+ | IDMSG integer, | ||
+ | IDTAG integer) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||