{"id":3682,"date":"2019-03-25T17:45:28","date_gmt":"2019-03-25T20:45:28","guid":{"rendered":"http:\/\/xexeu.elipse.com.br\/pt\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/"},"modified":"2024-03-28T14:52:21","modified_gmt":"2024-03-28T17:52:21","slug":"criando-expression-variables-para-calculos-de-valores-em-tempo-real","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/","title":{"rendered":"Criando Expression Variables para c\u00e1lculos de valores em tempo real."},"content":{"rendered":"<p align=\"justify\"><strong><u><span style=\"font-size: large;\">Descri\u00e7\u00e3o<\/span><\/u><br \/>\n<\/strong><br \/>\nAs Expression Variables do <strong>EPM<\/strong> possibilitam a aplica\u00e7\u00e3o de um processamento sobre dados de tempo real de uma ou mais vari\u00e1veis do EPM, al\u00e9m, \u00e9 claro, de armazenar os resultados para posteriores visualiza\u00e7\u00f5es e an\u00e1lises.<br \/>\nDentre suas aplica\u00e7\u00f5es, as mais comumente encontradas relacionam-se a c\u00e1lculos de indicadores de desempenho e infer\u00eancias; no entanto, podem ser utilizadas para filtrar ru\u00eddos de medida e\/ou de processo, convers\u00f5es de unidades mais complexas, mapeamento de uma tabela de estados discretos, ou seja, existem in\u00fameras possibilidades de aplica\u00e7\u00f5es, uma vez que as express\u00f5es a serem avaliadas s\u00e3o em linguagem Python. Este artigo abordar\u00e1, atrav\u00e9s de tr\u00eas exemplos pr\u00e1ticos, alguns dos conceitos fundamentais para a cria\u00e7\u00e3o de Expression Variables no EPM. Ao final, pretende-se que o leitor esteja minimamente capacitado a criar as Expression Variables que atendam \u00e0s suas necessidades.<\/p>\n<p align=\"justify\"><span style=\"background-color: #ffffff;\"><strong>NOTA<\/strong>: Para mais detalhes sobre as Expression Variables, consultar o manual do <strong>EPM<\/strong>.<br \/>\n<\/span><\/p>\n<p align=\"justify\"><span style=\"background-color: #ffffff;\"><br \/>\n<span style=\"font-size: large;\"><u><strong>Exemplo 1<\/strong><\/u><\/span><\/span><\/p>\n<p align=\"justify\"><span style=\"background-color: #ffffff;\">Imagine uma v\u00e1lvula de controle que possui uma Basic Variable (tag_01) que recebe um valor inteiro de campo e que indica o seu estado atual, conforme a tabela a seguir:<\/span><\/p>\n<p>&nbsp;<\/p>\n<table style=\"height: 136px; width: 336px;\" border=\"1\" width=\"336\" cellspacing=\"2\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td><strong>\u00a0Valor (int)<\/strong><\/td>\n<td><strong>\u00a0Estado (string)<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\u00a00<\/td>\n<td>\u00a0maintenance (em manuten\u00e7\u00e3o)<\/td>\n<\/tr>\n<tr>\n<td>\u00a01<\/td>\n<td>\u00a0manual (manual)<\/td>\n<\/tr>\n<tr>\n<td>\u00a02<\/td>\n<td>\u00a0automatic (autom\u00e1tico)<\/td>\n<\/tr>\n<tr>\n<td>\u00a03<\/td>\n<td>\u00a0cascade (cascata)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p align=\"justify\">Para facilitar a visualiza\u00e7\u00e3o em relat\u00f3rios e em dashboards, \u00e9 desej\u00e1vel que estes valores sejam apresentados no formato de texto; para tanto, uma das alternativas \u00e9 mapear esta tabela de estados discretos utilizando uma Expression Variable. As etapas para tanto s\u00e3o apresentadas a seguir:<\/p>\n<p align=\"justify\">1.1 Criar uma Expression Variable (<strong>expvar_01<\/strong>) que tem na sua tabela de vari\u00e1veis de entrada a Basic Variable <strong>tag_01<\/strong>, com o apelido <strong>state<\/strong> e Mem. Cache igual a <strong>1<\/strong>. Adicionar tamb\u00e9m a seguinte express\u00e3o:<\/p>\n<p align=\"justify\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/Equa\u00e7\u00f5es\/eq001.png\" alt=\"\" width=\"550\" height=\"14\" align=\"bottom\" border=\"0\" \/><\/p>\n<p>O resultado \u00e9 apresentado a seguir:<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig01.PNG\" alt=\"\" width=\"500\" height=\"291\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 1: Configura\u00e7\u00f5es da sub-aba Expression\/Execution Module da Expression Variable expvar_01.<\/span><\/p>\n<p align=\"justify\">Observe que as express\u00f5es sempre retornam um valor, o qual \u00e9 atribu\u00eddo \u00e0 Expression Variable toda vez que for avaliada segundo um dado evento configurado. Neste exemplo, o que se fez foi utilizar a estrutura de dados do tipo dictionary do Python, que associa valores a chaves identificadoras.<\/p>\n<p align=\"justify\">1.2 Definir o evento de avalia\u00e7\u00e3o da express\u00e3o como sendo toda mudan\u00e7a de valor da Basic Variable <strong>tag_01<\/strong>. Isso \u00e9 feito na aba sub-aba <strong>Expression\/Execution Event<\/strong>, selecionando-se a pr\u00f3pria vari\u00e1vel de entrada para ser monitorada.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig02.PNG\" alt=\"\" width=\"500\" height=\"109\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 2: Configura\u00e7\u00e3o do evento que dispara a avalia\u00e7\u00e3o da express\u00e3o.<\/span><\/p>\n<p align=\"justify\">1.3 Testar a express\u00e3o na sub-aba <strong>Expression\/Test<\/strong>. A etapa de teste de uma express\u00e3o garante que ela esteja funcionando como o esperado, requisito necess\u00e1rio para habilitar o comando\u00a0<strong>Run<\/strong> na faixa de op\u00e7\u00f5es, que coloca a Expression Variable em um estado de avalia\u00e7\u00e3o continuada toda a vez que seu evento associado for disparado. Para test\u00e1-la, deve-se informar um valor bem como o tipo de dado correspondente. Na sequ\u00eancia, deve-se pressionar o comando\u00a0<strong>Test<\/strong> na faixa de op\u00e7\u00f5es. A seguir o resultado da execu\u00e7\u00e3o de um teste para o valor 1, que dever\u00e1 ter como retorno da avalia\u00e7\u00e3o o texto: <strong>manual<\/strong><\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig03.PNG\" alt=\"\" width=\"500\" height=\"152\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 3: Teste da express\u00e3o com resultado positivo.<\/span><\/p>\n<p align=\"justify\">Note que o tipo de retorno da express\u00e3o \u00e9 automaticamente interpretado como sendo do tipo <strong>String<\/strong>.\u00a0 Observe tamb\u00e9m que o comando <strong>Run<\/strong> agora est\u00e1 habilitado, sendo poss\u00edvel colocar a Expression Variable no estado de <strong>Running<\/strong>.<\/p>\n<p align=\"justify\">1.4 Para colocar a Expression Variable para rodar, basta pressionar o bot\u00e3o <strong>Run<\/strong> na faixa de op\u00e7\u00f5es; para interromper a execu\u00e7\u00e3o, pressione o bot\u00e3o\u00a0<strong>Stop<\/strong>. Abaixo \u00e9 exibido o valor de uma das avalia\u00e7\u00f5es da <strong>expvar_01<\/strong>.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig04.PNG\" alt=\"\" width=\"500\" height=\"67\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 4: Acompanhamento e visualiza\u00e7\u00e3o do resultado de uma das avalia\u00e7\u00f5es da express\u00e3o.<\/span><\/p>\n<p>Note que o campo <strong>REC<\/strong> da <strong>expvar_01<\/strong> n\u00e3o est\u00e1 marcado, indicando que este valor est\u00e1 dispon\u00edvel apenas em tempo real, ou seja, n\u00e3o est\u00e1 sendo armazenado. Para armazen\u00e1-lo, basta selecionar a op\u00e7\u00e3o <strong>Record <\/strong>na aba <span style=\"color: #000000;\"><strong>Storage<\/strong> <\/span>da expvar_01<span style=\"background-color: #ffffff;\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"background-color: #ffffff;\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p align=\"justify\"><u><span style=\"font-size: large;\"><strong>Exemplo 2<\/strong><\/span><\/u><\/p>\n<p align=\"justify\">Imagine uma Basic Variable (tag_02) que recebe os valores de um medidor de vaz\u00e3o via um servidor de dados OPC DA Classic. Este tipo de vari\u00e1vel costuma apresentar ru\u00eddos de medida, e no caso em quest\u00e3o, precisamos desta informa\u00e7\u00e3o j\u00e1 filtrada para utilizarmos em um c\u00e1lculo posterior de uma infer\u00eancia. Para resolver esta quest\u00e3o, uma das alternativas \u00e9 criar uma Expression Variable que aplica um filtro em tempo real para elimina\u00e7\u00e3o deste ru\u00eddo. Existem diversas formas de implementa\u00e7\u00e3o de um filtro para resolver o problema; por quest\u00f5es did\u00e1ticas, ser\u00e1 utilizado um filtro com a seguinte express\u00e3o:<\/p>\n<p align=\"justify\"><img loading=\"lazy\" style=\"height: 17px; width: 177px;\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/Equa\u00e7\u00f5es\/eq02.png\" alt=\"\" width=\"236\" height=\"22\" align=\"bottom\" border=\"0\" \/><\/p>\n<p>Onde:<br \/>\ny\u00a0: \u00e9 o valor filtrado<br \/>\ny_1\u00a0: o valor filtrado na avalia\u00e7\u00e3o anterior da express\u00e3o<br \/>\nx\u00a0: o valor da medida da vari\u00e1vel de processo com ru\u00eddo de medida<\/p>\n<p align=\"justify\">Os passos a serem seguidos s\u00e3o equivalentes ao do <strong>Exemplo 1<\/strong>, por\u00e9m agora temos uma particularidade, que \u00e9 a utiliza\u00e7\u00e3o da pr\u00f3pria Expression Variable (seu valor anterior) sendo utilizada na express\u00e3o. Desta forma, \u00e9 necess\u00e1rio informar tamb\u00e9m um valor de inicializa\u00e7\u00e3o para ser utilizado a primeira vez que a Expression Variable for colocada para rodar. Os passos s\u00e3o os seguintes:<\/p>\n<p>2.1 Criar uma Expression Variable (<strong>expvar_02<\/strong>) que tem na sua tabela de vari\u00e1veis de entrada a Basic Variable <strong>tag_02<\/strong>, com o apelido <strong>x<\/strong> e Mem. Cache igual a <strong>1<\/strong>, bem como a pr\u00f3pria <strong>expvar_02<\/strong> com o\u00a0apelido <strong>y_1<\/strong> e Mem. Cache <strong>tamb\u00e9m<\/strong> igual a <strong>1<\/strong>. Adicionar tamb\u00e9m a seguinte express\u00e3o:<\/p>\n<p><img loading=\"lazy\" style=\"height: 17px; width: 375px;\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/Equa\u00e7\u00f5es\/eq03.png\" alt=\"\" width=\"480\" height=\"23\" align=\"bottom\" border=\"0\" \/><\/p>\n<p>O resultado \u00e9 apresentado a seguir:<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig05.PNG\" alt=\"\" width=\"500\" height=\"305\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 5: Configura\u00e7\u00f5es da sub-aba Expression\/Execution Module da Expression Variable expvar_02.<\/span><\/p>\n<p align=\"justify\">Observe que para poder inserir a pr\u00f3pria Expression Variable (<strong>expvar_02<\/strong>) na sua tabela de entrada, \u00e9 necess\u00e1rio salvar a opera\u00e7\u00e3o assim que ela for adicionada \u00e0 tabela de Expression Variables.<\/p>\n<p align=\"justify\">2.2 Definir o evento de avalia\u00e7\u00e3o da express\u00e3o como sendo toda mudan\u00e7a de valor da Basic Variable <strong>tag_02<\/strong>. Isso \u00e9 feito na aba sub-aba <strong>Expression\/Execution Event <\/strong>selecionando-se a pr\u00f3pria vari\u00e1vel de entrada para ser monitorada.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig06.PNG\" alt=\"\" width=\"500\" height=\"98\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 6: Configura\u00e7\u00e3o do evento que dispara a avalia\u00e7\u00e3o da express\u00e3o.<\/span><\/p>\n<p align=\"justify\">Observe que a vari\u00e1vel <strong>expvar_02<\/strong> est\u00e1 desabilitada para monitorar o valor, uma vez que corresponde a pr\u00f3pria vari\u00e1vel da express\u00e3o.<\/p>\n<p align=\"justify\">2.3 Na sub-aba <strong>Expression\/Initialization<\/strong>, marcar a op\u00e7\u00e3o <strong>Use Initial Values<\/strong> e fornecer valores iniciais para as vari\u00e1veis:<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig07.PNG\" alt=\"\" width=\"500\" height=\"106\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 7: Configura\u00e7\u00e3o dos valores de inicializa\u00e7\u00e3o da express\u00e3o.<\/span><\/p>\n<p align=\"justify\">2.4 Testar a express\u00e3o na sub-aba <strong>Expression\/Test<\/strong> pressionando o comando\u00a0<strong>Test<\/strong> na faixa de op\u00e7\u00f5es. A seguir o resultado da execu\u00e7\u00e3o de um teste para o valor 1 nas duas vari\u00e1veis, que dever\u00e1 ter como retorno da avalia\u00e7\u00e3o o valor 1.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig08.PNG\" alt=\"\" width=\"500\" height=\"140\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 8: Teste da express\u00e3o com resultado positivo.<\/span><\/p>\n<p align=\"justify\">2.5 Colocar a Expression Variable para rodar pressionando o bot\u00e3o<strong>\u00a0Run<\/strong> na faixa de op\u00e7\u00f5es. Abaixo \u00e9 exibido um gr\u00e1fico do <strong>Chart Analysis<\/strong> do EPM Studio a compara\u00e7\u00e3o entre os valores de processo com ru\u00eddos de medida e o valor filtrado calculado pela express\u00e3o em tempo real.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig09.png\" alt=\"\" width=\"500\" height=\"253\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 9: Compara\u00e7\u00e3o entre o valor da medida de processo e a express\u00e3o que filtra os ru\u00eddos de medida.<\/span><\/p>\n<p align=\"justify\">Notar que existe um pequeno atraso no sinal filtrado, o que \u00e9 de se esperar devido a natureza deste tipo de filtro calculado em tempo real.<\/p>\n<p>&nbsp;<\/p>\n<p align=\"justify\"><u><span style=\"font-size: large;\"><strong>Exemplo 3<\/strong><\/span><\/u><\/p>\n<p align=\"justify\">Imagine o mesmo caso anterior, por\u00e9m agora ser\u00e1 utilizado um filtro que calcula a m\u00e9dia dos \u00faltimos 5 valores da vari\u00e1vel de processo atrav\u00e9s da seguinte express\u00e3o:<\/p>\n<p><img loading=\"lazy\" style=\"height: 15px; width: 397px;\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/Equa\u00e7\u00f5es\/eq04.png\" alt=\"\" width=\"459\" height=\"25\" align=\"bottom\" border=\"0\" \/><\/p>\n<p align=\"justify\">Onde:<br \/>\n<b>x_filt<\/b>: \u00e9 o valor filtrado<br \/>\n<b>x_0<\/b>: o valor da medida da vari\u00e1vel de processo com ru\u00eddo de medida no tempo atual<br \/>\n<b>x_1<\/b> a <b>x_4<\/b>: os valores da medida da vari\u00e1vel de processo nas amostragens anteriores(de -1 a -4)<\/p>\n<p align=\"justify\">Os passos a serem seguidos s\u00e3o equivalentes ao do <strong>Exemplo 1<\/strong>, conforme mostrado a seguir:<\/p>\n<p align=\"justify\">3.1 Criar uma Expression Variable (<strong>expvar_03<\/strong>) que tem na sua tabela de vari\u00e1veis de entrada a Basic Variable <strong>tag_02<\/strong>, com o apelido <strong>x<\/strong> e Mem. Cache igual a <strong>5<\/strong>. Adicionar tamb\u00e9m a seguinte express\u00e3o:<\/p>\n<p><img loading=\"lazy\" style=\"height: 18px; width: 398px;\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/Equa\u00e7\u00f5es\/eq05.png\" alt=\"\" width=\"539\" height=\"25\" align=\"bottom\" border=\"0\" \/><\/p>\n<p align=\"justify\">Nesta express\u00e3o, x \u00e9 uma lista do Python com 5 elementos onde a posi\u00e7\u00e3o [0] corresponde ao objeto que cont\u00e9m o valor atual, posi\u00e7\u00e3o [1] corresponde ao anterior, e assim sucessivamente. Para proceder com o somat\u00f3rio destes elementos e posterior divis\u00e3o por 5, para o c\u00e1lculo da m\u00e9dia, deve-se criar um vetor contendo apenas os valores deste objeto, uma vez que cada item desta lista cont\u00e9m as propriedades: <strong>Value, Timestamp<\/strong> e <strong>Quality<\/strong>. A parte da express\u00e3o\u00a0<em>(item.Value for item in x)<\/em> faz exatamente isso, para cada item da lista x, ele pega o seu valor (item.Value) e adiciona em um vetor \u2013 opera\u00e7\u00e3o comumente utilizada na linguagem Python para criar um vetor utilizando o comando de la\u00e7o <strong>for<\/strong>. Na sequ\u00eancia, a fun\u00e7\u00e3o <strong>sum<\/strong> \u00e9 aplicada ao vetor resultante deste la\u00e7o, seguida da divis\u00e3o por 5.<\/p>\n<p align=\"justify\"><strong>NOTA<\/strong>: Para que o resultado da divis\u00e3o seja um n\u00famero de ponto flutuante, o denominador deve ser expresso com suas casas decimais (no caso 5.0), caso contr\u00e1rio o Python 2.7 (vers\u00e3o utilizada pelo EPM) interpretar\u00e1 que esta \u00e9 uma divis\u00e3o inteira e truncar\u00e1 o resultado para poder retornar um valor inteiro.<\/p>\n<p align=\"justify\">A janela de configura\u00e7\u00e3o \u00e9 apresentada a seguir:<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig10.PNG\" alt=\"\" width=\"500\" height=\"274\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 10: Configura\u00e7\u00f5es da sub-aba Expression\/Execution Module da Expression Variable expvar_02.<\/span><\/p>\n<p align=\"justify\">3.2 Definir o evento de avalia\u00e7\u00e3o da express\u00e3o como sendo toda mudan\u00e7a de valor da <i>Basic Variable<\/i> <b>tag_02<\/b>.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig11.PNG\" alt=\"\" width=\"500\" height=\"83\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 11: Configura\u00e7\u00e3o do evento que dispara a avalia\u00e7\u00e3o da express\u00e3o.<\/span><\/p>\n<p align=\"justify\">3.3 Testar a express\u00e3o na sub-aba <strong>Expression\/Test<\/strong> pressionando o comando\u00a0<strong>Test<\/strong> na faixa de op\u00e7\u00f5es. A seguir o resultado da execu\u00e7\u00e3o de um teste para os valores de 1 a 5 no vetor do <strong>Mem. Cache<\/strong>.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig12.PNG\" alt=\"\" width=\"500\" height=\"155\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 12: Teste da express\u00e3o com resultado positivo.<\/span><\/p>\n<p align=\"justify\">3.4 Colocar a Expression Variable para rodar pressionando o bot\u00e3o\u00a0<strong>Run<\/strong> na faixa de op\u00e7\u00f5es. Em seguida podemos ver um gr\u00e1fico do <strong>Chart Analysis<\/strong> do EPM Studio com a compara\u00e7\u00e3o entre os valores de processo com ru\u00eddos de medida e o valor filtrado calculado pela express\u00e3o em tempo real.<\/p>\n<p align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig13.png\" alt=\"\" width=\"500\" height=\"253\" align=\"bottom\" border=\"0\" hspace=\"0\" vspace=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\">Figura 13: Compara\u00e7\u00e3o entre o valor da medida de processo e a express\u00e3o que filtra os ru\u00eddos de medida.<\/span><\/p>\n<p>Note que\u00a0neste caso tamb\u00e9m existe um pequeno atraso no sinal filtrado, devido ao mesmo motivo do caso anterior.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descri\u00e7\u00e3o As Expression Variables do EPM possibilitam a aplica\u00e7\u00e3o de um processamento sobre dados de tempo real de uma ou mais vari\u00e1veis do EPM, al\u00e9m, \u00e9 claro, de armazenar os&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[710],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Criando Expression Variables para c\u00e1lculos de valores em tempo real. - Elipse Knowledgebase<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Criando Expression Variables para c\u00e1lculos de valores em tempo real.\" \/>\n<meta property=\"og:description\" content=\"Descri\u00e7\u00e3o As Expression Variables do EPM possibilitam a aplica\u00e7\u00e3o de um processamento sobre dados de tempo real de uma ou mais vari\u00e1veis do EPM, al\u00e9m, \u00e9 claro, de armazenar os&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/\" \/>\n<meta property=\"og:site_name\" content=\"Elipse Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/elipsesoftware\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-25T20:45:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-28T17:52:21+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig01.PNG\" \/>\n<meta name=\"author\" content=\"Elipse Software\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elipse Software\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/\"},\"author\":{\"name\":\"Elipse Software\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87\"},\"headline\":\"Criando Expression Variables para c\u00e1lculos de valores em tempo real.\",\"datePublished\":\"2019-03-25T20:45:28+00:00\",\"dateModified\":\"2024-03-28T17:52:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/\"},\"wordCount\":1760,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"Expression Variables Memory\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/\",\"url\":\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/\",\"name\":\"[:pt]Criando Expression Variables para c\u00e1lculos de valores em tempo real.[:] - Elipse Knowledgebase\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2019-03-25T20:45:28+00:00\",\"dateModified\":\"2024-03-28T17:52:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Criando Expression Variables para c\u00e1lculos de valores em tempo real.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kb.elipse.com.br\/#website\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"name\":\"Elipse Knowledgebase\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kb.elipse.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\",\"name\":\"Elipse Software\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/elipsesoftware\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"contentUrl\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"width\":161,\"height\":58,\"caption\":\"Elipse Software\"},\"image\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87\",\"name\":\"Elipse Software\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"caption\":\"Elipse Software\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Criando Expression Variables para c\u00e1lculos de valores em tempo real. - Elipse Knowledgebase","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Criando Expression Variables para c\u00e1lculos de valores em tempo real.[:] - Elipse Knowledgebase","og_description":"Descri\u00e7\u00e3o As Expression Variables do EPM possibilitam a aplica\u00e7\u00e3o de um processamento sobre dados de tempo real de uma ou mais vari\u00e1veis do EPM, al\u00e9m, \u00e9 claro, de armazenar os&hellip;","og_url":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2019-03-25T20:45:28+00:00","article_modified_time":"2024-03-28T17:52:21+00:00","og_image":[{"url":"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5385\/fig01.PNG"}],"author":"Elipse Software","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Elipse Software","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/"},"author":{"name":"Elipse Software","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87"},"headline":"Criando Expression Variables para c\u00e1lculos de valores em tempo real.","datePublished":"2019-03-25T20:45:28+00:00","dateModified":"2024-03-28T17:52:21+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/"},"wordCount":1760,"commentCount":0,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["Expression Variables Memory"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/","url":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/","name":"[:pt]Criando Expression Variables para c\u00e1lculos de valores em tempo real.[:] - Elipse Knowledgebase","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2019-03-25T20:45:28+00:00","dateModified":"2024-03-28T17:52:21+00:00","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/criando-expression-variables-para-calculos-de-valores-em-tempo-real\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Criando Expression Variables para c\u00e1lculos de valores em tempo real."}]},{"@type":"WebSite","@id":"https:\/\/kb.elipse.com.br\/#website","url":"https:\/\/kb.elipse.com.br\/","name":"Elipse Knowledgebase","description":"","publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kb.elipse.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kb.elipse.com.br\/#organization","name":"Elipse Software","url":"https:\/\/kb.elipse.com.br\/","sameAs":["http:\/\/www.facebook.com\/elipsesoftware"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","contentUrl":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","width":161,"height":58,"caption":"Elipse Software"},"image":{"@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87","name":"Elipse Software","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","caption":"Elipse Software"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/3682"}],"collection":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=3682"}],"version-history":[{"count":4,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/3682\/revisions"}],"predecessor-version":[{"id":16163,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/3682\/revisions\/16163"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=3682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=3682"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=3682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}