Como definir portas GDS complexas e conectá-las à porta GDS no código IEC
Resumo
Neste artigo, explicarei como definir portas GDS complexas como estruturas de dados em C++ e conectá-las à porta GDS em código IEC.
Estruturas de dados
Como declarar estruturas de dados. Vamos olhar para 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 cabeçalho da classe programm esse tipo agora pode ser definido como GDS Port.
#pragma once
...
#include "MyData.hpp"
namespace MyComponent
{
//#program
//#component(MyComponent::MyComponent)
class MyProgramm ...
{
...
public:
//#port
//#name(TheData)
//#attributes(Input)
MyData GdsPortMyData;
};
} // namespace MyComponent
Para poder 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 de dados C++. Além disso, todos os nomes de elementos devem corresponder aos elementos do 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 porta de saída GDS do tipo
UDT_PROJECT_MY_DATA
agora pode ser conectado ao GDS In Port TheData
do programa C++. Nota especial para STRING
Uma observação especial para o tipo de dados STRING. Esteja ciente de que o código IEC por enquanto não está ciente da codificação UTF-8. Os literais de string estão usando a codificação ISO-8859-1. Portanto, pode ser necessário convertê-los para UTF-8 antes de compará-los com literais de string no código C++. Você pode usar a biblioteca boost-locale para converter entre ISO-8859-1 para UTF-8 e vice-versa.
Arp::String toUtf8(const Arp::String& s)
{
return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}
Tecnologia industrial
- Sete erros comuns de pick-and-pack - e como corrigi-los
- Seis erros comuns de logística e como evitá-los
- Como o porto interno pode conectar melhor as cadeias de abastecimento dos EUA
- Sete desafios de entrega da última milha e como resolvê-los
- Quatro tipos de ataques cibernéticos e como evitá-los
- Três armadilhas da entrega na última milha - e como evitá-las
- Sete erros comuns de remessa e como evitá-los
- 4 principais causas de falha de aparelhagem e como evitá-las
- Principais causas de falha de máquina e como evitá-las
- O que é interoperabilidade e como minha empresa pode alcançá-la?