# Corridas y comentarios

> El panel de una unidad: preparar un procedimiento y sus metadatos, el Arranque y qué valida, Pausar, Reanudar, Detener y Abortar, las tarjetas en vivo, los comentarios, los comandos sueltos, el archivo de la corrida, y los caminos de la automatización y del agente.

El **panel** de una unidad (Process > Modelos > un modelo > Operar > la unidad > un panel, y el
mismo panel en la página View cuando está marcado Mostrar en View) es donde una corrida se
prepara, se arranca, se conduce y se sigue. Qué tarjetas dibuja, y en qué orden, se dispone una
vez en el modelo, en Visualización > [Paneles](process-panels); después toda unidad del modelo
opera desde la misma superficie. Mirar solo necesita el árbol. Todo comando del panel exige
**Ejecutar procedimientos**; sin él el panel abre con el aviso "Aquí puede seguir el estado de la
corrida de esta unidad, pero arrancarla o conducirla exige el permiso 'Ejecutar procedimientos'."
y no dibuja ningún botón del ciclo de vida.

Una tarjeta a la que la estación no le da nada que mostrar se deja fuera en vez de dibujarse
vacía: la tarjeta Comandos sueltos necesita un datalog o una receta instantánea en el modelo, la
tarjeta Canales un canal legible, la tarjeta Metadatos un procedimiento preparado que pida un
campo (o que todavía no haya nada preparado), y un panel de control incrustado algo colocado en
él. Un panel que no dispone ninguna tarjeta dice "Este panel no dibuja ninguna tarjeta. Elija sus
tarjetas en la fila Paneles del modelo, dentro de Visualización."

## El aviso de enclavamiento {#the-interlock-banner}

Cuando el modelo observa un paro externo ([Automatización](process-automation)), el
enclavamiento de la unidad está por encima de todas las tarjetas y no dibuja nada mientras está
En reposo. Si no, es un aviso titulado **Enclavamiento disparado** (fuerte), **Enclavamiento en
espera de rearme** o **Enclavamiento no disponible**, con el motivo, el nombre de la fuente, su
valor y su calidad. Mientras no está En reposo, en la unidad no se admite ningún Arranque, Reanudar,
instantánea, evaluación ni aplicación de receta nuevos. Un disparo termina la corrida en curso por
el camino de fin común, como **Abortada** con veredicto **No conforme** y el motivo de terminación
**Enclavamiento**, y no se nombra a nadie como quien la terminó. El enganche sobrevive a un
reinicio. **Rearmar** aparece solo en A la espera de rearme, exige Ejecutar procedimientos, una
fuente que lee buena y segura y una unidad que no posea ninguna corrida; limpia el enganche, queda
en el diario con el nombre del operador, y nunca reinicia la corrida abortada.

## La tarjeta Corrida {#the-run-card}

El encabezado de la tarjeta lleva una lámpara que dice qué está haciendo la unidad, con las mismas
palabras y el mismo color que la píldora de la página de la unidad. Esperar las consignas manda
sobre cualquier otra lectura.

| Lámpara | Color | Cuándo |
| --- | --- | --- |
| **Sin registrar** | Gris | Ninguna corrida posee la unidad. |
| **Preparando** | Gris | Arrancar reservó la unidad y la corrida todavía no existe. |
| **Registrando** | Verde | La corrida está muestreando. |
| **Esperando a que las consignas lleguen al equipo** | Precaución | La receta entregó las consignas de un segmento y espera a que el equipo las tome; el tiempo propio del segmento todavía no empezó a contar, y el datalog sigue grabando. Solo lo muestra un segmento puesto a esperar ([Recetas](process-recipes#what-a-run-does-with-it)). |
| **En pausa** | Precaución | Pausar congeló la ventana temporizada en la última consigna; el datalog sigue grabando. |
| **Guardando** | Gris | El muestreo se detuvo y se está escribiendo la instantánea de la corrida. |
| **Finalizando** | Gris | La corrida llegó a su estado final y está cerrando su archivo; la unidad todavía no está libre. |

| Campo | Qué es | Valores / predeterminado | Efecto |
| --- | --- | --- | --- |
| Procedimiento | El procedimiento preparado para el siguiente Arranque. | "(ninguno)" más todos los procedimientos del modelo, por orden alfabético; nada preparado de forma predeterminada, y la preparación se restablece cuando la aplicación arranca. | Preparar es de toda la estación: todas las pantallas de esta unidad, el punto `Next.Procedure` y la tarjeta de Operar muestran la misma elección. Preparar un procedimiento que fija un conjunto de alias aplica ese conjunto a la unidad al prepararlo, no en el Arranque; una fijación que no se puede aplicar deja en su lugar la preparación anterior y dice por qué en la tarjeta. El selector se atenúa sin Ejecutar procedimientos y mientras el runtime está detenido. |

Los botones del ciclo de vida, en el orden en que se dibujan. Pausar y Reanudar se dejan fuera
cuando el procedimiento preparado es Controlado o Instantáneo, porque solo una corrida Temporizada
tiene una ventana que congelar; sin nada preparado se dibujan los cinco.

| Comando | Qué hace | Atenuado cuando (situación) | No se dibuja cuando (rol) |
| --- | --- | --- | --- |
| Arrancar | Arranca el procedimiento preparado en esta unidad. | La unidad está ocupada, no hay ningún procedimiento preparado, el runtime está detenido, el enclavamiento no está En reposo, o la estación rechaza escrituras. | Sin Ejecutar procedimientos. |
| Pausar | Congela la ventana temporizada en la última consigna; el datalog sigue grabando. | Ninguna corrida está En marcha, o el procedimiento en marcha no es Temporizado. | Sin Ejecutar procedimientos; el procedimiento preparado es Controlado o Instantáneo. |
| Reanudar | Suelta la pausa y sigue con la ventana. | Ninguna corrida está En pausa, o el enclavamiento no está En reposo. | Sin Ejecutar procedimientos; el procedimiento preparado es Controlado o Instantáneo. |
| Detener | Termina la corrida limpiamente y la congela como histórico, desde En marcha o desde En pausa. | Ninguna corrida posee la unidad. | Sin Ejecutar procedimientos. |
| Abortar | Termina la corrida como abortada; el bloque de finalización se ejecuta igual. | Ninguna corrida está En marcha ni En pausa. | Sin Ejecutar procedimientos. |

Un comando rechazado escribe su motivo en la tarjeta ("No hay ningún procedimiento preparado.
Elija uno primero."), y dos líneas permanentes bajo los botones dicen por qué la estación o la
unidad no acepta comandos: "Runtime detenido", y el motivo del enclavamiento.

## El Arranque, y qué valida {#start-and-what-it-validates}

El Arranque consume la preparación de la unidad y rechaza todo antes de tomar ningún recurso. En
orden: se reserva la unidad (un segundo Arranque en la misma unidad se rechaza); el procedimiento
preparado todavía tiene que existir ("El procedimiento preparado ya no existe. Elija uno otra
vez.") y la preparación no se puede haber movido mientras el Arranque esperaba a que terminara una
edición de ingeniería ("El procedimiento preparado o los metadatos cambiaron mientras Arranque
esperaba. Revise la corrida preparada e inténtelo de nuevo."); el procedimiento tiene que pasar la
puerta que muestra su propia página ("No hay nada que ejecutar: este procedimiento no referencia ni
datalog ni receta.", "El modo temporizado necesita una duración. Fije una.", "El modo instantáneo
necesita una receta instantánea (o ninguna). Un perfil temporizado no tiene un único instante.", "El
perfil de la receta (*N* ms) es más largo que la ventana temporizada (*M* ms).", y las
verificaciones de salida de producción); toda ocurrencia armada tiene que tener una condición
válida; al menos un canal del datalog tiene que resolver a una fuente vinculada en esta unidad
("Ningún canal del datalog resuelve a una fuente vinculada en la unidad 'X'."); los metadatos
pedidos tienen que estar completos y tipados ("El campo de metadatos 'X' es obligatorio.", "El
campo de metadatos 'X' tiene que ser numérico.") y todo campo secuencial tiene que poder componer
(un código de unidad o de procedimiento que falta rechaza el Arranque); el enclavamiento tiene que
estar En reposo; y toda fuente que escribe la receta tiene que estar libre (una fuente que tiene la
corrida de otra unidad rechaza el Arranque por canal y por unidad que la tiene). Solo entonces se
reservan los contadores secuenciales, se crea el archivo de la corrida con los metadatos ya
escritos dentro, y se lanzan los motores; las etiquetas y los reportes de Arranque que emite el
procedimiento salen en cuanto la corrida se materializa ([Emitir etiquetas y
reportes](process-emission)).

## La tarjeta Metadatos {#the-metadata-card}

La tarjeta se encabeza "Bajo qué se graba la siguiente corrida de 'Procedimiento'. Un campo marcado
con * lo pide todo procedimiento." y dibuja una entrada por campo de metadatos que pide el
procedimiento preparado, en el orden del procedimiento; sin nada preparado dice "Prepare un
procedimiento y aquí aparecerán los campos que pide."

| Clase de campo | Qué dibuja la tarjeta | Efecto |
| --- | --- | --- |
| Texto | Una casilla de escritura. | Se escribe en la preparación de toda la estación mientras usted escribe; el Arranque lo graba en el archivo de la corrida. Un campo obligatorio (marcado con *) rechaza un Arranque vacío. |
| Número | Una casilla de escritura. | Lo mismo, y el Arranque rechaza un valor que no sea un número. |
| Secuencial | Un anticipo de solo lectura del identificador que compondría el contador ahora, o "Reservado en el arranque" cuando todavía no existe ningún estado de contador. | Mirar no reserva nada: el valor definitivo se reserva en el Arranque, así que un contador compartido por varias unidades puede moverse antes de eso. |

El Arranque consume la preparación, no la limpia: las entradas se quedan como valores
predeterminados para la siguiente corrida del mismo procedimiento. Las entradas escritas para otro
procedimiento se quedan en el área de preparación pero están inertes, ya que el Arranque lee solo
los campos del procedimiento preparado. Las casillas se atenúan sin Ejecutar procedimientos y
mientras el runtime está detenido.

## La tarjeta Estado de la corrida {#the-run-state-card}

Tres lecturas: **Estado** (En marcha, En pausa, Guardando, Completada, Abortada, Fallida, o
"Preparando" mientras la unidad está reservada y "En reposo" cuando nada la posee), **Ciclo** ("2 /
10" para una corrida cíclica, "Sin ciclos" si no; se deja fuera del todo cuando el procedimiento
preparado es Controlado o Instantáneo) y **Veredicto** (el veredicto en vivo de la evaluación, que
se sigue leyendo después de que la corrida termina hasta que arranca la siguiente; "Ninguno" cuando
no se ha juzgado nada).
Mientras ninguna corrida posee la unidad, el veredicto que sigue a la vista es el de la última
corrida, y la lectura se llama entonces **Veredicto de la última corrida**, para que nunca se lea
como el de la corrida que va a empezar.

## Qué hace cada final {#what-each-end-does}

| Final | Grabación | Receta | Veredicto y estado |
| --- | --- | --- | --- |
| Detener | El muestreo se detiene después de que corrió el bloque de finalización, así que la transición al estado seguro queda en el datalog. | Se escriben las consignas de finalización. | La evaluación cierra sus ventanas abiertas y pliega: Conforme, No conforme, Indeterminado, o Ninguno sin evaluación. Completada. |
| Abortar | Lo mismo. | Se escriben las consignas de finalización. | No conforme haya juzgado lo que haya juzgado. Abortada. |
| La ventana termina (Temporizado) o la fila queda grabada (Instantáneo) | Lo mismo. | Se escriben las consignas de finalización. | Como Detener. Completada; no se nombra a nadie como quien la terminó. |
| Una escritura de receta falla con la política de fallas Abortar | Lo mismo. | La finalización corre igual. | No conforme. Abortada. |
| El enclavamiento se dispara | Lo mismo. | La finalización corre igual. | No conforme. Abortada, motivo de terminación Enclavamiento. |
| El runtime se detiene | Toda corrida que todavía no se selló se aborta. | La finalización corre igual. | No conforme. Abortada. |
| Un error irrecuperable | El muestreo se detiene; sin finalización. | No se escribe nada más. | Ninguno. Fallida. |

Cerrar la aplicación no termina nada: una corrida En marcha o En pausa se reanuda en el siguiente
arranque, un perfil temporizado en pausa en su segmento y su ciclo persistidos, y el datalog sigue
en el mismo archivo.

## La tarjeta Canales {#the-channels-card}

Los canales legibles de la unidad en un solo gráfico en vivo, cada serie rotulada con el nombre en
vigor en esta unidad (un alias se ve en vivo) y dibujada en el color y la banda que el modelo
declara en el canal, con la barra de herramientas que lleva todo gráfico ([Gráficos](view-charts)).
Muestra los valores en vivo grabe o no grabe una corrida. Una línea bajo el dibujo solo aparece
cuando un tope de retención recortó el historial que guarda el gráfico (lo que puede guardar un
canal, lo que puede guardar un gráfico entre todos sus canales, o lo que guarda la estación entre
todos los gráficos en vivo), y dice lo que ese tope dejó; un gráfico al que se le concedió todo el
historial que pidió no lleva esa línea. Los topes están en [Gráfico de líneas](component-line-chart#history).

## La tarjeta Comentarios {#the-comments-card}

La tarjeta se encabeza "Comentarios · Procedimiento · Unidad" mientras hay una corrida activa y
"Comentarios · sin corrida activa" si no; una unidad en reposo no muestra ninguna cronología, y una
corrida terminada toma sus notas de [Históricos](histories-notes). Cada línea grabada muestra su
hora, su fase (Corrida o Después de la corrida) y su texto, con dos gestos: **Editar** la
reescribe en el sitio (Intro guarda, Esc cancela; un texto en blanco o sin cambios deja el registro
tal cual, y una reescritura sella el instante de la edición), y **Eliminar** toma dos presiones, la
primera arma la línea ("¿Eliminar este comentario? Esta acción no se puede deshacer.") y la segunda la
quita. La casilla del pie ("Agregue un comentario…") y **Agregar** graban una línea nueva sellada
con el instante y el operador con la sesión iniciada en esta pantalla (la estación cuando no hay
nadie). Los tres gestos exigen Ejecutar procedimientos y una corrida activa. El mismo anexado está
disponible para los paneles de control y los agentes por el punto `Commands.Comment` de la unidad
([El espacio de direcciones de la unidad](process-addresses)).

## La tarjeta Ocurrencias {#the-occurrences-card}

Los episodios de ocurrencia de esta unidad, los activos primero, cada uno con su estado, sus dos
relojes (tiempo activo y pérdida de señal) y el mensaje congelado con él; el encabezado cuenta los
episodios activos. Qué es un episodio, y cómo se derivan sus relojes, está en
[Ocurrencias](process-occurrences).

## La tarjeta Productividad {#the-productivity-card}

La actividad de producción de la unidad sobre **Hoy** o sobre la ventana rodante (un control
segmentado en el encabezado): productividad, rendimiento y tiempo transcurrido típico, el balance de
salidas, los resultados de finalización y una tabla por procedimiento. Qué cuenta y cómo se calcula
es [Productividad](process-productivity).

## La tarjeta Comandos sueltos {#the-single-commands-card}

Un comando aislado en la unidad, fuera de todo procedimiento. Una fila aparece solo donde el modelo
declara aquello de lo que dispara.

| Fila | Controles | Qué hace | Atenuada cuando |
| --- | --- | --- | --- |
| Instantánea | Un selector de datalog y **Capturar** | Graba ahora una fila de datalog como una corrida Instantánea terminada en Históricos, llamada "Instantánea · datalog". | La unidad está ocupada, el enclavamiento no está En reposo, el runtime está detenido, todavía corre un comando suelto, o sin Ejecutar procedimientos. |
| Evaluar ahora | Un selector de datalog, un selector de evaluación y **Evaluar** | Graba una fila y la juzga ahora contra la evaluación; la corrida se llama "Evaluar · evaluación" y lleva el veredicto del momento. Se dibuja solo cuando el modelo tiene un datalog y una evaluación. | Lo mismo. |
| Aplicar receta | Un selector de las recetas instantáneas del modelo y **Aplicar** | Escribe una vez las consignas de la receta por el punto único de escritura bajo un bloqueo de vida corta; no se graba ninguna corrida, el diario es el registro. Una fuente que tiene una corrida viva lo rechaza. | El enclavamiento no está En reposo, el runtime está detenido, todavía corre una aplicación, o sin Ejecutar procedimientos. Sigue disponible mientras la unidad graba. |

Las instantáneas y las evaluaciones no piden metadatos, no reservan ningún contador y nunca cuentan
para la producción. Los resultados aterrizan en el registro de acciones ("Instantánea registrada.
Consulte Históricos.", "Evaluado. El veredicto queda registrado en Históricos.", "Receta aplicada.").

## Paneles de control como tarjetas {#dashboards-as-cards}

Un panel puede incrustar cualquier panel de control del modelo como una tarjeta, a la altura
elegida en el panel. La tarjeta ejecuta la definición del modelo resuelta para esta unidad,
exactamente igual que el nodo de panel de control propio de la unidad, y sus componentes de comando
solo necesitan Ejecutar procedimientos.

## El datalog {#the-datalog}

Mientras una corrida graba, el [datalog](process-datalogs) que nombra su procedimiento escribe una
instantánea a nivel de aplicación por intervalo: cada canal grabado, en el orden de columnas
declarado, cada valor emparejado con una marca Good o Unavailable. La fila promete una observación
coherente de la aplicación, no una adquisición física simultánea: los dispositivos de origen se
refrescan a sus propios ritmos. Una fuente no disponible o un valor no convertible se guarda como un
hueco; un `NaN` o un centinela de ingeniería recibidos correctamente se quedan Good. Un intervalo más
corto no llega ahí por la pantalla: el campo Intervalo de instantánea del datalog rechaza un valor
por debajo de 50 ms ("Ingrese un número de al menos 50.") y regresa la casilla al intervalo en vigor.
Un intervalo que llegue a una corrida por cualquier otro camino se usa tal cual hasta 50 ms, y
cualquier cosa por debajo se trata como 50 ms.

## El archivo de la corrida {#the-run-file}

El archivo de la corrida es el registro completo: las identidades y los nombres estables del modelo,
la unidad y el procedimiento, la revisión del modelo, la disposición de canales congelada con la
tinta de gráfico resuelta de cada columna, los valores de metadatos, las escrituras de receta tal
como se ejecutaron, los resultados de los criterios, los eventos de ocurrencia, los comentarios, las
anotaciones del gráfico, los registros de producción, los artefactos de etiqueta y los registros de
reporte. El contexto congelado se captura en el Arranque y no se muta nunca; el finalizador solo
agrega el resultado: veredicto, estado terminal, hora de fin, quién terminó la corrida y, donde la
terminó un enclavamiento, el motivo de terminación. Eliminar el modelo, la unidad o el procedimiento
nunca toca una corrida grabada. Navegar, exportar y regenerar documentos a partir de archivos de
corrida es [Históricos](histories).

## El camino de la automatización {#the-automation-path}

Una unidad cuya [automatización](process-automation) está activada toma el mismo ciclo de vida desde
el campo: un flanco de subida en la fuente booleana vinculada a Arrancar, Pausar, Reanudar, Detener
o Abortar dispara ese comando. Abortar le gana a Detener en el mismo sondeo, y cualquier otro par de
flancos simultáneos se rechaza como conflicto. Un Arranque automático resuelve su procedimiento
desde la elección fija o desde el selector numérico y sus metadatos desde las fuentes configuradas
sin tocar la preparación del operador, y se admite solo cuando la unidad está lista para el
Arranque. El resultado se escribe de vuelta en el retorno asignado como CommandResult:
0 Idle, 1 Accepted, 2 UnitNotReady, 3 InvalidSelection, 4 InvalidMetadata,
5 IncompatibleCommand, 6 ConflictingCommands, 7 InternalFailure. Una corrida que admitió la
automatización se lista en
Históricos con la insignia **Automatización**, graba la automatización como responsable, y la nombra
como quien la terminó después de un Paro o un Aborto automáticos.

## Agentes y paneles de control {#agents-and-dashboards}

El servidor de agente embebido conduce el mismo ciclo de vida con sus herramientas de conducción de
Process (arrancar, detener, pausar, reanudar, abortar, comentar, instantánea, evaluar, aplicar
receta), registradas en el diario como Agent y grabadas como Agent en la corrida
([Acceso de agente](agent)). Un panel de control llega a él por los puntos de comando de la unidad:
un Botón en
`Commands.Start` se desactiva solo mientras la disponibilidad se lee falsa y una Entrada en
`Next.<Field>` prepara un valor ([El espacio de direcciones de la unidad](process-addresses));
el procedimiento mismo se prepara en la [tarjeta Corrida](#the-run-card).

## Qué no hace esta superficie {#what-this-surface-does-not-do}

No configura nada: los canales, los vínculos, los metadatos, el enclavamiento y la automatización se
editan en [Definición](process-definition); lo que una corrida aplica, graba y juzga se compone en
[Preparación](process-setup). No edita una corrida terminada: las notas posteriores a la corrida,
las anotaciones, las exportaciones, los reportes y las etiquetas de una corrida grabada son
[Históricos](histories). Y nunca dibuja una tarjeta que la estación no pueda llenar.
