# Procedimientos

> Lo que el operador arranca en una unidad: la ventana de la corrida, la receta, el datalog, el conjunto de alias y la evaluación que compone, los campos que pide, las ocurrencias que arma, las acciones que emite y qué produce una corrida completada.

Un **procedimiento** es lo que el operador arranca en una unidad: una envolvente de corrida (el modo
y, para una corrida Temporizada, su duración y sus ciclos) más referencias opcionales a las
bibliotecas de Preparación del modelo. Su página se lee como la corrida que compone, una etapa por
cosa que pasa, cada una declarando qué produce la elección actual ("Corre 3 ciclos de 1 min 30 s",
"Graba 6 canales cada 500 ms"); una etapa para la que no se eligió nada se queda visible y tenue,
porque la forma de lo que hace una corrida incluye lo que no hace. Los procedimientos viven en Process >
Modelos > modelo > Preparación > **Procedimientos** y exigen el permiso **Editar recetas y
evaluaciones**. Prepararlo y arrancarlo ocurre en las filas de la unidad, en Operar
(véase [Corridas y comentarios](process-runs)).

## La carpeta Procedimientos {#the-procedures-folder}

Al seleccionar la fila **Procedimientos** se abre la página de la carpeta ("Lo que el operador arranca
en una unidad: una receta que aplicar, una evaluación que la juzgue, un datalog que registrar y los
metadatos que capturar.") con una tarjeta por procedimiento, 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 procedimientos. Agregue uno."

| Comando | Qué hace | Atenuado cuando (situación) | No se dibuja cuando (rol) |
| --- | --- | --- | --- |
| **Procedimiento** (barra de detalle, con la carpeta seleccionada; botón derecho **Agregar procedimiento**) | Agrega `Procedimiento <n>`: Instantáneo, sin referenciar nada, pidiendo solo los campos obligatorios, sin armar ni emitir nada, sin contar producción. 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 procedimiento {#the-procedures-page}

El encabezado lleva el nombre, la línea "Lo que el operador arranca en una unidad: la ventana que
recibe una corrida, las bibliotecas del modelo con las que aplica, registra, nombra y juzga, y lo
que emite.", una píldora con el modo y, para un procedimiento Temporizado, una píldora con la duración y
los ciclos ("90000 ms ×3"). Cuando la composición no valida, una nota de precaución bajo el encabezado
dice por qué (véase Validación más abajo); el borrador se guarda igual. Todos los campos se guardan
solos, y una escritura que la estación rechaza regresa el campo.

### Definición {#definition}

| Campo | Qué es | Valores / predeterminado |
| --- | --- | --- |
| **Nombre** | Cómo se llama el procedimiento en el árbol, en el selector Procedimiento de cada unidad y en el archivo de la corrida. Renombrarlo nunca cambia su código. | Texto libre; `Procedimiento <n>` al crearlo. |
| **Notas** | Texto libre para quien lo lea. | Multilínea; vacío de forma predeterminada. |

### Lo que hace una corrida {#what-a-run-does}

Cinco etapas, cada una con el icono de la biblioteca a la que echa mano, su nombre, el resultado de la
elección actual en una línea, y los campos que lo deciden. Un número dentro de una línea de resultado
(los segundos de una duración de menos de un minuto, un conteo de muestras) se escribe
en el formato de número de la estación ([Idioma y formatos](settings-localization)).

| Etapa | Campos | Valores / predeterminado | La línea de resultado |
| --- | --- | --- | --- |
| **Ventana** | **Modo**: la envolvente de la corrida. | **Instantáneo** (predeterminado): un solo tiro, aplicar, grabar una fila, juzgar una vez. **Temporizado**: una ventana acotada, repetible si se quiere. **Controlado**: abierto, acotado por Arrancar y Detener. | Instantáneo: "Aplica, registra y juzga una vez, y termina." Controlado: "Se ejecuta hasta que el operador lo detiene." |
| | **Duración (ms) \*** (solo Temporizado): la duración de la ventana. | Un número de milisegundos; una entrada negativa se guarda como 0. Obligatoria y positiva en modo Temporizado. Todos los miembros de la corrida comparten esta única ventana. | "Corre 1 min 30 s." o "Fije una duración: una ventana temporizada sin longitud no registra nada." |
| | **Número de ciclos** (solo Temporizado): cuántas veces se repite la ventana, como un solo registro continuo de corrida. | 1 o más (una entrada menor que 1 se guarda como 1); 1 de forma predeterminada. Las evaluaciones se vuelven a anclar por ciclo y los ciclos fallidos se cuentan. | "Ejecuta 3 ciclos de 1 min 30 s, 4 min 30 s en total." |
| **Aplicar** | **Receta**: la [receta](process-recipes) que se aplica. | "(ninguna)" o una receta del modelo. Una receta cuya clase no entra en el modo se lista como "`<name>` (no compatible)" y desactivada, con el motivo como información emergente ("El modo temporizado necesita una receta temporizada. Un conjunto instantáneo no tiene línea de tiempo." o "El modo `<Mode>` necesita una receta instantánea. Un perfil temporizado no tiene un único instante."). Una receta temporizada dibuja su perfil bajo la etapa, con el mismo anticipo que dibuja la página de la Receta. | "No se escribe ninguna consigna.", "Escribe 4 consignas en el arranque.", "Escribe 4 consignas en el arranque y 2 consignas a la salida.", "Gobierna 3 segmentos a lo largo de 2 min 30 s y escribe 2 consignas a la salida." |
| **Registrar** | **Datalog**: el [datalog](process-datalogs) que se graba. | "(ninguno)" o un datalog del modelo. | "No se registra nada: esta corrida no deja datalog.", "Registra 6 canales cada 500 ms.", y para una ventana Temporizada "…, unas 540 muestras por canal." |
| **Nombrar** | **Conjunto de alias**: el [conjunto de alias](process-aliases) fijado al procedimiento. | "(ninguno)" o un conjunto de alias del modelo. El conjunto se aplica a la unidad cuando el procedimiento se prepara en ella y los alias de la unidad difieren de él; el alias congelado en la corrida es el propio de la unidad. | "La unidad conserva los nombres de canal que ya tiene.", "Renombra 5 canales en la unidad cuando este procedimiento se prepara en ella." |
| **Juzgar** | **Evaluación**: la [evaluación](process-evaluations) con la que se juzga la corrida. | "(ninguna)" o una evaluación del modelo. | "No se emite veredicto: una corrida termina sin juicio.", "Juzga 4 criterios, y un No conforme Grave aborta la corrida.", "Juzga 4 criterios, y un No conforme nunca aborta la corrida." |
| | **Abortar con No conforme ≥** (se dibuja en cuanto se elige una evaluación): termina la corrida en el primer criterio NOK confirmado con esta gravedad o por encima. En una corrida cíclica este es el control de detener o continuar: un umbral termina la prueba entera en el primer ciclo que falla con esa gravedad o por encima; **(nunca)** corre todos los ciclos y solo cuenta las fallas. | **(nunca)** (predeterminado), **Leve**, **Grave**, **Crítica**. | Plegado en la línea de Juzgar de arriba. |

### Metadatos {#metadata}

Una sola tarjeta, encabezada por una píldora que cuenta los campos "pedidos en el arranque",
contiene lo que pide una corrida y las dos cosas que sirven a sus campos secuenciales.

| Control | Qué es | Valores / predeterminado |
| --- | --- | --- |
| La lista de verificación | Una casilla por campo del [catálogo de metadatos](process-metadata) del modelo, en orden de catálogo, rotulada `<name> (<kind>)`, o `<name> * (<kind>)` para un campo obligatorio. | Un campo obligatorio va marcado y bloqueado ("Los campos obligatorios los pide todo procedimiento"); los demás empiezan sin marcar. Marcar uno lo agrega a lo que piden la ventana de Arranque y la tarjeta Metadatos de un panel. Sin ningún campo en el catálogo la tarjeta dice "Todavía no hay campos en el catálogo. Agregue algunos en Metadatos del modelo." |
| **Código del procedimiento** | El código estable con el que componen los campos secuenciales que incluyen "Código del procedimiento" ("Cada campo secuencial pedido que incluya “Código del procedimiento” lee este."). Renombrar el procedimiento nunca lo cambia. | Texto libre, confirmado al salir del campo; marcador de posición "opcional hasta que se use". |
| **CONTADORES** (se dibuja cuando un campo secuencial pedido cuenta por Procedimiento o por Procedimiento y unidad) | Una fila por cada campo así: por Procedimiento, una fila rotulada "Este procedimiento"; por Procedimiento y unidad, una fila por unidad del modelo. Cada fila muestra **ÚLTIMO EMITIDO** y un **Siguiente** editable, y advierte "Puede repetir un identificador" mientras Siguiente está en el último valor emitido o por debajo. | Siguiente acepta de 0 hasta el máximo del campo; una entrada fuera de él se rechaza con "El valor Siguiente de '`<field>`' tiene que estar entre 0 y `<max>`." La ayuda bajo las filas: "Último nunca se reescribe. Bajar Siguiente o dar la vuelta después del máximo puede repetir un identificador." |

### Ocurrencias armadas durante este procedimiento {#occurrences-armed-during-this-procedure}

Una píldora cuenta las ocurrencias armadas, y la lista de verificación ofrece por nombre todas las
[ocurrencias](process-occurrences) del modelo. Una ocurrencia marcada se juzga durante las corridas de
este procedimiento sobre las filas grabadas; una ocurrencia armada **Siempre** vigila
independientemente de la marca. Sin ninguna en el modelo la tarjeta dice "Todavía no hay ocurrencias
en este modelo. Agregue algunas en Ocurrencias del modelo."

### Acciones que emite este procedimiento {#actions-this-procedure-emits}

Una píldora cuenta las acciones seleccionadas, y la lista de verificación ofrece todas las
[acciones](process-actions) del modelo en el orden de la lista, cada una con su línea de emisión
("Etiqueta en Arranque, Etiqueta y reporte en Finalización") y, en cuanto se selecciona, una
píldora **Lista** o **Revisión**. Revisión lista lo que a este procedimiento le falta para los
marcadores de la acción (un campo de metadatos que no pide, un criterio que su evaluación no declara,
un ciclo que no corre), cada uno con su remedio. El orden de emisión y el resto de la tarjeta están en
[Acciones](process-actions#how-a-procedure-selects-actions).

### Producción {#production-output}

La última tarjeta, encabezada por una píldora **Incluida** o **Excluida**, declara qué aporta una
corrida completada a los indicadores de producción de la unidad (véase
[Productividad](process-productivity)).

| Campo | Qué es | Valores / predeterminado | Efecto |
| --- | --- | --- | --- |
| **Unidad de salida** | La unidad física de la salida. | Texto libre, confirmado al salir del campo; marcador de posición "piezas, kg…"; vacío de forma predeterminada. Mientras se cuenta la salida el campo no se puede dejar en blanco: una entrada vacía se ignora. | Nombra la cantidad en todos los indicadores. |
| **Se produce en** | Qué límite de una corrida cuenta como producción. | **No contar producción** (predeterminado), **Cada corrida completada**, **Cada ciclo completado**, **Cantidad fija por corrida completada**. Un modo de conteo está desactivado hasta que se ponga la unidad de salida ("Ponga antes la unidad física de salida."); el modo por ciclo está desactivado fuera del modo Temporizado ("La finalización de un ciclo solo existe en un procedimiento temporizado."); y "No contar producción" está desactivado mientras una cantidad con nombre en vigor suma este procedimiento ("Quite antes este procedimiento de las cantidades con nombre en la pantalla Productividad."): las cantidades propias del modelo, más las de las unidades que se separaron. Una unidad que volvió a seguir al modelo conserva las cantidades que tenía, y no cuentan para nada hasta que se separe otra vez. | Leyenda: "Qué límite de una corrida cuenta como producción, y cuánto suma alcanzarlo." Efecto: "Cada corrida completada produce 1 piezas. Las instantáneas y Evaluar nunca cuentan.", "Cada ciclo completado produce 1 piezas. …", "Cada corrida completada produce 25 kg. …" o "Este procedimiento no aporta producción." Elegir un modo de conteo regresa la cantidad a 1. La cantidad del efecto se escribe en el formato de número de la estación, con los decimales que tiene, seis como máximo. |
| **Cantidad por finalización** (modo fijo) | La cantidad por lote que aporta una corrida completada. | Un número positivo; 1 de forma predeterminada. | |
| **Ritmo de referencia** (mientras se cuenta la salida) | El ritmo de salida objetivo ("Se mide contra el tiempo transcurrido, pausas y reinicios incluidos."). | Un número positivo o vacío; vacío de forma predeterminada. Sin él, la cantidad y el ritmo real se siguen calculando, pero no el porcentaje de productividad. | |
| **Periodo de referencia** (mientras se cuenta la salida) | La base de tiempo del ritmo de referencia ("Los indicadores lo normalizan a salida por hora."). | **por hora** (predeterminado), **por día**. | |

Las corridas abortadas y fallidas sellan su registro de salida con cantidad cero. Un ciclo completado
sigue contando aunque un ciclo posterior aborte la corrida que lo contiene.

## Validación {#validation}

La nota de precaución bajo el encabezado, que es también la puerta que impone el Arranque, dice una de
estas:

- "No hay nada que ejecutar: este procedimiento no referencia ni datalog ni receta."
- "Una evaluación juzga sobre filas registradas. Este procedimiento lleva una, pero no tiene datalog."
- "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 modo controlado necesita una receta instantánea (o ninguna). Las consignas se aplican al
  arrancar y el estado seguro al parar."
- "El modo temporizado necesita una receta temporizada (o ninguna). Un conjunto instantáneo no tiene
  línea de tiempo."
- "El perfil de la receta (*N* ms) es más largo que la ventana temporizada (*M* ms)."
- "El procedimiento '*nombre*' solo puede contar ciclos completados en el modo temporizado.", "El
  procedimiento '*nombre*' necesita una cantidad de salida productiva positiva y finita.", "La salida
  productiva por conteo del procedimiento '*nombre*' debe aportar exactamente una unidad por cada
  finalización.", "El procedimiento '*nombre*' necesita una unidad de medida para la salida
  productiva."
- "La ocurrencia '*nombre*' no es válida: …" para una ocurrencia activada y armada cuya condición no
  valida.
- "La ocurrencia '*nombre*' vigila 'Channels.*canal*', que el datalog de este procedimiento no
  registra." Una ocurrencia juzga sobre las columnas grabadas, así que una que vigila un canal que el
  datalog deja fuera solo podría marcar la señal como no disponible durante toda la corrida.
- "La ocurrencia '*nombre*' vigila muestras registradas. Este procedimiento la arma, pero no tiene
  datalog."

Eliminar una entrada de biblioteca referenciada degrada el procedimiento en vez de romperlo: la
referencia se vacía, y la etapa dice qué hace ahora sin ella.

## Quitar el procedimiento {#remove-procedure}

**Quitar el procedimiento** está en el grupo de peligro de la barra de detalle con el procedimiento
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 procedimiento", "Esto quita el procedimiento del modelo."). El
procedimiento sale además de toda cantidad con nombre que lo sumaba en la pantalla Productividad, en el
nivel del modelo y en el de cada unidad; una cantidad que se queda sin fuentes se va con él. Exige
Editar recetas y evaluaciones y se atenúa bajo el bloqueo de ingeniería y el runtime detenido. Las
corridas grabadas del procedimiento se quedan en Históricos.

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

- Aquí no arranca nada. Una unidad lo prepara y lo arranca en sus filas de
  [Operar](process-operate), o a través de la automatización que lo selecciona (véase
  [Automatización y el enclavamiento de paro](process-automation)).
- No contiene nada por unidad: toda unidad ejecuta la misma composición sobre sus propios vínculos.
- No ordena sus acciones ni sus ocurrencias; el orden es el del modelo.
- No lleva plantilla propia: lo que una corrida imprime o publica es de una acción.
