Validación
La página de salud de la configuración: qué analiza la estación en los procedimientos, en la lógica, en los paneles de control y en las listas de sus servidores y brókeres, todos los hallazgos que puede reportar y cómo los redacta, qué abre una fila, la insignia de la barra y por qué aquí no se repara nada.
La página Validación lista aquello sobre lo que la estación no se puede sostener: un vínculo de canal, un enclavamiento, un campo de automatización, una expresión, un script o una condición de Logic, o un componente de panel de control que apunta a un tag, a una variable, a un procedimiento o a una dirección que la estación ya no tiene, una expresión, un script o una condición de Logic escritos de una forma que su editor rechaza, una acción de Process cuyos documentos una corrida no podría emitir tal como está configurada, y un procedimiento que el arranque de una corrida rechazaría. Es la entrada Validación del pie de la barra de navegación, se abre para una identidad con el permiso Ver Validación y responde en /validation. Es una página que se desplaza, dibujada a todo el ancho porque cada hallazgo es una frase. Es la hermana de la salud del runtime de la barra de estado: aquella dice si la estación está leyendo, esta dice si la configuración sigue resolviendo.
También lista una fila de una lista por la que la estación entrega sus datos (la lista del servidor OPC UA, el mapa de registros del servidor Modbus o la lista de publicación de un bróker MQTT) cuya fuente se eliminó: una fila así sigue en su lista y no sirve ni publica nada.
La página reporta; nunca repara. Una fila abre el editor que es dueño de la falla, sobre la entidad que la lleva, y la reparación es la edición que usted haga ahí.
La tarjeta de estado
La tarjeta de arriba es toda la respuesta de la página sobre la configuración, y el único lugar donde se anuncia una estación limpia:
| Estado | Punto | Título | Detalle |
|---|---|---|---|
| Limpia | Verde | Nada que reparar | Cada referencia de los procedimientos, la lógica, los paneles de control y lo que la estación sirve y publica resuelve, cada procedimiento arrancaría, y cada acción tiene lo que necesita para salir. |
| Hallazgos | Ámbar | N elementos por reparar ("1 elemento" para uno) | Aquí no se repara nada. Una fila abre el editor que es dueño de la falla, sobre la entidad que la lleva. |
La tarjeta lleva el único comando de la página, Volver a analizar (información emergente: "Verificar ahora otra vez la configuración entera. La lista también se actualiza sola cada vez que algo cambia."). Se atenúa mientras corre un análisis. Como un análisis que encuentra lo mismo deja la lista exactamente igual, el resultado se reporta en el registro de acciones de la barra de estado: "Análisis terminado: nada que reparar.", "Análisis terminado: N elementos por reparar." o "Error en el análisis: motivo".
Rara vez hace falta volver a analizar. El validador está siempre activo, en la estación, y vuelve a analizar por su cuenta 750 milisegundos después de cualquier ráfaga de cambios en cualquiera de las superficies que lee: los dispositivos, las líneas y los tags de Connector; los modelos de Process; los recursos; las variables, las acciones y las alarmas de Logic; los paneles de control; las plantillas de etiqueta; los diseños de reporte. La página y la insignia de la barra siguen el resultado. Un análisis que Connector atraviesa mientras mueve dispositivos hacia dentro o hacia fuera (una actualización de driver, un dispositivo que se está agregando) se repite en cuanto Connector se asienta, así que una referencia nunca se declara rota solo porque su dispositivo esté en vuelo.
También lee las tres listas por las que la estación entrega sus datos: una fila agregada, editada o eliminada en el servidor OPC UA, en el servidor Modbus o en la tarjeta Publicar de un bróker vuelve a analizar del mismo modo, y lo mismo hace la eliminación del tag, la variable, la alarma o el comando que nombra una fila.
Los grupos
Los hallazgos se agrupan por la superficie que es su dueña, en un orden fijo. Un grupo sin nada dentro no se dibuja, así que una estación con una falla de panel de control muestra un grupo.
| Grupo | Clases de hallazgo | La línea bajo el título |
|---|---|---|
| Process | Vínculos (vínculos de canal, enclavamientos, automatización), procedimientos y las ocurrencias que arman, y documentos de acción | N elementos. Vínculos de canal, enclavamientos y automatización de unidad que nombran un tag, una variable o un procedimiento que la estación ya no tiene, procedimientos que un arranque rechazaría, y acciones cuyos documentos una corrida no podría emitir tal como están configuradas. |
| Logic | Variables de expresión, acciones, alarmas | N elementos. Expresiones, scripts de acción y condiciones de alarma que leen una dirección que ya no resuelve, o escritos de una forma que su editor rechaza. |
| Paneles de control | Componentes | N elementos. Componentes cuyas propiedades apuntan a una dirección que ya no resuelve. Se dibujan, pero no leen nada. |
| Connector | Filas de la lista del servidor OPC UA, del mapa de registros del servidor Modbus y de las listas de publicación de los brókeres MQTT | N elementos. Filas de la lista del servidor OPC UA, del mapa de registros del servidor Modbus y de las listas de publicación de los brókeres MQTT cuya fuente se eliminó. Siguen en su lista, pero no sirven ni publican nada. |
Una fila
Cada fila es un hallazgo, y dice de qué trata sin abrir nada:
- Un glifo de la clase: una unidad para un vínculo de Process, una marca de impresión para los documentos de una acción, la marca de composición escrita para un procedimiento, una bandera para una ocurrencia, las marcas de variable, de acción y de alarma del árbol de Logic, la marca de panel de control para un componente.
- El nombre de la entidad, después su tipo cuando el tipo dice algo que el nombre no dice (un componente al que el integrador nunca puso nombre regresa a su clase, y la fila no dice "Indicador analógico Indicador analógico"), después "en ubicación" cuando la hay.
- El hallazgo: para un campo que nombra un destino, "Campo apunta a
referencia, que ya no existe." con la referencia en tipografía monoespaciada; para un campo que el runtime no puede usar, "Campo: qué está mal." - Una flecha a la derecha: la fila abre algo. La información emergente de la fila y su nombre accesible son la frase entera más dónde aterriza el clic ("Abrir la unidad en Process.", "Abrir la acción en Process.", "Abrir el procedimiento en Process.", "Abrir la ocurrencia en Process.", "Abrir el componente en el editor.", "Abrir la variable en Logic.", "Abrir la acción en Logic.", "Abrir la alarma en Logic.").
- Para una fila de una lista de servidor, el glifo es la marca que dibuja el árbol de Connector para lo que contiene la lista (el servidor OPC UA, el servidor Modbus, el bróker MQTT), y el clic aterriza donde termina la información emergente ("Abrir la fila en el servidor OPC UA.", "Abrir la fila en el servidor Modbus.", "Abrir la fila en la página del bróker MQTT.").
Todos los hallazgos que puede producir el análisis
La redacción de abajo es la de la propia página. Un vínculo de canal guarda la clave de su fuente, así que su fila nombra la clave que ya no se resuelve; un enclavamiento, una fuente de automatización y un retorno guardan una identidad que el operador nunca lee, así que sus filas dicen que el tag o la variable se eliminó en lugar de imprimirla.
Process: vínculos de canal
Tipo "Vínculo de canal"; nombre: el nombre del canal (o "(canal eliminado)"); ubicación: "Modelo · Unidad". Abre la pantalla Canales del modelo sobre la unidad.
| Campo | Redacción |
|---|---|
| Tag | apunta a la clave de tag guardada, que ya no existe |
| Variable | apunta a la clave de variable guardada, que ya no existe |
Process: enclavamientos
Tipo "Enclavamiento"; nombre: el nombre de la unidad; ubicación: "Modelo · Unidad". A una unidad se la juzga por lo que observa de verdad: su propia fuente, o el valor predeterminado del modelo cuando sigue al modelo. Abre la pantalla Automatización del modelo sobre la unidad.
| Campo | Redacción |
|---|---|
| Fuente | sigue al modelo, cuyo valor predeterminado no nombra ninguna fuente booleana. |
| Fuente | no hay configurada ninguna fuente booleana. |
| Fuente | hay un Tag y una Variable seleccionados a la vez. |
| Tag | el Tag al que estaba fijado se eliminó. |
| Tag | un tag DateTime no se puede convertir a booleano. (también los tags Guid y ByteString) |
| Variable | la Variable a la que estaba fijada se eliminó. |
| Variable | una variable de tipo fecha y hora no se puede convertir a booleano. (también imagen, icono y valor de color) |
Los tres primeros solo se reportan mientras el enclavamiento de paro del modelo está activado.
Process: automatización
Tipo "Automatización"; nombre: el nombre de la unidad; ubicación: "Modelo · Unidad". Solo se juzga una automatización activada: una apagada no mueve nada y se retira de la lista. Abre la pantalla Automatización del modelo sobre la unidad.
| Campo | Redacción |
|---|---|
| Comandos | no hay configurada ninguna fuente de Arranque. |
| Procedimiento | el Procedimiento fijo no está disponible. (selección fija) |
| Selector de opciones | un hallazgo de fuente (más abajo), para una fuente entera |
| Código de selector n | selecciona un Procedimiento que se eliminó. |
| Fuente del comando Arrancar, Fuente del comando Detener, y así sucesivamente, una por fuente de comando | un hallazgo de fuente, para una fuente booleana |
| Metadatos | una asignación llena un Procedimiento o un campo que se eliminó. |
| Metadatos "campo" | un hallazgo de fuente (numérico para un campo numérico; booleano, entero, real, texto o fecha para los demás), o: este campo no admite la generación automática. |
| Retorno “Lista”, Retorno “Activa”, Retorno “Código seleccionado”, Retorno “Resultado del comando” | el Tag en el que escribe se eliminó. / el Tag en el que escribe no es escribible. / requiere un Tag booleano. (Lista, Activa) / requiere un Tag entero. (Código seleccionado, Resultado del comando) |
Un hallazgo de fuente es uno de estos: "no hay configurada ninguna fuente.", "hay un Tag y una Variable seleccionados a la vez.", "el Tag que lee se eliminó.", "el Tag que lee no es legible." (el tag está desactivado o es de solo escritura), "un tag tipo no es compatible aquí.", "la Variable que lee se eliminó.", "una variable de tipo tipo no es compatible aquí.". La compatibilidad sigue el papel del campo: una fuente booleana necesita un tag o una variable booleana; una fuente entera un tipo entero; una fuente numérica un tipo entero o real; una fuente de metadatos cualquier tipo booleano, entero, real, de texto o de fecha.
Process: los procedimientos
Tipo "Procedimiento"; nombre: el nombre del procedimiento; ubicación: el nombre del modelo. El juicio pasa por la misma puerta por la que pasa el arranque de una corrida, así que un procedimiento que esta lista llama ejecutable es uno que el banco acepta. Abre la página propia del procedimiento.
| Campo | Redacción |
|---|---|
| Composición | Una evaluación juzga sobre filas registradas. Este procedimiento lleva una, pero no tiene datalog. |
| Composición | La ocurrencia 'nombre' vigila muestras registradas. Este procedimiento la arma, pero no tiene datalog. |
| Composición | No hay nada que ejecutar: este procedimiento no referencia ni datalog ni receta. |
| Composición | El modo instantáneo necesita una receta instantánea (o ninguna). Un perfil temporizado no tiene un único instante. |
| Composición | El modo controlado necesita una receta instantánea (o ninguna). Las consignas se aplican al arrancar y el estado seguro al parar. |
| Composición | El modo temporizado necesita una duración. Fije una. |
| Composición | El modo temporizado necesita una receta temporizada (o ninguna). Un conjunto instantáneo no tiene línea de tiempo. |
| Composición | El perfil de la receta (N ms) es más largo que la ventana temporizada (M ms). |
| Composición | La ocurrencia 'nombre' vigila 'Channels.canal', que el datalog de este procedimiento no registra. |
| Composición | Un rechazo sobre lo que una corrida terminada aporta a la producción, o sobre un valor de receta que no alcanza el canal al que apunta, en las palabras del editor que es su dueño. |
Process: las ocurrencias
Tipo "Ocurrencia"; nombre: el nombre de la ocurrencia; ubicación: el nombre del modelo. Solo se lee una ocurrencia que un procedimiento arma, y se lee una sola vez por muchos procedimientos que la armen, porque la condición es una y la reparación también. Abre la página propia de la ocurrencia.
| Campo | Redacción |
|---|---|
| Condición | El rechazo de la propia condición, en las palabras del editor de ocurrencias: una referencia de canal que este modelo ya no tiene, una condición que no se deja leer, una que devuelve algo que no es un booleano, o dos canales que acaban en el mismo nombre. También está escrito en inglés. |
Una condición que se sostiene sola y que aun así no puede juzgarse, porque el datalog del procedimiento deja fuera el canal que vigila, es un hallazgo sobre ese procedimiento: el datalog es la elección del procedimiento.
Process: los documentos de una acción
Tipo "Acción"; nombre: el nombre de la acción; ubicación: el nombre del modelo. El juicio es el mismo del que la página propia de la acción saca su aviso de "Necesita revisión", así que una acción que ahí se declara lista, aquí está lista. Abre la página propia de la acción.
| Campo | Redacción |
|---|---|
| Comandos | Agregue un comando: esta acción todavía no emite nada. |
| Comando n · Etiqueta (Arranque), Comando n · Reporte (Finalización), y así sucesivamente | La primera observación sobre ese comando, y después "(k más en este comando)" cuando hay más. Un comando con varias observaciones sigue siendo una sola reparación, hecha en una sola página, así que es una sola fila. |
Las observaciones que puede llevar un comando, en el orden en que se reparan:
- Seleccione al menos un veredicto de finalización. (un comando en la Finalización sin ningún veredicto marcado)
- Elija un reporte. / El reporte seleccionado ya no existe.
- Elija una plantilla de etiqueta. / La plantilla se borró o se eliminó; las correspondencias guardadas se conservan. / La plantilla global seleccionada ya no existe.
- La plantilla seleccionada todavía no tiene comandos de impresora; escríbalos o impórtelos antes de que una corrida llegue a este comando.
- No se pueden leer los marcadores de la plantilla: error
{{marker}}necesita una fuente. /{{marker}}está asignado más de una vez.{{marker}}: elija una fuente / esta fuente no está disponible en Arranque / seleccione un campo del catálogo de metadatos de este modelo / seleccione un criterio de una de las evaluaciones de este modelo / fije un ciclo explícito, contando desde cero, de 0 a n / quite los decimales de esta fuente de fecha y hora / use el formato predeterminado para esta fuente numérica / los decimales deben estar entre 0 y 9 / quite el formato numérico o de fecha de esta fuente de texto{{marker}}se eliminó de la plantilla actual; quite su correspondencia guardada.
Logic
Sin ubicación: las clases de Logic son de primer nivel. Una fila por cada dirección distinta que no resuelve, con la dirección escrita como la escribe la expresión. Solo se analizan las variables de expresión; una variable de memoria no tiene expresión que leer. Cuando toda dirección de un texto resuelve, el texto también se juzga como lo juzga su editor, y un texto que el editor rechaza es una fila, con el propio mensaje del editor como redacción: una alarma guardada como !Variables.Start dice "'Variables.Start' es el punto en sí, no su valor: como condición siempre cuenta como verdadero. Lea su valor con Variables.Start.ValueToBool()." El juicio deja fuera la evaluación de prueba del editor sobre los valores actuales, así que una fila nunca aparece y desaparece con una lectura, y un texto vacío no se lista: es una definición aún no escrita.
| Tipo | Campo | Redacción |
|---|---|---|
| Variable de expresión | Expresión | apunta a address, que ya no existe |
| Acción | Script | apunta a address, que ya no existe |
| Alarma | Condición | apunta a address, que ya no existe |
| Variable de expresión | Expresión | el mensaje con que su editor rechaza el texto (Lo que rechaza la validación) |
| Acción | Script | el mensaje con que su editor rechaza el texto (Lo que rechaza la validación) |
| Alarma | Condición | el mensaje con que su editor rechaza el texto (Lo que rechaza la validación) |
Paneles de control
Tipo: la clase del componente tal como la nombra el editor (Indicador analógico, Gráfico de líneas, Valor…); nombre: el nombre escrito para el componente, si no su rótulo, si no lo que deriva el editor; ubicación: el nombre del panel de control. Una fila por campo de dirección, así que un componente cuyo valor y cuyo color leen dos puntos eliminados son dos reparaciones.
| Campo | Redacción |
|---|---|
| Dirección, Punto de color, Serie 2 › Dirección y todos los demás campos de dirección de la clase, cada uno con la etiqueta que le da el panel de propiedades del editor (una lista anidada se lee como su ruta) | apunta a address, que ya no existe |
Solo se leen los campos de dirección, y solo un valor que se analice como una dirección con raíz y al menos un segmento: un rótulo que contiene "Process.Press 1.Temperature" es texto, no una referencia, y nunca se reporta. La misma dirección en el mismo campo es un solo hallazgo. Los sinópticos definidos en un modelo de Process se saltan: vinculan canales a través de un marcador de posición de unidad, y ninguna punta responde a esas direcciones hasta que una unidad abre el sinóptico.
Connector
Una fila de la lista del servidor OPC UA, del mapa de registros del servidor Modbus o de la lista de publicación de un bróker MQTT guarda su fuente (un tag, una variable, una alarma y, en el servidor OPC UA, también un comando de un dispositivo) por su identidad: un cambio de nombre nunca la rompe, y una eliminación deja la fila en pie, nombrando lo que perdió. Esa fila aparece aquí, la misma que su propia tabla muestra como ausente. Una fuente que la estación todavía tiene y no ofrece (un tag deshabilitado, un tag de un dispositivo deshabilitado, una variable de un tipo que ningún registro lleva) no aparece: los propios campos de la fila dicen qué la deja fuera. La fila guarda una identidad que el operador nunca lee, así que dice qué clase de fuente desapareció en lugar de mostrarla.
| Tipo | Nombre | Ubicación | Campo | Redacción |
|---|---|---|---|---|
| Nodo servido | Tag ausente, Variable ausente, Alarma ausente o Comando ausente | Servidor OPC UA | Fuente | el Tag servido se eliminó. / la Variable servida se eliminó. / la Alarma servida se eliminó. / el Comando servido se eliminó. |
| Fila del mapa de registros | el lugar de la fila tal como lo lee el mapa (su clase de registro y su registro) | Servidor Modbus | Fuente | el Tag servido se eliminó. / la Variable servida se eliminó. / la Alarma servida se eliminó. |
| Tópico publicado | el tópico de la fila | el nombre del bróker | Fuente | el Tag publicado se eliminó. / la Variable publicada se eliminó. / la Alarma publicada se eliminó. |
La página no elimina ni cambia nada, y cada servidor sigue haciendo con la fila lo que hacía: el servidor OPC UA no sirve nada por ella, el servidor Modbus responde con la excepción 04 a un cliente que lee sus registros, y el bróker conserva el último mensaje que retuvo en el tópico. La reparación se hace en la tarjeta de la fila: se elige otra fuente o se elimina la fila.
Qué abre una fila
| Clase | Abre | Dónde aterriza |
|---|---|---|
| Componente | El panel de control en modo edición (/d/{dashboard}?edit=true&focus={component}) |
Con el componente seleccionado y sus propiedades a la vista, que es donde se reescribe la dirección. Editar exige el permiso Editar los paneles de control; sin él el panel de control se abre para verlo. |
| Vínculo de canal | El espacio de trabajo de Process (/process?focus={unit}&screen=channels) |
La pantalla Canales del modelo, con la fila de esa unidad elegida y todas las carpetas por encima desplegadas. |
| Enclavamiento, Automatización | El espacio de trabajo de Process (/process?focus={unit}&screen=automation) |
La pantalla Automatización del modelo, con la fila de esa unidad elegida. |
| Documentos de una acción | El espacio de trabajo de Process (/process?focus={action}&screen=action) |
La página propia de la acción en la columna. |
| Procedimiento | El espacio de trabajo de Process (/process?focus={procedure}&screen=procedure) |
La página propia del procedimiento en la columna. |
| Ocurrencia | El espacio de trabajo de Process (/process?focus={occurrence}&screen=occurrence) |
La página propia de la ocurrencia en la columna. |
| Variable de expresión, Acción, Alarma | La página Logic (/logic?focus={id}) |
La entidad seleccionada en su editor, con su sección del espacio de direcciones desplegada. |
| Nodo servido, Fila del mapa de registros, Tópico publicado | El Connector (/connector?focus={row}) |
El servidor OPC UA, el servidor Modbus o el bróker seleccionado en el árbol, con la fila seleccionada en su tarjeta Nodos servidos, Mapa de registros o Publicar y sus campos abiertos bajo la tabla, donde se elige otra fuente o se elimina la fila. |
Abrir lo deja a usted sobre la falla; la página de destino aplica entonces sus propios permisos a la edición (Gestionar Process en las pantallas de Process, Configurar Logic en Logic, Configurar Connector en el Connector). Una entidad que ya no resuelve cuando la página llega (eliminada mientras tanto) se ignora, y la página abre donde abriría normalmente.
La insignia de la barra
La entrada Validación de la barra lleva una píldora de precaución con el número de elementos por reparar, "99+" a partir de noventa y nueve, y ninguna píldora mientras la configuración está limpia. El conteo es el del propio validador, mantenido al día en segundo plano por el mismo análisis que sigue la página, así que se mueve mientras usted edita en cualquier página, sin que esta esté abierta. Abrir esta página y volver a analizar en ella también actualizan el conteo, así que la píldora nunca muestra un número distinto del de la lista.
Qué no hace nunca la página
- No repara nada: ni revincula, ni elimina, ni renombra. Cada fila es un "abrir"; no hay otra acción en una fila, y no hay ninguna acción en lote.
- Nunca juzga el runtime: un dispositivo que no se comunica es la salud de la barra de estado, no un hallazgo de aquí. Una referencia a un tag que existe pero lee mala calidad resuelve.
- Nunca reporta una automatización desactivada, un sinóptico definido en un modelo, texto libre que parece una dirección, una variable de memoria ni una segunda observación o posterior del mismo comando de acción (el conteo dice cuántas más esperan en esa página).
- Nunca lee una ocurrencia que ningún procedimiento arma, y nunca lista dos veces la misma ocurrencia armada por muchos procedimientos que la armen: una condición es una reparación.
- Nunca analiza mientras Connector está a mitad de transición; espera y mide una sola vez.
- Es la misma lista en todas las pantallas, tanto en la ventana de la estación como en un navegador, y la misma para toda identidad que pueda abrirla: el permiso controla la página, no sus filas.
- Mientras el runtime está detenido la página cede el lugar al aviso de pausa como cualquier página; la insignia conserva su último conteo.
- Nunca elimina una fila de una lista de servidor ni cambia lo que un servidor hace con ella, y nunca lista una fuente que la estación todavía tiene pero no ofrece (un tag deshabilitado, una variable de un tipo que ningún registro lleva): eso lo dice la propia tarjeta de la fila.