Nós servidos

A lista do que o servidor OPC UA embutido serve, e tudo o que ele serve: tags, variáveis da Logic, alarmes e comandos de dispositivo, cada um somente leitura até você liberar a escrita, onde um cliente encontra cada um e o que uma estação atualizada precisa fazer.

Ver como Markdown

Nós servidos é o quarto cartão do painel do servidor OPC UA no Connector. O servidor serve esta lista e nada mais: um cliente que se conecta encontra as tags, as variáveis da Logic, os alarmes e os comandos de dispositivo listados aqui, e nenhum outro. O cartão diz isso sob o título: "O servidor serve esta lista e nada mais: cada linha é uma tag, uma variável da Logic, um alarme ou um comando de dispositivo. Uma linha fica somente leitura até você liberar a escrita. A escrita de um cliente segue então o mesmo caminho de qualquer outra e fica no diário com a sessão do cliente." Ver Connector lê o cartão; Configurar Connector o muda.

Uma lista vazia

A lista nasce vazia, numa estação nova e numa estação atualizada de uma versão que servia todo dispositivo inteiro. Enquanto ela está vazia, uma nota de cautela no cartão diz: "A lista está vazia, então o servidor não serve nada da estação: um cliente OPC UA não encontra tag, variável, alarme nem comando até você acrescentar linhas." O servidor continua escutando e continua aceitando as sessões que o Acesso de clientes permite; elas percorrem um espaço de endereços sem nada da estação dentro. Um agente lê o mesmo no server_status, cujo servesNothing é verdadeiro enquanto a lista está vazia.

A tabela

Coluna O que mostra
Origem O que a linha serve, como o seletor o nomeia, ou "Sem origem ainda" enquanto a origem não foi escolhida.
Acesso Somente leitura ou Leitura e escrita, e Chamável para um comando de dispositivo.
Nó O endereço com que um cliente é configurado, na forma nsu=<namespace>;s=<identifier>; vazio enquanto a linha não serve nada.

As linhas vêm por tipo (tags, variáveis, alarmes, comandos) e depois pelo nome. Sem nenhuma, a tabela diz "Nenhum nó é servido ainda. Adicione um com Nova linha." Clicar numa linha a seleciona e abre os campos dela sob a tabela; qual linha está selecionada pertence à janela em que você está.

Comando O que faz Esmaecido quando (situação) Não desenhado quando (papel)
Nova linha Acrescenta uma linha somente leitura que ainda não serve nada e a seleciona, para a origem ser escolhida em seguida. O feed diz "Linha acrescentada à lista do servidor OPC UA. Escolha a origem dela." Uma execução segura a estação, ou o runtime está parado. Sem Configurar Connector.
Excluir linha (tinta de perigo) Exclui a linha que a tabela tem selecionada, na hora e sem pergunta; a dica dele nomeia a origem que a linha serve, e o feed confirma. A origem não é tocada: um cliente deixa de encontrar o nó dela. Nenhuma linha está selecionada ("Selecione uma linha da lista para excluí-la."), uma execução segura a estação, ou o runtime está parado. Sem Configurar Connector.

Os campos de uma linha

Cada campo é guardado no momento em que muda, e o servidor serve a linha nova um instante depois, sem derrubar sessão nenhuma: ele lê a lista dez vezes por segundo.

Campo O que faz Valores e padrão
Origem O que a linha serve. A lista abre com "(nenhum)", depois toda tag habilitada de um dispositivo habilitado, nomeada pelo driver, pelo dispositivo e por ela mesma ("Tag do Connector · Simulated · Oven · Temperature"), depois toda variável da Logic que guarda um valor, pelas pastas e pelo nome ("Variável da Logic · Oven / Setpoint"), depois todo alarme, nomeado do mesmo jeito ("Alarme da Logic · Oven / High temperature"), e por último todo comando de um dispositivo habilitado: os comandos declarados na página do dispositivo e os que um protocolo fixa, como os de um ponto de recarga ("Comando · OCPP · Charger · Reset"). Uma origem entra na lista uma vez só. A linha guarda a origem pela identidade, então renomear deixa a linha na mesma origem, que o servidor passa a servir sob o nome novo. Uma origem que a lista não oferece mais continua selecionada e nomeada, uma tag ou um comando desabilitado com o que o deixa de fora, e só uma origem que não existe mais aparece como ausente, com a identidade dela. O cartão Usada por de uma tag lista as linhas que a servem. "(nenhum)" numa linha nova.
Acesso Se um cliente pode escrever na linha. Leitura e escrita continua listado e esmaecido onde a origem não aceita escrita, com a dica "Esta origem não aceita escrita: só uma tag com acesso de escrita ou uma variável de memória aceita." Escolher um alarme devolve a linha a somente leitura. Num comando, o campo mostra Chamável como valor fixo, sem seletor, porque um comando é chamado, nunca lido nem escrito. Somente leitura ou Leitura e escrita; Chamável, fixo, num comando. Somente leitura numa linha nova.

Sob os campos, uma linha diz o que a linha da lista faz para um cliente:

O cartão diz Quando
"Esta linha ainda não serve nada: escolha a origem." Nenhuma origem foi escolhida.
"A origem desta linha não existe mais, então o servidor não serve nada por ela." A tag, a variável, o alarme ou o comando foi excluído.
"Um cliente pode ler este nó, mas não escrevê-lo." Uma tag ou uma variável, somente leitura.
"Um cliente pode ler e escrever este nó: cada escrita fica no diário com a sessão do cliente." Uma tag ou uma variável marcada como leitura e escrita.
"Um cliente lê Active, Acked, State, Priority e Message do alarme, e nunca os escreve." Um alarme.
"Um cliente chama este comando como um método do dispositivo dele enquanto ele estiver na lista." Um comando de dispositivo.

Abaixo dessa linha, Um cliente o encontra em vem seguido do nó.

O que uma linha recusa

Uma mudança que as regras da lista recusam não é guardada: o motivo aparece em vermelho acima dos campos da linha, a mudança continua na tela para você corrigir, e a linha continua servindo o que servia.

O cartão diz Quando
"Esta origem já está na lista: um cliente a encontra no nó que aquela linha serve." A origem já está em outra linha.
"A origem não pode ser escrita: escolha uma tag com acesso de escrita ou uma variável de memória, ou deixe a linha somente leitura." Leitura e escrita numa tag somente leitura, numa tag de um driver que nunca escreve, numa variável de expressão, num alarme, num comando ou numa origem que não existe mais.
"Uma linha que aceita escrita precisa da tag ou da variável que a recebe." Leitura e escrita numa linha sem origem, o que só um agente consegue pedir.
"Esta linha da lista não existe mais. Recarregue e tente de novo." A linha foi excluída em outro lugar, em outra janela ou por um agente, enquanto você a editava.

Enquanto uma execução segura a estação ou o runtime está parado, uma mudança é recusada como toda mudança da página, com o motivo no feed de ações, e nada é guardado.

Onde um cliente encontra cada origem

Origem Onde fica O que um cliente lê
Tag Onde sempre esteve: no namespace do dispositivo dela, http://opcfoundation.org/UA/<driver>.<device>/, sob o próprio nome da tag. Um cliente configurado antes de a lista existir a encontra no mesmo endereço. Um cliente que percorre o espaço de endereços a encontra na pasta Devices sob Objects, dentro do objeto com o nome do dispositivo dela. O valor que o dispositivo respondeu, com a qualidade e o carimbo, como o Connector o lê.
Variável da Logic Na pasta Logic sob Objects, dentro das próprias pastas da Logic, no namespace do servidor http://opcfoundation.org/UA/EdgeTranslator/ sob o endereço dela na Logic (Variables.Oven.Setpoint). O valor dela, tipado pela conversão única da estação: Boolean, Int64 para um Inteiro, Double para um Número decimal, String para um Texto e DateTime para uma Data e hora. Uma variável sem valor bom é lida como BadDataUnavailable.
Alarme Na pasta Alarms sob Objects, dentro das próprias pastas da Logic, como um objeto sob o endereço dele na Logic (Alarms.Oven.HighTemperature). Cinco membros somente leitura: Active e Acked (Boolean), State (Int32: 0 sem alarme, 1 ativo e não reconhecido, 2 ativo e reconhecido, 3 normalizado e não reconhecido), Priority e Message (String). Enquanto o alarme segura o estado durante uma qualidade ruim, Active, Acked e State são lidos como UncertainLastUsableValue.
Comando Um método do dispositivo dele, ao lado das tags do dispositivo. Chamado com os valores que o comando declara, responde com o que o equipamento respondeu.

Todo dispositivo mantém o namespace dele seja o que for que a lista sirva dele, então o índice em que um cliente encontra um namespace não muda quando as tags de outro dispositivo entram na lista ou saem dela. Um dispositivo de que a lista não nomeia nada não tem nó nenhum.

Escrita

A escrita de um cliente só chega à estação numa linha marcada como leitura e escrita, e a lista é consultada de novo no instante em que a escrita chega, então uma linha que acabou de virar somente leitura nunca é escrita. A escrita numa tag vai para a fila de entrega do dispositivo dela como toda escrita de fora, e a resposta espera o equipamento; a escrita numa variável de memória passa pelo funil de escrita da Logic e é convertida para o tipo da variável. As travas de origem valem: uma origem que um Process em execução segura é recusada. Toda escrita fica no diário com o aplicativo e a sessão do cliente. Uma variável de expressão e um alarme nunca aceitam escrita, e o servidor responde BadNotWritable. Um comando é chamado, não escrito, e um cliente só chama um comando que está na lista.

Uma estação atualizada

Uma estação atualizada de uma versão sem a lista servia toda tag de todo dispositivo. A lista dela nasce vazia, então depois da atualização o servidor OPC UA dela não serve nada até a lista ser montada: acrescente uma linha para cada tag que um cliente lê, marque como leitura e escrita as que um cliente escreve, e acrescente os comandos que um cliente chama. Um cliente configurado antes da atualização encontra cada tag no endereço que ela tinha, então não precisa de mudança nenhuma.

Com um agente

server_list_upsert(source: "Connector.Simulated.Oven.Temperature")
server_list_upsert(source: "Variables.Oven.Setpoint", access: "ReadAndWrite")
server_list_upsert(source: "Alarms.Oven.HighTemperature")
server_status()

Uma linha criada por um agente é somente leitura, a menos que access diga outra coisa, e server_list_delete exclui uma pelo id. As ferramentas estão descritas em As ferramentas, área por área.

O que a lista não faz

Ela não liga o servidor (o Habilitar da barra de comandos liga), não decide que cliente pode se conectar (o Acesso de clientes decide) e não reconhece um alarme de fora: reconhecer continua sendo um comando do operador. Ela serve os valores acima e nenhum evento OPC UA de alarmes e condições. Uma variável que guarda uma imagem, um ícone ou uma cor não é oferecida, e uma constante da descrição de um dispositivo não é servida.