Использование формул

Формулы применяются для расчёта значений и статусов входных каналов, а также для расчёта значений команд управления. Обработка формул выполняется программой Сервер.

Формулы вводятся в базу конфигурации в таблицы Входные каналы и Каналы управления. Чтобы расчёт по формуле для какого-либо канала выполнялся, необходимо установить для него галочку в столбце Исп. формулу. Таблица Формулы базы конфигурации содержит дополнительные функции и структуры данных, которые могут быть использованы в формулах для входных каналов и каналов управления.

Общие правила использования формул:

  1. Формулы записываются согласно синтаксису математических выражений языка C#. Доступны различные классы .NET, например, Math, DateTime.
  2. База конфигурации позволяет добавлять новые константы, поля, свойства и методы, которые становятся доступны в формулах.
  3. Если хотя бы одна из формул содержит ошибку, работа Сервера невозможна. Информация об ошибках в формулах выводится в журнал приложения.

Правила формул входных каналов:

  1. Расчёт по формулам для каналов типа Телесигнал и Телеизмерение выполняется только при получении сервером новых данных по этим каналам. Используйте эти типы каналов, если формула не ссылается на данные других каналов.
  2. Расчёт по формулам для каналов типа Дорасчётный * и Кол-во переключений выполняется постоянно. Последовательность расчёта – от меньших номеров каналов к большим. Дорасчётные типы каналов используются, если значение и статус канала вычисляются на основе данных других каналов.
  3. Расчёт по формулам для каналов типа Минутный * и Часовой * выполняется периодически один раз в минуту или один раз в час соответственно. Используйте эти типы каналов для реализации различных счётчиков, например, потребляемой энергии или времени наработки.
  4. Статус канала после вычисления по формуле для каналов типа Телесигнал и Телеизмерение равен статусу переданных Серверу данных, если расчёт статуса не задан в формуле явно.
  5. Для каналов других типов устанавливается статус Параметр определён, если расчёт статуса не задан в формуле явно.
  6. Формула, заданная для входного канала в базе конфигурации и не содержащая символа ";", определяет расчёт значения канала.
  7. Если формула содержит символ «;», то она разбивается на две части: первая часть определяет расчёт значения канала, вторая часть – расчёт статуса канала.

Правила формул каналов управления:

  1. Формула, заданная для канала управления в базе конфигурации, применяется для каналов управления с типом команды Стандартная или Бинарная.
  2. Формула определяет расчёт значения стандартной команды и расчёт данных бинарной команды.

Переменные, доступные в формулах:

Переменная Тип значения Описание
CnlVal, Cnl double Передаваемое Серверу значение входного канала до расчёта
CnlStat int Передаваемый Серверу статус входного канала до расчёта
CmdVal, Cmd double Передаваемое Серверу значение команды управления
CmdData byte[] Передаваемые Серверу данные команды управления
CnlNum int Номер канала, формула которого вычисляется
E double Число e
PI double Число π

Функции, доступные в формулах:

Функция Тип значения Описание
N(n) int Возвращает номер заданного канала для обновления номеров при клонировании
Val() double Текущее значение входного канала вычисляемой формулы
Val(n) double Текущее значение входного канала n
SetVal(n, val) double Установить текущее значение входного канала n
Stat() int Текущий статус входного канала вычисляемой формулы
Stat(n) int Текущий статус входного канала n
SetStat(n, stat) int Установить текущий статус входного канала n
SetData(n, val, stat) double Установить текущее значение и статус входного канала n
Abs(x) double Модуль
Sin(x) double Синус
Cos(x) double Косинус
Tan(x) double Тангенс
Exp(x) double Экспонента
Ln(x), Log(x) double Натуральный логарифм
Sqr(x) double Квадрат числа
Sqrt(x) double Квадратный корень