Hoe complexe GDS-poorten te definiëren en te verbinden met GDS-poort in IEC-code?
Abstract
In dit artikel zal ik uitleggen hoe je complexe GDS-poorten zoals datastructuren in C++ definieert en deze verbindt met de GDS-poort in IEC-code.
Datastructuren
Hoe gegevensstructuren te declareren. Laten we naar C++ kijken.
#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
En in de koptekst van de programmaklasse kan dit type nu worden gedefinieerd als GDS-poort.
#pragma once
...
#include "MyData.hpp"
namespace MyComponent
{
//#program
//#component(MyComponent::MyComponent)
class MyProgramm ...
{
...
public:
//#port
//#name(TheData)
//#attributes(Input)
MyData GdsPortMyData;
};
} // namespace MyComponent
Om de GDS-poort te kunnen verbinden met een GDS-poort in IEC-code, moet de variabele in de IEC-code van hetzelfde type zijn. Dit betekent dat de IEC-structuur dezelfde gegevenslay-out moet hebben als het C++-gegevenstype. Bovendien moeten alle elementnamen overeenkomen met de elementen in het C++-type.
TYPE
UDT_PROJECT_MY_DATA : STRUCT
Valid BOOL;
IntegerValue : INT;
StringValue : STRING;
Data : ARRAY [0..7] OF BYTE;
END_STRUCT;
END_TYPE
Een GDS Out-poort van het type UDT_PROJECT_MY_DATA
kan nu worden aangesloten op de GDS In Port TheData
van het C++-programma.
Speciale opmerking voor STRING
Een speciale opmerking voor het gegevenstype STRING. Houd er rekening mee dat de IEC-code voorlopig geen UTF-8-codering kent. De letterlijke tekenreeksen gebruiken ISO-8859-1-codering. Het kan dus nodig zijn om ze naar UTF-8 te converteren voordat ze worden vergeleken met letterlijke tekenreeksen in C++-code. U kunt de boost-locale-bibliotheek gebruiken voor het converteren van ISO-8859-1 naar UTF-8 en terug.
Arp::String toUtf8(const Arp::String& s)
{
return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}
Industriële technologie
- Zeven veelvoorkomende pick-and-pack-fouten - en hoe ze te verhelpen
- Zes veelvoorkomende logistieke fouten en hoe ze te vermijden
- Hoe de binnenhaven de Amerikaanse toeleveringsketens beter kan verbinden
- Zeven Last-Mile Delivery-uitdagingen en hoe ze op te lossen
- Vier soorten cyberaanvallen en hoe u ze kunt voorkomen
- Drie valkuilen van last-mile delivery - en hoe ze te vermijden
- Zeven veelvoorkomende verzendblunders en hoe u ze kunt vermijden
- 4 belangrijke oorzaken van uitval van schakelapparatuur en hoe deze te vermijden
- Belangrijkste oorzaken van machinestoringen en hoe ze te voorkomen
- Wat is interoperabiliteit en hoe kan mijn bedrijf dit bereiken?
- Haas CNC aansluiten op pc en laptop