# Servidor OPC UA

> O servidor OPC UA que a estação roda dentro do processo: a linha dele na pasta Servidores, como ligá-lo e desligá-lo, Reiniciar e Testar a conexão, o cartão Estado com o endpoint e seis medidores, as duas conferências por que uma sessão passa, e o que um navegador remoto não pode fazer.

A estação é um servidor OPC UA. Ele roda dentro do processo do aplicativo e serve as tags, variáveis da Logic, alarmes e comandos de dispositivo listados no cartão [Nós servidos](connector-opcua-served-nodes) dele em `opc.tcp://<network name>:4840/UA/GanterLab` (com `localhost` como alternativa na mesma máquina), onde o nome é o que está escrito em **Nome de rede** na [Configuração](connector-opcua-configuration), ou o do próprio computador enquanto esse campo está vazio. Um cliente OPC UA na rede os lê ali e pode escrever nas linhas marcadas como leitura e escrita; uma escrita atravessa o mesmo funil de escrita da Logic que qualquer outra, então as travas de origem e as recusas do runtime valem para ela. O servidor publica o que o Connector lê e não lê nada sozinho: desligá-lo, ou uma porta que outro programa segura quando ele inicia, para só o servidor, e o Connector, a Logic e as gravações continuam.

A linha dele é a primeira sob a pasta Servidores no Connector, e o painel diz o que ele é sob o título: "Serve as tags, variáveis da Logic, alarmes e comandos de dispositivo que você lista aos clientes OPC UA que os leem e escrevem: sistemas SCADA e MES, historiadores, outras estações. Recebe conexões e nunca abre uma." O painel traz quatro cartões, **Estado**, **Configuração**, **Acesso de clientes** e **Nós servidos**; Ver Connector os lê e Configurar Connector os muda. Enquanto **Nós servidos** não tem linhas, o servidor não serve nada da estação.

## Ligado ou desligado {#on-or-off}

O servidor tem um interruptor próprio, e ele vem desligado numa estação nova: a porta 4840 fica fechada até alguém ligar o servidor. Uma vez ligado, ele inicia com o aplicativo toda vez, e continua servindo enquanto a janela está escondida na área de notificação, até alguém desligá-lo. Uma estação atualizada de uma versão sem o interruptor mantém o que os clientes dela tinham: um servidor que aceitava sessões continua ligado, e um cuja autenticação de cliente estava em Desabilitada, que recusava toda sessão, é desligado. Um agente vira o mesmo interruptor com `server_start` e `server_stop` (veja [Ferramentas do agente](agent-tools)).

## O cabeçalho {#the-header}

O cabeçalho do painel traz um ponto e o estado do servidor, com as palavras que a linha dele mostra:

| Estado | Ponto | Quando |
| --- | --- | --- |
| "Desligado" | Cinza | O interruptor está desligado, aconteça o que acontecer. |
| "Escutando na porta 4840" | Verde | O servidor está ligado e o espaço de endereços dele está vivo. A linha acrescenta os clientes conectados: "Nenhum cliente conectado", "1 cliente conectado", "3 clientes conectados". |
| "Iniciando…" | Âmbar | Entre uma partida e esse momento, e enquanto o Connector que ele publica está subindo. |
| "Não foi possível iniciar" | Vermelho | O servidor está ligado e a última partida dele falhou, tipicamente porque outro programa segura a porta. O cartão Estado diz por quê, embaixo do endpoint. |
| "Connector parado" | Cinza | O servidor está ligado, mas o runtime do Connector não está rodando. |

O estado é só do servidor. O Connector lê os dispositivos com o servidor rodando ou não, e a barra de status e a área de notificação falam pelo Connector; veja [A área de notificação e a barra de status](#the-tray-and-the-status-bar).

## Os comandos {#the-commands}

A barra de comandos acima do painel traz os verbos do servidor, como traz os do servidor Modbus.

| Comando | O que ele faz | Esmaecido quando (situação) | Não aparece quando (papel) |
| --- | --- | --- | --- |
| Habilitar | Liga o servidor e o inicia, servindo a lista dele; o Connector não é reiniciado (quando ele não está rodando de jeito nenhum, é iniciado antes). A barra de status diz "Iniciando o servidor OPC UA…" e depois "Servidor OPC UA ligado. Escutando em `<endpoint>`.". Uma partida que falha deixa o servidor ligado e mostrando Não foi possível iniciar, e o feed diz por quê: "Erro do servidor OPC UA: `<o motivo>`", ou "O servidor OPC UA não conseguiu iniciar. Pode ser que ele não consiga ocupar a porta N. Consulte o diário." quando o servidor só registrou o fato. | Enquanto o servidor está ligado ("O servidor já está ligado."), enquanto outro comando do servidor roda ("Outro comando do servidor ainda está em andamento."), e enquanto a estação recusa configuração. | Para um papel sem **Configurar Connector**. |
| Desabilitar | Desliga o servidor e o para com elegância: toda sessão de cliente termina e nada é publicado até o Habilitar. O Connector continua lendo os dispositivos, e a Logic e as gravações continuam. "Parando o servidor OPC UA…" e depois "Servidor OPC UA desligado." | Enquanto o servidor está desligado ("O servidor já está desligado."), e nas mesmas duas situações. | O mesmo. |
| Reiniciar | Para o servidor e o inicia de novo sobre a configuração em vigor; o Connector lê o tempo todo. "Reiniciando o servidor OPC UA…" e depois "Servidor OPC UA reiniciado.", ou o texto de falha acima. | Enquanto o servidor está desligado ("O servidor está desligado: Habilitar o liga."), e nas mesmas duas situações. | O mesmo. |
| Testar a conexão | Relata o que a estação sabe do próprio servidor, sem mudar nada: "O servidor OPC UA não está escutando, então nenhum cliente consegue se conectar.", "O servidor OPC UA está iniciando, ainda não está pronto.", ou "Servidor OPC UA alcançável em `<endpoint>` com N sessões ativas." É uma afirmação do processo em execução, não uma sondagem pela rede. | Nunca. | Nunca. |

A estação recusa configuração enquanto uma unidade está em execução ("A configuração está travada enquanto uma Unidade está em execução.") e enquanto o runtime está parado: parar o servidor da planta é trabalho de configuração, não de operação. Uma partida que volta sem erro ainda é conferida, porque a pilha OPC UA pode falhar ao ocupar a porta e só registrar o fato, então o feed relata a falha em vez de um sucesso.

## O cartão Estado {#the-status-card}

O cartão mostra o endpoint que um cliente na rede disca, `opc.tcp://<network name>:<port>/UA/GanterLab`, sempre um nome estável e nunca `0.0.0.0` ou um endereço de DHCP; a alternativa na mesma máquina está em Endereços de conexão, no [Acesso de clientes](connector-opcua-client-access). Enquanto o servidor está ligado e não conseguiu iniciar, o motivo fica numa nota de atenção embaixo do endpoint. Depois, seis medidores, redesenhados a cada segundo:

| Medidor | O que ele conta |
| --- | --- |
| Tempo ativo | O tempo desde a última partida do servidor, como `2h 14m 5s`, `14m 5s` ou `5s`; uma marca de lacuna enquanto ele está parado. O mesmo instante alimenta os pontos Server.StartTime e Server.Uptime do espaço de endereços da Logic. |
| Sessões | As sessões de cliente que o servidor tem aceitas neste momento, a mesma lista que os Conectados agora mostram no [Acesso de clientes](connector-opcua-client-access). |
| Dispositivos | Os dispositivos configurados no [Connector](connector), em todo driver, habilitados ou não. |
| Drivers | Quantos drivers distintos aqueles dispositivos usam. |
| Erros | As linhas de erro no feed de log do hospedeiro de comunicação (do servidor e dos drivers). O feed guarda as 500 linhas mais recentes; a contagem fica vermelha quando não é zero. |
| Avisos | As linhas de aviso no mesmo feed, âmbar quando não é zero. Para um papel que carrega **Ver eventos**, o número é um botão que abre a janela destacada de Eventos no desktop da própria estação ("Abrir a janela de Eventos"); num navegador em outro dispositivo ele fica esmaecido com "Disponível apenas no aplicativo instalado na estação.", e para um papel sem a permissão ele é um número simples. |

## Duas conferências, mantidas separadas {#two-checks-kept-apart}

Uma sessão OPC UA passa por duas conferências que este painel configura separadamente. A **confiança no certificado**, no [Acesso de clientes](connector-opcua-client-access), decide se um aplicativo pode alcançar o servidor: um certificado desconhecido é recusado na primeira tentativa e guardado para a sua revisão, nada é confiado automaticamente, e a impressão digital, nunca o nome que um certificado declara, é a identidade a verificar. A **Autenticação do cliente**, na [Configuração](connector-opcua-configuration), decide depois como um aplicativo confiável entra: anônimo, o padrão, ou com o único usuário e senha configurados. A mesma ideia aponta para o outro lado na [página do driver OPC UA](driver-opc-ua#equipment-access): a estação não lê nada de um equipamento OPC UA cujo certificado você não aprovou.

## A área de notificação e a barra de status {#the-tray-and-the-status-bar}

O estado vivo do servidor se lê na linha dele e no painel dele. A linha de saúde da barra de status, o ícone da área de notificação, a dica dele e a linha do menu falam pelo [Connector](connector-health), pelos dispositivos que ele lê, porque um servidor desligado não custa leitura nenhuma e não é o que um operador vigiando a estação precisa saber. O indicador de execução, a hora de partida, o tempo ativo e a contagem de sessões também são pontos do espaço de endereços da [Logic](logic-from-other-pages), sob a raiz Server dele (Running, StartTime, Uptime, SessionCount), então um dashboard ou uma expressão podem lê-los.

Quando a estação inicia com o servidor ligado e o servidor não consegue abrir a porta, a janela levanta o cartão "O servidor não pôde iniciar", com **Usar a porta 4841** e **Abrir o Connector**; veja a [Configuração](connector-opcua-configuration#when-the-server-cannot-open-its-port-at-start). Todo desfecho de um comando aqui aparece no feed de ações da barra de status, e toda recusa e toda decisão sobre um certificado vão para o diário: as linhas de log do próprio servidor estão na aba Console de [Eventos](events-console), e as contagens de erros e de avisos delas são os dois últimos medidores do cartão Estado.

## O que um navegador remoto não pode fazer {#what-a-remote-browser-may-not-do}

Um navegador em outro dispositivo, com um papel que carrega Configurar Connector, vê este painel exatamente como a janela da estação o vê, e pode ligar e desligar o servidor, reiniciá-lo e aplicar uma configuração. O que ele não pode é decidir sobre certificados: Adicionar cliente, Confiar, Bloquear, Revogar, Desbloquear, Descartar todos, Importar certificado e o botão do Firewall do Windows são recusados ali com "O acesso de clientes só pode ser mudado no aplicativo instalado na estação.", e um aviso informativo no cartão diz isso: "Abra o aplicativo da estação para mudar o acesso de clientes". O link do medidor de Avisos para a janela de Eventos destacada fica esmaecido com "Disponível apenas no aplicativo instalado na estação.".

Onde os certificados moram: o certificado de aplicativo do próprio servidor e os repositórios de certificados de cliente confiáveis, pendentes e bloqueados ficam sob `ua\pki` na raiz de dados da estação, e os repositórios de equipamento sob `ua\pki\southbound`. Eles sobrevivem a reinícios e não fazem parte de um [backup](settings-backups) de configuração.

## O que este painel não faz {#what-this-panel-does-not-do}

Ele não desconecta uma sessão (revogar um certificado no Acesso de clientes faz isso), não zera as contagens de log (o feed é limitado e roda sozinho), não para a leitura do Connector, e não reinicia o aplicativo. Ele nunca inicia o servidor de novo sozinho depois de uma falha: uma partida que falhou é relatada e espera o seu Reiniciar, ou a porta que você escolher no cartão. O endpoint se muda na [Configuração](connector-opcua-configuration), e só enquanto o servidor não está escutando.
