Text-функция: различия между версиями

Материал из TekonWiki
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
 


== Введение ==
== Введение ==
Строка 8: Строка 6:
</pre>
</pre>


Text-функции позволяют выполнить в программе SCADA простое математическое преобразование входного значения, а также преобразование путем сопоставления:
Text-функция&nbsp;''- ''это обычный текстовый файл (.txt), название которого является названием самой функции.
 
Функции находятся в папке Tekon \ ASUD Scada \ Scada \ scripts \ text
 
Text-функции позволяют выполнить в программе SCADA&nbsp; математическое преобразование&nbsp;входного значения:
<pre>Результат = F (Число)</pre>
 
&nbsp;или преобразование путем сопоставления:


  Число = значение
  Число = значение
Строка 17: Строка 22:
*значение - некоторая строка.&nbsp;  
*значение - некоторая строка.&nbsp;  


Подобный функционал в частности реализуют [[Скрипты|Lua-cкрипты]] (и для более сложных задач следует использовать именно их), однако написание Text-функций гораздо проще и работают они несколько быстрее.
В случае выполнения математического преобразования значение Item может быть целым или десятичной дробью. В случае, если функция выполняет сопоставление, значением Item должно быть целое число.


Функции находятся в папке Tekon \ ASUD Scada \ Scada \ scripts \ text
Подобный функционал в частности реализуют [[Скрипты|Lua-cкрипты]] (и для более сложных задач, выходящих за возможности Text-функций,&nbsp;следует использовать именно их), однако написание Text-функций гораздо проще, они не требуют перезапуска&nbsp;SCADA в случае изменения&nbsp; и работают они несколько быстрее.
 
'''Функция - это обычный текстовый файл (.txt), название которого является названием самой функции.'''


Пример: функции func1 - файл func1.txt
Пример: функции func1 - файл func1.txt
Строка 28: Строка 31:
2=Авария ДТ
2=Авария ДТ
</pre>
</pre>
Если значение Item&nbsp; = 1, то функция вернет значение "Работа"&nbsp; и т.д.


Пример функции 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<br/> (при этом для вступления изменений в силу '''не требуется перезапуск SCADA'''), открыв меню ''Дополнительно \ Text-функции'' в режиме Настройки.
Для работы с&nbsp;Text-функциями, в общем случае,&nbsp;'''не следует напрямую''' редактировать файлы в папке 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:


'''Внимание!&nbsp;'''Внесенные изменения вступают в силу (отображаются на карте) после закрытия окна редактирования.
'''Внимание!&nbsp;'''Внесенные изменения вступают в силу (отображаются на карте) после закрытия окна редактирования.
Пустая Text-функция (функция с пустым "телом")&nbsp; сохранена не будет. И пропадет после переоткрытия окна.


В случае если в теле&nbsp;функции есть ошибки, программа сообщит об этом. При этом, можно вернуться к предыдущей версии, нажав ''Вернуть''.
В случае если в теле&nbsp;функции есть ошибки, программа сообщит об этом. При этом, можно вернуться к предыдущей версии, нажав ''Вернуть''.
Строка 71: Строка 86:
*Лишние пустые строки  
*Лишние пустые строки  
*Ошибка в выражении (подробнее см. далее)  
*Ошибка в выражении (подробнее см. далее)  
&nbsp;


== Дополнительно ==
== Дополнительно ==
Строка 82: Строка 95:
Выражение задается в первой строке Text-функции начиная с символа '''#'''
Выражение задается в первой строке Text-функции начиная с символа '''#'''


'''Пример 0. Выполнить числовое преобразование значения'''
'''Пример 1. Выполнить числовое преобразование значения'''


Например вам нужно выполнить математическое преобразование
Например, вам нужно выполнить математическое преобразование: Результат = Значение + 10
 
Создаем новую функцию с названием, например Plus10, следующего содержания
<pre># X + 10</pre>
<pre># X + 10</pre>
, где X - это условное обозначение значения Item-а.


Если входное значение равно 10, то результат функции будет 20.
Если входное значение равно 10, то результат функции будет 20.


'''Пример 1. Функция BIT'''
'''Пример 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)


'''Пример 2. Функция BITS'''
'''Пример 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)


'''Пример 3. Функция BITSTR'''
'''Пример 4. Функция BITSTR'''


Собрать строку, проверив факт установки каждого бита значения Item-a.
Собрать строку, проверив факт установки каждого бита значения Item-a.
Тело функции:
<pre># BITSTR()  
<pre># BITSTR()  
0=Норма  
0=Норма  
Строка 136: Строка 159:
, где X - это условное обозначение Item-а.
, где X - это условное обозначение Item-а.


Если значение Item = 5, то результатом BITSTR() будет строка:
Если значение Item = 5 (это в двоичной системе&nbsp; 0101&nbsp; - т.е. установлен 1 и 3 биты), то результатом BITSTR() будет строка:
<pre>Авария - установлен 1-ый бит Авария3 - установлен 3-ий бит </pre>
<pre>Авария
Авария3 </pre>


В скобах может быть указан символ разделитель строк (по умолчанию: перевод строки), например: если значение Item = 5, то результатом BITSTR(, ) будет строка:
В скобах может быть указан символ разделитель строк (по умолчанию: перевод строки), например: если значение Item = 5, то результатом BITSTR(, ) будет строка:
Строка 143: Строка 167:


Для реализации более сложного функционала обработки входного значения Item-а смотрит документацию на [[Переменные|Переменные]].
Для реализации более сложного функционала обработки входного значения Item-а смотрит документацию на [[Переменные|Переменные]].
&nbsp;
&nbsp;


[[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 func1.JPG
Text func1.JPG

В открывшемся окне вы можете:

  • добавить новую функцию
  • изменить существующую функцию
  • посмотреть помощь по работе с функциями

После изменения функции следует нажать Сохранить.

Внимание! Внесенные изменения вступают в силу (отображаются на карте) после закрытия окна редактирования.

Пустая 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-а смотрит документацию на Переменные.