Simulated

Sinais sintéticos gerados na própria aplicação, para testar, treinar e montar dashboards sem hardware.

Ver como Markdown

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.