Формулы
В качестве источника данных любому объекту ОИК можно задать математическое выражение, также называемое дорасчетом. Формулы используются в конфигурации объектов (поле «Канал», когда устройство не выбрано), в «Условии управления», в таблицах и пользовательских таблицах.
Ссылки на объекты
Объект в формуле указывается одним из трех способов.
- Алиас
- Например,
u35_s1. Алиас задается в свойствах объекта (смотрите Объекты данных). Чтобы на алиас можно было сослаться из формулы, он должен начинаться с буквы или знака_и состоять из букв, цифр и знаков_. Алиас пишется точно так, как он задан, с учетом регистра. - Обозначение
- Например,
TIT.646илиTS.1379. Это идентификатор, который Сервер присваивает объекту при создании: латинское имя пространства (TIT— объекты ТИТ,TS— объекты ТС), точка и номер. Он показан в поле «Обозначение» группы «Атрибуты» окна «Свойства» объекта. Поле «Обозначение» можно отредактировать, но формула ссылается на идентификатор, а не на текст этого поля, поэтому сверяйтесь с исходным значением. Имя пространства пишется латиницей; регистр букв в нем не важен. - Канал устройства
- Например,
{IEC_DEV.1!115}— информационный объект с адресом 115 устройства МЭК-60870 с номером 1. В фигурных скобках записывается идентификатор устройства (IEC_DEV.1), знак!и адрес канала в формате протокола. Так записывается источник объекта, когда в его свойствах выбраны «Устройство» и «Канал»; в формуле объекта такую ссылку можно использовать наравне с другими.
Фигурные скобки принимают только идентификатор, а не имя объекта:
{Температура нагрева} и {u35_s1} ссылкой не являются. Запись вида ТИТ.1
(кириллицей) не является ни обозначением, ни ссылкой на канал — она будет
найдена, только если такой алиас действительно задан.
ВНИМАНИЕ: в таблицах и пользовательских таблицах ссылка на канал
устройства работает, только когда она — вся формула. В составе выражения
(например, {IEC_DEV.1!115} * 2) Клиент в этой версии ее не находит.
Ссылайтесь там на объект, получающий значение с этого канала.
Знак = в начале
- В таблице знак
=в начале формулы допускается и отбрасывается. - В пользовательской таблице знак
=обязателен: без него содержимое ячейки считается текстом. - В поле «Канал» объекта и в «Условии управления» знак
=не пишется: формула вида=TIT.1считается ошибочной.
Операции
| Операция | Значение | Приоритет |
|---|---|---|
^ |
возведение в степень | высший |
*, / |
умножение, деление | |
+, - |
сложение, вычитание | |
=, <, >, <=, >= |
сравнение: 1, если верно, иначе 0 | низший |
-x |
смена знака | применяется к ближайшему операнду |
!x |
логическое НЕ | применяется к ближайшему операнду |
Операции одного приоритета выполняются слева направо. Допускаются скобки.
Знак «не равно» отсутствует: != и <> дают ошибку. Вместо a != b
пишите !(a = b) или not(a = b).
Унарные - и ! относятся только к ближайшему операнду: !a = b означает
(!a) = b, а -x^2 означает (-x)^2. Если нужно иное, ставьте скобки.
Логические значения: true и false (1 и 0). Любое ненулевое значение
считается истиной.
Пример: TIT.1 + TIT.2 — сумма значений объектов ТИТ с обозначениями
TIT.1 и TIT.2.
Функции
Имена функций, true и false можно писать в любом регистре: sin, Sin и
SIN равнозначны.
| Функция | Описание |
|---|---|
sin(x) |
синус |
cos(x) |
косинус |
tan(x) |
тангенс |
asin(x) |
арксинус |
acos(x) |
арккосинус |
atan(x) |
арктангенс |
atan2(y, x) |
арктангенс y/x |
abs(x) |
модуль |
not(x) |
логическое НЕ |
sqrt(x) |
квадратный корень |
sign(x) |
знак числа: -1, 0 или 1 |
min(x1, x2, ...) |
минимум |
max(x1, x2, ...) |
максимум |
and(x1, x2, ...) |
логическое И |
or(x1, x2, ...) |
логическое ИЛИ |
bitxor(x, y) |
исключающее ИЛИ: 1, если истинен ровно один из аргументов |
if(x, a, b) |
a, если x истинно, иначе b |
Углы тригонометрических функций задаются в радианах.
... означает произвольное число параметров.
Если значение хотя бы одного объекта в формуле отсутствует, значение формулы тоже отсутствует.
Примеры
TIT.1 + TIT.2— сумма двух объектов ТИТ по обозначениям;u35_s1 * 1.05— значение объекта с алиасомu35_s1, увеличенное на 5 %;{IEC_DEV.1!115} * 1000— значение канала 115 устройстваIEC_DEV.1, пересчитанное в другие единицы (в поле «Канал» объекта);if(or(rek1_tok > 3, rek2_tok > 3), rek3_tok, 0)— алиасыrek1_tok,rek2_tok,rek3_tok;and(!TS.1379, !TS.1380, !TS.1382)— истинно, когда все три ТС в состоянии 0;!(TS.1 = TS.2)— истинно, когда состояния двух ТС различаются.

TIT.637, TIT.638, TIT.639 — обозначения объектов ТИТ, которые Сервер
присвоил им при создании.
Ошибки
Если формула в таблице содержит ошибку, Клиент сообщает «Некорректное выражение.», и формула не сохраняется. Если формулу объекта не удается разобрать или одна из ссылок в ней не найдена, объект не получает значения, и у него выставляется признак качества [К] — не настроен или ошибка конфигурации (смотрите Признаки качества).