Ajuda com OPC UA e Open62541

Olá!

Estou tentando utilizar o E3 para comunicar com um servidor OPC UA exemplo que é parte do projeto Open62541 (https://open62541.org/). Usei o executável server_ctt para linux disponível em https://github.com/open62541/open62541/releases/download/v0.3.0/open62541-linux64.tar.gz.

Ao executar o servidor do OPC UA, consigo conectar usando o Prosys OPC UA Client.

No entanto, o E3 OPC UA Client Module para de funcionar, com problemas.

Abaixo, o log do E3.

Alguma sugestão?

Obrigado!

Atualizando: o problema ocorre também com o client_ctt.exe do Open62541 para Windows.

|2019-01-25 11:09:05.326|Textual events||Module startup||0x620|0x644|[0|0]|Mod|EELOG_MODULEINFO|Cat|17|Msg|Windows 7 Ultimate x64 Service Pack 1 (build 7601) 8191MB (Virtual Memory 8388607MB) AMD64 Level 6 Revision 9E0A (2 processors) ComputerName=lange-VM-W7 UserAccount=SISTEMA, Elipse Event Logger v4.5 Build 120|
|—|---|—|---|—|---|—|---|—|---|—|---|—|---|
|2019-01-25 11:09:09.979|Textual events||Module startup||0x7FC|0x11C|[0|0]|Mod|E3|Cat|17|Msg|’“C:\Program Files\Elipse Software\Elipse E3\Bin32\E3UaClient.exe” -Embedding’ E3 4.8.352 Session1/WinSta0/Default|
|2019-01-25 11:09:09.979|Textual events||Stats||0x7FC|0x11C|[0|0]|Mod|SYSTEM|Cat|15|Msg|ProcessInfo.E3UACLIENT: CPU=0.00% PVT=4316KB VTL=81424KB WKS=7520KB HDL=84 GDI=20 USR=4 TRD=2 PGF=1918 PPL=144KB NPP=11KB UNM=‘lange’ RUN=0.015 UTM=0.015 KTM=0.000 INF=’’ STARTED|
|2019-01-25 11:09:09.984|Textual events||Event||0x7FC|0xAF4|[0|0]|Mod|UACLIENTHOST|Cat|14|Msg|(01C20400)-------------------- UA Client Host CREATED|
|2019-01-25 11:09:15.868|Textual events||Event||0x7FC|0xAF4|[0|0]|Mod|UACHANNEL|Cat|14|Msg|Could not connect to server (opc.tcp://LANGE-VM-W7:4840)! status(80AD0000) ‘The server has disconnected from the client.’|
|2019-01-25 11:09:19.950|Textual events||Stats||0x5A0|0x5FC|[0|0]|Mod|SYSTEM|Cat|15|Msg|ProcessInfo.E3SERVER(x64): CPU=0.18% PVT=9768KB VTL=140076KB WKS=23976KB HDL=236 GDI=20 USR=23 TRD=16 PGF=6602 PPL=245KB NPP=19KB UNM=‘SISTEMA’ RUN=1:17:49.409 UTM=0.156 KTM=1.546 INF=’’ |
|2019-01-25 11:09:20.825|Textual events||Stats||0x5A0|0x61C|[0|0]|Mod|SYSTEM|Cat|15|Msg|Threads: E3Server.DomainManager.0470: CPU=0.03% Occupancy=0.08% Calls=1098 E3Server.E3Server.0610: CPU=0.10% Occupancy=0.09% Calls=60 E3Server.RECServer.054C: CPU=0.00% Occupancy=0.13% Calls=126 E3Server.LicenseManager.0618: CPU=0.00% Occupancy=0.00% Calls=34 E3Server.ServerControl.0A88: CPU=0.00% Occupancy=0.01% Calls=60 E3Server.RECServer(5).0B84: CPU=0.00% Occupancy=0.01% Calls=227|
|2019-01-25 11:09:22.506|Textual events||Event||0x7FC|0xAF4|[0|0]|Mod|UACLIENTHOST|Cat|14|Msg|(01C20400)-------------------- UA Client Host DESTROYED|
|2019-01-25 11:09:22.506|Textual events||Stats||0x7FC|0x11C|[0|0]|Mod|SYSTEM|Cat|15|Msg|ProcessInfo.E3UACLIENT: CPU=2.43% PVT=6064KB VTL=94264KB WKS=10824KB HDL=150 GDI=20 USR=8 TRD=7 PGF=29496 PPL=158KB NPP=15KB UNM=‘lange’ RUN=13.523 UTM=0.140 KTM=0.203 INF=‘DriverUA1’ STOPPED|
|2019-01-25 11:09:24.424|Textual events||Stats||0x454|0xAB4|[0|0]|Mod|IODRV|Cat|15|Msg|UaQueue: Queued=0 Handled=0 Deleted=0 Pending=0|
|2019-01-25 11:09:24.455|Textual events||Module startup||0x824|0x7C8|[0|0]|Mod|E3|Cat|17|Msg|’“C:\Program Files\Elipse Software\Elipse E3\Bin32\E3UaClient.exe” -Embedding’ E3 4.8.352 Session1/WinSta0/Default|
|2019-01-25 11:09:24.455|Textual events||Stats||0x824|0x7C8|[0|0]|Mod|SYSTEM|Cat|15|Msg|ProcessInfo.E3UACLIENT: CPU=0.00% PVT=4140KB VTL=81756KB WKS=7540KB HDL=85 GDI=20 USR=4 TRD=2 PGF=1923 PPL=145KB NPP=11KB UNM=‘lange’ RUN=0.030 UTM=0.000 KTM=0.015 INF=’’ STARTED|
|2019-01-25 11:09:24.460|Textual events||Event||0x824|0xB98|[0|0]|Mod|UACLIENTHOST|Cat|14|Msg|(01CB0400)-------------------- UA Client Host CREATED|
|2019-01-25 11:09:25.235|Textual events||Event||0x824|0x1B8|[0|0]|Mod|UACLIENTSESSION|Cat|14|Msg|Connected to ‘opc.tcp://lange-VM-Linux:4840/’|
|2019-01-25 11:09:25.236|Textual events||Event||0x824|0x1B8|[0|0]|Mod|UACLIENTSESSION|Cat|14|Msg|Session activated on ‘opc.tcp://lange-VM-Linux:4840/’|
|2019-01-25 11:09:25.238|Textual events||Event||0x824|0x1B8|[0|0]|Mod|UACLIENTSESSION|Cat|14|Msg|SyncReadValue failed! status(0) / result(80250000) ‘The session id is not valid.’|
|2019-01-25 11:09:25.238|Textual events||Event||0x824|0x1B8|[0|0]|Mod|UACONNECTION|Cat|14|Msg|Reading NamespaceArray failed! error(80004005)|
|2019-01-25 11:09:25.239|Textual events||Event||0x824|0x1B8|[0|0]|Mod|UACLIENTSESSION|Cat|14|Msg|CreateSubscription failed! status(0) / result(80250000) ‘The session id is not valid.’|
|2019-01-25 11:09:25.240|Textual events||Event||0x824|0x1B8|[0|0]|Mod|UACLIENTSESSION|Cat|14|Msg|CreateSubscription failed! status(0) / result(80250000) ‘The session id is not valid.’|
|2019-01-25 11:09:25.240|Textual events||Event||0x824|0x1B8|[0|0]|Mod|E3UASUBSCRIPTION|Cat|14|Msg|Connect: CreateSubscription failed Id=1 - error(80004005)|
|2019-01-25 11:09:25.245|Textual events||Event||0x824|0xA74|[0|0]|Mod|UACALLBACK|Cat|14|Msg|Subscription(0): Publish failed! status(0) / result(80250000) ‘The session id is not valid.’|
|2019-01-25 11:09:56.403|Textual events||Event||0x454|0xA98|[0|0]|Mod|SMARTHEAP|Cat|14|Msg|Minimize heap freed 29949952 bytes (from 43820KB to 14572KB) in 0ms|

Olá Ricardo!

Poderia dar mais detalhes sobre o problema? O Servidor aparece na lista de seleção do E3? Em algum momento aparece alguma mensagem de erro na tela?

Olá,

Consigo encontrar o servidor OPC UA na lista (figuras abaixo), mas no momento em que ativo a comunicação e tento procurar uma tag, dá o erro do OPC UA Client.

Nas figuras, aquela tag T1 é de um teste anterior, com outro servidor OPC UA.

Abraço!

PS: é Rodrigo, não Ricardo :slight_smile:

Complementando, tela com os logs do aplicativo OPC UA server.

Rodrigo (desculpe o equívoco),

Peço que envie o log do E3 bem como o log do Windows para o meu e-mail (pgustavo@elipse.com.br).

Para coletar o log do Windows, siga as orientações do nosso KB:

http://kb.elipse.com.br/pt-br/questions/4657

Boa tarde, tenho o mesmo problema pra conectar no mesmo tipo de servidor OPCUA. (ver OPC UA Client - SecurityMode = UsmNone)
Conseguiu chegar a uma solução para o problema?

Olá,

Desculpe a demora na resposta. Feriadão é complicado.

O pessoal da Elipse me retornou, parece que realmente tem um problema no E3. A correção vai ser lançada junto na próxima versão do Elipse.

Abraço!

Obrigado pela resposta!
No meu atendimento só disseram que o problema era do meu servidor.

Vocês implementaram isso utilizando algum microcontrolador ou arduino? A aplicação funcionou juntamente com o Elipse E3? Gostaria de mais detalhes

Olá,

Andei meio parado com isso (falta de tempo), mas estava usando esse projeto:

Roda em um ESP32.

O projeto do cara tem uns problemas, e realmente fazem umas semanas que não testo. Mas acho que eu tinha conseguido usar com o Elipse, sem autenticação.

Se você quiser posso testar essa semana.

Em tempo: no Arduino Uno e outros pequenos não sei se consegue implementar, eles tem muita pouca memória e espaço na EEPROM do atmega328p.

Talvez rode em uma Mega, mas não sei se alguém portou. Até porque tem o problema da pilha tcp/ip que precisa estar junto.

Cheguei a olhar o código do Open62541, não é difícil de entender (a não ser que você queira escovar bits nos detalhes dos métodos). Mas creio que deve ser bem trabalhoso para portar.

Existem outros projetos portando o OPC UA para ESP, mas o do link acima foi o que achei mais fácil - os outros ou exigem alguma variação com RAM externa, ou coisas do tipo que não tenho aqui.

Não tentei com outros microcontroladores.

Ah, e o projeto acima roda em cima do FreeRTOS, talvez essa informação ajude a portar para outros microcontroladores.

Rodrigo

1 Like

Chegou a usar a IDE do arduino para a programação ou utilizou a ESP-IDF? Estou achando bem complicado o assunto, não encontrei nenhuma lib para o arduino ou nodemcu, somente achei para algumas aplicações em python, java, c++.

É no braço, a IDE do Arduino não serve.

O ESP-IDF novo é mais simples de usar, se for no Linux. Eu tinha uma máquina virtual só pra isso. Mas igual, até umas semanas atrás não tinha uma IDE “nativa”. Creio que vi alguns tutoriais para configurar o Eclipse mas não segui, achei complicado demais. Como eu só queria rodar o exemplo…

Uma dica: se você usar o ESP-IDF com o ESP32, tem que desativar uma proteção de brown-out, ou ele fica resetando - culpa das fontes e cabos ruins que usamos normalmente. No menu do ESP-IDF tem um lugar que desabilita.

Opa beleza amigo, com esp32 ainda não trabalhei. Somente com o esp8266 que é usado no nodemcu. Estou tentando rodar uma aplicação do opc ua em java. Aí to pensando em usar tcp/ip para comunicação entre nodemcu e o java. Depois utilizar o opc ua entre java e Elipse e3. Não sei se conseguirei, mas vamos tentar. Assunto complicado do opc ua, principalmente para embarcados.

Problema do ESP8266 é o mesmo do Arduino: relativamente pouca memória. O ESP32 tem mais recursos.

Entendo tuas perguntas porque queria fazer a mesma coisa, usar OPC UA em embarcados, mas usando diretamente o e3. Era para um projeto acadêmico.

Uma sugestão para você é usar o Pi Zero W, ele é caro, mas mais barato que o Raspberry Pi normal. Ok, tem a questão do real-time, o Pi precisa de sistema operacional, mas talvez te ajude.

Boa sorte aí!