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.

Ver como Markdown

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 cree una con Nuevo… > Nueva variable, o con Nueva variable sobre una carpeta) para abrir su editor. 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.

La 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 ("El nombre de la variable es obligatorio.").
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 "Cambiar el nombre actualiza las 3 ubicaciones 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 "La variable cambió de nombre 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 carpeta tienen que higienizarse a segmentos distintos." Las reglas de escritura y de choque están en El espacio de direcciones.

La 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.

La 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. El registro de acciones dice "Valor escrito." El campo no es un visor; el visor es la tarjeta VALOR.

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 dos decimales
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.

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 abre la copia; 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.