# Datalogs

> As configurações de gravação de um modelo: uma amostra por intervalo, os canais que ela captura, e a ordem das colunas que toda execução segue.

Um **datalog** é uma configuração de gravação reutilizável do modelo. Ele declara o que uma execução
anota: uma amostra por intervalo, carregando todo canal que o datalog lista, cada valor emparelhado
com a qualidade em que foi lido (Good ou Unavailable). Ele não declara nada sobre como o modelo se
desenha: um gráfico é um componente de um dashboard, não uma configuração daqui. Os datalogs vivem
em Process > Modelos > modelo > Preparação > **Datalogs** e exigem a permissão **Editar receitas e
avaliações**.

Um modelo guarda quantos datalogs precisar. Um [procedimento](process-procedures) aponta para um
pelo estágio **Registrar** dele, e é essa referência que faz uma execução gravar: um procedimento sem
datalog não grava amostra nenhuma e não pode carregar avaliação, porque uma avaliação julga sobre
linhas gravadas. Os comandos **Snapshot** e **Avaliar agora** de um painel também gravam por um
datalog, uma linha por vez.

## A pasta Datalogs {#the-datalogs-folder}

Selecionar a linha **Datalogs** abre a página da pasta ("Configurações de gravação reaproveitáveis: um
intervalo periódico de snapshot e os canais capturados em toda execução que referencia uma delas.") com
um cartão por datalog, por nome; clicar num cartão o abre, e o X o remove. Sem nenhum, a página diz
"Nenhum datalog ainda. Adicione um."

| Comando | O que faz | Fica cinza quando (situação) | Não é desenhado quando (papel) |
| --- | --- | --- | --- |
| **Datalog** (barra de detalhe, com a pasta selecionada; clique direito **Adicionar datalog**) | Acrescenta `Novo datalog <n>` a 1000 ms, sem colunas. A linha entra no grupo dela, destacada e rolada até ficar à vista ali; o cartão dela a abre. | Alguma unidade tem uma execução, ou o runtime está parado. | Sem Editar receitas e avaliações. |

## A página do datalog {#the-datalogs-page}

O cabeçalho carrega o nome e a frase "O que é registrado: um snapshot periódico contendo todos os
canais selecionados, no intervalo configurado." Todo campo salva sozinho.

### Gravação {#recording}

| Campo | O que é | Valores / padrão | Efeito |
| --- | --- | --- | --- |
| **Nome** | Como o datalog se chama na árvore, no seletor Gravar de um procedimento e nos seletores de Snapshot de um painel. | Texto livre; `Novo datalog <n>` na criação. | Renomeia a linha. |
| **Intervalo de snapshot (ms)** | De quanto em quanto tempo uma amostra é gravada. A frase sob o campo diz "De quanto em quanto tempo um snapshot é registrado. 50 ms é o mais rápido que uma execução registra." | Um número inteiro de milissegundos, 50 ou mais; 1000 por padrão. Um valor menor é recusado sob o campo ("Digite um número de no mínimo 50.") e a caixa volta ao que tinha. | Define a taxa de gravação de toda execução e de toda amostra que usa este datalog. |

### Canais {#channels}

"Canais do modelo registrados durante a execução. Eles definem as colunas da execução." O cabeçalho do
cartão carrega **Canal**, que acrescenta uma coluna no primeiro canal legível do modelo que nenhuma
linha grava ainda, e a grade tem uma linha por coluna gravada. Quando não sobra canal assim, **Canal**
fica cinza e a dica diz por quê: "Este modelo não tem canal legível para registrar." ou "Todo canal
legível do modelo já é registrado aqui."

| Coluna | O que é | Valores / padrão |
| --- | --- | --- |
| **Canal** | O canal do modelo que esta coluna grava, como `Ch<número> · <nome>`. | Só canais legíveis são oferecidos (Somente leitura e Leitura e escrita): um canal Somente escrita nunca é amostrado, então uma coluna sobre ele ficaria vazia. O seletor de cada linha oferece os canais legíveis que nenhuma outra linha grava, porque um canal em duas linhas seria uma coluna da execução sob dois títulos. |
| Ações de linha | **Mover o canal para cima**, **Mover o canal para baixo** (as pontas ficam cinzas), **Remover** (pergunta "Excluir coluna": o nome do canal, "Isso remove a coluna do datalog."). | |

A ordem das linhas é a ordem das colunas: é a que o arquivo da execução, o CSV e as planilhas do
XLSX seguem, então as duas setas decidem como fica uma exportação. Um movimento que a estação recusa
devolve a linha para onde ela estava.

Nada mais é declarado aqui. O nome, a unidade de engenharia, o tipo e a tinta de gráfico de toda
coluna vêm do próprio [canal](process-channels). Renomear um canal reescreve esta referência junto
com todas as outras do modelo, e remover um canal varre a coluna dele depois de uma confirmação que
conta o que vai embora.

## Onde um datalog é usado {#where-a-datalog-is-used}

| Superfície | O que ela faz com o datalog |
| --- | --- |
| O estágio **Registrar** de um procedimento | Grava por ele durante toda execução do procedimento. A frase do estágio diz no que isso dá: "Grava 6 canais a cada 500 ms" e, num procedimento Temporizado, "…, cerca de 180 amostras por canal." Um procedimento sem datalog diz "Nada é registrado: esta execução não deixa datalog." |
| O cartão **Comandos avulsos** de um painel | **Snapshot** grava uma linha pelo datalog escolhido, como uma execução Instantânea que nasce e termina nos Históricos; **Avaliar agora** grava uma linha e a julga contra uma avaliação cujos canais o datalog grava. |
| Uma avaliação | Julga apenas canais que o datalog do procedimento grava: um critério cujo canal (ou canal de referência) não é coluna daquele datalog não pode ser julgado, e a página da avaliação diz isso. |
| Uma ocorrência armada durante uma execução | Lê as colunas gravadas, então um canal que o datalog não grava fica indisponível para ela durante a execução. Um procedimento que arma uma ocorrência sobre um canal que este datalog deixa de fora é recusado, assim como um que arma uma ocorrência e não grava nada. |

## Remover datalog {#remove-datalog}

**Remover datalog** fica no grupo de perigo da barra de detalhe com o datalog selecionado, no menu
de clique direito dele, e como o X no cartão da página da pasta. Ele pergunta antes ("Excluir
datalog", "Isso remove o datalog e as colunas que ele registra."). Todo procedimento que gravava por
ele esvazia a referência Gravar dele e sobrevive. Ele exige Editar receitas e avaliações e fica
cinza sob a trava de engenharia e o runtime parado.

## O que uma execução faz com ele {#what-a-run-does-with-it}

O [Iniciar](process-runs) congela o layout de canais do datalog no arquivo da execução: as colunas,
em ordem, cada uma com o número dela, o nome dela, o apelido em vigor na unidade, a unidade de
engenharia dela e a tinta de gráfico resolvida dela. A execução as mantém através de toda edição
posterior do datalog, e mesmo depois de o próprio modelo ser excluído. Cada batida grava uma amostra
no nível da aplicação, contendo todas as colunas: uma origem indisponível ou um valor que não
converte é guardado como uma lacuna marcada Unavailable, enquanto um valor recebido corretamente, como
`NaN` ou uma sentinela de engenharia, continua Good. O resto do ciclo de vida está em
[Execuções e comentários](process-runs); navegar e exportar o que foi gravado é
[Históricos](histories).

## O que um datalog não faz {#what-a-datalog-does-not-do}

- Ele não desenha nada. Como um modelo mostra o que grava é um dashboard ou o cartão Canais de um
  painel.
- Ele não grava nada sozinho. Um datalog que procedimento nenhum referencia e que amostra nenhuma
  dispara não grava linha alguma.
- Ele não tem variante por unidade: toda unidade grava as mesmas colunas, sobre os vínculos dela.
- Ele não filtra, não faz média e não comprime: uma linha por intervalo, todas as colunas, como
  lidas.
