Obter argumento de TagLocal do Kernel

Post Reply
Juliana
Posts: 26
Joined: Fri Feb 15, 2019 1:05 pm

Obter argumento de TagLocal do Kernel

Post by Juliana »

Olá, boa tarde.

Estou com dificuldade para obter o argumento de uma TagLocal do Kernel dentro do script lua. Este script é executado no próprio evento de On Tag Change desta mesma TagLocal.

Argumento_TagLocal_Kernel.jpg
Argumento_TagLocal_Kernel.jpg (66.07 KiB) Viewed 244 times

O código do script:

Code: Select all

--[[- - - - - - - - - - - - - - - - - - - - - - - - - - 

    Ambiente: HIscada_Pro
     Projeto: 
     Empresa: 
      Versão: 
 Responsável: 
        Data: 04/01/2023 

 \b Descrição:  \brief
   ... função do script

- - - - - - - - - - - - - - - - - - - - - - - - - - - -]] 

local arg  = Sender.Argument
print(arg)

local hh = Tags.Get("Kernel.Tags.Local.teste.HH")
local ll = Tags.Get("Kernel.Tags.Local.teste.LL")
local data = tostring(DateTime())
nome = ""

if arg == 1 then
    tag = Tags.Get("Kernel.Tags.Local.teste.T1")
    nome = "TTR-T24"
elseif arg == 2 then
    tag = Tags.Get("Kernel.Tags.Local.teste.T2")
    nome = "TTR-T25"
elseif arg == 3 then
    tag = Tags.Get("Kernel.Tags.Local.teste.T3")
    nome = "TTR-T26"
elseif arg == 4 then
    tag = Tags.Get("Kernel.Tags.Local.teste.T4")
    nome = "TTR-T27"
elseif arg == 5 then
    tag = Tags.Get("Kernel.Tags.Local.teste.T5")
    nome = "TTR-T28"
elseif arg == 6 then
    tag = Tags.Get("Kernel.Tags.Local.teste.T6")
    nome = "TTR-T29"
end

    if tag.Value > hh.Value[arg] then 

	con = Database.Get('Globals.DataBases.DataBase_001')

	cursor,error = con:Execute("INSERT INTO historico(sensor,nivel,valor_real,valor_de_alarme,status,data) VALUES ('"..nome.."','HH','"..tag.Value.."','"..hh.Value.."','Temperatura Alta','"..data.."');")
	print(error)
   
end


Porém desta forma está retornando erro durante a depuração do script. Como posso obter o valor do argumento neste caso?

error_nil_value.PNG
error_nil_value.PNG (4.56 KiB) Viewed 242 times
User avatar
ViniciusMoraes
Administrador
Posts: 36
Joined: Sat Oct 22, 2016 1:48 am
Contact:

Re: Obter argumento de TagLocal do Kernel

Post by ViniciusMoraes »

Olá, boa tarde.

Para obter argumentos de uma tag você deve utilizar Tag.Argument. Se o seu objetivo fosse obter argumentos de objetos de tela ai sim poderia ser utilizado o Sender.Argument.

Portanto, fiz a alteração do seu código para:

Code: Select all


local arg  = tonumber(Tag.Argument)  -- O Tag.Argument obtém o conteúdo preenchido no campo Argumentos dentro de uma tag
				     -- A função tonumber() é responsável por converter o conteúdo de string para valor numérico.
print(arg)			     -- Imprime no console 



Para maiores informações sobre eventos de OnTagChange e OnTagWrite, consulte a documentação.


Visualização do console após execução do script. Vemos que funcionou corretamente. Agora você pode dar prosseguimento na sua aplicação.

tag_argument_ok.PNG
tag_argument_ok.PNG (2.53 KiB) Viewed 238 times

Em caso de dúvidas basta utilizar nosso fórum!
Vinícius de Moraes
Vendas | Suporte Técnico Comercial

E-mail de contato: suporte@hitecnologia.com.br
Telefone: (19)2139-1700 - (Opção 2 - Suporte Técnico).
Post Reply