Komplexe GDS-Portdefinitionen und -Verbindungen in der IEC-Programmierung meistern
Zusammenfassung
In diesem Artikel erkläre ich, wie man komplexe GDS-Ports wie Datenstrukturen in C++ definiert und sie mit GDS-Ports im IEC-Code verbindet.
Datenstrukturen
Wie man Datenstrukturen deklariert. 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, die IEC-Struktur muss dasselbe Datenlayout wie der C++-Datentyp haben. Zusätzlich 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 Out Port vom Typ UDT_PROJECT_MY_DATA kann nun mit dem GDS In Port TheData des C++-Programms verbunden werden.
Besonderer Hinweis zu STRING
Ein besonderer Hinweis zum STRING-Datentyp. Beachten Sie, dass der IEC-Code derzeit nicht UTF-8-Encoding kennt. Die String-Literale verwenden ISO-8859-1-Encoding. Daher kann es notwendig sein, sie in UTF-8 zu konvertieren, bevor man sie mit String-Literalen im C++-Code vergleicht. Sie können die boost-locale-Bibliothek für die Konvertierung zwischen ISO-8859-1 und UTF-8 in beide Richtungen verwenden.
Arp::String toUtf8(const Arp::String& s) {
return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}
Industrietechnik
- Kostspielige Fehler vermeiden: 7 häufige Pick-and-Pack-Fehler und bewährte Lösungen
- Diese sechs häufigen Logistikfehler vermeiden für nahtlosen Lieferketten-Erfolg
- US-Lieferketten stärken: Die strategische Rolle von Inland Ports
- Die sieben größten Last-Mile-Herausforderungen meistern: Bewährte Lösungen für schnelleren, kosteneffizienten Versand
- Vier Arten von Cyberangriffen – Bewährte Präventionsstrategien
- Drei zentrale Herausforderungen im Last-Mile-Delivery & bewährte Strategien zu deren Überwindung
- Versandfallen vermeiden: 7 häufige Fehler und bewährte Lösungen
- Top 4 Schaltanlagen-Ausfallursachen & bewährte Präventionsstrategien
- Wesentliche Maschinenausfall-Ursachen identifizieren und Strategien zur Vermeidung von Stillstand
- Interoperabilität erklärt: Wie Ihr Unternehmen nahtlose Integration erreicht