Dominando Definições e Conexões Complexas de Portas GDS em Programação IEC
Resumo
Neste artigo explico como definir portas GDS complexas como estruturas de dados em C++ e conectá-las a portas GDS em código IEC.
Estruturas de Dados
Como declarar estruturas de dados. Veja em C++.
#pragma once
#include "Arp/System/Core/Arp.h"
#include "Arp/Plc/Commons/PlcTypes.h"
namespace MyComponent {
class MyData {
public:
MyData() = default;
~MyData() = default;
public:
Arp::boolean Valid = false;
Arp::int16 IntegerValue = 0;
Arp::Plc::Commons::Gds::StaticString<80> StringValue = "";
Arp::uint8 Data[8] = {0x00};
};
} // namespace MyComponent
E no Header da classe do programa, este tipo pode ser definido como Porta GDS.
#pragma once
...
#include "MyData.hpp"
namespace MyComponent {
//#program
//#component(MyComponent::MyComponent)
class MyProgramm ... {
...
public:
//#port
//#name(TheData)
//#attributes(Input)
MyData GdsPortMyData;
};
} // namespace MyComponent
Para conectar a Porta GDS a uma Porta GDS em código IEC, a variável no código IEC deve ser do mesmo tipo. Isso significa que a estrutura IEC deve ter o mesmo layout de dados que o tipo C++. Além disso, todos os nomes de elementos devem corresponder aos elementos no tipo C++.
TYPE UDT_PROJECT_MY_DATA : STRUCT
Valid BOOL;
IntegerValue : INT;
StringValue : STRING;
Data : ARRAY [0..7] OF BYTE;
END_STRUCT
END_TYPE
Uma GDS Out Port do tipo UDT_PROJECT_MY_DATA pode agora ser conectada à GDS In Port TheData do programa C++.
Nota especial sobre STRING
Nota especial sobre tipo STRING. Cuidado: o código IEC por enquanto não reconhece encoding UTF-8. Literais de string usam encoding ISO-8859-1. Pode ser necessário convertê-los para UTF-8 antes de comparar com literais de string em código C++. Use biblioteca boost-locale para converter entre ISO-8859-1 e UTF-8.
Arp::String toUtf8(const Arp::String& s) {
return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}
Tecnologia industrial
- Evite Erros Custosos: 7 Principais Erros de Picking e Packing e Soluções Comprovadas
- Evite Estes Seis Erros Comuns de Logística para Sucesso Contínuo da Cadeia de Suprimentos
- Melhorar Cadeias de Abastecimento dos EUA: O Papel Estratégico de Portos Interiores
- Superando os 7 Principais Desafios da Última Milha: Soluções Comprovadas para Entregas Mais Rápidas e Custo-Efetivas
- Quatro Tipos de Ciberataques — Estratégias Comprovadas de Prevenção
- Três Desafios-Chave na Entrega de Última Milha e Estratégias Comprovadas para Superá-los
- Evite Armadilhas no Envio: 7 Erros Comuns e Soluções Comprovadas
- Top 4 Causas de Falha em Switchgear e Estratégias de Prevenção Comprovadas
- Identificando Causas Principais de Falha de Máquinas e Estratégias para Evitar Tempo de Inatividade
- Interoperabilidade Explicada: Como Sua Empresa Pode Alcançar Integração Perfeita