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