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