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

Cómo definir puertos GDS complejos y conectarlos al puerto GDS en código IEC

Resumen

En este artículo explicaré cómo definir puertos GDS complejos como estructuras de datos en C++ y conectarlos al puerto 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 encabezado de la clase de programa, este tipo ahora se puede definir 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 debe ser del mismo tipo. Esto significa que la estructura IEC debe tener el mismo diseño de datos que el tipo de datos de C++. Además, todos los nombres de los elementos deben coincidir con los elementos del 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 de salida GDS del tipo UDT_PROJECT_MY_DATA ahora se puede conectar al GDS In Port TheData del programa C++.

Nota especial a CADENA

Una nota especial para el tipo de datos STRING. Tenga en cuenta que el código IEC por ahora no reconoce la codificación UTF-8. Los literales de cadena utilizan la codificación ISO-8859-1. Por lo tanto, puede ser necesario convertirlos a UTF-8 antes de compararlos con cadenas literales en código C++. Puede usar la biblioteca boost-locale para convertir de 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. Siete errores comunes de Pick-and-Pack y cómo solucionarlos
  2. Seis errores comunes de logística y cómo evitarlos
  3. Cómo el puerto interior puede conectar mejor las cadenas de suministro de EE. UU.
  4. Siete desafíos de entrega de última milla y cómo resolverlos
  5. Cuatro tipos de ciberataques y cómo prevenirlos
  6. Tres trampas de la entrega en la última milla y cómo evitarlas
  7. Siete errores comunes de envío y cómo evitarlos
  8. 4 causas principales de fallas en los interruptores y cómo evitarlas
  9. Principales causas de fallas en las máquinas y cómo prevenirlas
  10. ¿Qué es la interoperabilidad y cómo puede lograrla mi empresa?
  11. Cómo conectar Haas CNC a una PC y computadora portátil