Simulated
Sinais sintéticos gerados na própria aplicação, para testar, treinar e montar dashboards sem hardware.
O driver Simulated produz sinais sintéticos dentro da aplicação, sem nenhum equipamento e sem nenhuma rede envolvida. Ele é um driver de primeira classe, não um atalho: os dispositivos dele são integrados, lidos ciclicamente e cacheados pelo mesmo caminho de runtime do hardware de verdade, então gráficos, tipos de dado, indicadores de qualidade e comportamento de escrita funcionam como funcionariam em campo. Use-o para experimentar o modelo do Connector, montar dashboards antes de o equipamento chegar, ou preparar uma demonstração.
Dispositivo
Um dispositivo simulado não tem campos de conexão: só o nome dele e o
Intervalo de leitura (ms) padrão (1000 por padrão). O Base URI dele é
simulated://<device>; o segmento do dispositivo é apenas informativo, porque todo
comportamento vive nas tags.
Descoberta
O Descobrir não precisa de alvo e lista o catálogo embutido: uma instância pronta para adicionar de cada arquétipo, tags incluídas. Desmarque os canais que você não quiser antes de adicionar.
| Modelo | Instância | Canais |
|---|---|---|
| Universal Controller | UC-01 | ProcessValue (senoide), SetPoint (setpoint gravável, padrão 50), Output (rampa), RunStatus (Run/Stop/Pause/Fault) |
| Electrical Power Meter | PM-01 | Voltage, Current, ActivePower e Frequency (caminhadas aleatórias em torno de 230, 10, 2300 e 60, lidas a cada 250 ms), PowerFactor (senoide) |
| Production Counter | CNT-01 | Count (contador Int32), Rate (caminhada aleatória em torno de 100), Running (booleano que alterna) |
| Status Panel | STS-01 | State (Run/Stop/Pause/Fault), Alarm (booleano que alterna), Uptime (contador Int64) |
| Type Showcase | SHOW-01 | Um canal por tipo embutido do OPC UA, quinze ao todo, úteis para exercitar toda exibição de valor |
Tags
Uma tag simulada não tem endereço a digitar: o nome da tag é o ponto. Todo tipo de dado embutido do OPC UA está disponível, e os três modos de acesso também. O que a tag produz é escolhido no Tipo de sinal, no cartão Origem; o seletor oferece só as formas compatíveis com o tipo de dado da tag, e mudar o tipo de dado ajusta uma forma incompatível para um padrão sensato. Uma tag cujo acesso permite escrita recebe só as formas que aceitam escrita, Setpoint mantido e Pulso, e mudar o acesso ajusta a forma do mesmo jeito.
| Tipo de sinal | Produz | Tipos compatíveis | Gravável |
|---|---|---|---|
| Senoide | Uma onda suave com uma ondulação leve, semeada pelo nome da tag, então tags com nomes diferentes se movem de forma diferente e um reinício reproduz a mesma curva | numéricos | não |
| Rampa | Uma onda triangular (sobe e depois desce), período de 10 a 59 s semeado pelo nome da tag | numéricos | não |
| Passeio aleatório | Ruído realista de medidor: passos a partir do último valor com reversão à média em direção ao valor padrão (50 quando não definido), com passo de 1% do centro (no mínimo 0,5) | numéricos | não |
| Contador | Um inteiro que só cresce: começa no valor padrão (0 quando não definido) e soma 1 a cada leitura, então a taxa acompanha o intervalo de leitura | numéricos | não |
| Booleano alternado | Um booleano que alterna a cada segundo | Boolean | não |
| Texto de enumeração | Um texto que percorre uma lista fixa de estados, um passo a cada 3 s | String | não |
| Relógio | A hora atual, amostrada a cada leitura | DateTime | não |
| GUID aleatório | Um Guid aleatório novo a cada leitura | Guid | não |
| Bytes aleatórios | Um payload aleatório de 8 bytes a cada leitura | ByteString | não |
| Setpoint mantido | Mantém um valor padrão até ser escrito; uma escrita substitui o que toda leitura seguinte responde | qualquer um | sim |
| Pulso | Um ponto momentâneo: descansa numa linha de base, e uma escrita mantém o valor escrito por um número declarado de segundos antes de cair de volta sozinho | qualquer um | sim |
Uma tag criada sem tipo explícito recebe um padrão animado: tags graváveis viram Setpoint mantido (para que as escritas fiquem), e tags somente leitura recebem um gerador adequado ao tipo (numérico vira Senoide, Boolean vira Booleano alternado, String vira Texto de enumeração, DateTime vira Relógio, Guid vira GUID aleatório, ByteString vira Bytes aleatórios). O Pulso nunca é padrão: um ponto que devolve um valor escrito e depois o abandona é uma escolha deliberada.
Parâmetros no painel
Dois parâmetros são editados diretamente no cartão Origem:
| Campo | Mostrado para | Significado |
|---|---|---|
| Valor padrão | Passeio aleatório, Contador, Setpoint mantido | O centro da caminhada, o valor inicial do contador, ou a resposta do setpoint até algo ser escrito. A entrada acompanha o tipo da tag (caixa de seleção em booleano, seletor de data em DateTime, texto nos demais casos). |
| Estados | Texto de enumeração | Lista separada por ponto e vírgula a percorrer, por exemplo Run;Stop;Pause. Uma lista em branco ou sem membros recai em Run;Stop;Pause. |
Parâmetros avançados do sinal
Os demais parâmetros de forma viajam como argumentos de consulta no endereço guardado da
tag (por exemplo ProcessValue?min=20&max=80&period=30). O painel não os edita, mas os
preserva em toda edição; os exemplos semeados os usam, e um agente pode defini-los pelas
ferramentas de tag na superfície de agente.
| Argumento | Aplica-se a | Significado | Quando ausente |
|---|---|---|---|
min, max |
Senoide | A faixa em que a onda corre; a saída é aparada nela | Uma faixa semeada pelo nome da tag (amplitude de 10 a 49 em torno de um deslocamento de 20 a 49), sem aparo |
period |
Senoide | Período da onda em segundos | Uma frequência semeada pelo nome da tag (0,05 a 0,24 Hz) |
phase |
Senoide | Deslocamento de fase em graus | Semeado pelo nome da tag |
default |
Passeio aleatório, Contador, Setpoint mantido | O mesmo valor que o campo Valor padrão do painel edita | 50 / 0 / padrão do tipo |
values |
Texto de enumeração | A mesma lista que o campo Estados do painel edita | Run;Stop;Pause |
baseline |
Pulso | O valor em que o ponto descansa entre episódios, interpretado como o tipo da tag | O valor zero do tipo (a hora atual em DateTime, vazio em String) |
hold |
Pulso | Quantos segundos dura um episódio escrito | 10 s |
warmup |
qualquer um | Segundos depois de conectar antes de a primeira leitura responder, como um instrumento que precisa estabilizar; o laço de leitura absorve a espera | nenhum |
Escritas
- O Setpoint mantido aceita escritas e responde com o valor escrito dali em diante. O valor mantido vive em memória enquanto o dispositivo continuar conectado; ele não é guardado na configuração, então desabilitar o dispositivo ou reiniciar a aplicação devolve o ponto ao padrão dele.
- O Pulso recebe uma escrita como um episódio: ele responde com o valor escrito até a retenção acabar e então cai de volta na linha de base. Uma segunda escrita durante um episódio o substitui por inteiro, então segurar um botão reinicia a retenção em vez de empilhar duas.
- Todo outro tipo recusa escritas; uma escrita tentada é registrada uma vez por tag, em vez de inundar o log a cada leitura.
Como em qualquer driver, o campo de escrita recebe o valor de engenharia e a cadeia de valor é revertida antes de o valor bruto chegar ao sinal.
Limites que vale conhecer
- Os valores são sintetizados por execução. Formas determinísticas (Senoide, Rampa, Relógio) reproduzem a mesma curva depois de um reinício; as que guardam estado (Contador, Passeio aleatório, Setpoint mantido, Pulso) recomeçam.
- Combinar um tipo de sinal com um tipo de dado incompatível (possível só por configuração programática; o painel restringe o seletor) faz a tag falhar em toda leitura, com um aviso registrado uma vez.