Codesys RunTime on Raspberry Pi 4 & HMI

- codesys-part1

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.

  • Le plugin peut se télécharger ici
  • Il est nécessaire d’avoir un compte Codesys (gratuit)
  • Le Runtime est gratuit mais il stoppe au bout de 2h ce qui nécessite un redémarrage (pas gênant pour un TP, inutilisable en production)
  • Si vous souhaitez le Runtime sans la limite des 2h, il vous coûtera 100€ pour une clé de licence à demander directement chez Codesys
Codesys Runtime pour Raspberry Pi

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 :

  • Un Raspberry Pi n’est pas durci pour résister à un environnement industriel (pas de garantie)
  • Pas de possibilité de connecter des cartes I/O simplement, il faut passer par un bus de terrain de type Ethernet ou alors mettre des adaptateurs 0/24V sur les GPIO.
  • De base, les performances temps réels ne sont pas garanties. (L’OS de la Raspberry Pi n’est pas patché RealTime ou Xenomai)
  • Par contre, on peut intégrer facilement en plus des outils de type MQTT, NodeRed, Grafana car le Raspi possède une forte puissance de calcul face à un automate classique.

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.

  • Pour installer l’AddOn, faire Tools -> CODESYS Installer
Codesys installation du Runtime pour Raspberry Pi
  • Cliquer sur Install File
Codesys Install File
  • Sélectionner le fichier téléchargé précedemment
Codesys sélection du fichier Runtime
  • On ferme le logiciel Codesys en arrière Plan et l’on fait OK

    Codesys operation will be performed Codesys fermeture
  • On coche I accept the license agreements et normalement l’AddOn est correctement installé. On peut passer à la création d’un Projet pour le Raspi.

Codesys License Agreement
  • On crée un Standard Project nommé Test_Raspi
  • Enregistré dans le dossier Codesys\Raspi à créer
Codesys Projet Raspberry Pi
  • Pour Device, on choisit CODESYS Control for Raspberry Pi MC SL
  • PLC_PRG : en Ladder (LD)
Codesys Standard Project
  • On obtient l’arborescence de projet suivante :
Codesys arborescence de projet
  • On fait un update du Raspberry Pi dans Tools -> Update Raspberry Pi
Codesys Update du Raspberry Pi
  • On met le username du Raspi : pi
  • On met le mdp : xxxx
  • On met l’adresse IP du Raspberry Pi : 192.168.1.15 (on peut également faire un scan)
  • On clique sur Install
  • On vérifie le System Info que des données apparaîssent (bug sinon)
  • On clique sur Configure
  • La création d’un User peut être demandé avec un login et un mdp pour avoir l’autorisation de transférer du code sur l’automate. Perso, j’ai choisi le même login et mdp que pour le Raspi.
Codesys configuration du Runtime pour Raspberry Pi
  • On double clique sur Device

  • Il faut créer une nouvelle Gateway correspond à la carte réseau sur laquelle est branchée votre Raspberry Pi Codesys création de Gateway

  • L’adresse IP de la carte Ethernet était dans cet exemple de 192.168.1.100 (à adapter selon votre config)

  • On place l’adresse IP de votre Raspberry Pi à côté de la Gateway et l’on appuie sur la touche entrée

Codesys configuration IP de la Gateway Codesys configuration IP du Runtime sur Raspberry Pi

  • On remet le login et mot de passe qui permet de transférer le code PLC sur la cible Raspberry Pi
  • La cible passe au vert avec du texte en-dessous
  • On est OK pour la suite

Codesys login et password Codesys connexion active

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

  • Le BP est branché en Pull-Up ce qui signifie qu’à l’état de repos, il envoie 3.3V, à l’état actif, il envoie 0V
  • Le BP est branché sur la GPIO 17
  • La Led est branchée sur la GPIO 4
Montage Raspberry Pi avec bouton poussoir et Led
  • Voici le programme crée pour piloter la LED
  • Comme le BP est actif à l’état de repos, on aura la LED qui sera allumée, si on appuie sur le BP, la LED s’éteindra
Codesys programme pour piloter la LED
  • Il faut maintenant affecter les GPIO aux variables BP et LED
  • On configure GPIO 4 comme Output pour la LED
  • On configure GPIO 17 comme Input pour le BP
Codesys affection des GPIO
  • Dans I/O Mapping on affecte la variable BP au Bit 17 pour Digital Input
Codesys Mapping GPIO Input
  • De manière équivalente on affecte la variable LED au Bit 4 pour Digital Output
Codesys Mapping GPIO Output
  • On fait Generate Code (F11)
  • On fait Login (Alt+F8)
Codesys Login (Alt+F8)
  • On fait START (F5)
  • On remarque que la LED est automatiquement allumée, ce qui est conforme au comportement attendu
  • Quand on appuie sur le BP, la LED s’éteint (conforme aussi)
  • Vous venez de créer un Automate avec un Raspberry Pi -> Bravo !
Codesys test pilotage de LED

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 :

  • 1 BP_START attaché sur la GPIO17 du RPi
  • 1 START_HMI, il s’agit d’un BP virtuel qui se trouve sur le panel HMI
  • 1 BP_STOP attaché sur GPIO18 du RPi
  • 1 STOP_HMI, il s’agit d’un BP virtuel qui se trouve sur le panel HMI
  • 1 sortie MOTEUR (Led Verte), attaché à la GPIO4 du RPi
Rapsberry Pi et montage boutons poussoirs et LED
  • On clique droit sur Application -> Add Object -> Visualization (On laisse le nom par défaut)
Codesys Add Object Visualization Codesys creates a visualization object
  • Dans Lampe/Switches glisser une Lamp sur la zone de visu
Codesys add Lamp
  • Dans Background -> Image modifier la couleur de la Lamp en Green
Codesys change Lamp Background
  • Positionner des Power Switch pour Marche et Arret, le texte se place avec Common Controls -> Label
Codesys add Power Switch
  • Voici le code Ladder pour un Marche-Arrêt avec Arrêt prioritaire. Attention au fait que les BP START et STOP branchés sur les GPIO du RPi sont en Pull-Up, c'est à dire à l'état Haut au repos.
Codesys programmation Ladder départ moteur

On configure

  • GPIO 4 en Output (Moteur)
  • GPIO 17 en Input (START)
  • GPIO 18 en Input (STOP)
Codesys configuration des GPIO
  • On réalise le Mappage mémoire
Codesys Mapping GPIO
  • On affecte la variable HMI en cliquant dans le champ variable du BP Arret sélectionné et en cherchant la variable STOP_HMI.
  • Si l'on connaît un peu la programmation orientée objet, la variable STOP_HMI est associée au programme PLC_PRG -> vu des autres programmes, il s’agit de la variable PLC_PRG.STOP_HMI
Codesys affectation variable STOP HMI
  • On fait de même pour la variable START_HMI et pour le MOTEUR
Codesys affectation variable START HMI et MOTEUR
  • On fait Generate, puis Login, puis Start (on accepte le chargement du programme dans le RPi)
Codesys Start
  • On peut tester depuis la visu Codesys
Codesys test visu

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

  • On place l’adresse IP du Raspberry Pi dans le navigateur suivi du numéro de port 8080 et l’on charge la page webvisu.htm
  • 192.168.1.15:8080/webvisu.htm
  • on peut s’amuser à piloter la Led du RPi depuis Firefox
Codesys WebVisu
  • Le principe précédent est strictement identique avec une Tablette. Ci-dessous, une vidéo de démonstration de pilotage du Rasberry Pi avec la WebVisu Codesys sur une tablette.

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 :

  • le port du RunTime Codesys sur le Raspberry Pi
  • les IHM embarqués dans le Raspberry Pi
  • le pilotage par Smartphone de l’IHM

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 !