Beckhoff TwinCAT
Dans ce Livre, nous verrons : - l'installation de TwinCAT 3 - la communication TwinCAT 3 avec un Master IO-Link Profinet
- TwinCAT 3 Installation & Essais
- TwinCAT 3 Premier Projet
- TwinCAT 3 & IO-Link IFM
- Démarrage d'un IPC C6017 Beckhoff
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.
TwinCAT 3 Premier Projet
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
Vérifier que le Linked To ait bien pris en compte l'assocition de variables :
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 :
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.
TwinCAT 3 & IO-Link IFM
Projet TwinCAT 3 IO-Link
IO-Link est un système de communication pour la connexion de capteurs et d'actionneurs intelligents normalisé IEC 61131-9. Le système se compose d'un maître IO-Link et d'un périphérique IO-Link : un capteur, un actionneur ou une combinaison des deux. Le maître IO-Link peut être une passerelle vers un bus de plus haut niveau tel que PROFINET, EtherCAT ...
Le matériel mis en oeuvre dans cet article :
- Un PC avec l'environnement TwinCAT 3
- Master IO-Link Profinet d'IFM AL1100
- Bouton Capacitif KT6101 d'IFM : communique en IO-Link
- Détecteur Laser O5D150 d'IFM : communique en IO-Link
Le Runtime TwinCAT constituera notre PLC et va gérer la communication avec le Master IO-Link Profinet. Le schéma suivant résume le montage :
Les appareillages Profinet s'intègrent "naturellement" dans l'éco-système Siemens mais il est également possible d'associer ce matériel à TwinCAT 3, où classiquement, on utilise la communication EtherCAT. La procédure sera très proche de la mise en oeuve d'un coupleur Ethercat vu dans l'article précédent, mais nécessitera de configurer manuellement le matériel.
Configuration du Master IO-Link
Le logiciel Moneo d'IFM
On utilisera le logiciel Moneo dont une licence est fournie avec le Kit IO-Link d'IFM.
Il permet de configurer :
- le Master IO-Link (AL1100)
- les capteurs IO-Link associés
- le bouton capacitif KT6101
- le détecteur de distance O5D150
La configuration réseau choisie pour le Master est :
- @IP : 192.168.1.198
- Netmask : 255.255.255.0
- Gateway : 192.168.1.1
Il est nécessaire que la carte réseau de votre PC soit sur la même plage d'adresse que le Master IO-Link. Dans cet exemple, l'@IP du PC est réglée à 192.168.1.44.
Le détecteur de distance O5D150
Pour le détecteur de distance O5D150, il n'y pas grand chose à vérifier, la distance de détection est réglée à 100 cm, quand la distance mesurée est inférieure à 100 cm, la sortie SwitchState vaut 'True' et passe à 'False' quand la distance dépasse 100 cm. La plage de mesure du détecteur est comprise entre 5 cm et 200 cm.
Le bouton capacitif KT6101
Pour le bouton capacitif, il y a plusieurs modes de fonctionnement possible
- dynamique,
- static,
- bistable.
plusieurs choix de couleurs de fonctionnement, de réglage de sensibilité, etc. Dans ce contexte, le mode Bistable avec deux couleurs prédéfinies est choisi:
- bistable: un appui, la sortie s'active, un second appui la sortie s'éteint.
- couleurs: bleu à l'état de repos, vert en marche.
Avant de se déconnecter du logiciel Moneo, on n'oublie pas de faire un write des modifications effectuées.
Association du Master IO-Link à TwinCAT
Mise en place de la liaison Profinet
Après avoir crée un projet TwinCat, développer l'arborescence, et faire un clic droit sur :
- I/O -> Devices -> Add New Item
On sélectionne un Profinet I/O Controller (RT)
- on peut laisser le nom de base : Device 1
Sur Device 1, on va faire un clic droit :
- Add New Item
Et choisir dans Miscellaneous
- un Profinet I/O Device
A ce Profinet I/O Device, on associe le fichier GSDML du MAster IO-Link Profinet AL1100. Le fichier GSDML est disponible sur le site d'IFM.
Configuration IP du Master IO-Link
Il faut modifier l'adresse IP en fonction de celle associée au Master IO-Link. Avec Moneo nous l'avions configuré à :
- @IP = 192.168.1.198
C'est cette valeur que nous allons saisir
Ajout des capteurs IO-Link
En développant l'arborescence, dans API -> Term2 (4 ports), faire :
- Add New Item
Au départ, les SubModules associés aux SubSlot 2,3,4,5 sont vides. Nous allons les configurer de la manière suivante :
- Pour le SubSlot 2 (Port 1), nous allons brancher la bouton capacitif qui nécessite 4 bytes en Input et 1 byte en output. Comme cette configuration n'existe pas, nous mettrons 4 bytes en Input, 4 bytes en Output + PQI.
- Pour le SubSlot 3 (Port 2), nous allons brancher le détecteur de distance qui nécessite 2 bytes en Input. Cette configuration existe et nous placerons 2 bytes en Input + PQI.
- Pour le SubSlot 4 (Port 3), comme aucun capteur n'est branché, nous placerons Disabled
- Pour le SubSlot 5 (Port 4), comme aucun capteur n'est branché, nous placerons Disabled
Configuration de la PLC
Programme Main et Fonctions
Faire un clic droit sur PLC et faire :
- Add New Item
Choisir un Standard PLC Project que nous nommerons PLC1.
Fonction pour le capteur de distance
Nous allons dans un premier temps créer une fonction permettant de récupérer et mettre en forme des données du capteur de distance O5D150. Après avoir développé l'arborescence de PLC1, sur POUs, faire un clic droit et faire un Add POU :
- donner le nom FB_O5D150
- dans type, choisir Function Block
- pour le langage, Structured Text (ST)
puis faire Open.
Avant de commencer à coder la fonction, il est nécessaire de comprendre le formatage des données du capteur O5D150.
La documentation IFM montre que deux octets (Bytes) sont utilisés pour former un mot (Word 0) de 16 bits.
Il faut faire attention à la lecture des données, dans ce cas précis :
- le premier octet contient
- 8 bits de distance, il s'agit de l'octet de poids fort pour le calcul de la distance que l'on peut noter [x7x6x5x4_x3x2x1x0]
- le second octet que l'on peut noter [y7y6y5y4_y3y2y1y0]
- 4 bits de poids fort [y7y6y5y4] qui constituent l'information de poids faible de la distance
- 4 bits de poids faible
- le bit de poids le plus faible [y0] correspond au Switch state
La distance est codée sur 12 bits et correspond au regroupement suivant :
- [x7x6x5x4_x3x2x1x0_y7y6y5y4]
Différentes opérations seront à effectuer :
- récupérer les deux octets depuis le Master IO-Link
- l'information du détecteur de distance est codé sur un bit, le Switch State [Out1]
- former à partir des deux octets le mot Word 0 sur 16 bits
- réaliser un décalage de 4 bits vers la droite pour récupérer les 12 bits de distance
Fonction O5D150 : variables
Deux variables de sortie seront crées:
-
nCurrentDistance
de type INT pour afficher la distance mesurée entre 5 et 200 cm. Le petit n devant la variable précise qu'il s'agit d'une variable de type number (nombre). -
bSwitchState
de type BOOL pour afficher l'état TRUE ou FALSE de la valeur de mesure de distance (TRUE quand la distance mesurée est inférieure à 100 cm). Le petit b indique qu'il s'agit d'une variabele de type booléenne.
Variables d'affectation
aInputBytes AT %I* : ARRAY[0..1] OF BYTE;
c'est les variables que nous allons utiliser pour associer les deux octets d'Input contenus dans la trame IO-Link du O5D150.
-
AT %I*
va permettre l'affection -
ARRAY[0..1] OF BYTE
signifie que nous avons un tableau de 2 octets -
aInputBytes[0]
constituera dans cet exemple l'octet de poids fort -
aInputBytes[1]
constituera l'octet de poids faible -
nWord0
de type Word permettra de créer le mot de 16 bits contenant les informations de distance -
nWord_temp0
etnWord_temp1
de type Word sont des variables tampon pour exécuter les opérations
Fonction O5D150 : instanciation et appel de fonction
Pour que le fonction O5D150 puisse être utilisée par le main, il est nécessaire
- qu'elle soit instanciée
VAR
fbO5D150 : FB_O5D150;
END_VAR
- qu'elle soit appelée dans le main
fbO5D150();
La capture d'écran ci-dessous synthétise ces actions :
Fonction O5D150 : liaisons variables et I/O
Avant de démarrer le développement du code de la fonction, il est nécessaire de créer les liaisons entre les variables physiques du Master IO-Link et les variables crées dans la fonction. Commencer par faire un activate de votre projet, suivi d'une sauvegarde et d'un build. Un onglet PLC1 Instance devrait apparaître avec les deux octets de variables d'affectation (d'instanciation) que nous venons de créer. Nous pouvons maintenant faire le Link de ces variables avec les Input du Master IO-Link.
Sur la variable MAIN.fbO5D150.aInputBytes[0], faire Change Link et associer la variable Input data 2 Bytes[0] associé à la trame IO-Link du capteur O5D150.
Sur la variable MAIN.fbO5D150.aInputBytes[1], faire Change Link et associer la variable Input data 2 Bytes[1] associé à la trame IO-Link du capteur O5D150.
on vérifie dans l'arberescnce du al1100 que des petites apparaisent dans Input data 2 Bytes [0] [1], preuve que les liens sont pris en compte.
Fonction O5D150 : le programme
Ci-dessous, un exemple de programme permettant de construire le mot de 16 bits avec des décalages. TO-WORD
correspond à une opération de conversion de type, ici, la variable BYTE est convertie en WORD.
Il reste à faire le build, puis cliquer sur le Mode Run (case verte avec la roue). Un message d'erreur de ce type peut apparaître. J'ai éliminé ce message en mettant un temps de cycle à 16 ms sur le cycle PLC.
En configuration d'essai, la distance mesurée est de 20 cm
Le programme nous renvoit bien 20 cm pour nCurrentDistance et bSwitchState est bien à TRUE car l'on est inférieur à 100 cm.
Ajout du bouton Capacitif KT6101
Configuration et programme
Le mapping mémoire donné par IFM pour le KT6101 est le suivant :
- 2 octets (Bytes) sont utilisés pour créer la variable PDV1.
- 1 octet pour la variable device Status, mais comme les transmissions IO-Link se font par nombre d'octets pairs, un octet supplémentaire est présent et réservé pour des développements futurs.
Les étapes sont identiques à celles présentées précédemment et ci-dessous, une proposition de code fonction pour gérer le bouton. La valeur PDV1 correspond à une valeur d'appui, avec la valeur 3000, le doigt touche complètement le bouton, en dessous de 1000, on effleure à peine.
Tests et essais
La fonction réagit correctement à l'appui du bouton.
- bSSC1 passe de False à True quand on appui sur le bouton
- nPDV1 passe de 0 à 3000 car l'appui s'est fait avec l'intégralité de la pulpe du pouce.
Bilan
TwinCAT offre la possibilité d'associer "facilement" du matériel Profinet au Runtime. Il reste à vérifier :
- l'histoire du temps de cycle en puissance de 2, j'ai mis 16 ms, il faudrait faire des essais avec 8ms et 4ms. La documentation du Master IO-Link laisserait penser que c'est possible avec 4ms...
- le programme du bloc fonction est du type Quick and Dirty, il faudrait vérifier si il n'existe pas des fonctions dans TwinCAT qui permettrait d'obtenir un code plus "propre"?
TwinCAT est normalement prévu pour fonctionner avec le bus de terrain EtherCAT qui aurait permis de simplifier encore la procédure ( Master IO-Link EtherCAT AL1333 d'IFM), mais il reste étonnament convivial concernant l'intégration de protocoles tiers.
Démarrage d'un IPC C6017 Beckhoff
L'IPC C6017-20 Beckhoff
IPC Beckhoff
Beckhoff fait parti des pionniers de l'automation basée sur des PC. Un IPC est un PC industriel (Industrial PC), c'est à dire adapté aux contraintes d'un environnement de production avec :
- un facteur de forme compacte pour l'intégration dans un coffret électrique,
- une alimentation 24Vdc,
- une résistance mécanique améliorée (tenue en température, vibrations,...)
- une configuration Fanless pour certains modèles.
Les IPC Beckhoff s'appuient sur une OS de type Windows 10, 11 (version IoT) ou FreeBSD. L'IPC se comporte alors comme un PC classique sur lequel on peut installer des programmes PC comme Firefox, Office, Photoshop....
Dans le dommaine de l'automation, l'installation de Photoshop ou d'Office n'est pas une priorité ;), mais on peut y exécuter du code C/C++ adapté à l'application à piloter, y installer des bases de données, y intégrer les connexions cloud, etc. On profite de toute la puissance et polyvalence d'un PC pour exécuter des applications.
Sur un automate classique comme un S7-1200, l'on ne peut pas installer des applications comme sur un PC ou smartphone. Seule une évolution du firmware peut ajouter de nouvelles fonctionnalités proposées par le constructeur
Exemple : Installer Node-Red sur un Siemens S7-1200 / S7-1500 n'est pas possible par exemple. Il faut utiliser un PC sur lequel Node-Red est installé pour que l'on puisse communiquer avec les automates. Comme un IPC est un PC, y installer Node-Red se fait comme sur un PC win10 classique.
IPC et exécution de code automate avec le Runtime TwinCAT
On peut transformer un IPC en automate avec l'installation du runtime TwinCAT. On pourra ainsi exécuter du code automate de type IEC 61131-3, c'est à dire du code en langage Ladder, FBD, STructuré. Dans un des articles, j'avais installé un runtime Codesys sur un Raspberry Pi pour le transformer en PLC, le principe est identique ici.
Comparaison entre un IPC et un Raspberry PI
Dans l'article sur l'installation du Runtime Codesys sur Raspberry PI, on pourrait croire qu'un Raspberry Pi est équivalent à un IPC pour beaucoup moins cher. La réalité est cependant plus nuancée :
Raspberry Pi | IPC |
---|---|
Exécute uniquement des applicatifs Linux | Exécute des uniquement des applicatifs Windows |
Ne possède pas d'interfaces de communication permettant d'utiliser un bus de terrain temps réel comme l'EtherCAT | L'IPC Beckhoff possède 4 interfaces EtherCAT natives |
Le Raspberry Pi travaille sur une carte SD | L'IPC travaille sur un disque SSD M.2 rapide |
Le Raspberry Pi nécessite un boîtier spécifique pour le monter sur rail Din ainsi qu'une alimention 5V ou USB | L'IPC est dans un boitier robuste alimenté en 24Vdc |
On peut transformer un Raspberry Pi en IPC robustifié, mais dans ce cas de figure, on est proche du coût d'un IPC. Il existe des entreprises qui proposent des Raspberry-Pi customisé pour l'industrie comme Kunbus.
Installation de l'IPC C6017 Beckhoff
A la livraison des IPC C6017, seul Windows 10 IoT est installé. Pour paramétrer l'IPC, on peut y connecter un écran en DisplayPort ainsi qu'un clavier et souris en USB. On peut alors paramétrer les adresses IP pour les 4 ports Ethernet, installer des applications, etc.
Personnellement, je préfère m'économiser la place sur le bureau pour un écran et un clavier en utilisant l'accès en bureau à distance avec l'IPC.
Détermination de l'adresse IP de l'IPC
En configuration de base, les ports Ethernet de l'IPC sont en DHCP. La première étape a été de connecter l'IPC sur une Box ou un routeur wifi possédant un serveur DHCP pour que l'IPC puisse récupérer une adresse IP.
En connectant l'IPC sur une LiveBox, j'ai identifié l'adresse IP que la box a affecté à l'IPC. Dans ce cas de figure, @IP = 192.168.1.22 et le nom de l'IPC est CP-8435B5.
Connaissant l'adresse IP, nous pouvons nous connecter sur l'IPC en distant.
Connexion à distance
Avant de démarrer la connexion en mode bureau à distance, nous faisant un ping sur l'adresse IP déterminée précédemment pour confirmer la bonne communication.
Nous pouvons mainternant nous connecter sur l'IPC en utilisant la connexion bureau à distance (remote control).
Depuis votre PC, ouvrez le logiciel Connexion Bureau à distance :
On peut saisir les paramètres de connexion : l'@IP correspond à l'adresse IP de l'IPC déterminé plus haut
En sortie d'usine, l'IPC posssède :
- un compte Administrator
- le mot de passe par défaut est 1
Une fenêtre vous demandera le mot de passe associé au compte Administrator. Sorti d'usine, le mot de passe est 1, cliquez sur OK.
Une confirmation de l'autorisation de se connecter à l'IPC sera demandée. Cochez Ne pas me redemander pour les connexions à cet ordinateur et confirmez en cliquant sur OUI.
On est maintenant connecté au bureau windows de l'IPC. Normalement, le Beckhoff device manager devrait être ouvert automatiquement. Il s'agit d'une page web qui permet de paramétrer l'IPC.
Une des premières étapes que je préconise, c'est de passer sur une adresse IP statique sur un des ports de l'IPC, comme cela, on pourra travailler sur l'IPC directement branché sur le PC sans avoir à passer pour un serveur DHCP sur une box ou autre. La configuration se fait dans l'onglet Hardware et NIC.
On fait un Disable sur DHCP sur le port ethernet que l'on souhaite utiliser parmi les 4 et l'on choisie une adresse IP adaptée. Dans mon cas, j'ai configuré l'adressage statique sur le port 1 de la manière suivante :
- Adresse IP : 192.168.1.244
- Subnet Mask : 255.255.255.0
- Gateway : 192.168.1.1
On clique sur le petit V pour Save Network Settings
Maintenant que nous avons changé l'adresse IP, il faudra relancer un nouvel accès bureau à distance car nous sommes passés de l'@IP 192.168.1.22 à l'@IP 192.168.1.244.
Les procédures de login, mot de passe et d'autorisation de connexion restent identiques.
Installation du Runtime TwinCAT sur IPC C6017
Lors de l'accès en mode Bureau distant sur l'IPC, nous pouvons fermer le Beckhoff Device Manager. Dans cette seconde étape, nous allons installer le Runtime TwinCAT pour que notre IPC puisse exécuter du code automate.
Il y a deux méthodes. Soit l'IPC est connecté sur Internet (box, clé 4G, autre) soit il ne dispose pas de connexion. Les méthodes sont identiques, sauf que cas d'absence d'internet sur l'IPC, il faudra télécharger le Runtime sur une clé USB pour pouvoir l'installer sur l'IPC. Avec une connexion internet, on peut télécharger directement le Runtime depuis l'IPC.
On ouvre une session du navigateur Microsof Edge depuis l'IPC et l'on se connecte sur le site de Beckhoff. On clique ensuite sur l'image TwinCAT correspondant au paragraphe Automation.
Une nouvelle page s'ouvre et l'on clique à nouveau sur l'image TwinCAT correspondant au Runtime TwinCAT.
On peut maintenant cliquer sur l'image TC1xxx TwinCAT 3 Base
On clique ensuite sur TC1200 | TwinCAT3 PLC, puis dans Documentation and Downloads, puis dans Software and Tools pour arriver au Runtime TwinCAT 3 Downloads | eXtended Automation Runtime (XAR) qui fait environ 181 MB. (Un compte Beckhoff est nécessaire pour télécharger le Runtime)
On télécharge le Runtime. Le .exe se trouve dans C:/user/Administrator/Downloads/
La procédure d'installation est classique, on accepte les termes de licence et l'on fait une installation complète.
Un redémarrage de l'IPC est nécessaire pour lancer le Runtime TwinCAT.
Installation des drivers EtherCAT
Après installation du Runtime TwinCAT, il faut encore activer les drivers pour l'EtherCAT. Depuis l'IPC, avec l'explorateur de fichier, aller sur C:/TwinCAT/3.1/System/
Deux étapes à faire :
- double cliquer sur win8settick.bat (si on ne le fait pas, TwinCAT peut avoir des soucis pour programmer l'IPC)
- double cliquer sur TcRteInstall.exe
Quand vous avez cliqué sur TcRteInstall.exe, une fenêtre s'ouvrira pour que vous puissiez choisir les ports ethernet de l'IPC sur lesquels vous allez activer le driver EtherCAT. Le plus simple est d'activer le driver EtherCAT sur les 4 ports de l'IPC C6017.
Il faudra choisir les ports en compatible Device et cliquer sur Install sur chaque port pour qu'ils passent de compatible Device vers Installed.
Après configuration, les 4 ports devraient ainsi avoir les performances temps-réel du bus EtherCAT.
Nous avons fini avec la configuration de l'IPC. Nous pouvons faire un Shut down pour l'éteindre correctement, car n'oubliez pas, il s'agit d'un PC windows 10, il faut éteindre le PC correctement et non en coupant brutalement l'alimention !
On éteint l'IPC en cliquant sur l'icone windows et en faisant un Shut down !
Premier programme automate sur l'IPC C6017
Comme dans les articles précédents, nous allons exécuter sur l'IPC un premier programme automate afin de valider l'installation logicielle.
Projet TwinCAT pour tester l'IPC
Depuis votre PC de développement, vous ouvrez TwinCAT. En parallèle, vous allumez l'IPC. Sur l'IPC, aucune connexion bureau à distance est nécessaire pour le moment.
Depuis TwinCAT sur votre PC, vous choisissez un projet TwinCAT XAE Project et l'on fait Next.
Il faut donner un nom de projet comme par exemple projetIPC et l'on fait Create.
L'arborescence de projet est ainsi crée. Comme nous souhaitons déployer ce projet sur l'IPC C6017 que nous venons de configurer, il faut configurer la cible, en faisant Choose Target System dans l'onglet Local.
On clique sur Search Ethernet pour détecter l'IPC
Une fenêtre Add Route Dialog apparaît. On fait un Broadcast Search en vérifiant que Transport Type est configuré sur TCP_IP et que Address Info soit configuré sur IP Address.
On coche l'interface Ethernet à utiliser. (J'ai décoché l'interface virtuelle associée à Siemens)
L'IPC est alors détecté, à la condition que vous ayez respecté les procédures précedentes d'activation de l'interface EtherCAT (win8settick.bat et TcRteInstall.exe). Il reste à cliquer sur Add Route. Un petit cadenas apparait en dessous de Connected pour indiquer que la liaison avec l'IPC est OK. On peut faire Close.
Dans le choose Target, on choisit la cible correspond à l'IPC.
Code PLC
Dans cette partie, nous créer un premier code automate à injecter sur le Runtime de l'IPC. Depuis notre PC de développement, nous allons intégrer un nouvel Item PLC (add new item ...) dans notre Projet projetIPC.
On choisit un Standard PLC Project que nous pouvons nommer PLC1. On fait Add.
On écrit le code structuré suivant qui réalise un simple comptage tous les temps de cycle automate.
On clique sur Build -> Build Solution
On clique sur Activate Configuration :
On vérifie qu'il s'agit bien du projetIPC sur lequel nous travaillons et l'on clique sur OK.
On clique sur OK pour démarrer le Runtime TwinCAT sur l'IPC puis sur Login pour que votre PC puisse charger le code dans l'IPC.
Si c'est votre premier chargement dans l'IPC, TwinCAT vous demandera de confirmer l'utilisation du port 851 pour le transfert du programme. On fait YES, puis on clique sur START (bouton vert).
Si toutes les étapes ont été respectées, le compteur devrait s'incrémenter à chaque cycle automate. Ce code est exécuté sur l'IPC. Pour stopper le code, il faut cliquer sur l'icône Stop (en rouge).
Pour quitter la liaison avec l'IPC, on clique sur Logout.
Arrêt de l'IPC
Pour arrêter "correctement l'IPC", on se connecte sur son adresse IP avec l'outil Bureau à distance depuis votre PC
Après l'accès au bureau windows de l'IPC, on clique sur l'icône windows et l'on choisit Shut down pour arrêter l'IPC. On attent 30s et l'on peut couper l'alimentation.
On éteint l'IPC en cliquant sur l'icone windows et en faisant un Shut Down !