OPC DA
Um cliente para servidores OPC Data Access clássicos sobre COM/DCOM, rodando num processo auxiliar de 32 bits, com endereçamento por ID do item e varredura dos servidores de uma máquina.
O driver OPC DA é um cliente para servidores OPC Data Access clássicos (versões 1.0, 2.05a e 3.0), os servidores COM pelos quais gateways de CLP mais antigos, sistemas SCADA e simuladores ainda publicam os seus dados. Um servidor é nomeado pela máquina em que roda e pelo seu ProgID, por exemplo Matrikon.OPC.Simulation.1, e cada tag pelo ID do item no servidor. Acrescente o driver e os seus dispositivos na página Connector.
Dispositivo
| Campo | Significado | Padrão |
|---|---|---|
| Host ou IP | O nome ou o endereço do computador em que o servidor OPC DA roda. Vazio quer dizer este computador, onde roda a maioria dos servidores clássicos. | vazio: este computador |
| Servidor / Chave | O ProgID do servidor, como o fabricante o registra no Windows, por exemplo Matrikon.OPC.Simulation.1. |
OPC.Server.1 |
| Intervalo de leitura (ms) | De quanto em quanto tempo a estação lê as tags do dispositivo, a menos que uma tag defina o seu próprio intervalo. | 1000 |
O endereço do dispositivo é montado com os dois, por exemplo opc.da://localhost/Matrikon.OPC.Simulation.1. Não há porta: o COM acha o servidor pelo próprio registro do Windows.
Endereçamento da tag
Uma tag é endereçada pelo seu ID do item, digitado como texto livre e enviado ao servidor exatamente como foi escrito, por exemplo Random.Real8 ou Channel1.Device1.Tag1. Os IDs dos itens são do próprio servidor; a documentação dele ou uma varredura os lista. A estação acrescenta cada item a um grupo do dispositivo na primeira vez em que uma tag o lê, e o lê do equipamento, não do cache do servidor.
Tipos de dado
O seletor de Tipo de dado oferece os tipos que um item OPC DA guarda: Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double, String e DateTime. Toda leitura é convertida para o tipo da tag, então escolha o tipo que o servidor declara para o item, o mesmo que uma varredura propõe: um item real de 64 bits lido como Float perde precisão, e lido como Double a mantém. Um valor que o tipo da tag não comporta, como um texto que não é número ou um vetor, deixa a tag sem valor. No OPC DA uma data não traz fuso horário, e a estação a lê e a escreve como UTC.
Todo valor com que o servidor responde traz a sua qualidade. Um valor de qualidade boa (Good) chega à tag. Um de qualidade incerta (Uncertain) ou ruim (Bad) deixa a tag sem valor, e a linha do diário da leitura que falhou nomeia a qualidade com as palavras da especificação OPC DA, por exemplo Bad: not connected (0x0008) ou Uncertain: last usable value (0x0044). Um item cuja leitura falha deixa a sua tag sem valor, e as outras tags do dispositivo continuam lendo.
Descoberta
Descobrir lista os servidores OPC DA registrados num computador: digite o nome ou o endereço dele no alvo da varredura, ou deixe vazio para este computador. Cada servidor é oferecido como um dispositivo, e o seu espaço de endereços é percorrido: todo item que ele tem é oferecido como uma tag somente leitura, com o tipo que o servidor declara para ele: um real de 64 bits como Double, um inteiro de 16 bits sem sinal como UInt16, e assim por diante para cada tipo acima, com um valor monetário como Double. Um item que não declara tipo é oferecido como String, que lê qualquer valor; um item de um tipo que nenhuma tag lê, como um vetor, não é oferecido, e a varredura o conta entre o que deixou de fora. Veja Descoberta para saber como os candidatos são escolhidos e acrescentados.
A varredura pede os servidores ao enumerador de servidores OPC (OpcEnum), pelas bibliotecas de proxy e stub do OPC DA registradas neste computador. Enquanto um deles falta, a varredura não lista nada e diz o que falta, com os passos de Instalar os OPC Core Components.
Escritas
Tags cujo Acesso é Leitura e escrita ou Somente escrita podem ser escritas, no mesmo item que a leitura usa. O valor é enviado no tipo em que o servidor guarda o item (no tipo da própria tag quando o servidor não o diz), convertido a partir do valor da tag sem passar por texto, de modo que uma estação em qualquer idioma envia o mesmo número. Um número inteiro fora da faixa do tipo do item é recusado antes que algo seja enviado, nunca cortado para o valor mais próximo que o tipo comporta. Uma escrita que o servidor recusa volta recusada, com o motivo quando é um que a estação sabe dizer (um item que não aceita escrita, um valor que o item não aceita, um item que o servidor não conhece, acesso recusado) e, fora isso, com o código de erro do servidor, por exemplo OPC DA 0x80004005; o diário guarda o código do servidor em todos os casos. O OPC DA não tem comandos: um dispositivo deste driver não oferece nenhum.
O auxiliar de 32 bits
Os servidores OPC DA são alcançados por um cliente COM de 32 bits, que a estação de 64 bits não consegue carregar. Por isso o driver roda num processo auxiliar só dele, Lab.Desktop.DriverBridge.exe, que a estação inicia na primeira vez em que um dispositivo ou uma varredura OPC DA precisa dele, ou em que a estação confere os OPC Core Components, e fecha quando o Connector para. Nada muda no uso do driver: os seus dispositivos e tags são lidos, escritos, varridos e registrados no diário como os de qualquer outro.
Se o auxiliar parar, os seus dispositivos mostram o erro "O processo auxiliar de 32 bits do driver OPC DA parou. A estação o inicia de novo, e o dispositivo se reconecta por ele.", a página Eventos guarda o código de saída, e as suas tags perdem os valores. A estação inicia o auxiliar de novo, depois de uma pausa que cresce enquanto ele continua parando, e os dispositivos se reconectam por ele sozinhos. Uma escrita que estava a caminho quando o auxiliar parou volta com falha, dizendo que não se sabe se o valor chegou ao equipamento. Nenhum outro driver e nenhuma outra parte da estação para junto.
Antes de começar
- A estação não instala nenhum componente OPC. O enumerador de servidores OPC (OpcEnum) e as bibliotecas de proxy e stub do OPC DA vêm com o servidor OPC DA, ou com os OPC Core Components. A estação confere sozinha se estão registrados e, enquanto um deles falta, diz como instalá-los: veja Instalar os OPC Core Components.
- Um servidor em outro computador é alcançado por DCOM, que os dois computadores têm de permitir para a conta do Windows com que a estação roda: permissões DCOM, regras de firewall e a mesma conta ou um domínio confiável. Essa configuração é feita no Windows, nunca na estação: veja Preparar um servidor remoto.
- O driver roda só no Windows.
Instalar os OPC Core Components
A estação confere sozinha, no auxiliar de 32 bits, se este computador tem o enumerador de servidores OPC (OpcEnum) e as bibliotecas de proxy e stub do OPC DA registrados para programas de 32 bits: na primeira vez em que a página do driver, a página de um dos seus dispositivos ou o agente pergunta, e de novo a cada 30 segundos enquanto um deles falta. Até o Connector iniciar, não se sabe se estão lá, e nada é dito sobre isso. Enquanto um deles falta:
| Onde | O que diz |
|---|---|
| A página do driver | Um aviso de atenção, "Os OPC Core Components não estão neste computador", com os passos abaixo. O link dele abre a página da OPC Foundation no navegador do computador. |
| A página de cada dispositivo | O mesmo aviso, a não ser que o dispositivo esteja conectado. |
| Uma varredura | Não lista nada e diz o que falta: a linha que fecha a varredura aponta o aviso, e o device_discover do agente dá os passos em inglês. |
| O último erro de um dispositivo cuja conexão falha | O que falta e os mesmos passos, em inglês, como as causas do próprio driver são escritas. |
| O agente | O driver_capabilities os dá em prerequisite, com installed em false. |
Para instalar:
- Execute de novo o instalador do seu servidor OPC DA: ele costuma instalá-los.
- Senão, abra a página Core Components da OPC Foundation e baixe os OPC Core Components Redistributables. Só um usuário registrado pode baixá-los: se a página disser que você não tem permissão para baixar o arquivo, entre com "Login" ou crie uma conta com "Create Account" na mesma página.
- Use o
opc-core-components-redistributable-<version>-x86-x64.msinum Windows de 64 bits, que traz também os componentes de 32 bits, e o que termina em-x86.msisó num Windows de 32 bits. - Execute-o como administrador e reinicie o computador se o instalador pedir.
Em até 30 segundos depois da instalação, o aviso some, a varredura lista os servidores OPC DA e os dispositivos deste driver se conectam com a configuração que já têm, sem reiniciar o Ganter Lab.
Preparar um servidor remoto
Um servidor neste computador não precisa de mais nada. Um servidor em outro computador é alcançado pelo DCOM, que não deixa entrar nada de outro computador até que os dois estejam preparados para isso. A preparação é feita no Windows dos dois computadores, por um administrador de cada um, nunca na estação:
- Use a mesma conta do Windows com a mesma senha nos dois computadores (a conta com que a estação roda), ou uma conta de domínio que os dois conheçam.
- No computador do servidor, rode o
dcomcnfge abra Component Services > Computers > My Computer > Properties > COM Security. Em Access Permissions e em Launch and Activation Permissions, tanto em Edit Limits quanto em Edit Default, dê a essa conta todos os direitos remotos. Em Edit Limits de Access Permissions, dê também Remote Access a ANONYMOUS LOGON, de que o enumerador de servidores OPC (OpcEnum) precisa. - Ali mesmo, em My Computer > DCOM Config, abra as Properties do servidor OPC e do OpcEnum e, na aba Security de cada um, personalize as três permissões com a mesma conta.
- No computador da estação, rode também o
dcomcnfge, em Edit Limits de Access Permissions, dê Remote Access à conta com que o servidor OPC roda: o servidor chama a estação de volta. - No computador do servidor, no Firewall do Windows Defender, libere a entrada pela porta TCP 135 e
os programas do servidor OPC e do OpcEnum (
OpcEnum.exe), e confira em Serviços que o OpcEnum está rodando e inicia automaticamente.
Edit Default não muda nada enquanto Edit Limits nega o direito: ajuste os dois. O DCOM atende na porta 135 e depois leva as chamadas por uma porta que o Windows escolhe, então um firewall entre os dois computadores que abre só a 135 continua bloqueando o servidor.
| O que o Windows responde | O que a página do dispositivo diz |
|---|---|
| Acesso negado (0x80070005) | “host recusa esta estação pelo DCOM”, com a conta com que a estação roda e os passos 1 a 4 |
| O servidor RPC não está disponível (0x800706BA) | “host não responde ao DCOM”: o computador está desligado ou fora de alcance, o firewall dele bloqueia o DCOM, ou o OpcEnum não roda ali, com o passo 5 |
Cada aviso fica no lugar do erro do dispositivo e some sozinho assim que o servidor conecta. O diário e o agente leem os mesmos passos em inglês. Um servidor neste computador nunca é dito assim.
Onde a instalação não permite DCOM, um wrapper ou túnel que serve o servidor OPC DA em OPC UA, no computador do servidor, evita o DCOM de vez: a estação então lê o servidor com o driver OPC UA.