Автомат управления освещением

Материал из TekonWiki
Версия от 14:41, 22 августа 2011; Alex (обсуждение | вклад) (Новая страница: «Category:FAQ_SCADA Возможность реализации автомата управления (включение канала управления при…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Возможность реализации автомата управления (включение канала управления при изменении состояния дискретного сигнала) существует в SCADA на основе написание специальных скриптов на языке Lua.

При необходимости использования автомата управления пожалуйста свяжитесь со специалистами службы технической поддержи.

Приведенное ниже описание носит ознакомительный характер.

Скрипт представляет собой текстовый файл с кодом и размещается в папке C:\Program Files\Tekon\ASUD Scada\SCADA\scripts\lua\

По умолчанию в данной папке содержится два файла:

  • light.lua (автомат управления групповым освещением).
  • lvm_entry.lua (загрузчик скриптов в SCADA).

Рассмотрим пример простого скрипта реализующего выключение канала управления КУП-RS подключенного к концентратору Мини-КУН номер 210, при срабатывании дискретного входа номер 4 на концентраторе Мини-КУН номер 202.

Предполагаем, что уже существует настройка OPC-сервера, для концентраторов 210 и 202

Создадим текстовый файл с именем script1.txt в блокноте

Вначале просто указываем соответствие тэгов (названия тэгов, может быть взято из окна свойств датчика при настройке АСУД.SCADA) дискретного датчика и канала управления, как показано ниже:

descret_autocall_task_map = 
{
["DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].USB Пульт.202 Мини-КУН.Авария 1"] =
"DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].USB Пульт.210 Мини-КУН.КУП Канал 1.Остановка"
}

Приведенные ниже строчки перенесите в файл без изменения.

function DescretSensor_OnDataChange(item, data)
if item ~= nil and data ~=nil then
if	data.Quality ~= opc.da.tekon.ItemData.QUALITY_GOOD  or data.Data ==nil then
return
end
local int = data.Data.Integer
local prop = item:GetProperty(opc.da.tekon.Item.ITEM_TYPE)
if prop ~= nil and prop.Data.Integer == opc.da.tekon.Item.SENSOR then	
if descret_autocall_task_map[item.ItemID] ~= nil then			
local itemCtrl, bRes = opc.da.tekon.GetItem(descret_autocall_task_map[item.ItemID])
if (itemCtrl~= nil) and bRes then				
if int==32769 then
local newData = base.Variant(0);
itemCtrl:AsyncWrite(newData)
end
end				
end
end	  
end
end
function InitScript1()
opc.da.tekon.RegisterEventHandler(
"OPC::DA::TEKON::OnDataChange",
"DescretSensor_OnDataChange")
opc.da.tekon.RegisterEventHandler(
"OPC::DA::TEKON::OnReadComplete",
"DescretSensor_OnDataChange")
end

Сохраните файл script1.txt

Откройте в блокноте файл lvm_entry.lua и внесите следующие изменения:

base.dofile("light.lua")
base.dofile("script1.txt")
function main()
InitLight()
InitScript1()
end
Сохраните файл, запустите АСУД.SCADA, логика созданного автомата управления должна работать.