Skip to main content

TwinCAT 3 Installation & Essais

Présentation de TwinCAT 3

TwinCAT signifie The Windows Control and Automation Technology. Ce logiciel est produit par Beckhoff, une entreprise Allemande pionnière dans l'automatisme utilisant une architecture de PC standard (Soft PLC) depuis les années 1980.

TwinCAT 3 constitue un environnement de développement ainsi qu'un Runtime qui permet de transformer un PC standard sous Windows en Automate capable d'assurer des performances temps réel. Le Kernel TwinCAT permet l'accès direct au hardware pour les tâches temps réelles critiques et utilise Windows pour les applications dans l'espace utilisateur.

TwinCAT 3 est construit autour des logiciels suivants :

  • Visual Studio, qui permet de profiter des outils classiques de développement de code Microsoft
  • CodeSys 3.5, qui permet d'intégrer la programmation dans les langages PLC IEC-61131-3 avec le compilateur et certaines librairies. Le Runtime Codesys n'est pas utilisé ici!
  • Le Kernel TwinCAT et autres drivers spécifiques Beckhoff pour créer le Runtime
  • Des librairies Beckhoff spécifiques.

TwinCAT3 se décompose en deux ensembles :

  • XAE : pour eXtend Automation Environnement, qui est l'environnement de développement et d'ingénierie.
  • XAR : eXtended Automation Runtime, qui est le Runtime qui va transformer l'IPC Windows en Automate et qui va permettre d'exécuter le code développé dans l'environnement XAE.

Sur le poste de développement, on va générer un exécutable qui sera transféré sur le Runtime. L'exécutable + le Runtime vont transformer la base IPC Windows en Soft PLC avec d'excellentes performances temps réel.

Depuis 2020, Beckhoff propose également une alternative à Windows pour le Runtime avec TC/BSD, qui est un port sur FreeBSD. FreeBSD est un Unix très utilisé dans le monde des serveurs, mais pas seulement, la PlayStation 5 tourne également sous FreeBSD.

Installation de TwinCAT 3

Remarques

TwinCAT est gratuit pour le développement et l'apprentissgae, même pour un professionnel. Un code Captcha à rentrer permet d'activer les licences pour une durée de 7 jours. Au bout de 7 jours, on rentre le nouveau code Captcha et l'on repart pour 7 jours. Si l'on souhaite déployer le Runtime en production, sans la limite des 7 jours, il faudra passer par l'achat d'une Licence

Lorsque l'on télécharge le logiciel TwinCAT XAE, on installe automatiquement

  • l'environnement de développement
  • et le Runtime,

Le PC de développement permet ainsi de remplacer les IPC pour faire du test de code, un peu à la manière de PLCSim Advanced chez Siemens.

Le Runtime est prévu pour être installé sur un IPC (Industrial PC) Beckhoff, un PC qui a été durci pour supporter les contraintes liées aux environnements industriels et qui possède le hardware capable de tenir les performances temps-réel.

Un PC classique avec la bonne carte réseau permet d'atteindre les excellentes performances d'un IPC Beckhoff mais le coût des licences TwinCAT est conditionné au type de matériel, c.à.d. que pour un IPC Beckhoff, le coût de la licence sera moins chère que pour un PC classique. Ce qu'on gagne en utilisant un PC basique, on le perd au niveau du prix de la licence et sur le côté durci de l'IPC.

NOTE J'ai pour habitude d'installer les logiciels techniques en Anglais dans un Windows en Anglais. La raison est pratique, quand j'obtiens des messages d'erreurs, j'ai beaucoup plus de chance de trouver du support sur internet avec ce message qu'avec le message en français.

Installation de Visual Studio 2019 Community

Si l'on souhaite, profiter des possibilités de développer en C++ sur TwinCAT, il est nécessaire d'installer en premier les outils de développement C++ de Visual Studio. Pour profiter de cette possibilité, je préconise l'installation de la version Community (gratuite) de Visual Studio 2019 qui est compatible avec TwinCAT3.

A ce jour, la version 2022 est proposée chez Microsoft :

Pour la version 2019, il faut chercher dans les Older Downloads:

et sélectionner la version 2019 :

On choisit la version Visual Studio Community (no Key required):

Avant de cliquer sur Installer, on coche la case pour installer les outils de développement en C++. Si ces outils ne sont pas installés, TwinCAT 3 ne proposera pas la possibilité de compiler des fonctions C++.

A la fin de l'installation, redémarrer le PC pour que TwinCAT puisse se baser sur une installation finalisée de Visual Studio.

Installation de TwinCAT 3

Sur le site de Beckhoff, nous pouvons télécharger Twincat 3 dans les onglets Téléchargement, puis Logiciels et Outils (Download Finder puis Software and Tools). Il faut télécharger la version XAE de TwinCAT qui fait 1 Go.

Il vous faudra créer un compte (gratuit) avant de pouvoir télécharger le logiciel.

L'installation est classique :

  • il faudra accepter les termes des Licences (2x)
  • et choisir une installation complète.

Ensuite, il faudra sélectionner l'intégration avec Visual Studio de la manière suivante :

  • On coche sur Integrate TwinCAT pour la version Visual Studio Community 2019
  • On coche Activate TC Settings
  • Je préconise également l'installation de TwinCAT XAE Shell qui est l'environnement Visual Studio sans les outils spécifiques Microsoft.

On fait Next. L'installation démarre et nécessitera un redémarrage de Windows pour se finaliser.

Utilisation de TwinCAT XAE Shell

Information importante : TwinCAT peut fonctionner depuis une VirtualBox, mais dans ce cas, il est nécessaire de passer sur des cores isolés. De plus on oublie les performances temps réel! Les méthodes détaillées ci-dessous correspondent à une installation classique.

Nous allons dans un premier temps nous focaliser sur l'utilisation de TwinCAT XAE Shell que vous pouvez lancer depuis le menu démarrer.

Configuration de l'interface Ethernet

Nous allons tout de suite configurer l'interface réseau afin qu'elle puisse détecter les Runtime d'IPC ou les I/O déportés sur bus EtherCAT. Dans l'onglet TwinCAT, allez dans Show Ethernet Compatible Devices...

On installe la carte réseau filaire compatible

Deux possibilités:

  • vous avez une carte réseau Ethernet Intel compatible avec Beckhoff et vous pourrez profiter des performances temps réel. La carte apparaitra dans les "realtime capable"
  • votre carte est d'un autre fabricant, vous ne profiterez pas du real-time, mais c'est suffisant pour les essais que nous ferons. Votre carte apparaîtra dans les for demos use only.

Sur mon Dell Pro, il y a une interface Intel compatible Real-Time. Les essais avec un PC fonctionnant avec une carte Realtek n'ont pas posé de soucis également. Tant que l'on ne cherche pas les performances Realtime il n'y a pas d'inquiétude à avoir sur le type de carte Ethernet utilisé.

Premier programme PLC

Dans cette section, nous allons mettre en oeuvre un automate. Ceux qui ont suivi les articles sur Codesys vont remarquer que l'interface de programmation est très proche. C'est normal car TwinCAT est basé sur CodeSys pour la partie programmation automate en langage IEC-61131-3.

On crée un automate en faisant un clic droit sur PLC puis Add New Item

On choisit :

  • Standard PLC Model,
  • que l'on nomme PLC1

On déploit PLC1, puis POUs pour Program Organization Unit.

Un fichier MAIN(PRG) s'y trouve.

Programmation du Main

Le premier programme que nous allons réaliser pour valider le bon fonctionnement de l'installation est un compteur qui va s'incrémenter toutes les 10 ms, c.à.d., tous les temps de cycle associés à la tâche PLC1.

Une variable nCounter de type Unsigned Long Int est déclarée, et dans le main, nous ajouterons +1 à cette variable. Si tout se déroule correctement, au démarrage, la variable sera initialisée à 0 et toutes les 10 ms, elle va s'incrémenter.

On n'oublie pas de sauvegarder le projet.

On lance le Build du projet

On active le projet avec Activate Configuration pour que ce soit celui-ci qui sera déployé dans le Runtime d'éxecution.

Il se peut également que vous ayez un message de ce type : faire Continue

On fait deux fois OK pour activer la configuration et pour accepter le passage en Mode Run (on était en mode Config actuellement)

La case verte avec la roue doit être activée, pour que l'on soit dans le mode Run. (La case bleue représente le mode Config)

On clic sur la case verte Login

On autorise la création de l'application et le téléchargement de l'exécutable dans le Runtime en cliquant sur Yes.

On clique sur le bouton Start (F5) pour démarrer l'application

On observe l'incrémentation du compteur, (on augmente de 100 toutes les secondes)

Pour stopper le Runtime, on clique sur Stop (Shift+F5)

On peut se déconnecter du Runtime en cliquant sur Logout

Pour revenir dans le mode de configuration, cliquer sur :

  • Restart TwinCAT Config Mode

Bilan intermédiaire :

L'objectif de ce premier programme était de vérifier la bonne installation de TwinCAT3. Si vous n'arrivez pas à exécuter le code, vérifiez que :

  • le driver pour la carte Ethernet est installé et que celle ci apparaisse soit en compatible Real-Time, soit en use for Demos Only
  • le build de votre projet soit effectué après avoir enregistré le programme
  • le projet est activé, ne pas le faire génère des erreurs difficiles à interpréter
  • que vous ayez passé Twincat en Mode Run (la petite roue dans la case verte)

Ajout d'Entrées/Sorties déportées sur bus EtherCAT

Présentation du module BK1120

Scan du bus EtherCAT

Pour scanner les Entrées/Sorties déportées qui sont connéctées sur le bus EtherCAT, il faut déployer l'onglet IO est faire un Scan. N'oubliez pas que sur un bus EtherCAT, il est nécessaire de brancher directement la carte Ethernet du PC sur le module d'Entrées/Sorties déportées sans passer par un Switch! On branche en direct!

Faire OK sur le HINT. Les I/O de chez Beckhoff sont reconnues automatiquement, les I/O de fabricants tiers peuvent nécessiter une configurationn manuelle.

Un I/O a été trouvé.

On autorise le Scan des Box et le Free Run (Le Free Run permet de piloter/forcer directement les Entrées/Sorties )

Le module d'I/O déporté BK1120 est bien reconnu, ainsi que les cartes d'entrées-sorties associées :

  • KL1104 -> 4 channel Digital Input
  • KL2114 -> 4 channel Digital Output
  • KL3001 -> 1 channel Anolog Input
  • KL9010 -> carte de terminaison du bus interne

Lecture et forçage des I/O

Avant de démarrer l'association (mappage) des entrées/sorties, vérifions que celles-ci puissent être lues dans le cas des entrées digitales et forcées pour les sorties digitales. L'activation du de l'interrupteur sur l'entrée digitale doit être vue dans le signal déroulant si vous avez activé le free RUN comme précisé précédemmment.

Les sorties digitales peuvent être forcées en faisant des Online Write '0' ou '1'

Liens entre I/O déportées et variables PLC

Nous pouvons maintenant réaliser le liens entre les entrées/sorties déportées et les variable de l'automate. Dans GVLs (Global Variable Lists) faire Add et Global Variable List.

Nommer cette liste IO par exemple et faire Open.

Dans la liste, ajouter les deux variables (Bouton et Led) de la manière suivante :

N'oubliez pas de sauvegarder et de faire un Build. Une avertissement peut apparaître comme ci-dessous, faire OK.

Nous pouvons maintenant faire le lien (link) entre les entrées-sorties physiques déportés et les variables globales de l'automate. Choisir l'Entrée du module déporté à affecter, faire Linked to ...

Et choisir la variable IO.bBP1

De la même manière, nous affectons la variable de sortie bLED à la sortie physique du module déporté :

Programme en Ladder

Nous allons maintenant effectuer un programme en Ladder. Effaçons le programme MAIN précédent en faisant Delete :

Faire Add puis POU...

Dans Add POU..., nommer le programme MAIN, vérifiez bien que

  • le type est Program
  • et choisir l'implementation langage en Ladder Logic Diagram

Placer un Contact dans le MAIN à l'aide du menu d'outils ToolBox à droite. Cliquer sur ce contact pour l'associer à la variable bBP1 qui se troue dans PLC1 -> GVLs -> IO -> bBP1

Placer un Coil à la suite du Contact et l'associer à la variable bLED.

Test

On fait un save, un Build et on active le projet.

On fait OK pour passer en mode RUN :

On fait :

  • Login,
  • puis Yes,
  • puis Start (F5)

On remarque que l'activation de l'interrupteur provoque l'allumage de la LED. La désactivation de l'interrupteur provoque l'extinction de la LED. Notre programme est opérationnel et la communication avec le module d'Entrées / Sorties déportés est fonctionnelle.

Pour stopper le Runtime, faire Stop (Shift+F5) et pour sortir faire Log Out.

Conclusion

Nous venons de réaliser notre premier programme sous TwinCAT permettant de communiquer avec un module d'Entrées/Sorties déportées avec le protocole EtherCAT et le logiciel TwinCAT.

EtherCAT permet de hautes performances temporelles, comme par exemple, d'avoir une période de rafraîchissement de 100 µs pour un ensemble de 100 axes motorisés. Pour atteindre ces perfomances, il est nécessaire d'être en mode Real-Time avec le hardware IPC adapté à la charge de calcul.