<< Click to Display Table of Contents >> Navigation: Справочная информация > MasterSCADA > Советы по созданию формул |
•Преобразование вещественного типа в целый
•Организация условных вычислений
•Рекурсия (использование предыдущего вычисленного значения)
Преобразование вещественного типа в целый
При использовании в вычислениях функций и операций с целочисленными аргументами необходимо учитывать, что преобразование типа из вещественного в целый в формуле (в отличие от связей между переменными в дереве) автоматически не производится. Например, при попытке ввести в формулу следующую запись:
переменная_1 div переменная_2 |
вызовет сообщение "Недопустимая операция для аргументов данного типа", если хотя бы одна переменная имеет вещественный тип. Однако положение не является безвыходным, просто необходимо преобразовать тип из вещественного в целый (это произойдет, естественно, с потерей дробной части). Сделать это можно, например, используя функции seil (округление вверх) или floor (округление вниз). Функции "Округление до ближайшего целого" нет, но если вам это необходимо, вы можете удовлетворить свою потребность с помощью , например, такой конструкции: floor(имя_переменной + 0.5) . Окончательный вариант может быть, например, таким :
floor(переменная_1 + 0.5) div floor(переменная_2 + 0.5) |
|
Организация условных вычислений
Наличие условных операторов (равно, не равно, больше и т. д.) позволяет реализовать в формуле достаточно сложные условные вычисления. Условные операторы имеют возвращаемое значение 0, если условие ложно и 1, если условие истинно. Это значение можно использовать в дальнейших вычислениях. Лучше всего продемонстрировать это на примере. Вот приблизительная реализация переключателя 3 к 1:
переменные:
ИМЯ |
ТИП ДАННЫХ |
Вход1 |
любой |
Вход2 |
любой |
Вход3 |
любой |
Номер_входа |
целый |
формула:
(Номер_входа = 1) * Вход1 + (Номер_входа=2) * Вход2 + (Номер_входа=3) * Вход3 |
Если номер входа будет равен 1, 2 или 3, то выражение в скобках (условие) в соответствующем слагаемом примет значение 1, остальные условия примут значение 0. Все переменные ВходХ, будучи умноженными на 0 не повлияют на сумму, кроме нужного Входа, который будет умножаться на 1 и составит таким образом результат вычисления. (Обратите внимание, что при написании формулы можно переносить строки любым удобным для вас образом).
Рекурсия (использование предыдущего вычисленного значения)
Для того, чтобы использовать предыдущее вычисленное значение в формуле нужно перетащить в список переменных формулы сам расчет (событие). Значение этой переменной и будет предыдущим вычисленным значением формулы. При этом самым первым значением по умолчанию будет 0, если вы не установите за закладке "Опрос выхода" иное число в поле (Значение до опроса). Вот как можно записать формулу для простого пульсатора (мигающей логической величины), где источником переменной "предыдущее_значение" является сам расчет(событие):
НЕ предыдущее_значение |
|