Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Dominar definiciones y conexiones complejas de puertos GDS en programación IEC

Resumen

En este artículo explicaré cómo definir puertos GDS complejos como estructuras de datos en C++ y conectarlos a puertos GDS en código IEC.

Estructuras de datos

Cómo declarar estructuras de datos. Veamos 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

Y en el Header de la clase del programa, este tipo ahora puede definirse como Puerto 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 poder conectar el Puerto GDS a un Puerto GDS en código IEC, la variable en el código IEC tiene que ser del mismo tipo. Esto significa que la estructura IEC tiene que tener el mismo diseño de datos que el tipo de datos C++. Además, todos los nombres de elementos tienen que coincidir con los elementos en el tipo C++.

TYPE UDT_PROJECT_MY_DATA : STRUCT
  Valid : BOOL;
  IntegerValue : INT;
  StringValue : STRING;
  Data : ARRAY [0..7] OF BYTE;
END_STRUCT
END_TYPE

Un Puerto GDS de Salida (Out Port) del tipo UDT_PROJECT_MY_DATA ahora puede conectarse al Puerto GDS de Entrada (In Port) TheData del programa C++.

Nota especial sobre STRING

Una nota especial sobre el tipo de dato STRING. Tenga en cuenta que el código IEC por ahora no es consciente de la codificación UTF-8. Los literales de cadena están usando codificación ISO-8859-1. Así que puede ser necesario convertirlos a UTF-8 antes de compararlos con literales de cadena en código C++. Puede usar la biblioteca boost-locale para convertir entre ISO-8859-1 a UTF-8 y viceversa.

Arp::String toUtf8(const Arp::String& s) {
  return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}

Tecnología Industrial

  1. Evite errores costosos: 7 errores clave en picking y packing y soluciones probadas
  2. Evite estos seis errores logísticos comunes para el éxito fluido de la cadena de suministro
  3. Mejorando las Cadenas de Suministro de EE. UU.: El Rol Estratégico de los Puertos Interiores
  4. Superando los 7 principales desafíos de la última milla: Soluciones probadas para envíos más rápidos y rentables
  5. Cuatro tipos de ciberataques – Estrategias de prevención probadas
  6. Tres desafíos clave en la entrega de última milla y estrategias probadas para superarlos
  7. Evite los Errores de Envío: 7 Fallos Comunes y Soluciones Comprobadas
  8. 4 causas principales de fallo en switchgear y estrategias de prevención probadas
  9. Identificando causas clave de fallo de máquina y estrategias para evitar tiempo de inactividad
  10. Interoperabilidad explicada: Cómo tu empresa puede lograr una integración fluida
  11. Conecte su Haas CNC a PC o Portátil: Guía Paso a Paso