# Datalogs

> Las configuraciones de grabación de un modelo: una instantánea por intervalo, los canales que captura y el orden de columnas que sigue toda corrida.

Un **datalog** es una configuración de grabación reutilizable del modelo. Declara qué anota una
corrida: una instantánea por intervalo, con todos los canales que el datalog lista, cada valor
emparejado con la calidad con la que se leyó (Good o Unavailable). No declara nada sobre cómo se
dibuja el modelo: un gráfico es un componente de un panel de control, no un ajuste de aquí. Los
datalogs viven en Process > Modelos > modelo > Preparación > **Datalogs** y exigen el permiso
**Editar recetas y evaluaciones**.

Un modelo tiene tantos datalogs como necesite. Un [procedimiento](process-procedures) apunta a uno
con su etapa **Registrar**, y esa referencia es lo que hace que una corrida grabe siquiera: un
procedimiento sin datalog no graba muestras y no puede llevar evaluación, porque una evaluación juzga
sobre filas grabadas. Los comandos **Instantánea** y **Evaluar ahora** de un panel también graban a
través de un datalog, una fila a la vez.

## La carpeta Datalogs {#the-datalogs-folder}

Al seleccionar la fila **Datalogs** se abre la página de la carpeta ("Configuraciones de registro
reutilizables: un intervalo periódico entre instantáneas y los canales capturados en cada corrida que
las referencia.") con una tarjeta por datalog, por nombre; al hacer clic en una tarjeta se abre y la X
lo quita. Sin ninguno, la página dice "Todavía no hay datalogs. Agregue uno."

| Comando | Qué hace | Atenuado cuando (situación) | No se dibuja cuando (rol) |
| --- | --- | --- | --- |
| **Datalog** (barra de detalle, con la carpeta seleccionada; botón derecho **Agregar datalog**) | Agrega `Datalog nuevo <n>` a 1000 ms y sin columnas. La fila se agrega a su grupo, resaltada y desplazada hasta quedar a la vista allí; su tarjeta la abre. | Cualquier unidad tiene una corrida, o el runtime está detenido. | Sin Editar recetas y evaluaciones. |

## La página del datalog {#the-datalogs-page}

El encabezado lleva el nombre y la línea "Lo que se registra: una instantánea periódica con todos
los canales seleccionados, al intervalo configurado." Todos los campos se guardan solos.

### Registro {#recording}

| Campo | Qué es | Valores / predeterminado | Efecto |
| --- | --- | --- | --- |
| **Nombre** | Cómo se llama el datalog en el árbol, en el selector Grabar de un procedimiento y en los selectores de Instantánea de un panel. | Texto libre; `Datalog nuevo <n>` al crearlo. | Renombra la fila. |
| **Intervalo entre instantáneas (ms)** | Cada cuánto se registra una instantánea. La línea bajo el campo dice "Cada cuánto se registra una instantánea. 50 ms es lo más rápido que registra una corrida." | Un número entero de milisegundos, 50 o más; 1000 de forma predeterminada. Un valor más corto se rechaza bajo el campo ("Ingrese un número de al menos 50.") y la casilla regresa a lo que tenía. | Fija el ritmo de grabación de toda corrida e instantánea que use este datalog. |

### Canales {#channels}

"Canales del modelo registrados durante la corrida. Son los que definen las columnas de la corrida." El
encabezado de la tarjeta lleva **Canal**, que agrega una columna en el primer canal legible del modelo
que ninguna fila graba todavía, y la cuadrícula tiene una fila por columna grabada. Cuando no queda
ningún canal así, **Canal** se queda atenuado y la información emergente dice por qué: "Este modelo no
tiene ningún canal legible que registrar." o "Aquí ya se registran todos los canales legibles del
modelo."

| Columna | Qué es | Valores / predeterminado |
| --- | --- | --- |
| **Canal** | El canal del modelo que graba esta columna, como `Ch<number> · <name>`. | Solo se ofrecen los canales legibles (Solo lectura y Lectura y escritura): un canal de Solo escritura nunca se muestrea, así que una columna sobre uno se quedaría vacía. El selector de cada fila ofrece los canales legibles que ninguna otra fila graba, porque un canal en dos filas sería una columna de la corrida bajo dos encabezados. |
| Acciones de fila | **Subir el canal**, **Bajar el canal** (los extremos se quedan atenuados), **Quitar** (pregunta "Eliminar la columna": el nombre del canal, "Esto quita la columna del datalog."). | |

El orden de las filas es el orden de las columnas: es el que siguen el archivo de la corrida, el CSV y
las hojas del XLSX, así que las dos flechas deciden cómo se ve una exportación. Un movimiento que la
estación rechaza regresa la fila a donde estaba.

Aquí no se declara nada más. El nombre, la unidad de ingeniería, el tipo y la tinta de gráfico de cada
columna vienen del propio [canal](process-channels). Renombrar un canal reescribe esta referencia
junto con todas las demás del modelo, y quitar un canal barre su columna después de una confirmación
que cuenta lo que se va.

## Dónde se usa un datalog {#where-a-datalog-is-used}

| Superficie | Qué hace con el datalog |
| --- | --- |
| La etapa **Registrar** de un procedimiento | Graba a través de él durante toda corrida del procedimiento. La línea de la etapa dice a cuánto equivale: "Graba 6 canales cada 500 ms", y para un procedimiento Temporizado "…, unas 180 muestras por canal." Un procedimiento sin datalog dice "No se registra nada: esta corrida no deja datalog." |
| La tarjeta **Comandos sueltos** de un panel | **Instantánea** graba una fila a través del datalog elegido como una corrida Instantánea nacida y terminada en Históricos; **Evaluar ahora** graba una fila y la juzga contra una evaluación cuyos canales grabe el datalog. |
| Una evaluación | Juzga solo canales que graba el datalog del procedimiento: un criterio cuyo canal (o canal de referencia) no es una columna de ese datalog no se puede juzgar, y la página de la evaluación lo dice. |
| Una ocurrencia armada durante una corrida | Lee las columnas grabadas, así que un canal que el datalog no graba no está disponible para ella durante la corrida. Un procedimiento que arma una ocurrencia sobre un canal que este datalog deja fuera se rechaza, igual que uno que arma una ocurrencia y no graba nada en absoluto. |

## Quitar el datalog {#remove-datalog}

**Quitar el datalog** está en el grupo de peligro de la barra de detalle con el datalog seleccionado,
en su menú del botón derecho, y como la X de la tarjeta de la página de la carpeta. Pregunta primero
("Eliminar el datalog", "Esto elimina el datalog y las columnas que registra."). Todo procedimiento que
grababa a través de él vacía su referencia de Grabar y sobrevive. Exige Editar recetas y evaluaciones
y se atenúa bajo el bloqueo de ingeniería y el runtime detenido.

## Qué hace una corrida con él {#what-a-run-does-with-it}

El [Arranque](process-runs) congela en el archivo de la corrida la disposición de canales del datalog:
las columnas, en orden, cada una con su número, su nombre, el alias en vigor en la unidad, su unidad
de ingeniería y su tinta de gráfico resuelta. La corrida las conserva a través de toda edición
posterior del datalog, e incluso después de que el modelo se elimine. Cada tic graba una instantánea a
nivel de aplicación con todas las columnas: una fuente no disponible o un valor no convertible se
guarda como un hueco marcado Unavailable, mientras que un valor recibido correctamente como `NaN` o un
centinela de ingeniería se queda Good. El resto del ciclo de vida está en
[Corridas y comentarios](process-runs); navegar y exportar lo grabado es [Históricos](histories).

## Qué no hace un datalog {#what-a-datalog-does-not-do}

- No dibuja nada. Cómo muestra un modelo lo que graba es un panel de control o la tarjeta Canales de
  un panel.
- No graba nada por sí solo. Un datalog que ningún procedimiento referencia y que ninguna instantánea
  dispara no graba ninguna fila.
- No tiene variante por unidad: toda unidad graba las mismas columnas, sobre sus propios vínculos.
- No filtra, no promedia y no comprime: una fila por intervalo, todas las columnas, tal como se leen.
