Скрипты: различия между версиями

Материал из TekonWiki
Перейти к навигацииПерейти к поиску
Новая страница: «Category:ПрограммыСКАДА Category:ПрограммыСКАДА:SCADA (страница в разработке)»
 
Нет описания правки
Строка 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)