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.
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 Forno lê Variables.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.