Construa seu primeiro sistema de comunicação de dados industriais em 10 minutos

O que é python-opcua?

O python-opcua é uma biblioteca de código aberto licenciada sob LGPL que implementa o protocolo OPC UA (Open Platform Communications Unified Architecture) totalmente em Python. Ele permite que você crie servidores e clientes OPC UA de forma simples e rápida, ideal para integração de dados em ambientes industriais.

Vantagens do python-opcua

  • Escrito em Python – Não há necessidade de compilação em C++
  • Multiplataforma – Funciona em Windows, Linux, macOS e dispositivos como Raspberry Pi
  • LGPL – Permite uso comercial com liberdade de modificação
  • Funcionalidades completas – Suporte a leitura/escrita de dados, eventos, histórico, segurança e mais
  • Testes automatizados – Cobertura superior a 95%

Passo a passo: Crie um sistema funcional em minutos

Passo 1: Instale a biblioteca

Instale via pip:

pip install opcua

Para usuários de Ubuntu, também há suporte via apt:

apt install python-opcua
apt install python-opcua-tools

Passo 2: Configure um servidor OPC UA

Exemplo de código para criar um servidor que simula a leitura de temperatura:

from opcua import Server
import time
import random

server = Server()
server.set_endpoint("opc.tcp://0.0.0.0:4840/factory/temperature/")

uri = "http://factory.temperature"
idx = server.register_namespace(uri)

objects = server.get_objects_node()
sensor = objects.add_object(idx, "AmbientSensor")
temp_var = sensor.add_variable(idx, "CurrentTemp", 20.0)
temp_var.set_writable()

server.start()
print("Servidor ativo na porta 4840")

try:
    while True:
        new_value = 20.0 + random.uniform(-1.5, 1.5)
        temp_var.set_value(new_value)
        time.sleep(3)
finally:
    server.stop()

Passo 3: Crie um cliente OPC UA

Exemplo de cliente que se conecta ao servidor e monitora as atualizações:

from opcua import Client

client = Client("opc.tcp://192.168.1.100:4840/factory/temperature/")
client.connect()

root = client.get_root_node()
temp_node = root.get_child(["0:Objects", "2:AmbientSensor", "2:CurrentTemp"])

print(f"Temperatura atual: {temp_node.get_value()}°C")

class TempHandler:
    def datachange_notification(self, node, val, data):
        print(f"Nova temperatura registrada: {val}°C")

handler = TempHandler()
subscription = client.create_subscription(500, handler)
subscription.subscribe_data_change(temp_node)

client.disconnect()

Aplicações reais

Monitoramento de equipamentos

Conecte sensores e PLCs para coletar dados em tempo real, como temperatura, pressão e status operacional de máquinas.

Integração entre sistemas

Facilite a comunicação entre SCADA, sistemas Linux e plataformas na nuvem, criando um fluxo de dados contínuo da fábrica ao data center.

Prototipagem rápida

Use ferramentas CLI como uals, uaread e uasubscribe para testar e depurar comunicações OPC UA sem codificação.

Recursos avançados

Configuração de segurença

server = Server()
server.set_security_policy([
    ua.SecurityPolicyType.Basic256Sha256_SignAndEncrypt
])
server.load_certificate("server.crt")
server.load_private_key("server.key")

Armazenamento de histórico de dados

from opcua.server.history import HistoryDict
history = HistoryDict()
myvar.set_history_storage(history)

Estruturas de dados personalizadas

class MachineData:
    def __init__(self):
        self.active = True
        self.rpm = 1500
        self.status_code = 0

server.register_extension_object("MachineData", MachineData)

Dicas e práticas recomendadas

  • Comece com exemplos simples e adicione recursos progressivamente
  • Habilite o cache de espaço de endereços para acelerar o tempo de inicialização
  • Implemente segurança desde o início, mesmo em ambientes de teste
  • Use logs detalhados para facilitar a depuração
  • Considere migrar para opcua-asyncio para aplicações de alto desempenho

Tags: OPC-UA Python Industrial-Communication Data-Integration Server-Client

Publicado em 9-12 18:29