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

Utilisation de types de données simples et complexes en C++

Bonjour à tous,

Dans cet article 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 complexe.

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

commencer

Vous aurez d'abord besoin des bons outils pour le travail, un éditeur C++, le logiciel PLCnext Engineer et un automate Phoenix Contact pour l'exécuter. Voici les matériaux que j'ai utilisés :

J'ai personnellement choisi Visual Studio comme éditeur C++, mais eclipse peut également être utilisé. Les liens vers les tutoriels peuvent être trouvés ici :

Quant à PLCnext Engineer, il est disponible sur notre site Web.

Exercice simple

Pour ce premier exemple, nous allons créer une petite application qui vérifie si le bon numéro est envoyé depuis l'automate. Commencez par créer un nouveau projet C++. Ensuite, nous nous dirigeons vers le fichier d'en-tête, le nom devrait ressembler à ceci [NameOfTheProject].hpp, il y a aussi des fichiers avec le nom [nameOfTheProject]component.hpp que nous n'utiliserons pas. Une fois que vous êtes dans le fichier d'en-tête, il y aura un mur de code devant vous, mais ne vous inquiétez pas, ce sera simple. Tout d'abord, nous allons définir les ports, un IN et un OUT. Ils peuvent être définis comme ceci, gardez à l'esprit que cela ne concerne que les types de données simples :

//#port
//#attributs(entrée)
//#nom(EntréeTest)
int64 InputTest =0 ;


//#port
//#attributs(Sortie)
//#nom(test de sortie)
int64 OutputTest =0 ;

Ensuite, nous passons au fichier suivant où nous effectuerons le codage proprement dit. Cela devrait être nommé [NameOfTheProject].cpp et ne devrait pas contenir grand-chose. Nous allons changer cela bien assez tôt. Ajoutons un peu de code pour vérifier les nombres en utilisant des If ou un cas de commutation, c'est à vous de décider. J'ai utilisé des structures if dans celui-ci :

void PLMProjectReadInputProgram::Execute()void PLMProjectReadInputProgram::Execute(){
<échantillon> si (EntréeTest ==1) {
OutputTest =15;}


<échantillon> si (InputTest ==2) {
OutputTest =150;}


<échantillon> si (InputTest ==3) {
OutputTest =1500;}


<échantillon> si (EntréeTest ==4) {
OutputTest =15000;}
}

Avant de nous diriger vers l'ingénieur PLCnext, nous devons transformer ce projet C++ en une bibliothèque que l'automate peut comprendre. Cela se fait en cliquant simplement sur construire en haut de l'écran. Cela devrait fonctionner un peu 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.

Naviguez jusqu'au programme principal dans l'onglet composants sous programmation dans le dossier « Local », puis sélectionnez les variables dans l'écran principal pour voir les variables dans l'API. Ici, nous pouvons choisir un nom et un type de données et l'utilisation. 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 peut être trouvé ici. L'utilisation définira si les variables sont locales ou peuvent être utilisées pour envoyer et recevoir des données à partir de programmes ou de variables externes.

Après cela, nous commencerons à connecter les variables après avoir ajouté la nouvelle bibliothèque. Cela peut être fait comme ceci :

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

C:\Utilisateurs\Public\Documents\PLCnext Engineer\Bibliothèques

Après cela, nous retournons à l'ingénieur PLCnext pour ajouter la bibliothèque à notre programme. Nous allons naviguer vers l'onglet des composants, ouvrir la boîte des bibliothèques et cliquer avec le bouton droit sur les bibliothèques. Cliquez ensuite sur "Ajouter une bibliothèque utilisateur", cela vous amènera au dossier des bibliothèques auquel nous sommes allés plus tôt. Choisissez la bibliothèque que vous souhaitez utiliser et continuez.

Une fois cela fait, nous devrons ajouter le programme aux tâches qui se font comme suit. Sur le côté gauche de l'écran à l'intérieur de la zone de l'usine, double-cliquez sur PLCnext. Il doit s'ouvrir au milieu. Ensuite, allez dans l'onglet "tâches et événements" et ajoutez un nouveau programme après MainInstance. Cela peut être fait de deux manières, soit en sélectionnant le type de programme, soit en le faisant glisser depuis la zone des composants sous "Composants et programmes PLCnext".

Ensuite, les variables doivent apparaître dans l'onglet "Liste des ports" situé à côté de l'onglet "Tâches et événements". Ouvrez-le pour être accueilli par toutes vos variables de C++ et PLCnext. Cela devrait ressembler à ceci :

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

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

Déployons maintenant le projet sur l'automate et nous devrions obtenir 15 comme réponse du code C++. Vous pouvez voir les variables dans la "Liste des ports" d'avant.

Exercice complexe

Pour cet exemple, nous allons créer une petite application qui enverra un tableau de structures vers et depuis l'automate. Commencez par créer un nouveau projet C++. Ensuite, nous nous dirigeons vers le fichier d'en-tête, le nom devrait ressembler à ceci [NameOfTheProject].hpp, il y a aussi des fichiers avec le nom [nameOfTheProject]component.hpp que nous n'utiliserons pas. Une fois que vous êtes dans le fichier d'en-tête, il y aura un mur de code devant vous, mais ne vous inquiétez pas, ce sera simple. Tout d'abord, nous devrons créer une structure pour cet exemple, nous allons créer une structure pour une voiture. Cela se fait comme suit :

public :// typesdefs
structure StrCar{
StaticString<80> sbrand ;
int16 iHorsepower ;
int16 iYear ;
booléen xAssuré ;
} ;

!IMPORTANT! Les noms et les types en C++ et PLCnext Engineer doivent être les mêmes ! Les types de données peuvent être trouvés ici.

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

//#port
//#attributs(Entrée)
//#nom(CarIn)
StrCar CarToC[2] ;

//#port
//#attributs(Sortie)
//#nom(CarOut)
StrCar CarFromC[2] ;

Ensuite, nous passons au fichier suivant où nous effectuerons le codage proprement dit. Cela devrait être nommé [NameOfTheProject].cpp et ne devrait pas contenir grand-chose. Nous allons changer cela bien assez tôt. Ici, nous allons changer les valeurs de la voiture 1 et de la voiture 2.

//Définir le premier membre de la liste des voitures égal à la voiture de l'automate
CarFromC[0].sbrand =CarToC[1].sbrand ;
CarFromC[0].iHorsepower =CarToC[1].iHorsepower ;
CarFromC[0].iYear =CarToC[1].iYear ;
CarFromC[0].xAssuré =CarToC[1].xAssuré ;

//Ajouter des valeurs factices au deuxième membre
CarFromC[1].sbrand =CarToC[0].sbrand ;
CarFromC[1].iHorsepower =CarToC[0].iHorsepower ;
CarFromC[1].iYear =CarToC[0].iYear ;
CarFromC[1].xAssuré =CarToC[0].xAssuré ;

Avant de nous diriger vers l'ingénieur PLCnext, nous devons transformer ce projet C++ en une bibliothèque que l'automate peut comprendre. Cela se fait en cliquant simplement sur construire en haut de l'écran. Cela devrait fonctionner un peu 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.

Maintenant, avant de pouvoir créer des variables dans PLCnext Engineer, nous devrons créer notre propre type de données, dans ce cas une structure de voiture et une liste de voitures. Pour cela, nous aurons besoin d'un fichier de types de données qui peut être trouvé et créé ici :

Ouvrez ce fichier si ce n'est pas déjà fait, nous pouvons alors commencer à créer notre propre structure comme suit :

TYPE

StrCar :

STRUCTURE

sMarque :STRING ;
iHorsepower :INT ;
iAnnée :int ;
xAssuré :BOOL ;

END_STRUCT

END_TYPE

!IMPORTANT! Les noms et les types en C++ et PLCnext Engineer doivent être les mêmes ! Les types de données peuvent être trouvés ici.

Après avoir créé la structure, nous devons créer un tableau de ce type et cela se fait comme ceci et dans le même fichier que nous sommes actuellement :

TYPE

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

END_TYPE

Pour créer une variable avec le type 'carList', accédez au programme principal dans l'onglet composants sous 'programmation' puis dans le dossier 'Programmes' puis sélectionnez les variables dans l'écran principal pour voir les variables dans l'automate. Ici, nous pouvons choisir un nom et un type de données et l'utilisation. Comme type de données, sélectionnez notre personnalisé :

Après cela, nous commencerons à connecter les variables après avoir ajouté la nouvelle bibliothèque. Cela peut être fait comme ceci :

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

C:\Utilisateurs\Public\Documents\PLCnext Engineer\Bibliothèques

Après cela, nous retournons à l'ingénieur PLCnext pour ajouter la bibliothèque à notre programme. Nous allons naviguer vers l'onglet des composants, ouvrir la boîte des bibliothèques et cliquer avec le bouton droit sur les bibliothèques. Cliquez ensuite sur "Ajouter une bibliothèque utilisateur", cela vous amènera au dossier des bibliothèques auquel nous sommes allés plus tôt. Choisissez la bibliothèque que vous souhaitez utiliser et continuez.

Une fois cela fait, nous devrons ajouter le programme aux tâches qui se font comme suit. Sur le côté gauche de l'écran à l'intérieur de la zone de l'usine, double-cliquez sur PLCnext. Il doit s'ouvrir au milieu. Ensuite, allez dans l'onglet "tâches et événements" et ajoutez un nouveau programme après MainInstance. Cela peut être fait de deux manières, soit en sélectionnant le type de programme, soit en le faisant glisser depuis la zone des composants sous "Composants et programmes PLCnext".

Ensuite, les variables doivent apparaître dans l'onglet "Liste des ports" situé à côté de l'onglet "Tâches et événements". Ouvrez-le pour être accueilli par toutes vos variables de C++ et PLCnext. Cela devrait ressembler à ceci.

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

Pour ajouter une valeur fictive à notre variable, naviguons vers le programme principal dans l'onglet des composants, puis sélectionnez le code dans l'écran principal pour voir le code et ajouter le nôtre. Nous allons simplement régler la variable sur certaines spécificités de la voiture. Ceux-ci peuvent être choisis au hasard mais devront correspondre aux types de données. (selon ce que vous avez choisi, utilisez des chaînes là où vous avez utilisé des chaînes, etc.)

CarToC[0].sMarque :=‘Audi’ ;
CarToC[0].iHorsepower :=200;
CarToC[0].iAnnée :=2020 ;
CarToC[0].xAssuré :=TRUE ;

CarToC[1].sMarque :=‘Mazda’ ;
CarToC[1].iHorsepower :=120;
CarToC[1].iAnnée :=2001 ;
CarToC[1].xAssuré :=FAUX ;

Une fois que nous déployons cet exemple, la liste sortante doit être permutée dans la liste entrante. Vous pouvez voir les variables dans la "Liste des ports" d'avant.


Technologie industrielle

  1. Vers Cloud Infinity et au-delà
  2. Entrée et sortie de base C#
  3. Classes et objets C++
  4. Structures et classes en C++
  5. Date et heure C++
  6. Procédures de rédaction :simples et efficaces en passant au numérique
  7. gRPC distant à l'aide de grpcurl
  8. Comment créer une application console PLCnext simple en C#
  9. Installation du gestionnaire de packages apt(-get) sur PLCnext