PlayBack - Visualização de dados históricos
Esta documentação se refere ao módulo PlayBack, desenvolvido na forma de um driver de comunicação, cujo objetivo é possibilitar a leitura de dados históricos contidos em um arquivo de texto (csv) e colocar estes valores lidos e suas data-horas de criação em tags definidos em uma tabela Points de um projeto Action.NET.
Introdução
Trata-se de um módulo que faz escrita em tempo real em tags de um projeto Action.NET. É configurado como um driver, utilizando na sua configuração, os objetos Channel, Node e Points como em um outro driver qualquer de Action.NET. Pode ser utilizado em qualquer projeto em que se desejar incluir esta funcionalidade. O módulo durante sua execução vai lendo as medidas históricas de um arquivo de texto e vai colocando seus valores, e timestamps nos tags em tempo real.
Seu funcionamento é portanto o que se denomina um PlayBack: Isto é fazer no tempo real a repetição de uma sequencia de dados históricos.
Obviamente, os tags que serão alimentados por esta funcionalidade, durante esta execução, não devem estar simultaneamente sendo alimentados por qualquer outro mecanismo, como outro driver ou scripts.
Configuração do Canal
A configuração do canal é muito simples. apenas se configura o modo de geração de logs e a maneira de interpretar textos de medidas de tipo real, com a parte decimal precedida por ponto ou virgula.
Use invalid points - Não utilizado.
Logging Level – Pode-se escolher nesta lista o modo de funcionamento do log criado pelo módulo de comunicação.
Logging level | Mensagens incluídas no Log |
Debug | Todas as mensagens são registradas no LOG. |
Info | Apenas as mensagens de Info, Warning e Error são registradas no LOG. |
Warning | Apenas as mensagens de Warning e Error são registradas no LOG. |
Error | Apenas as mensagens de Error são registradas no LO |
Decimal point is comma - deve-se escolher YES, se a virgula (comma) é utilizada na separação da parte decimal, nos textos com medidas no arquivo de dados de entrada.. Caso neste arquivo for utilizado o ponto como separador, deve-se escolher aqui NOT.
Configuração do Node
Se configura o nome do Node e o nome do canal ao qual pertence. Vários nodes podem ser configurado para um unico canal. Para cada node configurado pode se feita a leitura de um arquivo diferente, mesmo simultaneamente.
A unica configuraçao no campo PrimaryStation é o tempo de amostragem.
Line Reading Time interval (ms) - Este é o intervalo de tempo a ser utilizado durante a leitura do arquivo de dados históricos para a efetivação de cada leitura e transferência de dados para as tags. Durante a transferência as tags receberão o valor da medida e o timestamp indicado no aquivo.
Configuração dos Pontos
Para a configuração dos pontos, use o Action.NET - Designer, vá até a área Devices / Points, para editar.
Para a criação de pontos preencha com o nome completo do Tag que vai receber o dado, escolha o node e preencha o campo Address, como necessitar.
Esta tabela POINTS basicamente é utilizada para informar a correspondência entre cada coluna da tabela de dados e o tag que vai receber o dado da coluna. Assim, fica bastante genérico. Use os nome que preferir para as colunas e use no ADDRESS estes nomes para indicar as tags recebedoras.
Arquivo de dados
O nome do arquivo de dados deve ser igual ao nome do node definido, acrescentado da extensão “.csv”.
Um exemplo do arquivo de dados é mostrado na figura seguinte.
Cabeçalho - A primeira linha é o cabeçalho com os nomes das colunas. Sempre a primeira coluna será a data e hora da amostragem, denominado DateTime,
Separados por “;” seguem os nomes das colunas que podem ser definidos como se preferir.
As linhas seguintes serão cada uma das amostragens. Na primeira coluna a data e hora e a seguir, separados por “;”, cada uma das medições amostradas neste horário. na mesma ordem dos nomes no cabeçalho.
Tabela Points
Abaixo um exemplo da tabela POINTS. Estão mostradas as linhas da tabela que correspondem as primeiras colunas do arquivo de dados. Veja que em Address, estão os nomes das colunas no arquivo e os TagNames são os nomes de tags que receberão os dados. O node é o que tem o mesmo nome do arquivo.
Controle da Operação de PlayBack
Esta funcionalidade de Playback normalmente será utilizada esporadicamente pra executar esta leitura e simulação de uma sequencia de dados em tempo real. Portanto, apesar de ter sido impolementada como um módulo de comuniçãoa que pode ficar executando ininterruptamente, o normal é se utilizado em periodos estanques.
Desta forma é necesária a inclusão de funcionalidades para o controle da operação.
Controle do Canal
Para este controle deve-se utilizar comandos para Parar ou Partir o canal, já que não é necessário que fique sempre em operação. Pode-se incluir botões de comandos em alguma tela, para executar as ordens disponíveis nos objetos Device do Action.NET. A figura abaixo mostra uma Janela exemplo para controle de PlayBack, com um botão pata Para/Partir o Canal e a sinalização se está executando ( Started) ou não (Stopped).
// O texto do Botão usa o codigo abaixo:
PlayBack {TIf(Device.Channel.PlayBack1.IsStarted,"Started","Stopped")}
// o trecho usado em Action pra o botão é:
TIf(Device.Channel.PlayBack1.IsStarted,Device.Channel.PlayBack1.Stop(1),Device.Channel.PlayBack1.Start(1))Controle do Node
Para o controle do node e operação de PlayBack especificamente, foi incluída no módulo de PlayBack funcionalidade para receber ordens (comandos) e dados através de tags pré-definidos. Com esta funcionalidade o operador pode iniciar, cancelar ou pausar uma execução de leitura de um arquivo de dados. Pode também modificar o tempo de amostragem e incluir um range da datas/horas para filtrar os dados a serem lidos. Os tags utilizados tem um Template pré-definido, e um destes tags deve ser incluído na tabela Points.
Template ZZ_PBconfig
A figura mostra os membros do Template de configuração para o controle de PlayBack.
A utilização deste objeto será feita pela alteração do conteúdo dos tags, membros.
Tag Command - deve ser cadastrado na tabela POINTS com o endereço 999 e AccesstType WRITE (Trigger on Change).
Para enviar o comando deve ser escrito neste tag uma das palavras de comando, as e seguir listadas:
START - para iniciar a leitura de um arquivo de dados e fazer amostragem conforme o definido em SampleTime (definido no node ou por alteração através desta funcionalidade)
PAUSE - para pausar a leitura já iniciada, se desejado. A execução da leitura será interrompida, permanecendo no mesmo ponto de arquivo de leitura. Pra reiniciar a partir deste ponto deverá ser enviado novo comando START.
CANCEL - para cancelar a leitura no ponto em que estiver. O que já foi lido e colocado nas tags já foi feito. A partir deste comando o mecanismo fica parado e somente será reiniciado com um novo comando START, que fará nova leitura a partir do inicio do arquivo.
SETDATES - serve para impor um filtro de datas durante a leitura de forma que somente os registros no arquivo que tenham Date/Time dentro deste intervalo sejam processados. Antes da execução deste comando deve-se escrever nos membros do objeto de configuração, EndDate e StartDate as datas de definição do intervalo. O formato desta datas será:
dd/mm/yyyy HH:mm:ss ou mm/dd/yyyy hh:mm:ss t que serão interpretadas nas Culture pt-BR ou en-US.
SETSAMPLETIME - para alterar em tempo real o parâmetro de tempo de amostragem das operações de leitura definido na configuração do node. A alteração somente vale durante esta execução do Canal. Antes da execução deste comando deve-se escrever no membros do objeto de configuração, SampleTime o novo numero de milissegundos a ser utilizado.
Tag State - este membro conterá sempre uma palavra de status da operação, escrita pelo driver, indicando seu estado atual: Stopped, Started, Paused, Canceled ou Finalized
Janela Exemplo
A figura seguinte mostra um exemplo de Janela para o controle do canal e Node de PlayBack. Na combobox deve-se escolher o Node a ser utilizado nesta operação. No código desta janela um tag de referência utilizará este nome para trabalhar com o objeto correspondente instanciado. Os botões executam os comandos descritos acima.
Nesta página: