Variables
El editor de la variable, tarjeta por tarjeta: identidad y dirección, las clases Expresión y Memoria, los tipos de salida, la tarjeta Valor en vivo, Establecer el valor, la calidad y la retención, los comandos y lo que rechaza el editor.
Una variable es un valor tipado que la estación calcula o contiene, direccionado bajo Variables por su ruta de carpetas y su nombre higienizado. Seleccione una fila de variable en la columna de Logic, o pulse Abrir en su fila de la tabla de su carpeta o de la raíz de su sección, para abrir su editor. Una variable hecha con Nuevo… > Nueva variable, o con Nueva variable sobre una carpeta, no se abre: su fila queda resaltada en esa tabla (véase Crear y copiar). El editor necesita Ver Logic para leerlo, Configurar Logic para cambiar cualquier campo, y Operar Logic para escribir un valor de memoria.
El encabezado del panel muestra la marca de la fila (una marca de expresión o de memoria), el nombre y una línea por clase: "Un valor que esta estación calcula a partir de una expresión sobre el espacio de direcciones, recalculado en cada ciclo." o "Un valor que esta estación contiene: lo escribe un script, un panel de control o usted, y se puede leer en cualquier lado por su dirección." La columna del formulario lleva la tarjeta IDENTIDAD y después el editor de EXPRESIÓN o la tarjeta MEMORIA; el riel de la derecha lleva VALOR y, para una expresión, PUNTOS REFERENCIADOS.
Identidad
| Campo | Qué es | Valores / valor inicial | Efecto |
|---|---|---|---|
| Nombre | El nombre visible; su segmento higienizado es el último nivel de la dirección. | Texto libre; una variable nueva es VariableN. |
Se confirma por el cambio de nombre seguro (más abajo). Un nombre en blanco se rechaza ("Hace falta un nombre."). |
| Línea de dirección | La dirección a la que responde la variable, repetida debajo del nombre: la raíz de la sección, los niveles de carpeta y el segmento. | De solo lectura. | Sigue al nombre conforme usted escribe; la parte de carpeta cambia únicamente con Mover a en el árbol. |
| Tipo | Cómo se produce el valor. | Expresión (al inicio) o Memoria. | Cambiar a Memoria vuelve a sembrar el valor desde el Valor inicial; cambiar a Expresión lo deja en un hueco hasta el siguiente ciclo. |
| Tipo de salida | La categoría a la que se fuerza todo resultado y toda escritura. | Booleano, Entero, Número decimal (al inicio), Texto, Fecha y hora, Imagen, Icono, Valor de color. | Cambiarlo vuelve a sembrar una variable de memoria (y guarda la semilla cuando es retentiva) o deja una variable de expresión en un hueco; la vista previa se vuelve a resolver bajo el tipo nuevo. |
| Unidad (opcional) | La unidad de ingeniería que se dibuja junto al valor. | Texto libre, vacía al inicio. | Se muestra en la tarjeta VALOR y los scripts la leen como .EngineeringUnit. |
| Descripción (opcional) | Texto libre. | Vacía al inicio. | Ninguno en la evaluación. |
El nombre y la dirección
El campo Nombre es un campo de cambio de nombre: lo que se escribe se queda local, una línea debajo del campo muestra de antemano el impacto tras una pausa corta ("Verificando las referencias…", y luego "Al renombrar se actualizan los 3 lugares que leen esta dirección.", "Ninguna referencia usa la dirección actual." o "La dirección efectiva no cambia; no hay referencias que actualizar." cuando el nombre nuevo se higieniza al mismo segmento), y Entrar o salir del campo lo confirma. La confirmación renombra la variable, reescribe todas las expresiones, los scripts, las condiciones y los vínculos de panel de control que usaban la dirección anterior, conserva el valor en vivo y los vínculos de canal (un canal se vincula por la clave estable de la variable, nunca por su nombre) e informa "Se renombró la variable y se actualizaron N referencias." Un nombre que choca en su nivel se rechaza ahí mismo: "'X' ya responde a 'Variables.X'. Los nombres archivados en una misma carpeta deben convertirse en segmentos distintos." Las reglas de escritura y de choque están en El espacio de direcciones.
Expresión
Se muestra mientras el tipo es Expresión: el editor de EXPRESIÓN con su botón Examinar… y la pista "Una sola expresión JavaScript sobre el espacio de direcciones (por ejemplo, Connector.Simulated.Pump.Flow.ValueToReal() * 0.1, Variables.Setpoint.Value). Para una salida de imagen, icono o color, devuelva una dirección Assets.Images, Assets.Icons o Assets.Colors (por ejemplo, Variables.Level.Value > 50 ? Assets.Colors.Red : Assets.Colors.Green). Escriba para autocompletar, o use Examinar… para elegir una." El texto se guarda solo con cada tecla y se valida cada medio segundo; un problema se muestra en la tarjeta VALOR. El lenguaje, la superficie de lectura y todas las reglas están en Expresiones. El texto de la expresión se conserva, pero se ignora, mientras el tipo es Memoria.
Memoria
Se muestra mientras el tipo es Memoria.
| Campo | Qué es | Valores / valor inicial | Efecto |
|---|---|---|---|
| Valor inicial | La semilla, como texto. Debajo: "Se interpreta según el tipo de salida al arrancar. Déjelo vacío para no tener valor." | Cualquier texto, vacío al inicio. | Se interpreta según el tipo de salida cuando se crea la variable, cuando cambia el tipo o el tipo de salida, y en cada arranque de una variable no retentiva. Vacío significa sin valor: la variable arranca como un hueco. Un texto que no se puede interpretar se marca en la tarjeta VALOR ("El valor inicial no se pudo interpretar como número decimal.") y siembra un hueco. |
| Retentiva: el último valor escrito sobrevive a los reinicios | Si las escrituras se guardan o no. | Apagada al inicio. | Una variable retentiva se guarda alrededor de un segundo después de que las escrituras se detienen, y nunca más tarde de cinco segundos después de la primera escritura sin guardar; detener el runtime vacía lo que quede pendiente. En el arranque siguiente, el texto retenido se interpreta bajo el tipo de salida actual; cuando ya no se puede interpretar, se usa el valor inicial en su lugar. Una variable no retentiva regresa al valor inicial al arrancar. |
Establecer el valor
El campo Establecer el valor y su botón Escribir se dibujan solo para un rol con Operar Logic, y quedan en gris con "Runtime detenido" mientras la estación está en solo lectura; el bloqueo de ingeniería no los toca. Escriba un valor y presione Escribir: el texto se interpreta según el tipo de salida; un texto que no se puede interpretar se rechaza ("No se pudo interpretar 'abc' como entero.") y no se escribe nada; un campo vacío no escribe ningún valor, lo cual devuelve la variable a un hueco. La escritura viaja por el punto único de escritura: se rechaza mientras una receta en marcha o un enclavamiento retengan la variable ("'Variables.X' está protegida contra escritura por '<quien la retiene>'."), se registra de valor anterior a valor nuevo bajo la fuente Operador, se aplica en la cola de lógica, y se marca para retención cuando la variable es retentiva. Una línea bajo el campo dice "Valor escrito." cuando el valor entró, o el motivo del rechazo (cualquiera de los rechazos de arriba), como responde la escritura de una etiqueta en el Connector. El campo no es un visor; el visor es la tarjeta VALOR.
Una variable de memoria también se puede escribir desde fuera de la estación: servida por una fila del mapa del servidor Modbus que permite escribir, recibe las escrituras de un cliente Modbus por el mismo punto único, anotadas bajo la fuente Modbus client <address>:<port>. Una variable de expresión también se puede servir, en solo lectura.
Los tipos de salida
| Tipo de salida | Lleva | Notas |
|---|---|---|
| Booleano | verdadero o falso | Se puede registrar y trazar con un canal |
| Entero | un entero de 64 bits | Se puede registrar y trazar |
| Número decimal | un real de doble precisión | Se puede registrar y trazar; el visor muestra los decimales de la estación |
| Texto | texto libre | |
| Fecha y hora | un instante | Se muestra con el formato de fecha y hora de la estación |
| Imagen | un id de recurso, como texto | Salida de presentación: la expresión devuelve una dirección Assets.Images.* |
| Icono | un glifo o un marcado SVG, como texto | Salida de presentación: devuelva una dirección Assets.Icons.* |
| Valor de color | un color hexadecimal, como texto | Salida de presentación: devuelva una dirección Assets.Colors.* |
El forzado es la misma conversión permisiva que usa el resto de la aplicación: el texto se interpreta, los números se redondean o se convierten, y lo que no se puede convertir queda sin valor. Una variable de memoria de un tipo de presentación contiene el literal que usted escriba (un id de recurso, un glifo, un hexadecimal). Las tres salidas de presentación existen para los paneles de control, donde el componente Imagen, Icono o Símbolo vinculado dibuja lo que la variable resuelva en ese momento; las direcciones que devuelven están listadas en Recursos.
La tarjeta Valor
El riel VALOR muestra el valor actual, actualizado dos veces por segundo: para un tipo escalar el visor con su unidad al lado, para Imagen la figura, para Icono el glifo a su tamaño, y para Valor de color la muestra con su hexadecimal. Un hueco se dibuja como un guion. Para una variable de expresión, la tarjeta muestra de antemano el borrador que usted está escribiendo, evaluado con los valores actuales antes de que el ciclo lo recoja; mientras la expresión no es válida, el visor se queda en un guion y el mensaje de validación aparece en la tarjeta (un choque de nombre también se reporta aquí, aunque un nombre malo nunca detiene la vista previa). Debajo de un visor escalar, la tarjeta dice "Vincule un canal a esta variable en Process > Definición > Canales para registrarla."; el vínculo se hace en la pantalla Canales de un modelo de Process.
Para una variable de expresión, la tarjeta PUNTOS REFERENCIADOS lista todas las direcciones que nombra la expresión con su lectura actual, y "?" cuando la dirección ya no resuelve, así que una entrada mala se ve de un vistazo.
La calidad
El valor de una variable es o un valor tipado o ningún valor en absoluto (un hueco). Un punto es bueno solo cuando su propio valor existe: una variable de memoria es buena en cuanto contiene un valor, y una semilla vacía es un hueco hasta la primera escritura de verdad; una variable de expresión lleva la calidad de su última evaluación, así que cuando cualquier punto referenciado falta, es malo o no tiene valor, la expresión no se evalúa y la variable se convierte en un hueco de mala calidad. Una lectura vacía nunca se vuelve cero en silencio. Los scripts leen la calidad como .State(); un canal vinculado a la variable registra el hueco como un hueco.
Usado por
La tarjeta USADO POR, al pie de la columna del formulario, lista todo lo que en la estación lee o escribe la variable, para que vea lo que depende de ella antes de renombrarla o eliminarla. Se lee cuando selecciona la variable y otra vez después de un cambio de nombre.
| Tipo | Ubicación | Nombre |
|---|---|---|
| Servidor Modbus | Vacía | La fila del mapa de registros del servidor Modbus que sirve la variable, por su clase de registro y su dirección en el manual (Registro de retención (4xxxx) 40101) |
| Servidor OPC UA | Vacía | Lo que un cliente puede hacer a través de la fila de los nodos servidos del servidor OPC UA que sirve la variable: Solo lectura o Lectura y escritura |
| Publicación MQTT | El bróker | El tópico de la fila de la tarjeta Publicar del bróker que publica la variable |
| Variable de Logic, Acción, Alarma | Vacía | La variable de expresión, la acción o la alarma cuyo texto escribe la dirección de la variable, con las carpetas en las que está archivada |
| Panel de control | El panel de control | El componente cuya propiedad de dirección nombra la variable |
La fila de un servidor guarda la variable por su identidad estable: un cambio de nombre la deja sirviendo la misma variable, y una eliminación deja la fila en pie, nombrando lo que perdió. La fila de un bróker hace lo mismo y mantiene su tópico. Mientras la búsqueda corre, la tarjeta dice "Leyendo las referencias…"; cuando nada usa la variable, "Nada en la estación usa esta variable."; cuando la búsqueda falla, "No se pudieron leer las referencias" con Intentar de nuevo, nunca una lista vacía. La tarjeta solo lee: todo rol que abre el editor la ve, también mientras la estación está bloqueada, y no ofrece ningún comando. No lista los canales de Process vinculados a la variable, que se vinculan por su clave estable.
Los comandos
| Comando | Qué hace | Gris cuando | No se dibuja cuando |
|---|---|---|---|
| Copiar | Duplica la variable en la raíz Variables con un nombre libre (Nombre (2)…) y resalta la copia en la tabla de esa raíz en lugar de abrirla (Crear y copiar); la copia tiene una clave nueva, así que todavía no hay ningún canal vinculado a ella. |
La estación está bloqueada o en solo lectura. | El rol no tiene Configurar Logic. |
| Eliminar la variable | Pregunta "¿Eliminar 'X'? Esto quita la variable. Las referencias a su dirección quedarán sin resolver. Esta acción no se puede deshacer." y después la elimina con su valor retenido. | La estación está bloqueada o en solo lectura. | El rol no tiene Configurar Logic. |
| Mover a (clic derecho) | Archiva la variable en otra carpeta o en la raíz; la dirección y todas las referencias van detrás. | La estación está bloqueada o en solo lectura. | El rol no tiene Configurar Logic. |
Una variable no tiene Activar ni Desactivar: o siempre se evalúa o siempre se contiene.
Lo que el editor rechaza
- Un nombre en blanco, o un nombre cuyo segmento ya está tomado en su nivel.
- Una expresión que no es una sola expresión JavaScript de solo lectura, que referencia un punto que no existe o a otra variable de expresión, o que falla una evaluación de prueba (los mensajes exactos están en Expresiones).
- Un valor inicial o un valor de Establecer el valor que no se puede interpretar bajo el tipo de salida, y cualquier valor que sea NaN o infinito.
- Cualquier cambio mientras la estación está bloqueada por una corrida o detenida: el campo se recarga a lo que tiene la estación y el registro de acciones dice por qué.
Lo que el editor no hace
No traza ni registra (eso lo hace un canal), no escribe tags (un script o un mando de panel de control lleva más lejos un valor de memoria), no referencia a otras variables de expresión, no guarda ningún histórico de valores, y no conserva un valor no retentivo a lo largo de un reinicio.