Eventos: OnTagChange e OnTagWrite
Descrição do evento
Estes eventos estão associados a Tags do Kernel e do Viewer.
Variáveis sempre registradas neste tratador:
Tag (table) : objeto que representa o Tag que disparou o script (consultar Lua Tags para informações sobre o objeto Tag).
Como utilizar
Seja para OnTagWrite ou OnTagChange, o nome desses eventos indicam quando a ativação de um Script associado a um Tag será executado. Os trechos de código abaixo devem ser inseridos nos Scripts que serão executados. Abaixo estão alguns exemplos básicos de como mostrar informações de diferentes tipos de Tags associados a um evento, na ativação do script. Você pode definir comportamentos totalmente diferentes dos descritos abaixo para serem executados via script. Para isso, acesse a seção Scripts LUA para conhecer mais sobre os recursos e a linguagem de programação utilizada.
Exemplo de uso em um script associado a um evento “OnChange” de um “Tag” :
-- Objeto tag está disponível, é possível inspecionar qual foi o Tag que disparou o evento,
print("Tick " .. os.date())
function printTag(tag)
print("Id " .. tag.Id)
print("Name " .. tag.Name)
print("Value " .. tostring(tag.Value))
print("Quality " .. tag.Quality)
print("Type " .. tag.Type)
print("DateTime " .. tostring(tag.DateTime))
end
if (Tag) then
printTag(Tag)
end
-- Faça aqui o que o tratador do TagChange deveria fazer
Exemplo de uso, em um script associado ao evento “OnTagChange”, de um Tag de um item do tipo “TagMonitor” :
-- Objeto tag está disponível, é possível inspecionar qual foi o Tag que disparou o evento,
function printTag(tag)
print("TAG.Id = " .. tag.Id)
print("TAG.Name = " .. tag.Name)
print("TAG.Value = " .. tostring(tag.Value))
print("TAG.Quality = " .. tag.Quality)
print("TAG.Type = " .. tag.Type)
print("TAG.DateTime = " .. tostring(tag.DateTime))
end
print ("Tag Monitor Change")
print("Tick = " .. os.date())
print("Nome do objeto Sender desta alteracao do Tag = " .. Sender.Name)
local scr = Sender.Screen -- obtem o objeto associado a tela corrente
if scr then
print (" Nome da Tela : " .. scr.Name)
print ("Caption da Tela : " .. scr.Caption)
end
if (Tag) then
printTag(Tag)
end
......
Exemplo de saida da execução do script acima :
Tag Monitor Change
Tick = 06/17/11 14:18:44
Nome do objeto Sender desta alteracao do Tag = Tela_Teste_TagMonitor
Nome da Tela : Tela_Teste_TagMonitor
Caption da Tela : Teste de Tags Monitor para Registro de Tags
TAG.Id = 201326640
TAG.Name = TagOpc_Monitor_M102
TAG.Value = 456
TAG.Quality = 192
TAG.Type = 2
TAG.DateTime = 17/06/2011 14:18:42
Exemplo de uso, em um script associado ao evento “OnTagChange”, de um tag de um item do tipo “ObjAnimation” :
-- Objeto tag está disponível, é possível inspecionar qual foi o Tag que disparou o evento,
function printTag(tag)
print("TAG.Id = " .. tag.Id)
print("TAG.Name = " .. tag.Name)
print("TAG.Value = " .. tostring(tag.Value))
print("TAG.Quality = " .. tag.Quality)
print("TAG.Type = " .. tag.Type)
print("TAG.DateTime = " .. tostring(tag.DateTime))
end
function printObject(object)
print("Object.Name = " .. object.Name)
print("Object.Left = " .. object.Left)
print("Object.Top = " .. object.Top)
print("Object.Width = " .. object.Width)
print("Object.Height = " .. object.Height)
print("Object.Visible = " .. tostring(object.Visible))
print("Object.Enabled = " .. tostring(object.Enabled)
end
print ("Obj Animation Tag Change")
print("Tick = " .. os.date())
if (Tag) then
printTag(Tag)
end
if (Object) then
printObject(Object)
end
Exemplo de saida da execução do script acima:
Obj Animation Tag Change
Tick = 01/29/13 14:38:50
TAG.Id = 201326649
TAG.Name = ViewerTag_001
TAG.Value = 0
TAG.Quality = 192
TAG.Type = 2
TAG.DateTime = 29/01/2013 14:38:50
Object.Name = Edit_001
Object.Left = 10
Object.Top = 10
Object.Width = 100
Object.Height = 20
Object.Visible = true
Object.Enabled = true
Exemplo com tag de instancia
-- Objeto tag está disponível, é possível inspecionar qual foi o Tag que disparou o evento,
print("Tick " .. os.date())
function printTag(tag)
print("Id " .. tag.Id)
print("Name " .. tag.Name)
print("Value " .. tostring(tag.Value))
print("Quality " .. tag.Quality)
print("Type " .. tag.Type)
print("DateTime " .. tostring(tag.DateTime))
end
if (Tag) then
printTag(Tag)
end
-- obtem instancia
local inst = Tag:GetInstance()
--obtem outro tag a partir das informacoes da instancia
local tag_aux = Tags.Get('Instances.' .. inst.Group .. '.' .. inst.Name .. '.Tags.Local.Grupo1.Tag1')
printTag(tag_aux)
Nota
Os scripts apresentados foram testados para o evento OnTagChange, mas também são válidos para OnTagWrite.