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. 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 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 : 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. Installation du Runtime Raspberry Pi sur Codesys Pour installer l'AddOn, faire Tools -> CODESYS Installer Cliquer sur Install File Sélectionner le fichier téléchargé précedemment On ferme le logiciel Codesys en arrière Plan et l'on fait OK ||| |:------------------------------------------------------|------------------------------------------------------:| 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. Projet Codesys sur Raspberry Pi 4 Arborescence de projet On crée un Standard Project nommé Test_Raspi Enregistré dans le dossier Codesys\Raspi à créer Pour Device, on choisit CODESYS Control for Raspberry Pi MC SL PLC_PRG : en Ladder (LD) On obtient l'arborescence de projet suivante : Update du Raspberry Pi On fait un update du Raspberry Pi dans Tools -> Update 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. Connexion et Gateway 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 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 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 Programme de test Raspberry Pi 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 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 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 Dans I/O Mapping on affecte la variable BP au Bit 17 pour Digital Input De manière équivalente on affecte la variable LED au Bit 4 pour Digital Output Test On fait Generate Code (F11) On fait 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 !