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 types de données simples et complexes en C++ avec PLCnext Engineer

Bonjour à tous,

Dans ce billet de blog, nous allons explorer les types de données simples et complexes en C++ et PLCnext Engineer. Il contiendra deux parties distinctes : un exercice simple et un exercice complexe.

Ce tutoriel suppose que vous avez une certaine expérience avec C++ et PLCnext Engineer.

Outils nécessaires

Tout d'abord, vous aurez besoin des bons outils : un éditeur C++, le logiciel PLCnext Engineer et un PLC Phoenix Contact pour l'exécuter. Voici le matériel que j'ai utilisé :

J'ai personnellement choisi Visual Studio comme éditeur C++, mais Eclipse peut aussi être utilisé. Les liens vers les tutoriels :

Pour PLCnext Engineer, vous le trouverez sur notre site web.

Exercice simple

Pour ce premier exemple, nous allons créer une petite application qui vérifie si le bon nombre est envoyé depuis le PLC. Créez d'abord un nouveau projet C++. Ensuite, allez dans le fichier header, le nom devrait ressembler à [NomDuProjet].hpp. Il y a aussi des fichiers nommés [nomDuProjet]component.hpp que nous n'utiliserons pas. Une fois dans le fichier header, vous verrez un mur de code mais ne vous inquiétez pas, ce sera simple. D'abord, nous allons définir les ports, un IN et un OUT. Ils peuvent être définis ainsi (notez que ceci est uniquement pour les types de données simples) :

//#port
//#attributes(input)
//#name(InputTest)
int64 InputTest = 0;

//#port
//#attributes(Output)
//#name(outputTest)
int64 OutputTest = 0;

Ensuite, passons au fichier suivant où nous ferons le codage réel. Ce devrait être nommé [NomDuProjet].cpp et ne devrait pas contenir grand-chose. Nous allons changer cela bientôt. Ajoutons du code pour vérifier les nombres soit en utilisant des if, soit un switch case, c'est à vous de choisir. J'ai utilisé des structures if :

void PLMProjectReadInputProgram::Execute() {
    if (InputTest == 1) {
        OutputTest = 15;
    }
    if (InputTest == 2) {
        OutputTest = 150;
    }
    if (InputTest == 3) {
        OutputTest = 1500;
    }
    if (InputTest == 4) {
        OutputTest = 15000;
    }
}

Avant de passer à PLCnext Engineer, nous devons transformer ce projet C++ en bibliothèque pour que le PLC la comprenne. Cela se fait en cliquant simplement sur "build" en haut de l'écran. Cela devrait tourner un moment et vous indiquera quand la bibliothèque est terminée. Si cette étape n'est pas claire, je vous conseille vivement de consulter les tutoriels listés ci-dessus.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Naviguez vers le programme principal dans l'onglet Composants sous Programmation dans le dossier 'Local', puis sélectionnez Variables dans l'écran principal pour voir les variables dans le PLC. Ici, nous pouvons choisir un nom, un type de données et l'usage. Les types de données dans PLCnext Engineer doivent être les mêmes que dans le programme C++. Un lien vers les différents types et leurs équivalents se trouve ici. L'usage définira si les variables sont locales ou peuvent être utilisées pour envoyer et recevoir des données depuis des programmes ou variables externes.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Après cela, nous allons commencer à connecter les variables après avoir ajouté la nouvelle bibliothèque. Cela se fait ainsi :

La bibliothèque que vous avez créée se trouve dans le dossier bin de votre projet, copiez-la dans le dossier libraries pour PLCnext Engineer. L'emplacement ressemble à ceci :

C:\Users\Public\Documents\PLCnext Engineer\Libraries

Ensuite, retournez dans PLCnext Engineer pour ajouter la bibliothèque à votre programme. Nous naviguerons vers l'onglet Composants, ouvrirons la boîte Libraries et ferons un clic droit sur Libraries. Puis cliquez sur 'add user library', cela vous mènera au dossier libraries vu précédemment. Choisissez la bibliothèque à utiliser et continuez.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Une fois cela fait, nous devrons ajouter le programme aux tâches, ce qui se fait comme suit. Du côté gauche de l'écran dans la zone plant, double-cliquez sur PLCnext. Il devrait s'ouvrir au milieu. Allez ensuite dans l'onglet 'tasks and events' et ajoutez un nouveau programme après MainInstance. Cela peut se faire de deux façons : en sélectionnant le type de programme ou en le glissant depuis la zone Composants sous 'PLCnext Components & Programs'.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Les variables devraient alors apparaître dans l'onglet 'Port list' à côté de 'tasks and events'. Ouvrez-le pour voir toutes vos variables de C++ et PLCnext. Cela devrait ressembler à ceci :

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Si vous avez tout fait correctement, vous devriez pouvoir connecter les ports OUT de votre PLC au port IN du programme C++, l'inverse est aussi possible, et cela devrait ressembler à ceci. Si cela ne fonctionne pas, essayez de vérifier vos types de données.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Pour ajouter une valeur factice à notre variable, naviguons vers le programme principal dans l'onglet Composants, puis sélectionnez Code dans l'écran principal pour voir le code et ajouter le nôtre. Nous allons simplement définir la variable sortante sur une valeur numérique, dans ce cas 1.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Maintenant, déployons le projet sur le PLC et nous devrions obtenir 15 comme réponse du code C++. Vous pouvez voir les variables dans la 'Ports List' d'avant.

Exercice complexe

Pour cet exemple, nous allons créer une petite application qui enverra un tableau de structures vers et depuis le PLC. Créez d'abord un nouveau projet C++. Allez dans le fichier header [NomDuProjet].hpp (les fichiers [nomDuProjet]component.hpp ne seront pas utilisés). Une fois dans le header, vous verrez un mur de code mais ne vous inquiétez pas. D'abord, nous devons créer une structure pour cet exemple : une structure pour une voiture. Cela se fait comme suit :

public: // typedefs
    struct StrCar {
        StaticString<80> sbrand;
        int16 iHorsepower;
        int16 iYear;
        boolean xInsured;
    };

IMPORTANT ! Les noms et types en C++ et PLCnext Engineer doivent être identiques ! Les types de données se trouvent ici.

Ensuite, nous définirons les ports, un IN et un OUT. Comme ce seront des listes de données, faites-les comme tels. Il est aussi important d'en faire une liste de 'voitures'. Cela se fait ainsi :

//#port
//#attributes(Input)
//#name(CarIn)
StrCar CarToC[2];

//#port
//#attributes(Output)
//#name(CarOut)
StrCar CarFromC[2];

Passons au fichier suivant pour le codage réel. Ce devrait être nommé [NomDuProjet].cpp. Nous allons modifier les valeurs de la voiture 1 et voiture 2.

// Définit le premier membre de la liste de voitures égal à la voiture du PLC
CarFromC[0].sbrand = CarToC[1].sbrand;
CarFromC[0].iHorsepower = CarToC[1].iHorsepower;
CarFromC[0].iYear = CarToC[1].iYear;
CarFromC[0].xInsured = CarToC[1].xInsured;

// Ajoute des valeurs factices au second membre
CarFromC[1].sbrand = CarToC[0].sbrand;
CarFromC[1].iHorsepower = CarToC[0].iHorsepower;
CarFromC[1].iYear = CarToC[0].iYear;
CarFromC[1].xInsured = CarToC[0].xInsured;

Avant de passer à PLCnext Engineer, nous devons transformer ce projet C++ en bibliothèque. Cliquez sur build en haut de l'écran. Cela devrait tourner un moment et vous indiquera quand la bibliothèque est complète.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Maintenant, avant de pouvoir créer des variables dans PLCnext Engineer, nous devons créer notre propre type de données : une structure voiture et une liste de voitures. Pour cela, nous aurons besoin d'un fichier datatypes, trouvable et créable ici :

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Ouvrez ce fichier s'il n'est pas déjà ouvert, puis commençons à créer notre propre structure :

TYPE
    StrCar:
    STRUCT
        sBrand: STRING;
        iHorsepower: INT;
        iYear: int;
        xInsured: BOOL;
    END_STRUCT
END_TYPE

IMPORTANT ! Les noms et types en C++ et PLCnext Engineer doivent être identiques ! Les types de données se trouvent ici.

Après avoir créé la structure, nous devons créer un tableau de ce type, dans le même fichier :

TYPE
    carList: ARRAY[0..1] OF StrCar;
END_TYPE

Pour créer une variable avec le type 'carList', naviguez vers le programme principal dans l'onglet Composants sous 'programmation', puis dans le dossier 'Programmes', puis sélectionnez Variables dans l'écran principal. Choisissez un nom, comme type de données sélectionnez notre type personnalisé :

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Ensuite, connectez les variables après avoir ajouté la nouvelle bibliothèque. La bibliothèque se trouve dans le dossier bin de votre projet, copiez-la dans le dossier libraries pour PLCnext Engineer :

C:\Users\Public\Documents\PLCnext Engineer\Libraries

Retournez dans PLCnext Engineer pour ajouter la bibliothèque. Naviguez vers l'onglet Composants, ouvrez la boîte Libraries, clic droit sur Libraries, puis 'add user library'. Choisissez votre bibliothèque et continuez.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Une fois fait, ajoutez le programme aux tâches : double-cliquez sur PLCnext dans la zone plant, allez dans 'tasks and events', ajoutez un nouveau programme après MainInstance.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Les variables apparaissent dans l'onglet 'Port list'. Ouvrez-le pour voir toutes vos variables.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Si tout est correct, vous devriez pouvoir connecter les ports OUT du PLC au port IN du programme C++, et vice versa. Sinon, vérifiez les types de données et noms de variables.

Maîtriser les types de données simples et complexes en C++ avec PLCnext Engineer

Pour ajouter des valeurs factices, naviguez vers le programme principal, onglet Composants, sélectionnez Code. Définissons la variable sortante sur des caractéristiques de voiture :

CarToC[0].sBrand := 'Audi';
CarToC[0].iHorsepower := 200;
CarToC[0].iYear := 2020;
CarToC[0].xInsured := TRUE;

CarToC[1].sBrand := 'Mazda';
CarToC[1].iHorsepower := 120;
CarToC[1].iYear := 2001;
CarToC[1].xInsured := FALSE;

Une fois déployé, la liste sortante devrait être inversée dans la liste entrante. Vous pouvez voir les variables dans la 'Ports List'.

Technologie industrielle

  1. Élargir les horizons cloud : nouvelles zones, conteneurs, et stratégies multicloud
  2. Fondamentaux C# : Entrées et sorties essentielles
  3. Classes et objets C++ : Guide pratique de la programmation orientée objet
  4. Structures C++ vs Classes : guide pratique pour développeurs embarqués
  5. Guide complet sur la date et l'heure en C++
  6. Rédaction de procédures numériques : Simple, Efficace et Fiable
  7. Accès distant gRPC sécurisé avec grpcurl sur appareils PLCnext
  8. Développer une application console PLCnext en C# : guide pour débutants
  9. Installer le gestionnaire de paquets APT sur PLCnext Linux : Guide étape par étape