CODESYS 3.5

Dans ce livre, nous verrons l'installation de CODESYS 3.5, comment utiliser un Raspberry Pi avec le Runtime CODESYS comme Master EtherCAT,

Installation de CODESYS 3.5

Codesys

CODESYS https://www.codesys.com/ est un environnement de programmation PLC utilisé par plus de 400 fabricants de contrôleurs tels que ABB, Bosch, Beckhoff, Festo, Eaton, Schneider Electric, Wago.CODESYS permet de réaliser des programmes en LADDER, FBD, ST, CFC en respectant les normes CEI 61131-3 et est devenu le standard sur le marché des outils de programmation neutres.

Le produit est utilisé pour le développement des solutions logicielles dans la fabrication de machines, les engins mobiles et dans le secteur de l'énergie et des projets d'installation. Des fabricants de contrôleurs intègrent CODESYS dans leurs automates, composants d'automatisme (moteurs programmables, afficheurs, composants d'E/S) et conçoivent des systèmes embarqués avec CODESYS.

Quelques exemples :

Bien que généralement très coûteux et destiné aux environnements industriels, CODESYS a publié une cible qui transforme un Raspberry Pi en un automate. La version non payante vous permet de faire fonctionner le RunTime sur le Raspi pendant 2h avant de nécessiter un reboot. Une licence payante (50€ Single Core ou 100€ Multi-Core) vous permet d'utiliser le Raspberry Pi dans un cadre industriel 24h/24.

Dans la section Automatisme du site, vous pourrez consulter cet article, pour transformer le Raspberry Pi en automate et contrôler les GPIO.

Téléchargement de CODESYS

Pour télécharger CODESYS 3.5 Codesys Telechargement

Il vous sera demandé de créer un compte pour télécharger le logiciel:

A la date de cet article, on est à la version 3.5.18.20 de juin 2022.

Installation de CODESYS

L'installation de CODESYS n'est pas complexe si l'on respecte les différentes étapes:

L'installation prend plusieurs minutes sans évolution de la barre d'avancement ! C'est normal.

That's It :cowboy-hat-face: Vous êtes prêt pour les premiers essais !

Premier essai avec CODESYS 3.5

Lancer CODESYS v3.5 SP18 depuis le menu démarrer:

Programmation Ladder

On souhaite créer un premier programme très simple avec un Contact NO que l'on nommera entree en série avec une bobine que l'on nommera sortie. Les outils de contacts sont présents dans la barre de menu haute et dans la fenêtre latérale droite.

Instance PLC Soft

On va maintenant lancer le Runtime sur notre PC qui va exécuter le code Automate compilé. C'est notre PC qui va ainsi jouer le rôle de Soft PLC. Ce qui est limitant avec le PC, c'est qu'il est impossible de brancher directement des capteurs industriels, cependant, nous pouvons ajouter par bus de terrain EtherCat/ModbusTCP/EthernetIP/Profinet des E/S déportées qui se chargeront de récupérer les données capteurs ou piloter des Variateurs. L'avantage, c'est que l'on profite de la puissance Processeur du PC pour faire des applications complexes.

Lancer l'instance Soft PLC

Dans la barre des îcones cachées,

Transférer le Programme depuis Codesys

Test du programme

Conclusion

Nous avons vu dans ce premier essai comment déployer un code automate dans un Runtime PLC sur PC. Nous verrons par la suite comment

Codesys sur Raspberry PI 4

Le Runtime Codesys pour Raspberry Pi

Présentation

Codesys fournit un Runtime pour cible Raspberry Pi afin de le transformer en Automate exécutant du code Ladder / FBD / CFC et sur lequel nous pouvons piloter les GPIO.

Avis perso :

Il est tentant de se dire, qu'avec ce plugin à 100€ + un Raspberry Pi 4 à 50€, on peut atteindre des performances équivalentes à un système IPC à 2k€ chez Siemens ou autre sauf que :

Malgré les limitations, des industriels parient sur ce type d'outils en production avec un applicatif qui nécessiterait normalement du matériel beaucoup plus coûteux. Dans le cadre d'un projet étudiant ou d'un POC, il s'agit d'un outil adapté et c'est toujours valorisant pour un étudiant de BUT GEII de pouvoir dire à un entretien qu'on a réalisé son propre IPC basé sur un Runtime Codesys sur cible Raspberry Pi 4.

Installation du Runtime Raspberry Pi sur Codesys

Projet Codesys sur Raspberry Pi 4

Arborescence de projet

Update du Raspberry Pi

Connexion et Gateway

Programme de test Raspberry Pi

Nous souhaitons faire dans ce programme de test un pilotage de LED à partir d'un Bouton Poussoir :

Test

HMI Codesys sur RPI 4

HMI Codesys sur RPi 4

Après avoir porté le Runtime Codesys sur un Raspberry Pi 4 et fait notre premier programme Ladder, nous allons dans cet article présenter la mise en oeuvre d'une HMI. Dans Codesys, l'HMI est configurable sous forme de serveur WEB et il suffit d'un PC ou Smartphone ou Tablette avec un navigateur Web pour interagir avec l'HMI.

Dans ce guide, nous allons simuler un programme de Marche-Arrêt de Moteur. Le système simulé est constitué de 4 BP et d'une sortie GPIO qui permet d'alimenter le contacteur Moteur.

Interfaces :

Intégration de l'HMI

Programmation Ladder et Configuration des GPIO

On configure

Affectation des variables HMI

Webvisu

Il est également possible d'accéder à la visualisation depuis un navigateur web (PC avec Firefox, Tablette ou Smartphone avec Chrome)

Vidéo de pilotage par Tablette

{{< youtube IB3pWCfzkzI >}}

Conclusion

On vient de porter le Runtime Codesys dans un Raspberry Pi pour en faire un automate que l'on peut programmer avec l'environnement CODESYS. Ce premier test est très simple et permet de valider :

L'outil Codesys, à l'instar de TIA Portal, est très puissant, avec une complexité proportionnelle à cette puissance. Il n'y a pas de secrets, la maîtrise vient avec le nombre d'heures passées sur l'outil !

Codesys et Master EtherCAT sur Raspberry PI

Introduction

Le Runtime de Codesys permet de générer un Master Ethercat. Dans cet article, nous allons utiliser un Raspberry Pi avec le Runtime CodeSys comme Master EtherCAT et un coupleur EtherCAT BK1120 de Beckhoff commme I/O déporté (Slave).

Branchement

Le branchement du Raspberry Pi sera modifié dans le contexte d’un réseau Ethercat.

Dans ce cas d’une communication Ethercat, il ne faut pas utiliser de switch, un branchement direct entre le Master et le Slave est nécessaire.

Configuration réseau : IP + EtherCAT

Deux configurations réseau seront à effectuer sur le Raspberry Pi:

Le port Ethernet physique du RPi est associé à eth0. L’adresse MAC ou physique, aussi nommée ether, est donc DC-A6-32-31-C0-E2. Cette adresse devra être écrite en Majuscule séparée par des tirets dans Codesys.

Fichiers de description Beckhoff

Avant de pouvoir connecter le coupleur Beckhoff, nous devons nous assurer de disposer des fichiers XML de description du BK1120 et de ses modules. Par analogie avec l’environnement Siemens, les fichiers XML Beckhoff correspondent aux fichiers GSDML de Siemens.

Configuration du Master EtherCAT

Pour créer la connexion entre le Master EtherCAT sur le Raspberry Pi et le coupleur EtherCAT Beckhoff BK1120 à l'aide de CODESYS :

Nous devrons maintenant saisir l'adresse matérielle (MAC) du Raspberry Pi (relevée précemment) dans CODESYS :

Programme MAIN sur le Master

Double-cliquez sur "PLC_PRG (PRG)" dans l'arborescence des équipements. Comme vu dans les articles précédents, nous ferons notre programme en Ladder.

Affection des variables

Nous allons maintenant lier les variables du programme MAIN aux entrées sorties du coupleur BK1120.

Nous devons maintenant lier notre Variable BP à "C1 Input" du Beckhoff IO

Test du programme

Pour exécuter le programme :

Conclusion

Nous pouvons maintenant contrôler des coupleurs d'E/S industriels à l'aide d'un Raspberry Pi en tant que Master EtherCAT. Néanmoins, il est illusoire de penser qu'il est possible d'atteindre les perfomances temps réel avec le Runtime Codesys comme sur un IPC Beckhoff qui est prévu pour. Pour des applications classiques d'automatisme sans besoin de synchroniser des axes moteurs, les performances offertes par ce type de dispositif sont équivalents à celles offertes par une communication Profinet I/O.

Master IO-Link sur Raspberry Pi

Cet article fait suite à la communication entre TwinCAT 3 et un Master IO-Link Profinet. Il est également possible de connecter un Master IO-Link Profinet sur un Raspberry Pi 4 avec le Runtime Codesys. Le schéma du montage utilisé est représenté ci-dessous :

Prérequis :

Il est également nécessaire d'avoir lu l'article sur la communication entre le Master IO-Link Profinet et TwinCAT car plusieurs aspects vont se retrouver ici :

Projet Codesys

Gateway et Raspberry Pi

En double cliquant sur Device, dans les Communications Settings:

À droite de la Gateway,

La liaison avec le Raspberry Pi doit passer au vert et indiquer (active)

Si tout est au vert, on peut passer à la liaison Profinet

Configuration de la liaison Profinet

Faire un clic droit sur Device :

Dans l'arborescence Profinet IO :

Sur Ethernet(Ethernet), faire un clic droit :

Dans l'arborescence Profinet IO Master :

GSDML du Master IO-Link Profinet d'IFM

Comme pour TIA Portal, le Master IO-Link Profinet n'est pas installée de base dans Codesys. Il est nécessaire d'ajouter le fichier GSDML correspondant dans le Device Repertory.

Dans l'onglet Tools, faire :

Cliquer sur Install

et sélectionner le GSDM correspondant à votre Master IO-Link. Pour rappel, le fichier GSDML du Master IO-Link Profinet AL1100 se télécharge directement chez IFM.

Ajout du Master IO-Link

En cliquant sur PN_Controller (PN-Controller), faire

Dans l'arborescence Profinet IO -> IO -> ifm electronic, choisir

Configuration Profinet et IO-Link

Double cliquer sur Ethernet (Ethernet)

Double cliquer sur PN_Controller et modifier la plage d'adresses pour les Slave

Double cliquer sur AL1100 (AL1100) et modifier les IP Parameter

Dans _4 _Ports (4 Ports) , sur le Port_1, faire

Comme nous avons branché le bouton capacitif KT6101 sur le port 1, il faut lui associer la taille de IO-Link Inpurt + Output adapté au message. Dans notre cas, choisir :

Avant d'aller plus loin, nous allons tout de suite configurer le rafraichissement automatique des données :

En double cliquant sur Port 1, en bas à droite, dans le champs Always Update Variables :

Faire :

Vérifier que cela soit bien pris en compte sinon les valeurs des capteurs n'apparaîtrons pas !

On va procéder de manière analogue pour Port_2 :

Il s'agit du détecteur de distance O5D150 qui est branché sur Port_2, celui ci nécessite 2 Bytes d'Input pour le message :

Pareil que précédement, on fait attention à autoriser Always update variables avec l'option :

Pour les Port_3 et Port_4, comme aucun capteur n'est branché dessus, nous placerons Disabled

Test rapide du fonctionnement du Master IO-Link

Sans oublier de faire Save, cliquer sur

Pour se connecter sur le Raspberry Pi et y transférer le code Automate, cliquer sur la petite prise de courant (Login)

On clique sur :

Normalement, tous les éléments passent au vert.

En cliquant sur le Port_2, dans

Ces données varient avec la distance mesurée. Comme pour TwinCAT, il faudra mapper ces données aux variables du programme Automate.

En cliquant sur le Port_1, dans

Pour se déconnecter, on clique sur Stop pour Logout.

Bilan

Cette première étape nous a permis de valider la bonne communication avec le Master IO-Link. Les prochaines étapes seront:

Programme Automate et fonctions capteurs

Les différentes étapes présentées ci-dessous seront très similaires à celles présentées pour l'association d'un Master IO-Link à TwinCAT.

Fonction capteur O5D150

Dans Application faire :

Dans Add POU :

Le programme de la fonction FB_O5D150 est identique à celui présenté dans TwinCAT :

De même pour l'instanciation et l'appel de fonction, seule variante, le PLC_PRG est dans notre cas écrit en Ladder, ce qui signifie qu'il est nécessaire d'ajouter un bloc à nommer fbO5D150 pour réaliser l'appel de fonction.

On peut ajouter une variable SwitchState de type dans le PLC_PRG simplement en écrivant SwitchState en sortie du bloc.

Nous allons mapper les variables de la fonction O5D150 aux variables IO-Link :

Trois petits points doivent apparaîtrent et lancer l'Input Assistant:

Placer à la fin de la variable [0] pour indiquer qu'il s'agit de l'élément 0 de l'array of Byte.

On fait de même pour la ligne %IB13. Noubliez pas de placer à la fin de la variable [1] pour indiquer qu'il s'agit de l'élément 1 de l'array of Byte.

On effectue un Save, suivi d'un Generate, Login et Start

On n'oublie pas de faire Stop et Logout pour faire des modification du programme.

Fonction bouton capacitif KT6101

Comme pour le capteur O5D150, le code pour le bouton capacitif KT6101 est identique à celui développé pour TwinCAT.

On réalise l'instanciation et l'appel de la fonction fbKT6101 dans PLC_PRG

Pour le mapping des variables IO-Link, on procède de la même manière que le capteur O5D150

On fait Generate, Login et Start :

Pour finaliser cette démonstration, nous allons intégrer une IHM et réaliser une WebVisu sur tablette.

Visualisation IHM et WebVisu

Pour intégrer une visualisation :

Pour simuler les deux couleurs lumineuses Bleue et Verte, j'utilise une astuce sur la visualisation :

Pour le voyant vert, je procède de la même manière sans inverser la variable PLC_PRG.fbKT6101.bSSC1

Je supperpose les deux voyants sur l'IHM :

Une jauge de distance est également placée :

On souhaite également afficher la distance dans un champ, nous placerons ainsi un rectangle qui servira de champ de visualisation :

Dans le champ Text, nous mettrons :

Dans le Champ Text variable, nous mettrons :

Il reste à faire la connexion au Raspberry Pi et lancer le Runtime :

Et l'IHM s'anime en fonction des mesures et appuis sur les capteurs.

WebVisu

Il est possible de récuperer cette IHM sur une page Web à travers la WebVisu.