Variáveis

O editor de variável, cartão por cartão: identidade e endereço, os tipos Expressão e Memória, os tipos de saída, o cartão Valor ao vivo, o Definir valor, qualidade e retenção, os comandos e o que o editor recusa.

Ver como Markdown

Uma variável é um valor tipado que a estação calcula ou guarda, endereçado sob Variables pelo caminho de pastas e pelo nome higienizado dela. Selecione uma linha de variável na coluna da Logic (ou crie uma com Novo… > Nova variável, ou com Nova variável numa pasta) para abrir o editor dela. O editor precisa de Ver a lógica para ler, de Configurar a lógica para alterar qualquer campo, e de Operar a lógica para escrever um valor de memória.

O cabeçalho do painel mostra a marca da linha (uma marca de expressão ou de memória), o nome, e uma frase por tipo: "Um valor que esta estação calcula de uma expressão sobre o espaço de endereços, recalculado a cada varredura." ou "Um valor que esta estação guarda: escrito por um script, por um dashboard ou por você, e legível em toda parte pelo endereço dele." A coluna do formulário contém o cartão IDENTIDADE e então o editor de EXPRESSÃO ou o cartão MEMÓRIA; o trilho à direita contém VALOR e, numa expressão, PONTOS REFERENCIADOS.

Identidade

Campo O que é Valores / padrão Efeito
Nome O nome de exibição; o segmento higienizado dele é o último nível do endereço. Texto livre; uma variável nova é VariableN. Confirma pela renomeação segura (abaixo). Um nome em branco é recusado ("O nome da variável é obrigatório.").
Linha do endereço O endereço pelo qual a variável responde, ecoado sob o nome: a raiz da seção, os níveis de pasta, o segmento. Somente leitura. Acompanha o nome enquanto você digita; a parte de pasta muda apenas pelo Mover para da árvore.
Tipo Como o valor é produzido. Expressão (padrão) ou Memória. Trocar para Memória ressemeia o valor a partir do Valor inicial; trocar para Expressão o limpa até virar uma lacuna, até a próxima varredura.
Tipo de saída A categoria para a qual todo resultado ou escrita é convertido. Booleano, Inteiro, Número decimal (padrão), Texto, Data e hora, Imagem, Ícone, Cor. Mudá-lo ressemeia uma variável de memória (e persiste a semente quando ela é retentiva) ou limpa uma variável de expressão até virar uma lacuna; a prévia resolve de novo sob o tipo novo.
Unidade (opcional) A unidade de engenharia desenhada ao lado do valor. Texto livre, vazia por padrão. Mostrada no cartão VALOR e legível em scripts como .EngineeringUnit.
Descrição (opcional) Texto livre. Vazia por padrão. Nenhum na avaliação.

Nome e endereço

O campo Nome é um campo de renomeação: digitar fica local, uma linha abaixo do campo mostra a prévia do impacto depois de uma pausa curta ("Conferindo referências…", depois "Renomear atualiza os 3 lugares que leem este endereço.", "Nenhuma referência usa o endereço atual.", ou "O endereço efetivo não muda; nenhuma referência precisa ser atualizada." quando o nome novo higieniza para o mesmo segmento), e Enter ou sair do campo confirma. A confirmação renomeia a variável, reescreve toda expressão, script, condição e vínculo de dashboard que usava o endereço antigo, mantém o valor ao vivo e os vínculos de canal (um canal vincula pela chave estável da variável, nunca pelo nome dela) e relata "Variável renomeada e N referências atualizadas." Um nome que colide no nível dele é recusado no lugar: "'X' já responde por 'Variables.X'. Nomes arquivados numa pasta precisam higienizar para segmentos distintos." As regras de escrita e de colisão estão em O espaço de endereços.

Expressão

Mostrada enquanto o tipo é Expressão: o editor de EXPRESSÃO com o botão Procurar… e a dica "Uma única expressão JavaScript sobre o espaço de endereços (por exemplo Connector.Simulated.Pump.Flow.ValueToReal() * 0.1, Variables.Setpoint.Value). Para uma saída Imagem/Ícone/Cor, devolva um endereço Assets.Images, Assets.Icons ou Assets.Colors (por exemplo Variables.Level.Value > 50 ? Assets.Colors.Red : Assets.Colors.Green). Digite para completar automaticamente, ou use Procurar… para escolher um." O texto salva sozinho a cada tecla e é validado a cada meio segundo; um problema aparece no cartão VALOR. A linguagem, a superfície de leitura e todas as regras estão em Expressões. O texto da expressão é mantido, mas ignorado, enquanto o tipo é Memória.

Memória

Mostrado enquanto o tipo é Memória.

Campo O que é Valores / padrão Efeito
Valor inicial A semente, como texto. Abaixo dele: "Interpretado conforme o tipo de saída na inicialização. Deixe vazio para nenhum valor." Qualquer texto, vazio por padrão. Interpretado conforme o tipo de saída quando a variável é criada, quando o tipo ou o tipo de saída muda, e a cada início de uma variável não retentiva. Vazio significa nenhum valor: a variável começa como lacuna. Um texto que não é interpretado é sinalizado no cartão VALOR ("Não foi possível interpretar o valor inicial como número decimal.") e semeia uma lacuna.
Retentiva: o último valor escrito sobrevive a reinícios Se as escritas são persistidas. Desligada por padrão. Uma variável retentiva é persistida cerca de um segundo depois de as escritas pararem, e nunca mais de cinco segundos depois da primeira escrita não persistida; parar o runtime descarrega o que está pendente. No início seguinte, o texto retido é interpretado sob o tipo de saída atual; quando ele não é mais interpretável, o valor inicial é usado no lugar. Uma variável não retentiva volta ao valor inicial no boot.

Definir valor

O campo Definir valor e o botão Escrever dele são desenhados só para um papel com Operar a lógica, e ficam esmaecidos com "Runtime parado" enquanto a estação está em somente leitura; a trava de engenharia não os toca. Digite um valor e pressione Escrever: o texto é interpretado conforme o tipo de saída; um texto que não é interpretado é recusado ("Não foi possível interpretar 'abc' como inteiro.") e nada é escrito; um campo vazio escreve nenhum valor, o que limpa a variável de volta para uma lacuna. A escrita pega o funil único: ela é recusada enquanto uma receita em execução ou um intertravamento segura a variável ("'Variables.X' está protegida contra escrita por '<holder>'."), registrada no diário como valor antigo para valor novo sob a origem Operador, aplicada na fila da lógica e marcada para retenção quando a variável é retentiva. O feed diz "Valor escrito." O campo não é uma leitura; o cartão VALOR é.

Tipos de saída

Tipo de saída Carrega Notas
Booleano verdadeiro ou falso Gravável e plotável por um canal
Inteiro um inteiro de 64 bits Gravável e plotável
Número decimal um real de precisão dupla Gravável e plotável; a leitura mostra duas decimais
Texto texto livre
Data e hora um instante Mostrado no formato de data e hora da estação
Imagem um id de ativo, como texto Saída de apresentação: a expressão devolve um endereço Assets.Images.*
Ícone um glifo ou marcação SVG, como texto Saída de apresentação: devolva um endereço Assets.Icons.*
Cor uma cor hexadecimal, como texto Saída de apresentação: devolva um endereço Assets.Colors.*

A conversão é a mesma conversão permissiva que o resto da aplicação usa: texto é interpretado, números arredondam ou convertem, e o que não converte vira nenhum valor. Uma variável de memória de um tipo de apresentação guarda o literal que você escreve (um id de ativo, um glifo, um hexadecimal). As três saídas de apresentação existem para os dashboards, em que o componente Imagem, Ícone ou Símbolo vinculado desenha o que a variável resolve no momento; os endereços que elas devolvem estão listados em Ativos.

O cartão Valor

O trilho VALOR mostra o valor atual atualizado duas vezes por segundo: num tipo escalar, a leitura com a unidade ao lado; em Imagem, a figura; em Ícone, o glifo no tamanho; em Cor, a amostra com o hexadecimal dela. Uma lacuna é desenhada como um traço. Numa variável de expressão, o cartão mostra a prévia do rascunho que você está digitando, avaliado com os valores atuais antes de a varredura o assumir; enquanto a expressão está inválida, a leitura fica como traço e a mensagem de validação aparece no cartão (uma colisão de nome também é relatada aqui, embora um nome ruim nunca pare a prévia). Sob uma leitura escalar, o cartão diz "Vincule um canal a esta variável na página Aquisição para gravá-la."; o vínculo é feito na tela Canais de um modelo do Process.

Numa variável de expressão, o cartão PONTOS REFERENCIADOS lista todo endereço que a expressão nomeia com a leitura atual dele, e "?" quando o endereço não resolve mais, então uma entrada Ruim fica visível de relance.

Qualidade

O valor de uma variável é um valor tipado ou nenhum valor (uma lacuna). Um ponto só é Bom quando o valor dele existe: uma variável de memória é Boa assim que guarda um valor, e uma semente vazia é uma lacuna até a primeira escrita de verdade; uma variável de expressão carrega a qualidade da última avaliação dela, então, quando qualquer ponto referenciado está ausente, Ruim ou sem valor, a expressão não é avaliada e a variável vira uma lacuna de qualidade ruim. Uma leitura vazia nunca vira zero em silêncio. Os scripts leem a qualidade como .State(); um canal vinculado à variável grava a lacuna como lacuna.

Comandos

Comando O que faz Esmaecido quando Não aparece quando
Copiar Duplica a variável na raiz Variáveis, com um nome livre (Nome (2)…), e abre a cópia; a cópia tem chave nova, então nenhum canal está vinculado a ela ainda. A estação está travada ou em somente leitura. O papel não tem Configurar a lógica.
Excluir variável Pergunta "Excluir 'X'? Isso remove a variável. As referências ao endereço dela ficarão sem resolução. Isso não pode ser desfeito." e então a exclui, com o valor retido dela. A estação está travada ou em somente leitura. O papel não tem Configurar a lógica.
Mover para (botão direito) Arquiva a variável em outra pasta ou na raiz; o endereço e toda referência acompanham. A estação está travada ou em somente leitura. O papel não tem Configurar a lógica.

Uma variável não tem Habilitar nem Desabilitar: ela é sempre avaliada ou sempre mantida.

O que o editor recusa

  • Um nome em branco, ou um nome cujo segmento já está ocupado no nível dele.
  • Uma expressão que não é uma expressão JavaScript única e somente leitura, que referencia um ponto que não existe ou outra variável de expressão, ou que falha numa avaliação de teste (as mensagens exatas estão em Expressões).
  • Um valor inicial ou um Definir valor que não é interpretado sob o tipo de saída, e qualquer valor que seja NaN ou infinito.
  • Qualquer mudança enquanto a estação está travada por uma execução ou parada: o campo recarrega para o que a estação guarda e o feed diz por quê.

O que o editor não faz

Ele não plota nem grava (um canal faz isso), não escreve tags (um script ou um controle de dashboard leva um valor de memória adiante), não referencia outras variáveis de expressão, não guarda histórico de valores, e não persiste um valor não retentivo entre reinícios.