Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

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

  1. Sete erros comuns de pick-and-pack - e como corrigi-los
  2. Seis erros comuns de logística e como evitá-los
  3. Como o porto interno pode conectar melhor as cadeias de abastecimento dos EUA
  4. Sete desafios de entrega da última milha e como resolvê-los
  5. Quatro tipos de ataques cibernéticos e como evitá-los
  6. Três armadilhas da entrega na última milha - e como evitá-las
  7. Sete erros comuns de remessa e como evitá-los
  8. 4 principais causas de falha de aparelhagem e como evitá-las
  9. Principais causas de falha de máquina e como evitá-las
  10. O que é interoperabilidade e como minha empresa pode alcançá-la?