Utilizando um Buffer de Memória

<< Clique para Mostrar o Sumário >>

 

Utilizando um Buffer de Memória

As Expression Variables do tipo Memory são designadas assim por apenas terem acesso aos dados que chegam pela via de tempo real do EPM. No entanto, é possível a utilização de um recurso de criação de uma lista circular que armazena em memória alguns destes valores que chegam em tempo real. Esta opção está disponível na coluna Mem. Cache da tabela das variáveis de entrada, conforme a figura a seguir.

Coluna Mem. Cache

Coluna Mem. Cache

Qualquer variável de entrada pode ter uma lista circular. Para tanto, defina um número maior que a unidade no campo Mem. Cache correspondente, indicando a capacidade de armazenamento da lista. No caso da Expression Variable OutOfRange_Tag02, foi definida uma lista circular com 10 valores que são utilizados para contar o número de dados que estão abaixo de 20 ou acima de 80.

Note que, apesar de ser possível operar vetores e matrizes em uma expressão, o resultado deve ser sempre um valor escalar.

 

NOTAS

Na expressão do exemplo anterior, utilizou-se o recurso da função lambda do Python, que possibilita a criação e utilização de uma função temporária na mesma linha da expressão. Para mais detalhes sobre a utilização de funções lambda, consulte o site da Python Software Foundation.

Enquanto houver alguma variável na lista circular com qualidade ruim, o resultado da avaliação da expressão sempre retorna o último valor calculado com a qualidade incerta associada.

 

Outra situação em que pode ser utilizado este recurso é no cálculo da média móvel, armazenando o resultado para posterior utilização em análises. Neste caso, mantendo o campo Mem. Cache em 10 pontos, a expressão tem a forma a seguir.

round(sum(item.Value for item in Tag02Buffer)/10.0, 2)

 

Nesta expressão é realizado o somatório, a função sum, de todos os 10 valores da lista armazenada em Tag02Buffer e o resultado da soma é dividido pelo número de elementos da lista para calcular a média aritmética, neste caso 10 elementos. Ao final, o número é arredondado para duas casas decimais.

Como mencionado anteriormente, a própria Expression Variable pode servir como argumento de entrada nos cálculos. Nesta situação, o campo Memory Cache igual à unidade significa que o valor no cálculo corresponde exatamente ao valor calculado no ciclo imediatamente anterior, por isto a necessidade de utilizar-se o recurso de inicialização das variáveis de entrada.

Um exemplo típico desta funcionalidade é a aplicação de um filtro a uma variável de processo, que precisa do valor calculado no ciclo anterior para determinar o valor no próximo evento de avaliação da expressão.

Aplicação de filtro a uma variável de processo

Aplicação de filtro a uma variável de processo

Neste caso, a Expression Variable Filt_Tag09 corresponde ao resultado da aplicação de um filtro para remoção de ruído de medidas da Basic Variable ElipseTag09.

Como pode ser observado, ambas estão presentes na tabela de variáveis de entrada da expressão, e no evento de cálculo selecionou-se a mudança de valor da variável ElipseTag09, proveniente do processo. A opção de aplicar uma inicialização das variáveis está ativa e ambas foram inicializadas com o valor 0 (zero). A figura a seguir mostra o resultado desta Expression Variable em um gráfico criado no EPM Chart Analysis.

Gráfico da expressão

Gráfico da expressão

Como pode ser observado, a Expression Variable Filt_Tag09 consegue remover de maneira satisfatória os ruídos de medida da Basic Variable ElipseTag09, mas adiciona um pequeno atraso no tempo devido à natureza da operação em tempo real, que utiliza valores passados para o cálculo do valor presente.

 

NOTAS

O recurso de listas circulares foi concebido para atender aos casos onde não seja necessário um volume elevado de valores passados, tipicamente para cálculos que utilizam até dez valores passados para calcular o valor presente, em geral para indicadores de natureza mais operacional.

Mais exemplos de utilização das Expression Variables podem ser encontrados no artigo Criando Expression Variables para Cálculos de Valores em Tempo Real - KB 5385 do Elipse Knowledgebase.

Esta página foi útil?