Implementação de Controle de Barramento XH16EC com PLC Keyence KV8000 em Structured Text

A integração do PLC Keyence KV8000 com o módulo de barramento XH16EC oferece uma solução robusta para sistemas de automação industrial de alta performance. A utilização da linguagem Structured Text (ST) permite o desenvolvimento de algoritmos complexos e uma arquitetura de software altamente modular. Este artigo detalha a implementação de um framwork de controle baseado em Function Blocks (FBs) para gerenciar a comunicação de barramento e a lógica de dispositivos.

Arquitetura Modular e Function Blocks

A base do framework reside na encapsulação de funcionalidades específicas em Function Blocks. Essa abordagem orientada a objetos facilita a reutilização de código, testes unitários e manutenção. O sistema é dividido em camadas, onde FBs dedicados gerenciam a aquisição de dados do barramento XH16EC, enquanto outros controlam a lógica de atuação e a interface com o operador.

Aquisição de Dados do Barramento XH16EC

Para abstrair a complexidade dos comandos de baixo nível do barramento, um FB específico é utilizado para mapear e ler os dados dos nós remotos. A estrutura abaixo demonstra uma implementação otimizada para leitura de dados analógicos, utilizando uma máquina de estados interna para garantir a execução assíncrona.

FUNCTION_BLOCK FB_XH16EC_DataAcquisition
VAR_INPUT
    i_NodeAddress : UINT;      // Endereço do nó no barramento
    b_Execute     : BOOL;      // Sinal de gatilho para leitura
END_VAR
VAR_OUTPUT
    r_OutputValue : REAL;      // Valor analógico processado
    b_Done        : BOOL;      // Indicador de conclusão
    b_Error       : BOOL;      // Flag de erro de comunicação
END_VAR
VAR
    _step         : INT;       // Máquina de estados interna
    _rawData      : DINT;      // Buffer para dado bruto
END_VAR

// Lógica de execução
IF b_Execute THEN
    CASE _step OF
        0: // Inicialização
            b_Done := FALSE;
            b_Error := FALSE;
            _step := 10;
            
        10: // Leitura do registrador do barramento (Instrução específica Keyence)
            // Simulação de chamada de instrução do sistema
            // KV_BusRead(Node := i_NodeAddress, Data => _rawData);
            _step := 20;
            
        20: // Processamento e conversão de escala
            r_OutputValue := DINT_TO_REAL(_rawData) * 0.01; // Exemplo de escala
            b_Done := TRUE;
            _step := 0; // Reset
    END_CASE;
ELSE
    _step := 0;
    b_Done := FALSE;
END_IF;
END_FUNCTION_BLOCK

Orquestração no Programa Principal

O programa principal atua como um orquestrador, instenciando os FBs e gerenciando o fluxo de dados entre a camada de hardware e a camada de lógica de controle. A estrutura abaixo ilustra a integração entre a leitura do barramento e o acionamento de um atuador.

PROGRAM PRG_MainControl
VAR
    fb_BusReader   : FB_XH16EC_DataAcquisition;
    fb_MotorDrive  : FB_ActuatorControl;
    _startCommand  : BOOL;
END_VAR

// Leitura do sensor no nó 5 do barramento XH16EC
fb_BusReader(
    i_NodeAddress := 5,
    b_Execute := _startCommand
);

// Controle do atuador baseado no valor lido
IF fb_BusReader.b_Done THEN
    fb_MotorDrive(
        r_Setpoint := fb_BusReader.r_OutputValue,
        b_Enable := TRUE
    );
END_IF;
END_PROGRAM

Integração com IHM (Interface Homem-Máquina)

A comunicação com a IHM é gerenciada através de blocos dedicados que organizam o mapeamento de memória. Em vez de utilizar variáveis individuais, emprega-se estruturas de dados (STRUCT) para agrupar parâmetros, otimizando a troca de dados e facilitando o mapeamento em protocolos de rede.

TYPE ST_HMI_Parameters :
STRUCT
    r_TargetSpeed   : REAL;
    r_Temperature   : REAL;
    i_OperationMode : INT;
    b_SystemReset   : BOOL;
END_STRUCT
END_TYPE

FUNCTION_BLOCK FB_HMI_DataExchange
VAR_INPUT
    st_HMI_Write    : ST_HMI_Parameters; // Dados recebidos da IHM
END_VAR
VAR_OUTPUT
    st_HMI_Read     : ST_HMI_Parameters; // Dados enviados para IHM
END_VAR

// Lógica de sincronização e validação de dados
st_HMI_Read.r_TargetSpeed := st_HMI_Write.r_TargetSpeed;

// Validação de limites operacionais
IF st_HMI_Write.r_Temperature > 85.0 THEN
    st_HMI_Read.i_OperationMode := 99; // Modo de falha térmica
ELSE
    st_HMI_Read.i_OperationMode := st_HMI_Write.i_OperationMode;
END_IF;
END_FUNCTION_BLOCK

Tags: Keyence KV8000 XH16EC Structured Text IEC 61131-3 PLC Programming

Publicado em 6-4 03:55 por Thomas