Dúvida em relação à apresentação de informações em tela (Portal)

Boa tarde, pessoal!

Tudo bem?

Estamos com uma integração do EPM em um de nossos clientes e estamos com uma dificuldade em relação à apresentação de certas informações no EPM Portal.

Temos TAG’s cadastradas em Basic Variables de motores, de seu estado de ligado. Essa TAG assume o valor de verdadeiro quando ligado e falso, quando desligado. Minha questão é a seguinte: precisamos mostrar em tela, o tempo em que os motores ficaram ligados durante um intervalo de tempo. Gostaria de saber se existe alguma maneira de fazer isso acontecer utilizando um Time Slider para a configuração do intervalo de tempo. Um exemplo: se o cliente quiser saber a quantidade de horas em que o motor X ficou ligado durante o último mês, qual recurso é utilizado para a apresentação dessa informação na tela?

Desde já, agradeço! Uma ótima semana a todos!

Oi, Leonardo!

Para apresentar o tempo em que uma variável esteve ligada durante um determinado intervalo, você pode utilizar a agregação “DurationInStateNonZero” e apresentar em um widget Display, por exemplo.

Assim, você pode criar o Display e configurar um Binding na propriedade Text conforme o exemplo:

Perceba que foi informado o caminho “[0].value” na parte inferior à direita, pois o conteúdo retornado pela agregação é um array.

O valor retornado é em milissegundos. Por isso, para mostrar em horas, você deve criar um Pipe na propriedade Text do tipo Expression para dividir o valor por 3.600.000, que é o total de milissegundos em uma hora.

image

Tembém seria interessante adicionar mais um Pipe do tipo Number Format em seguida para formatar o resultado com um número máximo de casas decimais:

Dessa maneira, o resultado ficará formatado e mostrando o número total de horas. Por isso, escolhi também informar a unidade de engenharia, selecionando a opção “To Local” e escrevendo como eu quero que apareça:

image

Muito obrigado, Samir!

Vou realizar esses procedimentos informados e retorno com o resultado. Um ótimo dia!

Olá, Samir!

Segui os passos que você me passou, porém, estou recebendo um valor “NaN”, conforme as imagens a seguir:

4

Oi, Leonardo!

Acho que você não selecionou a agregação “DurationInStateNonZero”. Pelo menos na sua figura está selecionada a Trend.

Realmente, me desculpe, estava em Trend.

Mas agora coloquei na agregação “DurationInStateNonZero” e não apresenta nenhum valor.

5

Bom, agora parece que não foi retornado valor. Consegue confirmar se foi retornado algum valor na agregação ou se você precisa ajustar o TimeRange?

Eu linkei um TimeSlider para melhor configuração do intervalo de tempo a ser exibido. Quando eu coloco um intervalo para “esta semana”, o display apresenta valores corretos, como a imagem abaixo:

6

Porém, quando coloco um intervalo para “este dia”, não aparece nada no display:

7

Acho que sua variável não variou no dia de hoje, desde as 0h.

Ah sim, entendo. Teria alguma forma de eu mostrar o valor “0 horas”, neste caso?

Conforme definição da norma OPC-UA, a agregação precisa ter um dado dentro do período consultado para confirmar se a variável continua ou não em 1 ou 0 ou qualquer outro valor em caso de variáveis analógicas. Assim, o ideal para este caso seria você forçar a gravação de um novo valor por meio de configuração do seu StorageSet.

Caso você não faça isso, a outra maneira seria criar uma lógica utilizando um Dataset para colocar 0 sempre que o valor recebido for vazio.

Entendido!

Muito obrigado, Samir! Seus ensinamentos foram de extrema importância para o nosso desenvolvimento!

Tenha uma ótima semana!