O espaço de endereços

As sete raízes reservadas sob as quais todo ponto vive, como um endereço é escrito e higienizado, onde um ponto termina e um membro começa, o que a caixa de filtro reduz, e as três maneiras de digitar um endereço num editor.

Ver como Markdown

Todo ponto que uma expressão, um script, um vínculo de dashboard ou uma ferramenta de agente pode nomear vive sob uma de sete raízes reservadas. Os seus próprios nomes sempre vivem sob uma raiz, então eles nunca colidem com as raízes em si. A coluna da página Logic desenha as mesmas raízes, separadas sob duas legendas, e o que a árvore mostra é exatamente o que você digita: o endereço de uma linha é o texto que uma expressão usa.

As sete raízes

Raiz O que contém Legenda na coluna Editada
System Quatro diagnósticos que a aplicação publica sobre si mesma De outras páginas Em lugar nenhum
Server Quatro diagnósticos do servidor OPC UA embutido De outras páginas Em Configurações
Connector A árvore ao vivo de driver, pasta, dispositivo e tag De outras páginas Na página Connector
Variables As variáveis que você define aqui, nas pastas delas Definidos aqui Aqui
Alarms O estado ao vivo dos alarmes que você define aqui, nas pastas deles Definidos aqui Aqui (o estado em si é somente leitura)
Process As unidades de cada modelo: canais, estado da execução, produtividade, comandos, preparação De outras páginas Na página Process
Assets As Imagens, os Ícones e as Cores da biblioteca, endereçáveis por nome Definidos aqui, como a raiz Ativos Nos painéis de Ativos

Ações e Gatilhos são seções da coluna, mas não raízes do espaço de endereços: eles são referenciados por identidade, não por endereço, e não carregam valor ao vivo. A raiz Assets existe para as expressões e para o seletor do Procurar…; na coluna, o lugar dela é ocupado pela raiz da biblioteca de Ativos, então a árvore nunca mostra duas raízes com esse nome. Os pontos fixos de System e Server, e o formato dos galhos Connector e Process, estão listados em De outras páginas.

Como um endereço é escrito

Um endereço é uma sequência de segmentos separados por ponto, enraizada numa raiz reservada: Connector.Simulated.Air.CompressedAir.HeaderPressure, Variables.Forno.Setpoint, Alarms.HighLevel, System.Now, Assets.Colors.Red. Nomes de exibição continuam texto livre; o endereço usa o segmento higienizado de cada nome: todo caractere que não é letra nem dígito vira _, e um nome que começa com dígito ganha um _ na frente (Forno de teste responde por Forno_de_teste, 3rd zone por _3rd_zone, e um nome vazio por _). Segmentos são sempre identificadores, então a forma com ponto sempre funciona; um segmento também pode ser escrito na forma com colchetes e um literal de texto, Variables["Setpoint"], e o avaliador o lê como o mesmo endereço.

Onde o ponto termina e o acesso a membro começa depende da raiz. Endereços de Connector carregam os níveis de pasta do dispositivo entre o driver e o dispositivo (uma linha Modbus RTU não acrescenta nível), e Variables e Alarms carregam até três níveis de pasta antes do nome, então, sob essas raízes, o ponto é o prefixo mais longo que resolve, e o que vem depois dele é um membro (.Value, .State()). Assets está sempre dois segmentos abaixo da raiz; Process está a quatro num ponto comum, a seis num ponto de resumo de produtividade e a sete num ponto de saída de produtividade ou de procedimento. Uma cadeia mais curta do que a raiz dela permite é recusada como endereço incompleto.

Endereços em expressões e scripts precisam ser estáticos: cada segmento é um identificador ou um literal de texto, nunca um valor calculado. Variables[someName] é recusado na validação com "Os endereços precisam ser estáticos".

Colisões de endereço

Um nível de uma seção é um espaço de nomes de segmento compartilhado pelas pastas e pelas definições arquivadas ali. Duas variáveis chamadas Setpoint em pastas diferentes são aceitas; uma variável e uma pasta que higienizam as duas para Forno no mesmo nível não são, e Pump 1 e Pump_1 lado a lado também não. Os editores recusam um nome assim enquanto você digita, nomeando o que já responde pelo endereço: "'Pump 1' já responde por 'Variables.Pump_1'. Nomes arquivados numa pasta precisam higienizar para segmentos distintos." Os ativos seguem a mesma regra dentro de cada categoria: duas imagens, dois ícones ou duas cores suas não podem compartilhar um segmento, e um ícone ou uma cor de usuário cujo segmento coincide com uma entrada de sistema a sobrepõe no endereço.

Digitar um endereço

Três maneiras de digitar um endereço numa expressão, numa condição ou num script:

  • Digitar. O editor completa símbolos de endereço: nomes de raiz num símbolo isolado (Con oferece Connector), depois os filhos do caminho digitado até ali, casados por prefixo sem diferenciar maiúsculas de minúsculas, e os membros legíveis de um ponto assim que o símbolo nomeia um ponto. Cada candidato substitui o símbolo inteiro.
  • Procurar… abre um seletor sobre a árvore, até o nível de membro, de toda raiz, incluída a raiz Assets. Selecione uma linha e pressione Inserir, ou clique duas vezes nela, para colocar o endereço dela no cursor. O rodapé mostra o texto que a linha selecionada insere, ou "Clique duas vezes (ou Inserir) para adicionar ao editor." enquanto nada está selecionado.
  • Copiar de um ponto. Selecionar qualquer ponto na coluna abre o painel do ponto, cujo campo Endereço é texto somente leitura que você pode selecionar e copiar, ao lado do valor ao vivo, da qualidade e do carimbo de tempo dele. Um editor de variável ou de alarme ecoa o próprio endereço sob o campo Nome.

Abaixo de um ponto, o seletor lista os membros legíveis dele (Value, ValueToReal(), State() e assim por diante). Um membro não é um endereço próprio: ele é o que você acrescenta ao endereço do ponto. Expressões lista essa mesma superfície, com o que cada membro devolve.

A caixa de filtro

A caixa Filtrar…, acima da coluna, reduz a árvore às linhas cujo nome contém o texto digitado, sem diferenciar maiúsculas de minúsculas. Um ponto sobrevive só quando ele casa; uma pasta sobrevive quando ela casa ou quando algum descendente casa, e se abre até os acertos dela. As seções Ações e Gatilhos listam só as linhas cujo nome casa (o nome delas mantém a seção listada, porém vazia); a raiz Ativos se reduz às categorias cujo nome casa (digitar Cor deixa Cores) e vem inteira quando só o nome dela casa; uma raiz do espaço de endereços cujo próprio nome casa continua listada e carrega o galho dela quando expandida. Membros nunca fazem parte da vista filtrada, e o filtro pertence só à sua janela: outro navegador na mesma estação mantém o dele.

O que o espaço de endereços não faz

Ele não publica nada de um dispositivo desabilitado, de um dispositivo cujas tags não estão materializadas no servidor embutido, nem de um canal do Process sem vínculo (um canal assim é listado, mas não oferece membros). Os nomes não são traduzidos: o endereço é o nome de exibição higienizado, então renomear uma variável, um alarme, uma pasta, um dispositivo, uma tag ou uma imagem é uma mudança de endereço, que a aplicação reescreve em toda referência pela renomeação segura (Variáveis, Pastas de dispositivos).