Simulated
Señales sintéticas generadas en la aplicación, para pruebas, formación y construcción de paneles de control sin hardware.
El controlador Simulated produce señales sintéticas dentro de la aplicación, sin ningún equipo y sin ninguna red por medio. Es un controlador de pleno derecho, no un atajo: sus dispositivos se dan de alta, 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 como funcionarían en campo. Úselo para probar el modelo del Connector, montar paneles de control antes de que llegue el equipo, o preparar una demostración.
Dispositivo
Un dispositivo simulado no tiene campos de conexión: solo su nombre y el Intervalo de sondeo (ms) por defecto (1000 por defecto). Su URI base es simulated://<device>; el segmento del dispositivo es solo informativo, porque todo el comportamiento vive en los tags.
Descubrimiento
Descubrir no necesita ningún destino y lista el catálogo integrado: una instancia lista para añadir de cada arquetipo, con sus tags. Desmarque los canales que no quiera antes de añadirla.
| Modelo | Instancia | Canales |
|---|---|---|
| Universal Controller | UC-01 | ProcessValue (senoidal), SetPoint (consigna con escritura, 50 por defecto), 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, útiles para ejercitar todas las presentaciones de valor |
Tags
Un tag simulado no tiene ninguna dirección que escribir: el nombre del tag es el punto. Está disponible todo tipo de dato integrado de OPC UA, y los tres modos de acceso. Lo que el tag produce 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 sensato. A un tag cuyo acceso permite la escritura solo se le ofrecen las formas que aceptan una escritura, Retención de consigna y Pulso, y cambiar el acceso ajusta la forma del mismo modo.
| Tipo de señal | Produce | Tipos compatibles | Con escritura |
|---|---|---|---|
| Senoidal | Una onda suave con una ondulación ligera, sembrada desde el nombre del tag, así que tags con nombres distintos se mueven de forma distinta y un reinicio reproduce la misma curva | numéricos | no |
| Rampa | Una onda triangular (sube y luego baja), de periodo de 10 a 59 s sembrado desde el nombre del tag | numéricos | no |
| Paseo aleatorio | Ruido realista de medidor: pasos a partir del último valor con retorno a la media hacia el valor por defecto (50 cuando no se ha fijado), con un paso del 1 % del centro (0,5 como mínimo) | numéricos | no |
| Contador | Un entero que solo crece: empieza en el valor por defecto (0 cuando no se ha fijado) 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 en cada lectura | Guid | no |
| Bytes aleatorios | Una carga útil aleatoria de 8 bytes en cada lectura | ByteString | no |
| Retención de consigna | Mantiene un valor por defecto hasta que se escribe; una escritura sustituye lo que responde toda lectura siguiente | cualquiera | sí |
| Pulso | Un punto momentáneo: descansa en una línea de base, y una escritura mantiene el valor escrito durante un número declarado de segundos antes de caer sola de vuelta | cualquiera | sí |
Un tag creado sin un tipo explícito recibe un valor por defecto animado: los tags con escritura pasan a ser Retención de consigna (para que las escrituras se queden), y los tags de solo lectura reciben un generador adecuado a su tipo (numérico da Senoidal, Boolean da Booleano alterno, String da Texto enumerado, DateTime da Reloj, Guid da GUID aleatorio, ByteString da Bytes aleatorios). Pulso no es nunca el valor por defecto: un punto que devuelve un valor escrito y luego lo abandona es una elección deliberada.
Los parámetros del panel
Dos parámetros se editan directamente en la tarjeta Origen:
| Campo | Se muestra para | Significado |
|---|---|---|
| Valor por defecto | Paseo aleatorio, Contador, Retención de consigna | El centro del paseo, el valor inicial del contador, o lo que responde la consigna hasta que se escribe algo. La entrada se adapta al tipo del tag (casilla para Boolean, selector de fecha para DateTime, texto en los demás casos). |
| Estados | Texto enumerado | Lista separada por punto y coma que se va a recorrer, por ejemplo Run;Stop;Pause. Una lista en blanco o sin miembros recae en Run;Stop;Pause. |
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 través de todas las ediciones; los ejemplos sembrados los usan, y un agente los puede fijar con las herramientas de tag de la superficie 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 desde el nombre del tag (amplitud de 10 a 49 alrededor de un desplazamiento de 20 a 49), sin recorte |
period |
Senoidal | El periodo de la onda en segundos | Una frecuencia sembrada desde el nombre del tag (de 0,05 a 0,24 Hz) |
phase |
Senoidal | El desfase en grados | Sembrado desde el nombre del tag |
default |
Paseo aleatorio, Contador, Retención de consigna | El mismo valor que edita el campo Valor por defecto del panel | 50 / 0 / el valor por defecto 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 según el tipo del tag | El valor cero del tipo (la hora actual en DateTime, vacío en String) |
hold |
Pulso | Cuántos segundos dura un episodio escrito | 10 s |
warmup |
cualquiera | Segundos tras la conexión antes de que responda la primera lectura, como un instrumento que necesita estabilizarse; el bucle de sondeo absorbe la espera | ninguno |
Escrituras
- Retención de consigna acepta escrituras y responde con el valor escrito a partir de entonces. El valor retenido vive en memoria mientras el dispositivo siga conectado; no se guarda en la configuración, así que deshabilitar el dispositivo o reiniciar la aplicación devuelve el punto a su valor por defecto.
- Pulso toma una escritura como un episodio: responde con el valor escrito hasta que se agota la retención, y luego cae de vuelta a su línea de base. Una segunda escritura durante un episodio lo sustituye entero, así que mantener pulsado 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 anota en el diario técnico una vez por tag, en lugar de inundar el registro en cada sondeo.
Como en cualquier controlador, 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 ejecución. Las formas deterministas (Senoidal, Rampa, Reloj) reproducen la misma curva tras 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 por configuración programática; el panel acota el selector) hace que el tag falle todas las lecturas, con una advertencia anotada una sola vez.