Автомат управления освещением
Возможность реализации автомата управления (включение канала управления при изменении состояния дискретного сигнала) существует в 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, логика созданного автомата управления должна работать.