Создание типовой конфигурации – это основная операция для настройки сбора данных и управления ими.
Следует придерживаться следующего порядка:
- Сформировать библиотеку устройств, которые будут использоваться в схемах подключения ТК. Правильное заполнение устройств потребует подтянуть справочники по единицам измерений.
- Заполнить библиотеку иконок, которые могут быть назначены на параметры, для индикации статусов состояния параметров.
- Заполнить справочник тегов. Теги не являются обязательным условием для работы с конфигурациями, их привязка к типовым параметрам не влечет необходимости обновлять конфигурацию контроллеров.
Типовая конфигурация (ТК) определяет состав устройств, с которыми будет взаимодействовать платформа через один из своих шлюзов (MQTT, LoraWAN, AxxsonSoft, и др.), правила взаимодействия с устройствами, параметры сбора и управления (см. п. 4.2).
Обычно ТК после создания отправляется на контроллер (Edge), и взаимодействие устройств с платформой производится по протоколу MQTT через контроллер. В то же время, если шлюз не предполагает взаимодействие через контроллер, ТК задает шаблон, который может многократно использоваться для создания реальных параметров с измерениями.
ТК может назначаться на множество контроллеров, если требуется унификация и типизация сбора.
Изменение ТК сказываются на всех связанных с ней контроллерах, поэтому важно обеспечивать баланс между типизацией настроек и обобщением схем подключения, чтобы в дальнейшем не требовалось частого изменения типовой конфигурации.
Количество созданных ТК может быть неограниченным. С каждой ТК может быть связано неограниченное количество режимов управления (расписаний) и правил.
Для контроллера назначается одна ТК и одно типовое расписание (входит в типовую конфигурацию).
Ниже представлены основные разделы, которые описывают, что должно быть предварительно подготовлено для работы с ТК, и действия по сборке конфигураций.
При выполнении этих условий ТК собираются в схемы, в которых прописываются устройства, и для типовых параметров назначаются теги и иконки.
ТК состоит из набора схем подключенных устройств. При создании схемы подключения устройств следует придерживаться следующих правил:
где:
<топик устройства> – поле «ТОПИК УСТРОЙСТВА» (см. Устройства).
<топик параметра> – поле «ТОПИК КАНАЛА» (см. Устройства->Каналы).
При создании схемы все параметры указанного устройства создаются как параметры измерений в схеме ТК. Если в схеме не нужны все параметры, то их можно удалить из ТК, либо оставить как есть и заблокировать для сбора после назначения ТК на контроллер.
Если в процессе эксплуатации потребуется изменить состав параметров Устройства, либо изменить состав параметров в схеме подключения устройства, следует воспользоваться кнопкой «Обновить каналы».
Важно!
A) Наименование параметра генерируется автоматически и может быть изменено.
B) Идентификаторы подключения датчика и канала датчика генерируются автоматически.
C) Идентификатор зоны выполняет роль таргета, который может быть назначен для параметра. В дальнейшем зона может использоваться в дашбордах для группировки параметров по одинаковому таргету.
D) Имя топика создается автоматически.
E) Период опроса (сек) определяет обязательный период времени отправки значений платформе. С учетом параметра погрешности измерений связанного с ним канала, это значение может быть достаточно большим. Не следует задавать период опроса меньше 1 мин. Если значение параметра вышло за коридор погрешности, измерение будет отправлено в платформу сразу же, интервал опроса является гарантированным временем получения измерения.
F) Признак срочности в основном применяется для сигнальных параметров. Он означает, что любое изменение значения параметра будет сразу же отправлено в платформу.
G) Идентификаторы сообщения и контрольные процедуры.
H) Если не задать Порт, то функция отправки конфигурационного файла для драйвера не будет выполнена. В некоторых случаях этого и не требуется.
Механизм задания вычисляемых параметров предоставляет мощный и гибкий инструмент для расчета дополнительных параметров, которые необходимо постоянно рассчитывать по выборке измеряемых параметров.
С точки зрения обработки, вычисляемые параметры ничем не отличаются от измеряемых. Вычисляемый параметр можно связать с контрольной процедурой, сформировать с ним события, либо вывести его на виджет.
Примеры использования вычисляемых параметров:
Для задания вычисляемых параметров необходимо в разделе «КОНФИГУРАЦИИ» / «Типовые конфигурации» в разделе «Ссылки» выбрать «Вычисляемые параметры».
В текущей версии поддерживаются любые арифметические операции для задания параметра. Основное ограничение, которое контролируется платформой: нельзя задать измеряемые параметры разной категории (физических величин), т.е. нельзя сложить напряжение в вольтах и расход воды в литрах.
Формулы можно задать вручную, либо использовать оснастку. Формула хранится в виде арифметического выражения идентификаторов измеряемых параметров, но оснастка платформы представляет формулу по именам параметров. Для написания формул используется формат:
D<Id> – обозначение параметра, участвующего в формуле;
F(DR<id> – обозначение параметра, участвующего в формуле.
Если в формуле применяются логические выражения, то результатом вычисления будет значение 1 или 0. Следует учесть, что такой вычисляемый параметр становится сигнальным.
Система поддерживает ряд специальных функций, которые рассчитывают интервальные приращения относительно текущего значения измеряемого параметра. В качестве точек отсчета могут указываться:
Полное описание всех функций представлено в п. 4.2.
Для любого параметра ТК существует возможность определить представление параметра в приложениях платформы в виде иконки. Для этого необходимо зайти в раздел «КОНФИГУРАЦИЯ» / «Типовые конфигурации» / «Схемы подключения устройств» / «Измеряемые параметры» / «Иконки состояний» (для вычисляемых параметров – <…> / «Вычисляемые параметры» / «Иконки состояний») и для каждого из статусов назначить иконку из библиотеки иконок, либо написать текст (в некоторых приложениях текст будет сокращен).
Как это работает:
Для сигнальных параметров в качестве статусных полей вывода текстовых значений (например: открыто/закрыто, вкл/выкл, внизу/вверху и т.д.) используются только статусы «Норма» и «Критическое». В то же время это не ограничивает возможности применения других статусных иконок для сигнальных параметров.
Теги используются в качестве меток для тех параметров, которые требуется выделить из общего списка. Например,
В дальнейшем теги используются в схемах выгрузки данных, при поиске параметров в приложениях.
Для типовой конфигурации можно задать несколько расписаний. Когда контроллеру назначается типовая конфигурация, все настройки пересылаются на контроллер, за исключением расписания. Расписание для контроллера назначается отдельно, но из списка расписаний типовой конфигурации.
Это удобно, по крайней мере, по двум причинам:
Для настройки расписания необходимо в панели «Типовые конфигурации» в разделе ссылок выбрать «Расписания».
Выбирите создание нового расписания, либо выбирите существующее. Для расписания нужно задать действия (ссылка «Переключения параметров») и/или правила (ссылка «Включение правила по расписанию»). Не обязательно определять обе сущности, расписание может содержать только действия или только правила, но может содержать обе сущности.
Важно! В действиях по расписанию могут быть определены только сигнальные параметры, а правила могут быть только те, которые заданы для этой типовой конфигурации в Правилах с атрибутом его местонахождения «Контроллер».
Действие (переключение параметра) задается как связка Параметр-Шаблон Расписания.
Правило (активация правила по расписанию) задается как связка Правило-Шаблон Расписания.
Шаблоны расписаний должны быть заранее подготовлены.
Для настройки правил необходимо в панели управления типовой конфигурации выбрать ссылку «Правила». Любое правило содержит «Триггер», в виде логического условия, при удовлетворении которого должна выполнятся цепочка Действий.
Каждое Действие содержит:
Действия, которые связаны с Триггером правила помечается признаком root. Их выполнение начинается параллельнно.
Условие перехода - это последовательный шаг на следующее действие при его значении true. Переходное условие может быть не задано, либо его значение false, тогда цепочка правил заканчивается на таком действии.
Атрибуты правил:
«Описание» – заголовок для группы следующих атрибутов правила:
• «ПРАВИЛО» – название правила (произвольный текст);
• «КОММЕНТАРИЙ» – текст комментария;
• «МЕСТОПОЛОЖЕНИЕ» – переключатель, обязательно принимающий одно из значений: «КОНТРОЛЛЕР» или «СЕРВЕР»;
• «ИНТЕРВАЛ ВРЕМЕНИ (МИН)» – допустимое время задержки выполнения правила (в минутах), главное условие правила должно быть true на всем интервале времени;
• «БЛОКИРОВКА» – флажок, при установке которого блокируется выполнение правила;
• «ТИПОВАЯ КОНФИГУРАЦИЯ» – название ТК, с которой связано правило;
• «СОБЫТИЕ» – название события, связанного с данным правилом;
«Триггер» – главное условие правила:
• «Триггер» – логическое выражение для определения применимости правила (см. п. 4.2);
• «ИЗМ. ПАРАМЕТРЫ» – значение измеряемого параметра, выбираемое из списка существующих измеряемых параметров платформы;
• «Add Параметр» – кнопка для добавления выбранного измеряемого параметра в логическое выражение условия «<», «>», «<=», «>=», «==», «&&», «||», «(», «)», «%», «**», «!» – кнопки, при нажатии на которые соответствующие операнды подставляются в формулу, отображаемую в поле «УСЛОВИЕ».
Измеряемые параметры в формуле логического выражения записываются в формате:
**C<ID параметра>** или **D<ID параметра>**,
где:
D<IdP> – идентификатор параметра типовой конфигурации;
C<IdC> – идентификатор вычисляемого параметра.
«Действие» – задание для параметров нового занчения. Новое значение может быть числом, либо значением другого параметра, либо значением выражения.
Условие действия - условие перехода к следующему действию. Алгоритм задания условия аналогичны главному условию. Задержка задается в СЕКУНДАХ. Задержка выполняет роль паузы , после выполнения действия.
Т.е. общий порядок следующий:
Пример последовательной цепочки правил | Пример параллельного выполения двух действий |
---|---|
Платформа использует интерпретатор формул, позволяющий использовать сложные арифметические и логические конструкции. Формулы используются в следующих сущностях:
Состав разрешенных арифметических операций и их приоритеты приведены в следующей таблице.
Описание арифметических операций
Приоритет | Обозначение | Описание |
---|---|---|
0 | ( | Открывающая скобка |
1 | ) | Закрывающая скобка |
2 | || | Логическое ИЛИ |
3 | && | Логическое И |
4 | ! | Логическое НЕ |
5 | == != < <= > >= | Сравнение (равно, не равно, меньше, меньше или равно, больше, больше или равно) |
6 | + - | Сложение и вычитание |
7 | * / | Умножение и деление |
8 | % | Получение остатка деления |
Описание форматов формул
Место применения | Обозначение | Примечание |
---|---|---|
CalcParam.Expression | D<IdP> | Идентификатор параметра типовой конфигурации |
ProcCondition.Condition | V | Текущее значение контролируемого параметра |
Rule.Condition (для правила сервера) | D<IdP> C<IdC> | <IdP> – идентификатор параметра типовой конфигурации. <IdC> – идентификатор вычисляемого параметра |
Rule.Condition (для правила контроллера) | D<IdP> | <IdP> – идентификатор параметра типовой конфигурации |
Если в формуле применяются логические выражения, то результатом вычисления будет значение 1 либо 0. Следует учесть, что такой вычисляемый параметр становится сигнальным.
Пример записи формулы для вычисяемых параметров (CalcParam): D1+D2
Пример условия в процедуре контроля (ProcConditions): (V+5)< 10
Пример записи формулы в условии правил (Rule): (D1+D2) < D3
Пример записи формулы в назначении уставки (Rule Action): D2-D1
D1,D2,D3 - параметры типовой конфигурации, V - обозначение параметра, для которого будет назначена процедура контроля
«Inspark. IoT Platform» поддерживает ряд специальных функций, которые рассчитывают интервальные приращения относительно текущего значения измеряемого параметра. В качестве точек отсчета могут указываться текущие, либо скользящие временные периоды: сутки, неделя, месяц, квартал, год.
Для задания такого вычисляемого параметра используются следующие формулы, приведенные ниже, в которых используется следующий формат:
<Имя функции>(DR<IdP>),
где:
Формулы для задания вычисляемого параметра
Функция | Тип источника | Пример |
---|---|---|
AGG30 | Приращение значения с начала текущей 30 минуты | AGG30(DR1) |
AGG60 | Приращение значения с начала текущей 60 минуты | AGG60(DR1) |
AGGD | Приращение значения с начала текущих суток | AGGD(DR1) |
AGGW | Приращение значения с начала текущей недели | AGGW(DR1) |
AGGM | Приращение значения с начала текущего месяца | AGGM(DR1) |
AGGQ | Приращение значения с начала текущего квартала | AGGQ(DR1) |
AGGY | Приращение значения с начала текущего года | AGGY(DR1) |
Скользящие интервалы: | ||
AGGLD | Приращение значения от текущего времени минус сутки | AGGLD(DR1) |
AGGLW | Приращение значения от текущего времени минус неделя | AGGLW(DR1) |
AGGLM | Приращение значения от текущего времени минус месяц | AGGLM(DR1) |
AGGLY | Приращение значения от текущего времени минус год | AGGLY(DR1) |
Результат расчета вышеперечисленных функций зависит от типа (характера поведения) параметра: сигнальный, измеряемый, накопительный (счетчик). Формулы расчета функций приведены в таблице ниже.
Формулы расчета функций
Описание способа получения значений параметра | Устанавливаемое значение | Разрешенные типы измеряемых параметров |
---|---|---|
Текущее значение измеряемого параметра, полученное от контроллера | Pi = Vi | Параметры всех типов |
Текущее приращение значения параметра относительно выбранной точки отсчета | Pi = Vi – Bi | Только параметры типа 3 (нарастающий итог) |
Pi = ∑ Vk + Vi | Только параметры типа 4 (счетчик импульсов) |
где:
Специальные функции
Ниже приведены специальные функции, которые используются для расчета изменений параметров.
Функция | Тип источника | Пример |
---|---|---|
VALUE_PREV | Предыдущее значение параметра. Для числовых типов возвращает как число, для остальных как строку. Для null значений возвращает null | VALUE_PREV(DR1) |
VALUE_DELTA | разница между текущим и предыдущим значением | VALUE_DELTA(DR1) |
VALUE_DERIVATIVE | скорость изменения значения (производная, разница значений деленная на разницу времени в секундах) | VALUE_DERIVATIVE(DR1) |
Пояснение к VALUE_DELTA
если время хотя бы одно из времен (time, prevTime) не определено (null) - возвращает 0
если время значения и время предыдущего значения совпадают - возвращает 0
для числовых типов это разница между числовыми значениями, текущее минус предыдущее
Примеры (value - prevValue):
(10 - null) = (10 - 0) = 10.
(null - 10) = (0 - 10) = -10
(null - null) = 0
для строковых типов, возвращает 1 если строки разные, 0 если строки одинаковые (null строки заменяются пустыми)
для геозон тоже как строка
Пояснение к VALUE_DERIVATIVE
для числовых типов вычисляется по формуле (value - prevValue) / (timeSec (sec) - prevTime (sec))
в случае если (time = prevTime) возвращает 0
для числовых типов значения/предыдущие значения null заменяются на 0, для строковых на пустую строку (аналогично VALUE_DELTA)
для строковых типов, возвращает 1 если строки разные, 0 если строки одинаковые, разницу во времени не учитывает.
для геозон как строка
Для логических выражений используются те же операции (см. выше), но результатом операций являются значения TRUE или FALSE.
В качестве аргумента входящего значения параметров в логических выражениях платформы используется символ V.
Особенности записи логического выражения
Тип выражения | Пример выражения | Описание |
---|---|---|
Простое выражение | V>=10 && V<=20 | Допустимое выражение, обрабатываемое интерпретатором |
10<=V<=20 | Недопустимое выражение; интерпретатор не обработает данную запись | |
Сложное выражение | (V>=10 && V<=20) || (V>=50 && V<=80) | Допустимое выражение |
(V/10+V*2)/100>=10 | Допустимое выражение | |
(Dx1 > YY ? Dx2 : Dx3) | Если параметр Dx1 > YY, то вычисляемый параметр равен Dx2, в противном случае Dx3 |
Описание математических операций
Функция | Описание |
---|---|
Math.abs(x) | Возвращает абсолютное значение числа |
Math.acos(x) | Возвращает арккосинус числа |
Math.acosh(x) | Возвращает гиперболический арккосинус числа |
Math.asin(x) | Возвращает арксинус числа |
Math.asinh(x) | Возвращает гиперболический арксинус числа |
Math.atan(x) | Возвращает арктангенс числа |
Math.atanh(x) | Возвращает гиперболический арктангенс числа |
Math.atan2(y, x) | Возвращает арктангенс от частного своих аргументов |
Math.cbrt(x) | Возвращает кубический корень числа |
Math.ceil(x) | Возвращает наименьшее целое число, большее, либо равное указанному числу |
Math.clz32(x) | Возвращает количество ведущих нулей 32-битного целого числа |
Math.cos(x) | Возвращает косинус числа |
Math.cosh(x) | Возвращает гиперболический косинус числа |
Math.exp(x) | Возвращает Ex , где x — аргумент, а E — число Эйлера (2,718…), основание натурального логарифма |
Math.expm1(x) | Возвращает exp(x), из которого вычли единицу |
Math.floor(x) | Возвращает наибольшее целое число, меньшее, либо равное указанному числу |
Math.fround(x) | Возвращает ближайшее число с плавающей запятой одинарной точности, представляющее это число |
Math.hypot([x[, y[, …]]]) | Возвращает квадратный корень из суммы квадратов своих аргументов |
Math.imul(x) | Возвращает результат умножения 32-битных целых чисел |
Math.log(x) | Возвращает натуральный логарифм числа (loge , также известен как ln) |
Math.log1p(x) | Возвращает натуральный логарифм числа 1 + x (loge , также известен как ln) |
Math.log10(x) | Возвращает десятичный логарифм числа |
Math.log2(x) | Возвращает двоичный логарифм числа |
Math.max([x[, y[, …]]]) | Возвращает наибольшее число из своих аргументов |
Math.min([x[, y[, …]]]) | Возвращает наименьшее число из своих аргументов |
Math.pow(x, y) | Возвращает основание в степени экспоненты, то есть, значение выражения основание экспонента |
Math.random() | Возвращает псевдослучайное число в диапазоне от 0 до 1 |
Math.round(x) | Возвращает значение числа, округлённое до ближайшего целого |
Math.sign(x) | Возвращает знак числа, указывающий, является ли число положительным, отрицательным или нулём |
Math.sin(x) | Возвращает синус числа |
Math.sinh(x) | Возвращает гиперболический синус числа |
Math.sqrt(x) | Возвращает положительный квадратный корень числа |
Math.tan(x) | Возвращает тангенс числа |
Math.tanh(x) | Возвращает гиперболический тангенс числа |
Math.trunc(x) | Возвращает целую часть числа, убирая дробные цифры |
Платформа поддерживает возможность расчета расстояния геоточки до геозоны, либо нахождения в геозоне. Фукнция возвращает метры.
Формат формулы:
GEO_DISTANCE(V,Z<id>)
, где
Примеры использования в КП
"GEO_DISTANCE(V, Z2) > 100" - геопараметр удалился от геозоны более 100 метров.
"GEO_DISTANCE(V, Z2) == 0" - геопараметр находится внутри интересующей геозоны.
Контрольная процедура (КП) является основным инструментом мониторинга состояния параметров.
Контрольные процедуры позволяют описать условия проверки значений параметров и при выполнении условий присвоить параметру статус и сформировать событие. И если пользователь оформил подписку на события, то по указанным им каналам (электронная почта, звук и т.д.) направляется информация о значениях контролируемых параметров, а на дашбордах виджеты параметров показывают их статусы.
Контрольные процедуры доступны в разделе «КОНФИГУРАЦИИ» / «Контроль параметров».
Порядок настройки КП:
- Создать контрольную процедуру.
- Создать условия проверки параметра, связанные с этой КП.
Количество условий для проверки параметра в одной КП может быть сколь угодно большим. Для каждого условия требуется задать логическое условие, интервал в сутках, когда следует выполнять проверку условий, присвоить статус и назначить событие, которое должно создаваться при возникновении такого условия.
Все условия имеют порядковый номер, поэтому при назначении КП параметру, все значения, поступающие от этого параметра, проходят проверку условий, согласно их порядковым номерам от 1 и выше.
Пояснения:
В графическом интерфейсе пользователя выражения условий показываются и записываются в стандартной инфиксной записи. Состав разрешенных операций и их приоритеты приведены в п. 4.2.
Чтобы создать контрольную процедуру, выполните следующие действия:
После того как определены все необходимые контрольные процедуры, их можно назначить измеряемым и вычисляемым параметрам типовой конфигурации . Для этого необходимо в типовой конфигурации в ссылках выбрать измеряемые или вычисляемые параметры, выбрать нужный параметр и указать в соответствующем поле название контрольной процедуры.
Платформа поддерживает возможность задания индивидуальной КП для параметра объекта. Но такая возможность существует только для тех параметров объекта, у которых в измеряемых и вычисляемых параметрах ТК назначена КП.
Изменение возможно только КП модельного параметра.
Порядок применения индивидуальных расписаний: