Simulated

Señales sintéticas dentro de la aplicación, para probar, capacitar y construir paneles de control sin hardware.

Ver como Markdown

El driver Simulated produce señales sintéticas dentro de la aplicación, sin ningún equipo y sin ninguna red de por medio. Es un driver de primera clase, no un atajo: sus dispositivos se incorporan, se sondean y se guardan en caché por exactamente el mismo camino del runtime que el hardware real, así que los trazados, los tipos de dato, los indicadores de calidad y el comportamiento de escritura funcionan igual que en campo. Úselo para probar el modelo del Connector, construir paneles de control antes de que llegue el equipo, o preparar una demostración.

El dispositivo

Un dispositivo simulado no tiene campos de conexión: solo su nombre y el Intervalo de sondeo (ms) predeterminado (1000 al inicio). Su URI base es simulated://<dispositivo>; el segmento del dispositivo es solo informativo, porque todo el comportamiento vive en los tags.

El descubrimiento

Descubrir no necesita ningún destino y lista el catálogo integrado: una instancia lista para agregar de cada arquetipo, con sus tags. Desmarque los canales que no quiera antes de agregarla.

Modelo Instancia Canales
Universal Controller UC-01 ProcessValue (senoidal), SetPoint (consigna escribible, 50 al inicio), Output (rampa), RunStatus (Run/Stop/Pause/Fault)
Electrical Power Meter PM-01 Voltage, Current, ActivePower y Frequency (paseos aleatorios alrededor de 230, 10, 2300 y 60, sondeados a 250 ms), PowerFactor (senoidal)
Production Counter CNT-01 Count (contador Int32), Rate (paseo aleatorio alrededor de 100), Running (booleano alterno)
Status Panel STS-01 State (Run/Stop/Pause/Fault), Alarm (booleano alterno), Uptime (contador Int64)
Type Showcase SHOW-01 Un canal por cada tipo integrado de OPC UA, quince en total, útil para ejercitar todas las formas de mostrar un valor

Los tags

Un tag simulado no tiene ninguna dirección que escribir: el nombre del tag es el punto. Están disponibles todos los tipos de dato integrados de OPC UA, y los tres modos de acceso. Lo que produce el tag se elige con Tipo de señal en la tarjeta Origen; el selector ofrece solo las formas compatibles con el tipo de dato del tag, y cambiar el tipo de dato ajusta una forma incompatible a un valor razonable. A un tag cuyo acceso permite escribir solo se le ofrecen las formas que aceptan una escritura, Retención de consigna y Pulso, y cambiar el acceso ajusta la forma de la misma manera.

Tipo de señal Produce Tipos compatibles Escribible
Senoidal Una onda suave con un rizado ligero, sembrada a partir del nombre del tag, así que dos tags con nombres distintos se mueven distinto y un reinicio reproduce la misma curva numéricos no
Rampa Una onda triangular (sube y luego baja), de periodo entre 10 y 59 s sembrado a partir del nombre del tag numéricos no
Paseo aleatorio Ruido realista de un medidor: pasos desde el último valor con reversión a la media hacia el valor predeterminado (50 si no se puso ninguno), con un paso del 1 % del centro (mínimo 0.5) numéricos no
Contador Un entero que crece de forma monótona: arranca en el valor predeterminado (0 si no se puso ninguno) y suma 1 por lectura, así que el ritmo sigue al intervalo de sondeo numéricos no
Booleano alterno Un booleano que alterna cada segundo Boolean no
Texto enumerado Un texto que recorre una lista fija de estados, un paso cada 3 s String no
Reloj La hora actual, muestreada en cada lectura DateTime no
GUID aleatorio Un Guid aleatorio nuevo por lectura Guid no
Bytes aleatorios Una carga aleatoria de 8 bytes por lectura ByteString no
Retención de consigna Mantiene un valor predeterminado hasta que se escriba; una escritura reemplaza lo que contestan todas las lecturas siguientes cualquiera
Pulso Un punto momentáneo: descansa en una línea base, y una escritura mantiene el valor escrito durante un número declarado de segundos antes de caer solo cualquiera

Un tag creado sin un tipo explícito recibe un valor predeterminado con vida: los tags escribibles se vuelven Retención de consigna (para que las escrituras se queden), y los de solo lectura reciben un generador adecuado a su tipo (numérico → Senoidal, Boolean → Booleano alterno, String → Texto enumerado, DateTime → Reloj, Guid → GUID aleatorio, ByteString → Bytes aleatorios). Pulso nunca es el predeterminado: un punto que devuelve un valor escrito y después lo abandona es una decisión deliberada.

Los parámetros del panel

Dos parámetros se editan directamente en la tarjeta Origen:

Campo Se muestra en Significado
Valor predeterminado Paseo aleatorio, Contador, Retención de consigna El centro del paseo, el valor inicial del contador, o la respuesta de la consigna hasta que se escriba algo. La entrada coincide con el tipo del tag (casilla para Boolean, selector de fecha para DateTime, texto en los demás casos).
Estados Texto enumerado La lista separada por punto y coma que se recorre, por ejemplo Run;Stop;Pause. Una lista en blanco o sin miembros cae en Run;Stop;Pause.

Los parámetros avanzados de la señal

Los demás parámetros de forma viajan como argumentos de consulta en la dirección guardada del tag (por ejemplo ProcessValue?min=20&max=80&period=30). El panel no los edita, pero los conserva a lo largo de cada edición; los ejemplos sembrados los usan, y un agente los puede poner con las herramientas de tag de la superficie de acceso de agente.

Argumento Se aplica a Significado Cuando falta
min, max Senoidal La banda por la que corre la onda; la salida se recorta a ella Una banda sembrada a partir del nombre del tag (amplitud de 10 a 49 alrededor de un desplazamiento de 20 a 49), sin recortar
period Senoidal El periodo de la onda en segundos Una frecuencia sembrada a partir del nombre del tag (de 0.05 a 0.24 Hz)
phase Senoidal El desfase en grados Sembrado a partir del nombre del tag
default Paseo aleatorio, Contador, Retención de consigna El mismo valor que edita el campo Valor predeterminado del panel 50 / 0 / el predeterminado del tipo
values Texto enumerado La misma lista que edita el campo Estados del panel Run;Stop;Pause
baseline Pulso El valor en el que descansa el punto entre episodios, interpretado como el tipo del tag El valor cero del tipo (la hora actual para DateTime, vacío para String)
hold Pulso Cuántos segundos dura un episodio escrito 10 s
warmup cualquiera Segundos después de conectar antes de que conteste la primera lectura, como un instrumento que necesita estabilizarse; el lazo de sondeo absorbe la espera ninguno

Las escrituras

  • Retención de consigna acepta escrituras y contesta con el valor escrito de ahí en adelante. El valor retenido vive en memoria mientras el dispositivo siga conectado; no se guarda en la configuración, así que desactivar el dispositivo o reiniciar la aplicación devuelve el punto a su valor predeterminado.
  • Pulso toma una escritura como un episodio: contesta con el valor escrito hasta que se agota la retención, y luego cae a su línea base. Una segunda escritura durante un episodio lo reemplaza entero, así que mantener presionado un botón reinicia la retención en lugar de apilar dos.
  • Todos los demás tipos rechazan las escrituras; un intento de escritura se registra una vez por tag en lugar de inundar el diario técnico en cada sondeo.

Como con cualquier driver, el campo de escritura toma el valor de ingeniería y la cadena de conversión se deshace antes de que el valor bruto llegue a la señal.

Límites que conviene conocer

  • Los valores se sintetizan por corrida de la aplicación. Las formas deterministas (Senoidal, Rampa, Reloj) reproducen la misma curva después de un reinicio; las que llevan estado (Contador, Paseo aleatorio, Retención de consigna, Pulso) empiezan de cero.
  • Emparejar un tipo de señal con un tipo de dato incompatible (posible solo con configuración programática; el panel restringe el selector) hace que el tag falle en todas las lecturas, con una advertencia registrada una sola vez.