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

Complexe GDS Poortdefinities en Verbindingen in IEC Programmeren Beheersen

Samenvatting

In dit artikel leg ik uit hoe u complexe GDS-poorten kunt definiëren zoals datastructuren in C++ en ze kunt verbinden met GDS-poorten in IEC-code.

Datastructuren

Hoe datastructuren 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 header 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 datalay-out moet hebben als het C++-datatype. Daarnaast 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 verbonden worden met de GDS In-poort TheData van het C++-programma.

Speciale Opmerking bij STRING

Een speciale opmerking bij het STRING-datatype. Wees u ervan bewust dat de IEC-code voor nu niet op de hoogte is van UTF-8-codering. De string-literalen gebruiken ISO-8859-1-codering. Het kan daarom nodig zijn om ze naar UTF-8 te converteren voordat u ze vergelijkt met string-literalen in C++-code. U kunt de boost-locale-bibliotheek gebruiken voor het converteren tussen 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. Voorkom dure fouten: 7 veelvoorkomende pick-en-pack-fouten en bewezen oplossingen
  2. Vermijd deze zes veelgemaakte logistieke fouten voor naadloos toeleveringsketensucces
  3. VS Toeleveringsketens Verbeteren: De Strategische Rol van Binnenhavens
  4. De Top Zeven Last-Mile Leveringsuitdagingen Overwinnen: Bewijzen Oplossingen voor Snellere, Kosteneffectieve Verzending
  5. Vier typen cyberaanvallen — Bewezen preventiestrategieën
  6. Drie Sleuteluitdagingen in Last-Mile Delivery & Bewezen Strategieën om Ze te Overwinnen
  7. Verschuilingsvallen vermijden: 7 veelgemaakte fouten en bewezen oplossingen
  8. Top 4 Schakelkaststoring Oorzaken & Bewezen Preventiestrategieën
  9. Belangrijkste oorzaken van machinefaling identificeren en strategieën om downtime te voorkomen
  10. Interoperabiliteit uitgelegd: hoe uw bedrijf naadloze integratie bereikt
  11. Uw Haas CNC verbinden met een PC of Laptop: Stap-voor-stap Handleiding