Text-функция: различия между версиями
Alex (обсуждение | вклад) Нет описания правки |
Alex (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
== Введение == | == Введение == | ||
| Строка 8: | Строка 6: | ||
</pre> | </pre> | ||
Text-функции позволяют выполнить в программе SCADA | Text-функция ''- ''это обычный текстовый файл (.txt), название которого является названием самой функции. | ||
Функции находятся в папке Tekon \ ASUD Scada \ Scada \ scripts \ text | |||
Text-функции позволяют выполнить в программе SCADA математическое преобразование входного значения: | |||
<pre>Результат = F (Число)</pre> | |||
или преобразование путем сопоставления: | |||
Число = значение | Число = значение | ||
| Строка 17: | Строка 22: | ||
*значение - некоторая строка. | *значение - некоторая строка. | ||
В случае выполнения математического преобразования значение Item может быть целым или десятичной дробью. В случае, если функция выполняет сопоставление, значением Item должно быть целое число. | |||
Подобный функционал в частности реализуют [[Скрипты|Lua-cкрипты]] (и для более сложных задач, выходящих за возможности Text-функций, следует использовать именно их), однако написание Text-функций гораздо проще, они не требуют перезапуска SCADA в случае изменения и работают они несколько быстрее. | |||
Пример: функции func1 - файл func1.txt | Пример: функции func1 - файл func1.txt | ||
| Строка 28: | Строка 31: | ||
2=Авария ДТ | 2=Авария ДТ | ||
</pre> | </pre> | ||
Если значение Item = 1, то функция вернет значение "Работа" и т.д. | |||
Пример функции func2 - файл func2.txt | Пример функции func2 - файл func2.txt | ||
| Строка 46: | Строка 51: | ||
*Имя Text-функции в настройках примитивов указывается без ''.txt'', т.е. func1, а не func1.txt | *Имя Text-функции в настройках примитивов указывается без ''.txt'', т.е. func1, а не func1.txt | ||
*Имя функции не чувствительно в регистру, т.е. Func1 = func1 = FUNC1 | *Имя функции не чувствительно в регистру, т.е. Func1 = func1 = FUNC1 | ||
Text-функции используются, например в примитивах: | |||
*[[Tekon_Scada|Текстовое поле]] | |||
*[[Tekon_Scada|Лифтовая станция]] | |||
*[[Дополнительные_примитивы|Набор изображений]] | |||
== Настройка == | == Настройка == | ||
Вы можете добавлять / редактировать Text-функции непосредственно в SCADA | Для работы с Text-функциями, в общем случае, '''не следует напрямую''' редактировать файлы в папке Tekon \ ASUD Scada \ Scada \ scripts \ text | ||
Вы можете добавлять / редактировать Text-функции непосредственно в SCADA (при этом для вступления изменений в силу '''не требуется перезапуск SCADA'''), открыв меню ''Дополнительно \ Text-функции'' в режиме Настройки. | |||
[[File:Text func1.JPG|center|200px|Text func1.JPG]] | [[File:Text func1.JPG|center|200px|Text func1.JPG]] | ||
| Строка 62: | Строка 75: | ||
'''Внимание! '''Внесенные изменения вступают в силу (отображаются на карте) после закрытия окна редактирования. | '''Внимание! '''Внесенные изменения вступают в силу (отображаются на карте) после закрытия окна редактирования. | ||
Пустая Text-функция (функция с пустым "телом") сохранена не будет. И пропадет после переоткрытия окна. | |||
В случае если в теле функции есть ошибки, программа сообщит об этом. При этом, можно вернуться к предыдущей версии, нажав ''Вернуть''. | В случае если в теле функции есть ошибки, программа сообщит об этом. При этом, можно вернуться к предыдущей версии, нажав ''Вернуть''. | ||
| Строка 71: | Строка 86: | ||
*Лишние пустые строки | *Лишние пустые строки | ||
*Ошибка в выражении (подробнее см. далее) | *Ошибка в выражении (подробнее см. далее) | ||
== Дополнительно == | == Дополнительно == | ||
| Строка 82: | Строка 95: | ||
Выражение задается в первой строке Text-функции начиная с символа '''#''' | Выражение задается в первой строке Text-функции начиная с символа '''#''' | ||
'''Пример | '''Пример 1. Выполнить числовое преобразование значения''' | ||
Например вам нужно выполнить математическое преобразование | Например, вам нужно выполнить математическое преобразование: Результат = Значение + 10 | ||
Создаем новую функцию с названием, например Plus10, следующего содержания | |||
<pre># X + 10</pre> | <pre># X + 10</pre> | ||
, где X - это условное обозначение значения Item-а. | |||
Если входное значение равно 10, то результат функции будет 20. | Если входное значение равно 10, то результат функции будет 20. | ||
'''Пример | '''Пример 2. Функция BIT''' | ||
Проанализировать указанный бит значения связанного Item-a ОРС-сервера. | Проанализировать указанный бит значения связанного Item-a ОРС-сервера. | ||
Тело функции: | |||
<pre># BIT(X;1) | <pre># BIT(X;1) | ||
0=Норма | 0=Норма | ||
| Строка 97: | Строка 116: | ||
</pre> | </pre> | ||
, где X - это условное обозначение Item-а. | , где X - это условное обозначение значения Item-а. | ||
Нумерация бит 32, 31, ..., 1 (1 - младший). | Нумерация бит 32, 31, ..., 1 (1 - младший). | ||
| Строка 108: | Строка 127: | ||
Допускается сокращенная запись BIT(1) == BIT(X;1) | Допускается сокращенная запись BIT(1) == BIT(X;1) | ||
'''Пример | '''Пример 3. Функция BITS''' | ||
Проанализировать несколько бит, начиная с указанного. | Проанализировать несколько бит, начиная с указанного. | ||
Тело функции: | |||
<pre># BITS(X;1;2) | <pre># BITS(X;1;2) | ||
0=Норма | 0=Норма | ||
| Строка 125: | Строка 146: | ||
Допускается сокращенная запись BITS(2;1) == BIT(X;2;1) | Допускается сокращенная запись BITS(2;1) == BIT(X;2;1) | ||
'''Пример | '''Пример 4. Функция BITSTR''' | ||
Собрать строку, проверив факт установки каждого бита значения Item-a. | Собрать строку, проверив факт установки каждого бита значения Item-a. | ||
Тело функции: | |||
<pre># BITSTR() | <pre># BITSTR() | ||
0=Норма | 0=Норма | ||
| Строка 136: | Строка 159: | ||
, где X - это условное обозначение Item-а. | , где X - это условное обозначение Item-а. | ||
Если значение Item = 5, то результатом BITSTR() будет строка: | Если значение Item = 5 (это в двоичной системе 0101 - т.е. установлен 1 и 3 биты), то результатом BITSTR() будет строка: | ||
<pre>Авария | <pre>Авария | ||
Авария3 </pre> | |||
В скобах может быть указан символ разделитель строк (по умолчанию: перевод строки), например: если значение Item = 5, то результатом BITSTR(, ) будет строка: | В скобах может быть указан символ разделитель строк (по умолчанию: перевод строки), например: если значение Item = 5, то результатом BITSTR(, ) будет строка: | ||
| Строка 143: | Строка 167: | ||
Для реализации более сложного функционала обработки входного значения Item-а смотрит документацию на [[Переменные|Переменные]]. | Для реализации более сложного функционала обработки входного значения Item-а смотрит документацию на [[Переменные|Переменные]]. | ||
[[Category:SCADA]] | [[Category:SCADA]] | ||
Версия от 11:57, 29 декабря 2020
Введение
Обновление: 01-12-2020 2.6.4 * возможность выполнить числовое преобразование входного значения
Text-функция - это обычный текстовый файл (.txt), название которого является названием самой функции.
Функции находятся в папке Tekon \ ASUD Scada \ Scada \ scripts \ text
Text-функции позволяют выполнить в программе SCADA математическое преобразование входного значения:
Результат = F (Число)
или преобразование путем сопоставления:
Число = значение
, где:
- число - это значение Item-a ОРС-сервера, или параметра из БД.
- значение - некоторая строка.
В случае выполнения математического преобразования значение Item может быть целым или десятичной дробью. В случае, если функция выполняет сопоставление, значением Item должно быть целое число.
Подобный функционал в частности реализуют Lua-cкрипты (и для более сложных задач, выходящих за возможности Text-функций, следует использовать именно их), однако написание Text-функций гораздо проще, они не требуют перезапуска SCADA в случае изменения и работают они несколько быстрее.
Пример: функции func1 - файл func1.txt
0=Останов 1=Работа 2=Авария ДТ
Если значение Item = 1, то функция вернет значение "Работа" и т.д.
Пример функции func2 - файл func2.txt
0=Зима 1=Лето
Начиная с версии 2.6.4 доступен оператор "else"
Пример функции func3 - файл func3.txt
0=Зима 1=Лето else=Не знаю
Если входное значение функции не [0, 1], то результат будет - "Не знаю"
Замечания:
- Имя Text-функции в настройках примитивов указывается без .txt, т.е. func1, а не func1.txt
- Имя функции не чувствительно в регистру, т.е. Func1 = func1 = FUNC1
Text-функции используются, например в примитивах:
Настройка
Для работы с Text-функциями, в общем случае, не следует напрямую редактировать файлы в папке Tekon \ ASUD Scada \ Scada \ scripts \ text
Вы можете добавлять / редактировать Text-функции непосредственно в SCADA (при этом для вступления изменений в силу не требуется перезапуск SCADA), открыв меню Дополнительно \ Text-функции в режиме Настройки.
В открывшемся окне вы можете:
- добавить новую функцию
- изменить существующую функцию
- посмотреть помощь по работе с функциями
После изменения функции следует нажать Сохранить.
Внимание! Внесенные изменения вступают в силу (отображаются на карте) после закрытия окна редактирования.
Пустая Text-функция (функция с пустым "телом") сохранена не будет. И пропадет после переоткрытия окна.
В случае если в теле функции есть ошибки, программа сообщит об этом. При этом, можно вернуться к предыдущей версии, нажав Вернуть.
Причины ошибок:
- Повтор идентификаторов в нескольких строчках
- Лишние пробелы: например, 0 = Останов (правильно: 0=Останов)
- Лишние пустые строки
- Ошибка в выражении (подробнее см. далее)
Дополнительно
В Text-функции добавлена поддержка выражений.
В случае необходимости вы можете добавить предварительную обработку входного значения Item-a ОРС-сервера.
Выражение задается в первой строке Text-функции начиная с символа #
Пример 1. Выполнить числовое преобразование значения
Например, вам нужно выполнить математическое преобразование: Результат = Значение + 10
Создаем новую функцию с названием, например Plus10, следующего содержания
# X + 10
, где X - это условное обозначение значения Item-а.
Если входное значение равно 10, то результат функции будет 20.
Пример 2. Функция BIT
Проанализировать указанный бит значения связанного Item-a ОРС-сервера.
Тело функции:
# BIT(X;1) 0=Норма 1=Авария
, где X - это условное обозначение значения Item-а.
Нумерация бит 32, 31, ..., 1 (1 - младший).
Если значение Item = 2, то:
- BIT (X;1) = 0,
- BIT(X,2) = 1.
Допускается сокращенная запись BIT(1) == BIT(X;1)
Пример 3. Функция BITS
Проанализировать несколько бит, начиная с указанного.
Тело функции:
# BITS(X;1;2) 0=Норма 1=Авария 2=Авария2 3=Авария3
, где X - это условное обозначение Item-а.
При использовании данной функции будут браться 2-а бита, начиная с 1-го.
Если значение Item = 5, то BITS (X;2;1) = 1.
Допускается сокращенная запись BITS(2;1) == BIT(X;2;1)
Пример 4. Функция BITSTR
Собрать строку, проверив факт установки каждого бита значения Item-a.
Тело функции:
# BITSTR() 0=Норма 1=Авария 2=Авария2 3=Авария3
, где X - это условное обозначение Item-а.
Если значение Item = 5 (это в двоичной системе 0101 - т.е. установлен 1 и 3 биты), то результатом BITSTR() будет строка:
Авария Авария3
В скобах может быть указан символ разделитель строк (по умолчанию: перевод строки), например: если значение Item = 5, то результатом BITSTR(, ) будет строка:
Авария, Авария3
Для реализации более сложного функционала обработки входного значения Item-а смотрит документацию на Переменные.