Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

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

  1. Zeven veelvoorkomende pick-and-pack-fouten - en hoe ze te verhelpen
  2. Zes veelvoorkomende logistieke fouten en hoe ze te vermijden
  3. Hoe de binnenhaven de Amerikaanse toeleveringsketens beter kan verbinden
  4. Zeven Last-Mile Delivery-uitdagingen en hoe ze op te lossen
  5. Vier soorten cyberaanvallen en hoe u ze kunt voorkomen
  6. Drie valkuilen van last-mile delivery - en hoe ze te vermijden
  7. Zeven veelvoorkomende verzendblunders en hoe u ze kunt vermijden
  8. 4 belangrijke oorzaken van uitval van schakelapparatuur en hoe deze te vermijden
  9. Belangrijkste oorzaken van machinestoringen en hoe ze te voorkomen
  10. Wat is interoperabiliteit en hoe kan mijn bedrijf dit bereiken?
  11. Haas CNC aansluiten op pc en laptop