Logic

La página Logic, su columna Espacio de direcciones, las carpetas, la barra de comandos, el ciclo de la lógica y el punto único de escritura que hay detrás de todos los paneles, y los tres permisos que deciden lo que dibuja la página.

Ver como Markdown

Logic es la tercera entrada de la barra de navegación. Se abre para cualquier rol que tenga Ver Logic, y su cabecera se lee "Defina variables (valores derivados o escribibles) y acciones (scripts que las escriben), compuestas sobre el espacio de direcciones." Es una página de maestro y detalle (cómo funcionan las páginas): a la izquierda una columna encabezada Espacio de direcciones, y a la derecha una barra de comandos y un panel de detalle. Todo lo que se edita aquí se guarda solo mientras se escribe; en la página no hay ningún botón Guardar.

En esta área

Página Qué cubre
El espacio de direcciones Las siete raíces reservadas, cómo se escribe y se sanea una dirección, el cuadro de filtro y las tres formas de introducir una dirección.
Variables El editor de variables: identidad y dirección, las clases Expresión y Memoria, la tarjeta Valor, Fijar el valor.
Expresiones El lenguaje de expresiones, la superficie de lectura de un punto, las reglas que impone el evaluador, el editor de scripts.
Acciones El editor de acciones, lo que un script puede escribir, todos los mensajes de validación, Ejecutar y Habilitar/Deshabilitar.
Disparadores El editor de disparadores y el programador por intervalos.
Alarmas El editor de alarmas, la máquina de estados, el aviso, Reconocer y Reconocer todas.
De otras páginas Las raíces Sistema, Servidor, Connector y Process, el panel de un punto, y el aviso que nombra la página que las edita.

La raíz Recursos de esa misma columna es un grupo propio: Recursos cubre Imágenes, Iconos, Colores, Símbolos y Tipos de trazo.

La columna Espacio de direcciones

La columna lista las raíces del espacio de direcciones bajo dos rótulos. Definido aquí contiene lo que esta página crea y edita: Variables de Logic, Alarmas, Acciones, Disparadores y Recursos. De otras páginas contiene lo que solo muestra: Sistema, Servidor, Connector y Process. Todas las raíces del primer rótulo llevan un recuento (Variables de Logic y Alarmas cuentan sus definiciones, Acciones y Disparadores las suyas, y Recursos la suma de sus cinco categorías), y la raíz Alarmas, cada carpeta de alarmas y cada fila de alarma llevan un punto de color con la peor prioridad que contienen que esté activa o a la espera de reconocimiento; el punto se limpia en cuanto se responde a la alarma.

El árbol es perezoso: una rama se carga cuando se despliega. En el árbol no se dibujan nunca valores en vivo; los muestra el panel de detalle del nodo seleccionado, refrescados dos veces por segundo.

Control Qué hace
Filtrar… Estrecha el árbol a las filas cuyo nombre contiene el texto, sin distinguir mayúsculas de minúsculas. Una carpeta sobrevive cuando cualquier descendiente coincide, y se abre hasta sus coincidencias; la raíz Recursos se estrecha a las categorías cuyo nombre coincide, o llega entera cuando solo coincide su propio nombre; una raíz del espacio de direcciones cuyo propio nombre coincide sigue listada y carga su rama al desplegarla, mientras que las secciones Acciones y Disparadores listan solo las filas que coinciden.
Nuevo… (pie de la columna) Abre el menú de creación: Nueva variable, Nueva acción, Nuevo disparador, Nueva alarma, y luego Nueva carpeta con un destino por sección (Variables de Logic, Alarmas, Acciones, Disparadores). Todo lo que se hace aquí aterriza en la raíz de su sección con el primer nombre libre de las series Variable1, Action1, Trigger1, Alarm1 o Folder1, y se abre para editarlo. Se dibuja solo para un rol con Configurar Logic; se pone en gris con el motivo mientras la estación está bloqueada.
Desplegar todo / Contraer todo Abrir todas las ramas (cargando cada nivel al abrirlo) o cerrarlo todo hasta las raíces.
Clic derecho Sobre una raíz de sección, una de sus carpetas o una fila de definición: selecciona la fila y abre su menú (abajo). En un nodo de otra página no se abre nada.

El menú del clic derecho lleva, según la fila y el rol: Nueva variable / Nueva acción / Nuevo disparador / Nueva alarma (en la carpeta o la raíz donde se pulsó), Nueva carpeta (no se ofrece en una carpeta que ya está tres niveles adentro), Reconocer (filas de alarma, con Operar Logic), Mover a (un submenú con la raíz de la sección y todas las carpetas en las que se puede archivar la fila), Copiar, Eliminar, y en una carpeta Renombrar la carpeta y Quitar la carpeta. Un rol sin Configurar Logic no ve ningún menú, salvo la entrada Reconocer de una fila de alarma cuando tiene Operar Logic.

El área de detalle está vacía hasta que se selecciona algo: "Seleccione un nodo para inspeccionarlo: las variables, las acciones, los disparadores y las alarmas abren su editor. Cree uno con Nuevo."

La barra de comandos

La barra dibuja los verbos del nodo seleccionado. Lo que el rol nunca permite no se dibuja; lo que la situación rechaza ahora mismo sigue dibujado, en gris, con el motivo en su información emergente: "La configuración está bloqueada mientras una unidad está en marcha." durante una operación de ingeniería, "Runtime detenido" mientras la estación corre de solo lectura.

Selección Grupo inicial Grupo final (de peligro)
Una de sus carpetas Nueva variable / acción / disparador / alarma (la clase que contiene su sección), Nueva carpeta (en gris con "Esta carpeta ya está a la profundidad máxima a la que se anidan las carpetas." en el tope de profundidad), Renombrar la carpeta Quitar la carpeta
Una variable Copiar Eliminar la variable
Una acción Ejecutar, Habilitar o Deshabilitar, Copiar Eliminar la acción
Un disparador Habilitar o Deshabilitar, Copiar Eliminar el disparador
Una alarma Reconocer, Habilitar o Deshabilitar, Copiar Eliminar la alarma
La raíz Alarmas Reconocer todas
Recursos, Imágenes Importar imagen…
Recursos, Iconos Nuevo icono de usuario
Recursos, Colores Nuevo color
Recursos, Símbolos Nuevo símbolo de usuario, Importar símbolo…, Copiar la instrucción para el chat
Un nodo de Sistema, Servidor, Connector o Process El aviso de que se edita en otro sitio y su botón Abrir

Copiar duplica la definición seleccionada en la raíz de su sección, con el nombre propio del original cuando está libre y si no Nombre (2), Nombre (3) y así, y abre la copia para editarla; una alarma copiada empieza en reposo, un disparador copiado empieza sin programar, y una acción copiada no tiene ninguna ejecución anotada. Habilitar y Deshabilitar cambian la bandera Habilitado de la definición por el mismo guardado automático que cualquier campo. Todo Eliminar pregunta primero ("¿Eliminar 'X'? … Esta acción no se puede deshacer.") e informa "Eliminado." en el registro de acciones; eliminar una variable o una alarma deja sin resolver todas las expresiones, los scripts, las condiciones y los vínculos de panel de control que nombraban su dirección, que es lo que lista Validación.

Carpetas

Cada una de las cuatro secciones se puede organizar en carpetas. Una carpeta pertenece a una sección y contiene solo los elementos de esa sección; se anida tres niveles como mucho. Una carpeta es organización y nada más: no tiene permiso, ni evaluación, ni estado.

En Variables de Logic y en Alarmas, la cadena de carpetas compone la dirección: una variable en Forno se lee Variables.Forno.Setpoint, y una en su subcarpeta Zona1 se lee Variables.Forno.Zona1.Setpoint. Un nivel de una sección es un espacio de nombres de un solo segmento compartido por sus carpetas y sus definiciones: dos carpetas pueden contener cada una un Setpoint, pero nada archivado en el mismo nivel puede sanearse hasta el mismo segmento, y el editor rechaza un nombre así mientras se escribe, nombrando la dirección ya ocupada. Las Acciones y los Disparadores se referencian por identidad, así que sus carpetas organizan solo el árbol y sus paneles muestran una línea de ubicación en lugar de una dirección.

Comando Qué pasa
Nueva carpeta Crea una carpeta vacía llamada FolderN y abre su campo de nombre en la fila del árbol; dejar el campo vacío o sin cambiar conserva ese nombre.
Renombrar la carpeta Abre el campo de nombre en la fila. Todas las direcciones que hay bajo la carpeta se mueven con ella, todas las referencias se reescriben, y el registro de acciones dice cuántas ("Carpeta renombrada; 3 referencias actualizadas.").
Mover a Archiva una carpeta o una definición bajo otra carpeta de la misma sección, o de vuelta en la raíz de la sección; las direcciones y las referencias van detrás. La lista ofrece solo los destinos legales: nunca la propia carpeta, ni una de sus subcarpetas, ni otra sección, ni un nivel en el que sus subcarpetas pasarían el tope de profundidad.
Quitar la carpeta Pregunta primero, declarando qué se mueve: "Sus 3 elementos se mueven a Variables de Logic; no se elimina nada. Las referencias a las direcciones que se mueven se actualizan." Los elementos y las subcarpetas se rearchivan un nivel más arriba; quitarla se rechaza cuando dos de ellos chocarían en el destino.

El ciclo de la lógica y la cola

Un ciclo de la lógica corre en el runtime cada 100 ms sobre una única cola secuencial: evalúa todas las variables de expresión y después todas las condiciones de alarma habilitadas, en ese orden, de modo que una condición lee los valores de variable de ese mismo ciclo. Las ejecuciones de acción, las escrituras de memoria, las escrituras de tag y los reconocimientos viajan por la misma cola, así que un script nunca se intercala con un ciclo ni con otro script. Un análisis aparte, también cada 100 ms, lanza a la cola los disparadores que tocan. Los consumidores (los paneles de control, los canales, esta página) leen el estado publicado; nada de esta página dispara una evaluación a mano.

Escribir valores

Toda escritura pasa por un punto único, la haya empezado quien la haya empezado: la asignación de un script o Write(...), el campo Fijar el valor de una variable de memoria, un mando de un panel de control, una receta de Process, el agente, o un cliente OPC UA externo escribiendo un nodo público. El punto único rechaza un valor que no es finito o que no se puede convertir al tipo del destino, rechaza un origen que retienen una receta en marcha o un enclavamiento (nombrando a quien lo retiene), anota la escritura en el diario como valor antiguo a valor nuevo bajo su origen (Operador, MCP, el ensayo) y la aplica en la cola de la lógica. Una escritura cuyo origen es una acción es la excepción: va solo a la captura detallada, nunca a la consola de Eventos, porque un script que escribe en cada ciclo produce valores por millares y sepultaría bajo ellos las noticias de la estación. Lo que la consola lleva de una acción son sus fallos. Una escritura de tag toma el valor de ingeniería y deshace la cadena de conversión del tag hasta el valor bruto que acepta el dispositivo. Los detalles están en Variables y en Acciones.

Permisos y bloqueos

Permiso Qué permite aquí
Ver Logic Abrir la página y leer todo lo que hay en ella, valores en vivo incluidos.
Configurar Logic Crear, editar, renombrar, mover, copiar, habilitar, deshabilitar y eliminar variables, acciones, disparadores, alarmas y carpetas, y mantener la biblioteca de recursos.
Operar Logic Escribir un valor de memoria, ejecutar una acción y reconocer alarmas, aquí, en los paneles de control y en la página Eventos.

Un rol con solo Ver Logic lee la página entera: los editores quedan inertes bajo una nota ("Su rol puede ver Logic pero no configurarlo (variables, acciones, disparadores, alarmas y recursos).") y no se dibuja ningún verbo de configuración ni de operación. Un rol con Operar pero sin Configurar mantiene vivos Ejecutar, Reconocer, Reconocer todas y Fijar el valor. Mientras una unidad de Process retiene la estación, la página muestra el aviso del bloqueo de ingeniería y todos los verbos de configuración y los campos del editor quedan en gris; Ejecutar, Reconocer y Fijar el valor siguen disponibles. Mientras el runtime está detenido, tanto configurar como operar se rechazan con "Runtime detenido"; el árbol y los paneles se siguen leyendo pero no llevan datos en vivo. El catálogo de permisos está en Permisos.

Lo que la página no hace

No hay Guardar y no hay Deshacer: una pulsación de tecla es un cambio guardado (el registro de acciones dice "Guardado."), y un guardado rechazado recarga el campo a lo que tiene la estación. Las definiciones que el agente crea o elimina con sus propias herramientas no refrescan solas una columna abierta; la rama se vuelve a leer la próxima vez que esta página cree, copie o elimine en esa sección. El histórico de alarmas, la consola de Eventos y los paneles de control viven en sus propias páginas.