Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

So definieren Sie komplexe GDS-Ports und verbinden sie mit dem GDS-Port im IEC-Code

Zusammenfassung

In diesem Artikel werde ich erklären, wie man komplexe GDS-Ports wie Datenstrukturen in C++ definiert und sie mit dem GDS-Port im IEC-Code verbindet.

Datenstrukturen

So deklarieren Sie Datenstrukturen. Schauen wir uns C++ an.

#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

Und im Header der Programmklasse kann dieser Typ nun als GDS Port definiert werden.

#pragma once
...
#include "MyData.hpp"

namespace MyComponent
{

//#program
//#component(MyComponent::MyComponent)
class MyProgramm ...
{

...

public:
    //#port
    //#name(TheData)
    //#attributes(Input)
    MyData GdsPortMyData;

};

} // namespace MyComponent

Um den GDS-Port mit einem GDS-Port im IEC-Code verbinden zu können, muss die Variable im IEC-Code vom gleichen Typ sein. Das bedeutet, dass die IEC-Struktur das gleiche Datenlayout wie der C++-Datentyp haben muss. Außerdem müssen alle Elementnamen mit den Elementen im C++-Typ übereinstimmen.

TYPE

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

END_TYPE

Ein GDS-Ausgangsport vom Typ UDT_PROJECT_MY_DATA kann nun mit dem GDS In Port TheData verbunden werden des C++-Programms.

Besonderer Hinweis zu STRING

Ein besonderer Hinweis zum STRING-Datentyp. Beachten Sie, dass der IEC-Code derzeit keine UTF-8-Codierung kennt. Die Zeichenfolgenliterale verwenden die ISO-8859-1-Codierung. Daher kann es erforderlich sein, sie in UTF-8 zu konvertieren, bevor sie mit Zeichenfolgenliteralen in C++-Code verglichen werden. Sie können die boost-locale-Bibliothek zum Konvertieren zwischen ISO-8859-1 in UTF-8 und zurück verwenden.

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

Industrietechnik

  1. Sieben häufige Pick-and-Pack-Fehler – und wie man sie behebt
  2. Sechs gängige Logistikfehler und wie man sie vermeidet
  3. Wie der Binnenhafen die US-Lieferketten besser verbinden kann
  4. Sieben Last-Mile-Lieferherausforderungen und wie man sie löst
  5. Vier Arten von Cyberangriffen und wie man sie verhindert
  6. Drei Fallstricke bei der Zustellung auf der letzten Meile – und wie man sie vermeidet
  7. Sieben häufige Versandfehler und wie man sie vermeidet
  8. 4 Hauptursachen für Schaltanlagenausfälle und wie man sie vermeidet
  9. Die häufigsten Ursachen für Maschinenausfälle und wie man sie vermeidet
  10. Was ist Interoperabilität und wie kann mein Unternehmen sie erreichen?