Формулы применяются для расчёта значений и статусов входных каналов, а также для расчёта значений команд управления. Обработка формул выполняется программой Сервер.
Выполняемые формулы вводятся в базу конфигурации в таблицы Входные каналы и Каналы управления в столбец Формула. Чтобы расчёт по формуле для какого-либо канала выполнялся, необходимо установить для него галочку в столбце Исп. формулу. Таблица Формулы базы конфигурации содержит дополнительные функции и структуры данных, которые могут быть использованы в формулах для входных каналов и каналов управления.
Общие правила написания и использования формул:
Правила вычисления формул входных каналов:
Правила вычисления формул каналов управления:
Переменные, доступные в формулах:
Переменная | Тип значения | Описание |
---|---|---|
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 | Квадратный корень |
Дополнительные формулы, в том числе формулы для работы со средними значениеми, доступны на GitHub.
При разработке собственных формул необходимо обеспечивать корректность синтаксиса формул и правильность их работы. Если службе Сервера при запуске не удалось скомпилировать формулы, информация об ошибке выводится в журнал работы Сервера, а компилируемый код формул доступен в файле CalcEngine.cs, который расположен по умолчанию в директории журналов Сервера C:\SCADA\ScadaServer\Log\
Для разработки сложных формул рекомендуется использовать Microsoft Visual Studio Community Edition, подключив в зависимости проекта сборку FormulaTester.dll. В качестве примера можно использовать проект формул указанный выше.