O E3Storage é o módulo do E3 destinado a historiar dados de forma compacta, otimizando assim a utilização do banco de dados e fazendo com que a informação seja armazenada com menor espaço possível.
Através de um algoritmo de compactação de dados, as informações relevantes de um determinado processo são armazenadas no E3Storage, ocupando menos espaço em disco do que os dados gravados periodicamente pelo módulo Histórico.
A premissa básica do E3Storage é armazenar uma informação apenas quando houver uma variação significativa ou então quando um intervalo máximo de tempo sem nenhuma gravação tiver sido ultrapassado. Estes parâmetros são definidos pelo usuário. A compactação dos dados é feita pelo algoritmo BoxCar/BackSlope, que analisa as variações dos tags e realiza a compactação dos dados, possibilitando uma recuperação total das informações que são realmente úteis.
Recomenda-se utilizar o E3Storage em aplicações onde o foco é a análise de tendências de algumas informações essenciais de um determinado processo. Por outro lado, quando a aplicação necessita uma maior precisão nos dados (como, por exemplo, medição para faturamento de insumos – água , gás ou energia), o uso do E3Storage não é recomendado, mas sim o de Históricos convencionais.
A correta configuração de alguns parâmetros do E3Storage é de extrema importância, como veremos a seguir:
Scan Time
O Scan Time é o parâmetro do E3Storage destinado a configurar a taxa de amostragem do tag. Este algoritmo reconstrói uma sequência de valores sempre que o tag ficar parado em um determinado valor. No exemplo abaixo, se o ScanTime estiver configurado para 5 segundos e o tag ficar 30 segundos sem reportar valores, o algoritmo assume que o valor do tag permaneceu igual até 5 segundos antes da próxima variação, e então insere o ponto A’.
A funcionalidade da propriedade ScanTime será ilustrada no exemplo abaixo.
Esta imagem representa uma sequência de quatro eventos de um tag, o qual possui variação a cada 2 minutos. O parâmetro ScanTime ainda não foi inserido, o que dá a impressão de que o tag ficou variando (subindo e descendo) continuamente durante todo o período (6 minutos).
A próxima imagem mostra a mesma entrada de dados após a configuração do parâmetro ScanTime em 2 segundos. As variações originais do tag ocorrem a cada 2 minutos, e o ScanTime foi configurado para 2 segundos; isto faz com que a cada 2 segundos antes de uma variação do tag original, o ScanTime insira um ponto. O gráfico abaixo mostra fielmente o que acontece, ou seja: o tag sofreu três variações significativas durante todo o período, mas durante a maior parte do tempo ele permaneceu com valor fixo.
MinRecTime
O MinRecTime é o parâmetro do E3Storage que estabelece um intervalo de tempo mínimo para que um novo dado seja gravado, desde a última vez que ocorreu uma gravação. Este algoritmo possui um aspecto destrutivo, ou seja, todas as variações que estiverem dentro do intervalo de MinRecTime serão deletadas e apenas o último valor que caiu dentro do intervalo será deslocado para fora, de modo a respeitar este parâmetro.
O exemplo anterior ajuda a compreender melhor a funcionalidade do MinRecTime.
Neste caso, configura-se o parâmetro MinRecTime para 1 minuto, ou seja, sempre será respeitado um intervalo de 1 minuto desde a última gravação para que um dado possa ser gravado novamente. O que se verifica é que os pontos originais (em azul) ficam dentro da janela de MinRecTime, ou seja, não existe um intervalo de 1 minuto entre o ponto inserido pelo ScanTime (em verde) e o ponto original (em azul). Sendo assim, o TimeStamp do ponto original é alterado a fim de deslocá-lo para que fique exatamente no final da janela MinRecTime.
Por conta de seu aspecto destrutivo, não é recomendado configurar o MinRecTime um valor muito grande. O objetivo do MinRecTime é eliminar “picos” (o tag varia bruscamente de valor, retornando rapidamente ao valor original), mas o risco de também eliminar dados úteis é grande. Por esta razão, é sugerido utilizar o MinRecTime apenas em casos que a fonte de dados estiver gerando muitas variações, ou quando o usuário realmente não se importa em perder dados (por exemplo, quando o cliente deseja gravar apenas um valor por hora, não se importando com a variação entre eles).
MaxRecTime
O MaxRecTime é o intervalo máximo, em segundos, entre os TimeStamps de dois registros consecutivos armazenados no banco de dados, isto é, o tempo máximo sem que nenhum dado seja gravado. Por exemplo, mesmo que um tag não tenha nenhuma variação, ainda assim seu valor atual deve ser escrito no banco de dados sempre que o número de segundos configurado em MaxRecTime for atingido.
Faltou explicar sobre banda morta