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.
- Math_Operations_View.png (43.39 KiB) Viewed 2396 times
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:
- Tags_OPC.png (36.94 KiB) Viewed 2395 times
2) Declaração das 4 tags Locais que serão utilizadas para atribuir os resultados de cada operação:
- Tags_Local.png (35.81 KiB) Viewed 2394 times
3) Em seguida, foi criado um script do kernel que será responsável por executar as operações:
- Kernel_Script.png (23.04 KiB) Viewed 2393 times
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):
- Kernel_Timer.png (31.5 KiB) Viewed 2390 times
----------------------------------------------------------------------------------------------------------------------
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: