Автомат управления освещением: различия между версиями

Материал из TekonWiki
Перейти к навигацииПерейти к поиску
Новая страница: «Category:FAQ_SCADA Возможность реализации автомата управления (включение канала управления при…»
 
Нет описания правки
Строка 16: Строка 16:
Предполагаем, что уже существует настройка OPC-сервера, для концентраторов 210 и 202  
Предполагаем, что уже существует настройка OPC-сервера, для концентраторов 210 и 202  


Создадим текстовый файл с именем script1.txt в блокноте  
Создадим текстовый файл с именем script1.txt в блокноте следующего содержания:


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


  descret_autocall_task_map =  
  descret_autocall_task_map =  
Строка 25: Строка 24:
  "DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].USB Пульт.210 Мини-КУН.КУП Канал 1.Остановка"
  "DA.[localhost{188D08EC-72CB-425B-8EA8-EE2308736440}].USB Пульт.210 Мини-КУН.КУП Канал 1.Остановка"
  }
  }
Приведенные ниже строчки перенесите в файл без изменения.
  function DescretSensor_OnDataChange(item, data)
  function DescretSensor_OnDataChange(item, data)
  if item ~= nil and data ~=nil then
  if item ~= nil and data ~=nil then
Строка 56: Строка 52:
  "DescretSensor_OnDataChange")
  "DescretSensor_OnDataChange")
  end
  end
Рассмотрим его подробнее:
Вначале просто указываем соответствие тэгов (названия тэгов, может быть взято из окна свойств датчика при настройке АСУД.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.Остановка"
}
Ниже определена логика работы, а именно: при значении датчика 32769 (авария) записать 0 в канал управления.
if int==32769 then
local newData = base.Variant(0);
itemCtrl:AsyncWrite(newData)
Значения дискретного датчика могут быть следующие:
32769 - активная авария (красный воскл.знак на примитиве);
32771 - активная авария, с которой ознакомился диспетчер (желтый воскл.знак на примитиве);
0 - нет аварии.
Команды каналу управления могут быть следующие:
0 - выключить канал управления;
1 - включить канал управления.


Сохраните файл script1.txt
Сохраните файл script1.txt
Строка 68: Строка 88:
  end
  end


Сохраните файл, запустите АСУД.SCADA, логика созданного автомата управления должна работать.
Сохраните файл, запустите АСУД.SCADA, логика созданного автомата управления должна работать.

Версия от 07:38, 24 августа 2011

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


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

Рассмотрим его подробнее:

Вначале просто указываем соответствие тэгов (названия тэгов, может быть взято из окна свойств датчика при настройке АСУД.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.Остановка"
}

Ниже определена логика работы, а именно: при значении датчика 32769 (авария) записать 0 в канал управления.

if int==32769 then
local newData = base.Variant(0);
itemCtrl:AsyncWrite(newData)

Значения дискретного датчика могут быть следующие:

32769 - активная авария (красный воскл.знак на примитиве); 
32771 - активная авария, с которой ознакомился диспетчер (желтый воскл.знак на примитиве);
0 - нет аварии. 

Команды каналу управления могут быть следующие:

0 - выключить канал управления;
1 - включить канал управления.

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

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

base.dofile("light.lua")
base.dofile("script1.txt")
function main()
InitLight()
InitScript1()
end

Сохраните файл, запустите АСУД.SCADA, логика созданного автомата управления должна работать.