doc:jroboplc:modules:arctrm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
doc:jroboplc:modules:arctrm [2026/07/22 21:41] denisdoc:jroboplc:modules:arctrm [2026/08/01 11:25] (current) – [События] denis
Line 1: Line 1:
 ====== arctrm ====== ====== arctrm ======
  
-Модуль ''arctrm'' предназначен для периодического архивирования температурных значений в базе данных Firebird. Значения считываются из тегов модулей ''promauto.termo5''.+Модуль ''arctrm'' предназначен для периодического архивирования температурных значений в базе данных Firebird. На текущий момент значения считываются только из тегов модулей ''promauto.termo5''. В дальнейшем возможно расширение поддержки других модулей термометрии.
  
 Модуль сохраняет: Модуль сохраняет:
  
-  * температурные срезы по каждому подвесу; +  * температурные срезы по подвескам с актуальными данными
-  * сведения о подвесах; +  * сведения о подвесках; 
-  * события запуска архива и изменения состояния связи с устройствами.+  * события запуска архиваизменения состояния связи с устройствами и потери актуальности данных подвесок.
  
-Сам модуль не выполняет обмен с оборудованием. Данные и состояние связи он получает через ссылки ''Ref'' на теги других модулей.+Сам модуль не выполняет обмен с оборудованием. Данные и состояние связи он получает из тегов других модулей.
  
 [[doc:jroboplc:modules:arctrm_dev]] [[doc:jroboplc:modules:arctrm_dev]]
Line 42: Line 42:
 | ''period'' | ''1h'' | Период сохранения архива. Поддерживаются суффиксы ''ms'', ''s'', ''m'', ''h'', ''d''. | | ''period'' | ''1h'' | Период сохранения архива. Поддерживаются суффиксы ''ms'', ''s'', ''m'', ''h'', ''d''. |
 | ''size'' | ''1000000'' | Максимальное количество строк в таблице ''TEMPER''. | | ''size'' | ''1000000'' | Максимальное количество строк в таблице ''TEMPER''. |
-| ''sensorCount'' | ''6'' | Количество датчиков в каждом подвесе. | +| ''sensorCount'' | ''6'' | Количество датчиков в каждой подвеске. | 
-| ''promauto.termo5'' | — | Список модулей-источников и настроенных подвесов. |+| ''promauto.termo5'' | — | Список модулей-источников и настроенных подвесок. |
  
 Значения ''size'', ''period'' и ''sensorCount'' должны быть больше нуля. Значения ''size'', ''period'' и ''sensorCount'' должны быть больше нуля.
Line 49: Line 49:
 ==== Настройка устройств ==== ==== Настройка устройств ====
  
-Ключ первого уровня в секции ''promauto.termo5'' является именем модуля-источника тегов. Ключ подвеса состоит из произвольного первого символа и числового номера. Например, из ключа ''p5'' модуль получает номер подвеса ''5''.+Ключ первого уровня в секции ''promauto.termo5'' является именем модуля-источника тегов. Ключ подвески состоит из произвольного первого символа и числового номера. Например, из ключа ''p5'' модуль получает номер подвеса ''5''.
  
-Для каждого подвеса создаются ссылки на теги:+Для каждой подвески создаются ссылки на теги:
  
 <code text> <code text>
Line 59: Line 59:
 <deviceName>:Pdv<podvesNum>.T<sensorCount-1> <deviceName>:Pdv<podvesNum>.T<sensorCount-1>
 </code> </code>
 +
 +Актуальность данных подвески определяется по тегу:
 +
 +<code text>
 +<deviceName>:Pdv<podvesNum>.Time
 +</code>
 +
 +Данные считаются актуальными, если ссылка на тег существует, а его значение находится в диапазоне от ''0'' до ''600'' включительно.
  
 Состояние связи с устройством определяется по тегу: Состояние связи с устройством определяется по тегу:
Line 72: Line 80:
   - создаёт необходимые таблицы и индексы;   - создаёт необходимые таблицы и индексы;
   - добавляет отсутствующие колонки ''T0...Tn'' в таблицу ''TEMPER'';   - добавляет отсутствующие колонки ''T0...Tn'' в таблицу ''TEMPER'';
-  - синхронизирует справочник подвесов;+  - синхронизирует справочник подвесок;
   - загружает дату последней архивной записи;   - загружает дату последней архивной записи;
   - записывает событие запуска архива.   - записывает событие запуска архива.
  
-На каждом рабочем цикле модуль считывает текущие значения датчиков. Время берётся с сервера базы данных и округляется вниз до границы периода ''period''.+На каждом рабочем цикле модуль сначала проверяет ''Pdv<podvesNum>.Time'' каждой подвески. Значения датчиков считываются только для подвесок с актуальными данными. Время архивного среза берётся с сервера базы данных и округляется вниз до границы периода ''period''.
  
-Если наступил новый период, в ''TEMPER'' записывается по одной строке для каждого подвеса. При превышении лимита ''size'' удаляются строки с наименьшими значениями ''ID''.+Если наступил новый период, в ''TEMPER'' записывается по одной строке для каждой подвески с актуальными данными. Для подвески с отсутствующим тегом ''Time'' или значением вне диапазона ''0...600'' строка не создаётся. При превышении лимита ''size'' удаляются строки с наименьшими значениями ''ID''.
  
 ===== База данных ===== ===== База данных =====
  
 ^ Таблица ^ Назначение ^ ^ Таблица ^ Назначение ^
-| ''PODVES'' | Справочник подвесов: имя и описание. |+| ''PODVES'' | Справочник подвесок: имя и описание. |
 | ''TEMPER'' | Архив температурных срезов. Содержит ''PODVES_ID'', ''DT'' и динамические колонки ''T0...Tn''. | | ''TEMPER'' | Архив температурных срезов. Содержит ''PODVES_ID'', ''DT'' и динамические колонки ''T0...Tn''. |
-| ''EVENTLOG'' | Журнал запуска архива и изменения состояния связи с устройствами. |+| ''EVENTLOG'' | Журнал запуска архиваизменения состояния связи с устройствами и потери актуальности данных подвесок. |
  
 Основные связи: Основные связи:
Line 93: Line 101:
 </code> </code>
  
-Одна строка ''TEMPER'' содержит значения всех датчиков одного подвеса за один архивный период.+Одна строка ''TEMPER'' содержит значения всех датчиков одной подвески за один архивный период.
  
 ===== Значения датчиков ===== ===== Значения датчиков =====
Line 100: Line 108:
  
 ^ Значение ^ Состояние ^ ^ Значение ^ Состояние ^
-| ''3000'' | Тег датчика не найден — ''NOLINK''. | +| ''3010'' | Значение ниже допустимого диапазона — короткое замыкание. | 
-| ''3010'' | Значение ниже допустимого диапазона — обрыв датчика. | +| ''3011'' | Значение выше допустимого диапазона — обрыв. | 
-| ''3011'' | Значение выше допустимого диапазона — короткое замыкание. |+| ''3013'' | Тег датчика не найден — ''NOLINK''. |
  
 Допустимый диапазон обычного значения: от ''-1000'' до ''2000'' включительно. Допустимый диапазон обычного значения: от ''-1000'' до ''2000'' включительно.
Line 109: Line 117:
  
 ^ Код ^ Событие ^ ^ Код ^ Событие ^
-| ''0''Инициализация архива. | +| ''0''Ссылка на ''SYSTEM.ErrorFlag'' не найдена. | 
-| ''1'' | Связь с устройством установлена. | +| ''1'' | Связь с устройством потеряна: ''SYSTEM.ErrorFlag = true''. | 
-| ''2'' | Связь с устройством потеряна''SYSTEM.ErrorFlag = true''. | +| ''3'' | Данные подвески неактуальны: ссылка на ''Pdv<podvesNum>.Time'' не найдена или значение находится вне диапазона ''0...600''. | 
-''3'' | Ссылка на ''SYSTEM.ErrorFlag'' не найдена. |+| ''99'' | Связь с устройством установлена. | 
 +''100'' | Инициализация архивации. | 
 + 
 +Для событий состояния устройства в поле ''MESSAGE'' записывается имя устройства, для события неактуальных данных — имя подвески в формате ''<deviceName>.<podvesNum>''для события инициализации — пустая строка.
  
-Событие состояния устройства записывается только при изменении его состояния.+Событие состояния устройства записывается только при изменении его состояния. Событие неактуальных данных формируется при первой потере актуальности, записывается при наступлении следующего архивного периода и не повторяется до восстановления актуальности и её следующей потери.
  
 ===== Теги модуля ===== ===== Теги модуля =====
Line 131: Line 142:
 ^ Поле ^ Описание ^ ^ Поле ^ Описание ^
 | ''devices'' | Количество настроенных устройств. | | ''devices'' | Количество настроенных устройств. |
-| ''podves'' | Общее количество подвесов. |+| ''podves'' | Общее количество подвесок. |
 | ''sensors'' | Общее количество датчиков. | | ''sensors'' | Общее количество датчиков. |
 | ''nolinkSensors'' | Количество датчиков без ссылки; выводится только при ненулевом значении. | | ''nolinkSensors'' | Количество датчиков без ссылки; выводится только при ненулевом значении. |
Line 142: Line 153:
  
   * Поддерживается только Firebird.   * Поддерживается только Firebird.
-  * Значение ''sensorCount'' является общим для всех подвесов.+  * Значение ''sensorCount'' является общим для всех подвесок.
   * Таблица ''EVENTLOG'' автоматически не очищается.   * Таблица ''EVENTLOG'' автоматически не очищается.
   * Удаление архивных строк выполняется по ''ID'', а не по дате ''DT''.   * Удаление архивных строк выполняется по ''ID'', а не по дате ''DT''.
  • doc/jroboplc/modules/arctrm.1784745691.txt.gz
  • Last modified: 2026/07/22 21:41
  • by denis