Logic

A página Logic, a coluna Espaço de endereços, as pastas, a barra de comandos, a varredura e o funil de escrita atrás de todo painel, e as três permissões que decidem o que a página desenha.

Ver como Markdown

A Logic é a terceira entrada do trilho de navegação. Ela abre para qualquer papel que tenha Ver a lógica, e o cabeçalho dela diz "Defina variáveis (valores derivados ou graváveis) e ações (scripts que os escrevem), compostas sobre o espaço de endereços." É uma página de mestre e detalhe (como as páginas funcionam): uma coluna chamada Espaço de endereços à esquerda, uma barra de comandos e um painel de detalhes à direita. Tudo que você edita aqui salva sozinho enquanto você digita; não existe botão Salvar em lugar nenhum da página.

Nesta área

Página Assunto
O espaço de endereços As sete raízes reservadas, como um endereço é escrito e higienizado, a caixa de filtro e as três maneiras de digitar um endereço.
Variáveis O editor de variável: identidade e endereço, os tipos Expressão e Memória, o cartão Valor, o Definir valor.
Expressões A linguagem de expressão, a superfície de leitura de um ponto, as regras que o avaliador impõe, o editor de script.
Ações O editor de ação, o que um script pode escrever, todas as mensagens de validação, o Executar e o Habilitar/Desabilitar.
Gatilhos O editor de gatilho e o agendador por intervalo.
Alarmes O editor de alarme, a máquina de estados, a anunciação, o Reconhecer e o Reconhecer todos.
De outras páginas As raízes Sistema, Servidor, Connector e Process, o painel do ponto e o aviso que nomeia a página que as edita.

A raiz Ativos da mesma coluna é um grupo próprio: Ativos cobre Imagens, Ícones, Cores, Símbolos e Tipos de ligação.

A coluna Espaço de endereços

A coluna lista as raízes do espaço de endereços sob duas legendas. Definidos aqui reúne o que esta página cria e edita: Variáveis, Alarmes, Ações, Gatilhos e Ativos. De outras páginas reúne o que ela apenas mostra: Sistema, Servidor, Connector e Process. Toda raiz sob a primeira legenda carrega uma contagem (Variáveis e Alarmes contam as definições deles, Ações e Gatilhos as delas, Ativos a soma das cinco categorias), e a raiz Alarmes, toda pasta de alarme e toda linha de alarme carregam um ponto colorido com a pior prioridade que elas contêm que esteja ativa ou aguardando reconhecimento; o ponto se limpa no instante em que o alarme é respondido.

A árvore é preguiçosa: um galho carrega quando você o expande. Valores ao vivo nunca são desenhados na árvore; o painel de detalhes do nó selecionado os mostra, atualizados duas vezes por segundo.

Controle O que faz
Filtrar… Reduz a árvore às linhas cujo nome contém o texto, sem diferenciar maiúsculas de minúsculas. Uma pasta sobrevive quando qualquer descendente casa e se abre até os acertos dela; a raiz Ativos se reduz às categorias cujo nome casa, ou 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, enquanto as seções Ações e Gatilhos listam só as linhas que casam.
Novo… (rodapé da coluna) Abre o menu de criação: Nova variável, Nova ação, Novo gatilho, Novo alarme, e então Nova pasta, com um destino por seção (Variáveis, Alarmes, Ações, Gatilhos). Tudo que é feito aqui cai na raiz da seção dele, com o primeiro nome livre das séries Variable1, Action1, Trigger1, Alarm1 ou Folder1, e abre para edição. Desenhado só para um papel com Configurar a lógica; esmaecido com o motivo enquanto a estação está travada.
Expandir tudo / Recolher tudo Abre todos os galhos (carregando cada nível conforme abre) ou fecha tudo de volta até as raízes.
Botão direito Numa raiz de seção, numa pasta sua ou numa linha de definição: seleciona a linha e abre o menu dela (abaixo). Nada abre num nó de outra página.

O menu de contexto carrega, conforme a linha e o papel: Nova variável / Nova ação / Novo gatilho / Novo alarme (dentro da pasta ou raiz em que você clicou), Nova pasta (não oferecida numa pasta que já está três níveis abaixo), Reconhecer (linhas de alarme, com Operar a lógica), Mover para (um submenu com a raiz da seção e toda pasta em que a linha pode ser arquivada), Copiar, Excluir, e, numa pasta, Renomear pasta e Remover pasta. Um papel sem Configurar a lógica não vê menu nenhum, exceto a entrada Reconhecer de uma linha de alarme quando ele tem Operar a lógica.

A área de detalhe fica vazia até você selecionar algo: "Selecione um nó para inspecioná-lo: variáveis, ações, gatilhos e alarmes abrem o editor deles. Crie um com o Novo."

A barra de comandos

A barra desenha os verbos do nó selecionado. O que o papel nunca permite não é desenhado; o que a situação recusa agora continua desenhado, esmaecido, com o motivo na dica: "A configuração fica travada enquanto uma unidade está em execução." durante uma operação de engenharia, "Runtime parado" enquanto a estação roda em somente leitura.

Seleção Grupo inicial Grupo final (de perigo)
Uma pasta sua Nova variável / ação / gatilho / alarme (o tipo que a seção dela contém), Nova pasta (esmaecida com "Esta pasta já está no nível mais profundo em que pastas se aninham." no limite de profundidade), Renomear pasta Remover pasta
Uma variável Copiar Excluir variável
Uma ação Executar, Habilitar ou Desabilitar, Copiar Excluir ação
Um gatilho Habilitar ou Desabilitar, Copiar Excluir gatilho
Um alarme Reconhecer, Habilitar ou Desabilitar, Copiar Excluir alarme
A raiz Alarmes Reconhecer todos
Ativos, Imagens Importar imagem…
Ativos, Ícones Novo ícone de usuário
Ativos, Cores Nova cor
Ativos, Símbolos Novo símbolo de usuário, Importar símbolo…, Copiar instrução de chat
Um nó Sistema, Servidor, Connector ou Process O aviso de edição em outro lugar e o botão Abrir dele

O Copiar duplica a definição selecionada na raiz da seção dela, com o nome da própria origem quando ele está livre e, caso contrário, Nome (2), Nome (3) e assim por diante, e abre a cópia para edição; um alarme copiado começa em Sem alarme, um gatilho copiado começa sem agenda, uma ação copiada não tem execução registrada. Habilitar e Desabilitar viram o sinalizador Habilitado da definição pelo mesmo salvamento automático de qualquer campo. Todo Excluir pergunta antes ("Excluir 'X'? … Isso não pode ser desfeito.") e relata "Excluído." no feed de ações; excluir uma variável ou um alarme deixa sem resolução toda expressão, script, condição e vínculo de dashboard que nomeava o endereço deles, o que a Validação lista.

Pastas

Cada uma das quatro seções pode ser organizada em pastas. Uma pasta pertence a uma seção e contém só os itens daquela seção; ela se aninha em três níveis, no máximo. Uma pasta é organização e nada mais: ela não tem permissão, nem avaliação, nem estado.

Em Variáveis e Alarmes, a cadeia de pastas compõe o endereço: uma variável em FornoVariables.Forno.Setpoint, e uma na subpasta Zona1 dela lê Variables.Forno.Zona1.Setpoint. Um nível de uma seção é um espaço de nomes de segmento único, compartilhado pelas pastas e pelas definições dele: duas pastas podem ter cada uma um Setpoint, mas nada arquivado no mesmo nível pode higienizar para o mesmo segmento, e o editor recusa um nome assim enquanto você digita, nomeando o endereço já ocupado. Ações e Gatilhos são referenciados por identidade, então as pastas deles organizam apenas a árvore, e os painéis deles mostram uma linha de localização em vez de um endereço.

Comando O que acontece
Nova pasta Cria uma pasta vazia chamada FolderN e abre o campo de nome dela na linha da árvore; deixar o campo vazio ou sem mudança mantém aquele nome.
Renomear pasta Abre o campo de nome na linha. Todo endereço abaixo da pasta se move com ela, toda referência é reescrita, e o feed diz quantas ("Pasta renomeada; 3 referências atualizadas.").
Mover para Arquiva uma pasta ou uma definição sob outra pasta da mesma seção, ou de volta na raiz da seção; endereços e referências acompanham. A lista oferece só os destinos legais: nunca a própria pasta, nunca uma subpasta dela, nunca outra seção, nem um nível em que as subpastas dela passariam do limite de profundidade.
Remover pasta Pergunta antes, dizendo o que se move: "Os 3 itens dela vão para Variáveis; nada é excluído. As referências aos endereços que se movem são atualizadas." Os itens e as subpastas são rearquivados um nível acima; a remoção é recusada quando dois deles colidiriam no destino.

A varredura e a fila

Uma varredura de runtime roda a cada 100 ms numa fila de lógica sequencial: ela avalia toda variável de expressão e depois toda condição de alarme habilitada, nessa ordem, então uma condição lê os valores de variável desta varredura. Execuções de ação, escritas de memória, escritas de tag e reconhecimentos pegam a mesma fila, então um script nunca se intercala com uma varredura nem com outro script. Uma varredura separada, também a cada 100 ms, dispara os gatilhos vencidos na fila. Os consumidores (dashboards, canais, esta página) leem o estado publicado; nada nesta página dispara uma avaliação à mão.

Escrita de valores

Toda escrita passa por um funil, seja o que for que a começou: a atribuição de um script ou o Write(...), o campo Definir valor de uma variável de memória, um controle de dashboard, uma receita do Process, o agente, um cliente OPC UA externo escrevendo um nó público. O funil recusa um valor que não é finito ou que não converte para o tipo do alvo, recusa uma origem que uma receita em execução ou um intertravamento segura (nomeando quem segura), registra no diário a escrita como valor antigo para valor novo, sob a origem dela (Operador, MCP, a execução), e a aplica na fila da lógica. Uma escrita cuja origem é uma ação é a exceção: ela vai só para a captura detalhada, nunca para o console de Eventos, porque um script que escreve a cada varredura produz valores aos milhares e enterraria as notícias da estação embaixo deles. O que o console carrega de uma ação são as falhas dela. Uma escrita de tag recebe o valor de engenharia e reverte a cadeia de conversão da tag até o valor bruto que o dispositivo recebe. Os detalhes estão em Variáveis e Ações.

Permissões e travas

Permissão O que ela libera aqui
Ver a lógica Abrir a página e ler tudo nela, valores ao vivo incluídos.
Configurar a lógica Criar, editar, renomear, mover, copiar, habilitar, desabilitar e excluir variáveis, ações, gatilhos, alarmes e pastas, e curar a biblioteca de ativos.
Operar a lógica Escrever um valor de memória, executar uma ação e reconhecer alarmes, aqui, nos dashboards e na página Eventos.

Um papel só com Ver a lógica lê a página inteira: os editores ficam inertes sob uma nota ("Seu papel pode ver a Logic, mas não pode configurá-la (variáveis, ações, gatilhos, alarmes e ativos).") e nenhum verbo de configurar ou operar é desenhado. Um papel com Operar e sem Configurar mantém vivos o Executar, o Reconhecer, o Reconhecer todos e o Definir valor. Enquanto uma unidade do Process segura a estação, a página mostra o aviso de trava de engenharia e todo verbo de configurar e todo campo de editor ficam esmaecidos; o Executar, o Reconhecer e o Definir valor continuam disponíveis. Enquanto o runtime está parado, tanto configurar quanto operar recusam com "Runtime parado"; a árvore e os painéis continuam legíveis, mas não carregam dado ao vivo. O catálogo de bits está em Permissões.

O que a página não faz

Não existe Salvar nem Desfazer: uma tecla digitada é uma mudança persistida (o feed diz "Salvo.") e um salvamento recusado recarrega o campo para o que a estação guarda. Definições que o agente cria ou exclui pelas ferramentas dele não atualizam sozinhas uma coluna aberta; o galho é relido quando esta página cria, copia ou exclui algo naquela seção pela próxima vez. O histórico de alarmes, o console de Eventos e os dashboards vivem nas páginas deles.