Скрипты: различия между версиями
Alex (обсуждение | вклад) Новая страница: «Category:ПрограммыСКАДА Category:ПрограммыСКАДА:SCADA (страница в разработке)» |
Alex (обсуждение | вклад) Нет описания правки |
||
| Строка 2: | Строка 2: | ||
[[Category:ПрограммыСКАДА:SCADA]] | [[Category:ПрограммыСКАДА:SCADA]] | ||
( | Данная статья актуальна для версий АСУД.SCADA 1.5.0 а3 и выше. | ||
ПО АСУД.SCADA позволяет расширить функционал путем написания специальных программный модулей (скриптов) на языке [http://www.lua.org/about.html Lua]. | |||
Скрипты находятся в папке Tekon \ ASUD Scada \ Scada \ scripts \ lvm | |||
lvm_entry.lua - загрузчик скриптов - изменять не следует. | |||
built-in \ - папка с базовыми скриптами и вспомогательными модулями - изменять не следует | |||
custom \ - папка для скриптов пользователей | |||
... \ entry.lua - загрузчик скриптов пользователей | |||
Для создания / редактирования скриптов можно использовать простой Блокнот или воспользоваться [http://lua-users.org/wiki/LuaIntegratedDevelopmentEnvironments специальными утилитами]. | |||
Рассмотрим несколько примеров применения скриптов в АСУД.SCADA | |||
=== 1. Текстовое поле + скрипт (вариант 1) === | |||
Предположим необходимо задать соответствие числовому значению (Тэга1), получаемому от OPC-сервера, некоторое строковое значение (Str1), и отобразить его в АСУД.SCADA. Например, следующего вида: | |||
* 1 - насос включен. | |||
* 0 - насос выключен. | |||
Для этого, сначала опишем скрипт выполняющий соответствующее отображение. | |||
В Блокноте создаем файл pumppwr.lua следующего содержания: | |||
<nowiki> function PumpPower (val,qual) | |||
if qual ~= opc.da.tekon.ItemData.QUALITY_GOOD then | |||
return "---" | |||
end | |||
if val.Integer == 0 then | |||
return "Насос выключен" | |||
end | |||
if val.Integer == 1 then | |||
return "Насос включен" | |||
end | |||
return "Неизвестно" | |||
end</nowiki> | |||
Описывается функция PumpPower с двумя входными параметрами | |||
* val - значение переменной OPC-сервера | |||
* qual - значение качества переменной | |||
Далее проверятся переменная качества, если качество не удовлетворительное (т.е. OPC-сервер не гарантирует значения переменной, например, устройство отключено) - возвращается строка "---" | |||
Иначе, если значение переменной равно | |||
* 0 - возвращается строка "Насос выключен", | |||
* 1 - "Насос включен" | |||
* иначе вернется строка "Неизвестно". | |||
Следует отметить, что приведенный вариант реализации функции PowerPump не единственный, можно привести следующий равнозначный вариант кода: | |||
<nowiki> | |||
PumpToStr= | |||
{ | |||
[0] = "Насос выключен", | |||
[1] = "Насос включен" | |||
} | |||
function PumpPower2 (val, qual) | |||
if qual ~= opc.da.tekon.ItemData.QUALITY_GOOD then | |||
return "---" | |||
end | |||
local text = PumpToStr[val.Integer] | |||
if text ~= nil then | |||
return text | |||
end | |||
return "Неизвестно" | |||
end</nowiki> | |||
Далее, сохраняем файл в папке scripts \ lvm \ custom | |||
Открываем в Блокноте файл scripts \ lvm \ custom \ entry.lua и добавляем в первой строке запись | |||
* dofile2("pumppwr.lua") | |||
<nowiki> | |||
dofile2("pumppwr.lua") | |||
function main_custom() | |||
end</nowiki> | |||
Сохраняем файл. | |||
Далее запускаем программу АСУД.SCDA. | |||
Размещаем примитив "Текстовое поле". Задаем его свойства: | |||
* Тэг - Тэг1. | |||
* Скрипт \ OnDataChange - PumpPower | |||
Сохраняем настройки АСУД.SCADA | |||
После этого должны увидеть что в Текстовом поле отображается строковое значение, в соответствии с логикой скрипта. | |||
=== 2. Текстовое поле + скрипт (вариант 2) === | |||
=== 3. Анализ изменений сигнала === | |||
--[[Участник:Alex|Alex]] 12:21, 5 июля 2013 (UTC) | |||
Версия от 12:21, 5 июля 2013
Данная статья актуальна для версий АСУД.SCADA 1.5.0 а3 и выше.
ПО АСУД.SCADA позволяет расширить функционал путем написания специальных программный модулей (скриптов) на языке Lua.
Скрипты находятся в папке Tekon \ ASUD Scada \ Scada \ scripts \ lvm
lvm_entry.lua - загрузчик скриптов - изменять не следует. built-in \ - папка с базовыми скриптами и вспомогательными модулями - изменять не следует custom \ - папка для скриптов пользователей ... \ entry.lua - загрузчик скриптов пользователей
Для создания / редактирования скриптов можно использовать простой Блокнот или воспользоваться специальными утилитами.
Рассмотрим несколько примеров применения скриптов в АСУД.SCADA
1. Текстовое поле + скрипт (вариант 1)
Предположим необходимо задать соответствие числовому значению (Тэга1), получаемому от OPC-сервера, некоторое строковое значение (Str1), и отобразить его в АСУД.SCADA. Например, следующего вида:
- 1 - насос включен.
- 0 - насос выключен.
Для этого, сначала опишем скрипт выполняющий соответствующее отображение.
В Блокноте создаем файл pumppwr.lua следующего содержания:
function PumpPower (val,qual)
if qual ~= opc.da.tekon.ItemData.QUALITY_GOOD then
return "---"
end
if val.Integer == 0 then
return "Насос выключен"
end
if val.Integer == 1 then
return "Насос включен"
end
return "Неизвестно"
end
Описывается функция PumpPower с двумя входными параметрами
- val - значение переменной OPC-сервера
- qual - значение качества переменной
Далее проверятся переменная качества, если качество не удовлетворительное (т.е. OPC-сервер не гарантирует значения переменной, например, устройство отключено) - возвращается строка "---"
Иначе, если значение переменной равно
- 0 - возвращается строка "Насос выключен",
- 1 - "Насос включен"
- иначе вернется строка "Неизвестно".
Следует отметить, что приведенный вариант реализации функции PowerPump не единственный, можно привести следующий равнозначный вариант кода:
PumpToStr=
{
[0] = "Насос выключен",
[1] = "Насос включен"
}
function PumpPower2 (val, qual)
if qual ~= opc.da.tekon.ItemData.QUALITY_GOOD then
return "---"
end
local text = PumpToStr[val.Integer]
if text ~= nil then
return text
end
return "Неизвестно"
end
Далее, сохраняем файл в папке scripts \ lvm \ custom
Открываем в Блокноте файл scripts \ lvm \ custom \ entry.lua и добавляем в первой строке запись
- dofile2("pumppwr.lua")
dofile2("pumppwr.lua")
function main_custom()
end
Сохраняем файл.
Далее запускаем программу АСУД.SCDA.
Размещаем примитив "Текстовое поле". Задаем его свойства:
- Тэг - Тэг1.
- Скрипт \ OnDataChange - PumpPower
Сохраняем настройки АСУД.SCADA
После этого должны увидеть что в Текстовом поле отображается строковое значение, в соответствии с логикой скрипта.
2. Текстовое поле + скрипт (вариант 2)
3. Анализ изменений сигнала
--Alex 12:21, 5 июля 2013 (UTC)