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

Maîtriser les définitions et connexions de ports GDS complexes en programmation IEC

Résumé

Cet article explique comment définir des ports GDS complexes comme des structures de données en C++ et les connecter à des ports GDS en code IEC.

Structures de données

Comment déclarer des structures de données. Regardons du côté 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

Dans l'en-tête de la classe 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 connecter le port GDS à un port GDS en code IEC, la variable IEC doit être du même type. La structure IEC doit avoir la même disposition de données que le type 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 GDS Out de type UDT_PROJECT_MY_DATA peut maintenant être connecté au port GDS In TheData du programme C++.

Note spéciale sur STRING

Attention au type STRING. Le code IEC n'est pas encore conscient de l'encodage UTF-8. Les littéraux de chaîne utilisent l'encodage ISO-8859-1. Il peut être nécessaire de les convertir en UTF-8 avant de les comparer avec des littéraux en C++. Utilisez la bibliothèque boost-locale pour convertir entre ISO-8859-1 et UTF-8.

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

Technologie industrielle

  1. Éviter les erreurs coûteuses : 7 erreurs clés de prélèvement-emballage et solutions éprouvées
  2. Évitez ces six erreurs logistiques courantes pour une réussite sans faille de la chaîne d'approvisionnement
  3. Renforcer les supply chains américaines : Le rôle stratégique des ports intérieurs
  4. Surmonter les 7 défis majeurs de la livraison du dernier kilomètre : solutions éprouvées pour un shipping plus rapide et rentable
  5. Quatre types de cyberattaques — stratégies de prévention éprouvées
  6. Trois défis clés de la livraison du dernier kilomètre et stratégies éprouvées pour les surmonter
  7. Éviter les pièges de l'expédition : 7 erreurs courantes et solutions éprouvées
  8. 4 causes principales de défaillance d'appareillage et stratégies de prévention éprouvées
  9. Interopérabilité expliquée : comment votre entreprise peut atteindre une intégration fluide