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

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

  1. Evite Erros Custosos: 7 Principais Erros de Picking e Packing e Soluções Comprovadas
  2. Evite Estes Seis Erros Comuns de Logística para Sucesso Contínuo da Cadeia de Suprimentos
  3. Melhorar Cadeias de Abastecimento dos EUA: O Papel Estratégico de Portos Interiores
  4. Superando os 7 Principais Desafios da Última Milha: Soluções Comprovadas para Entregas Mais Rápidas e Custo-Efetivas
  5. Quatro Tipos de Ciberataques — Estratégias Comprovadas de Prevenção
  6. Três Desafios-Chave na Entrega de Última Milha e Estratégias Comprovadas para Superá-los
  7. Evite Armadilhas no Envio: 7 Erros Comuns e Soluções Comprovadas
  8. Top 4 Causas de Falha em Switchgear e Estratégias de Prevenção Comprovadas
  9. Identificando Causas Principais de Falha de Máquinas e Estratégias para Evitar Tempo de Inatividade
  10. Interoperabilidade Explicada: Como Sua Empresa Pode Alcançar Integração Perfeita