Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Comment définir des ports GDS complexes et les connecter au port GDS dans le code CEI

Résumé

Dans cet article, j'expliquerai comment définir des ports GDS complexes comme des structures de données en C++ et les connecter au port GDS dans le code CEI.

Structures de données

Comment déclarer des structures de données. Regardons C++.

#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

Et dans l'en-tête de la classe de programme, ce type peut maintenant être défini comme port GDS.

#pragma once
...
#include "MyData.hpp"

namespace MyComponent
{

//#program
//#component(MyComponent::MyComponent)
class MyProgramm ...
{

...

public:
    //#port
    //#name(TheData)
    //#attributes(Input)
    MyData GdsPortMyData;

};

} // namespace MyComponent

Pour pouvoir connecter le port GDS à un port GDS en code CEI, la variable dans le code CEI doit être du même type. Cela signifie que la structure IEC doit avoir la même disposition de données que le type de données C++. De plus, tous les noms d'éléments doivent correspondre aux éléments du type C++.

TYPE

UDT_PROJECT_MY_DATA : STRUCT
    Valid BOOL;
    IntegerValue : INT;
    StringValue : STRING;
    Data : ARRAY [0..7] OF BYTE;
END_STRUCT;

END_TYPE

Un port de sortie GDS de type UDT_PROJECT_MY_DATA peut maintenant être connecté au GDS In Port TheData du programme C++.

Remarque spéciale à STRING

Remarque spéciale concernant le type de données STRING. Sachez que le code CEI pour l'instant n'est pas conscient de l'encodage UTF-8. Les littéraux de chaîne utilisent le codage ISO-8859-1. Il peut donc être nécessaire de les convertir en UTF-8 avant de les comparer avec des littéraux de chaîne dans le code C++. Vous pouvez utiliser la bibliothèque boost-locale pour convertir ISO-8859-1 en UTF-8 et inversement.

Arp::String toUtf8(const Arp::String& s)
{
    return boost::locale::conv::to_utf<char>(s.CStr(), "ISO-8859-1");
}

Technologie industrielle

  1. Sept erreurs de sélection et d'emballage courantes — et comment les corriger
  2. Six erreurs logistiques courantes et comment les éviter
  3. Comment le port intérieur peut-il mieux connecter les chaînes d'approvisionnement américaines
  4. Sept défis de livraison du dernier kilomètre et comment les résoudre
  5. Quatre types de cyberattaques et comment les prévenir
  6. Trois pièges de la livraison au dernier kilomètre — et comment les éviter
  7. Sept erreurs courantes d'expédition et comment les éviter
  8. 4 principales causes de défaillance d'appareillage de commutation et comment les éviter
  9. Qu'est-ce que l'interopérabilité et comment mon entreprise peut-elle y parvenir ?