TwinCAT 3 C++ Création de modules C++ sous TwinCAT 3 VERSION : 1.0 / PH
Sommaire Ce manuel explique de manière pratique les étapes successives pour intégrer rapidement un module C++ sous TwinCAT 3. Pour des renseignements plus précis, consulter la documentation complète : http://twincat3.infosys.beckhoff.com/content/1033/tc3_c/html/tc3-xae-cpp-overview.htm?id=4217 1 Prérequis et limitations... 4 2 Préparations... 5 2.1 Installation de Windows Driver Kit (WDK)... 5 2.2 Configurer les variables d environnement... 6 2.3 Préparer les barres de tâches dans Visual Studio... 7 3 TwinCAT 3 C++... 8 3.1 Créer le projet TwinCAT 3... 8 3.2 Créer le module C++... 9 3.3 Coder en C++... 11 3.4 Compiler le code C++... 11 3.5 Créer une instance du module C++... 12 3.6 Appeler l instance... 13 3.7 Activer le Debugger C++... 14 3.8 Démarrer le programme... 15 3.9 Test et debuggage... 16 4 TMC Editor... 17 Page 3 TC3 / C++
1 Prérequis et limitations Sur le PC d ingénierie : PC sous XP/Win7 x86 ou x64 Microsoft Visual Studio 2010 Professionnal, Premium ou Ultimate minimum Microsoft «Windows Driver Kit» (WDK) TwinCAT 3 XAE Engineering Sur le Run time (pour la programmation d un PC distant) Windows XP / Windows 7 minimum TwinCAT 3 XAR Run time Microsoft Visual Studio et WDK non nécessaires TwinCAT 3 exécute les modules dans le kernel. Les modules C++ sont également intégrés dans le Kernel et sont exécutés de manière cyclique ou sur demande. En conséquence, les développeurs doivent tenir compte de ces limitations : Il est possible de faire usage de toutes les fonctionnalités qui sont inclus dans RTL0.h Toutes fonctionnalités générant des actions hors du mode kernel sont à proscrire, car elles influencent le comportement temps réel : o Génération de Messages box o Appel de New() pour créer une nouvelle instance o Utiliser des fonctions de DLL C++ o Exécuter du code gérant des exceptions C++ Toutes fonctionnalités de ce type doivent être codées dans un programme en C++ classique, qui communiquera avec la partie temps réel de TwinCAT 3 par ADS TC3 / C++ Page 4
2 Préparations 2.1 Installation de Windows Driver Kit (WDK) Télécharger WDK depuis le Microsoft Download center : http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&familyid=36a2630f-5d56-43b5-b996-7633f2ec14ff Il s agit d une image ISO à copier sur CD ou à utiliser avec un logiciel de CD virtuel Executer KitSetup.exe en tant qu administrateur Page 5 TC3 / C++
2.2 Configurer les variables d environnement Menu Démarrer / Panneau de configuration / Systèmes / Paramètres système avancés / Variables d environnement. Dans la partie basse «Variables Systèmes», cliquer sur «Nouveau» et renseigner les informations suivantes : Nom de la variable : WINDDK7 Valeur de la variable : C:\WinDDK\7600.16385.1 Redémarrer Windows ou fermer la session actuelle TC3 / C++ Page 6
2.3 Préparer les barres de tâches dans Visual Studio Ajouter la barre «TwinCAT XAE Base» Ajouter la barre «Configuration et plateforme» View / Toobal / Customize Onglet «Commands» Sélectionner l option Toolbar puis Standard dans la liste des options Cliquer sur «Add command» Choisir la catégorie «Build», puis la commande «Solution Configuration» puis valider avec Ok Répéter l opération avec «Solution Plateforms» Valider avec «Close» Page 7 TC3 / C++
3 TwinCAT 3 C++ 3.1 Créer le projet TwinCAT 3 Lancer TwinCAT 3 XAE : Créer un nouveau projet : Donner lui un nom : TC3 / C++ Page 8
3.2 Créer le module C++ Cliquer droit sur C++ et sélectionner «Add New Item» : ATTENTION : Le nom ne doit pas commencer par un chiffre, sous peine d erreurs de compilations TwinCAT Module Class with Cyclic IO permet d ajouter un module C++ ayant une interface avec des entrées et des sorties pouvant être liées à un programme PLC, des E/S physiques ou tout autre tâche TwinCAT. Page 9 TC3 / C++
Donner un nom à ce module Le module est intégré dans le projet : TC3 / C++ Page 10
3.3 Coder en C++ Le code cyclique de notre module est à éditer dans la méthode CycleUpdate : Comme les modules EtherCAT, le module C++ est géré par une machine d état le faisant passer d Init à PreOP, SafeOp puis OP. A chacune de ces transitions existe une méthode dans laquelle du code peut être édité. 3.4 Compiler le code C++ Sélectionner la cible puis compiler : Page 11 TC3 / C++
3.5 Créer une instance du module C++ L instance est créée : Elle possède quelques E/S qui peuvent être liées à d autres tâches TwinCAT 3 TC3 / C++ Page 12
3.6 Appeler l instance Notre instance doit être associée à une tâche afin d être appelée cycliquement. Créer une tâche : Notez que notre tâche est en démarrage automatique. Ajuster le temps de cycle : Lier notre Module C++ à la tâche : Page 13 TC3 / C++
3.7 Activer le Debugger C++ TwinCAT propose un debugger permettant de visualiser les variables d un programme en C++ sans utiliser les points d arrêts. TC3 / C++ Page 14
3.8 Démarrer le programme Sélectionner la cible et activer la configuration : Si nécessaire, générer des licences temporaires Page 15 TC3 / C++
3.9 Test et debuggage Ouvrir le débuggeur Egalement possible par le menu Debug / Windows / TwinCAT Live Manager Pour modifier une variable, écrire sa valeur dans la colonne Value puis presser le bouton Ecriture TC3 / C++ Page 16
4 TMC Editor Ouvrir le TMC editor (TwinCAT Module Class Editor) en double cliquant sur le nom_du_projet.tmc. Le TMC permet de définir le module C++ : Les types de données, des interfaces, son process image, des variables Par exemple, pour ajouter une sortie dans le process image de notre module C++ : Page 17 TC3 / C++
Ajouter un INT Compiler le projet Puis lancer le générateur de code TMC : La nouvelle sortie est maintenant disponible dans le process image de notre module : TC3 / C++ Page 18
On peut maintenant utiliser cette sortie dans le code m_outputs est un pointeur vers la structure les sorties définies par TMC editor Activer la configuration, redémarrer TwinCAT et ouvrir la fenêtre de débuggage : Page 19 TC3 / C++
BECKHOFF AUTOMATION Sarl Immeuble "Le Montréal" ZA de Courtaboeuf 19 bis, Avenue du Québec 91140 VILLEBON SUR YVETTE Tél : 01 69 29 83 70 Fax : 01 69 28 40 55 www.beckhoff.fr info@beckhoff.fr