Vinicius, bom dia!
Estamos desenvolvendo uma aplicação com o RION e o HIScada e estou com dúvida de como realizar um script matemático (Adição, subtração e uma média durante um período) com duas variáveis OPC e o resultando sendo uma variável local, teria algum material ou exemplo para nos auxiliar?
Desde já agradeço a atenção.
Operações Aritméticas com script LUA
- ViniciusMoraes
- Administrador
- Posts: 36
- Joined: Sat Oct 22, 2016 1:48 am
- Contact:
Re: Operações Aritméticas com script LUA
Prezado, bom dia!
Elaboramos um programa de exemplo do HIscada Pro que ilustra alguns cálculos básicos para te ajudar nessa demanda. Programa de exemplo encontra-se ao final do tópico para download.
O programa é bem simples é funciona da seguinte maneira:
Os parâmetros dos cálculos são variáveis OPC e os resultados são atribuídos em variáveis locais do Kernel com a formatação float. Neste caso, eu optei por apresentar os valores nos objetos Display e, com isso, não permite a edição dos valores OPC... Apenas leituras. Mas, fique a vontade para escolher o objeto ideal para sua aplicação.
----------------------------------------------------------------------------------------------------------------------
Configurações
1) Declaração das 8 tags OPC que serão utilizadas como parâmetros para os cálculos:
2) Declaração das 4 tags Locais que serão utilizadas para atribuir os resultados de cada operação:
3) Em seguida, foi criado um script do kernel que será responsável por executar as operações:
O código do script é o seguinte...
4) Em seguida, foi criado um timer cíclico que vai ficar "chamando" o script para ser executado de tempo em tempo (Ao invés de ser um timer, poderia ser através de um evento OnTagChange - Fique a vontade para modificar):
----------------------------------------------------------------------------------------------------------------------
Acredito que com o exemplo você conseguirá implementar o cálculo da média tranquilamente. Caso precisar de ajuda nós podemos cotar algumas horas de engenharia para te ajudar a resolver a sua demanda.
E-mail de Vendas - HI Tecnologia: vendas@hitecnologia.com.br
Download do programa de exemplo abaixo:
Elaboramos um programa de exemplo do HIscada Pro que ilustra alguns cálculos básicos para te ajudar nessa demanda. Programa de exemplo encontra-se ao final do tópico para download.
O programa é bem simples é funciona da seguinte maneira:
Os parâmetros dos cálculos são variáveis OPC e os resultados são atribuídos em variáveis locais do Kernel com a formatação float. Neste caso, eu optei por apresentar os valores nos objetos Display e, com isso, não permite a edição dos valores OPC... Apenas leituras. Mas, fique a vontade para escolher o objeto ideal para sua aplicação.
----------------------------------------------------------------------------------------------------------------------
Configurações
1) Declaração das 8 tags OPC que serão utilizadas como parâmetros para os cálculos:
2) Declaração das 4 tags Locais que serão utilizadas para atribuir os resultados de cada operação:
3) Em seguida, foi criado um script do kernel que será responsável por executar as operações:
O código do script é o seguinte...
Code: Select all
--[[- - - - - - - - - - - - - - - - - - - - - - - - - -
Ambiente: HIscada_Pro
Projeto: Math_Operations
Empresa: HI Tecnologia
Versão: V.0.0.01
Responsável: Vinícius de Moraes e Jean Bortolon
Data: 23/12/2021
\b Descrição: \brief
... função do script
- - - - - - - - - - - - - - - - - - - - - - - - - - - -]]
-- Obtém acesso aos tags OPC que serão utilizados como parâmetro nos cálculos básicos
local a_add = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_001")
local b_add = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_002")
local a_sub = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_003")
local b_sub = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_004")
local a_mul = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_005")
local b_mul = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_006")
local a_div = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_007")
local b_div = Tags.Get("Kernel.Tags.Opc.TagOpcGroup_001.TagOpc_008")
-- Obtém acesso aos tags locais que serão utilizados para receber os resultados
local add_result = Tags.Get("Kernel.Tags.Local.TagLocalGroup_001.TagLocal_001")
local sub_result = Tags.Get("Kernel.Tags.Local.TagLocalGroup_001.TagLocal_002")
local mul_result = Tags.Get("Kernel.Tags.Local.TagLocalGroup_001.TagLocal_003")
local div_result = Tags.Get("Kernel.Tags.Local.TagLocalGroup_001.TagLocal_004")
-- Realiza as operações básicas
add_result.Value = a_add.Value + b_add.Value
add_result:WriteValue()
sub_result.Value = a_sub.Value - b_sub.Value
sub_result:WriteValue()
mul_result.Value = a_mul.Value * b_mul.Value
mul_result:WriteValue()
div_result.Value = a_div.Value / b_div.Value
div_result:WriteValue()
4) Em seguida, foi criado um timer cíclico que vai ficar "chamando" o script para ser executado de tempo em tempo (Ao invés de ser um timer, poderia ser através de um evento OnTagChange - Fique a vontade para modificar):
----------------------------------------------------------------------------------------------------------------------
Acredito que com o exemplo você conseguirá implementar o cálculo da média tranquilamente. Caso precisar de ajuda nós podemos cotar algumas horas de engenharia para te ajudar a resolver a sua demanda.
E-mail de Vendas - HI Tecnologia: vendas@hitecnologia.com.br
Download do programa de exemplo abaixo:
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).
Vendas | Suporte Técnico Comercial
E-mail de contato: suporte@hitecnologia.com.br
Telefone: (19)2139-1700 - (Opção 2 - Suporte Técnico).