# CoDeSys

Codesys (orthographe propre CODESYS, anciennement CoDeSys) est un environnement de développement intégré pour automates programmables industriels (API) selon la norme CEI 61131-3 pour le développement d'applications dans l'automatisation industrielle.

## Introduction

Codesys est développé et commercialisé par Codesys Group, dont le siège social se trouve à Kempten/Allemagne. L'entreprise de logiciels a été fondée en 1994 sous le nom de 3S-Smart Software Solutions GmbH et a changé de nom en 2018 ou 2020 pour devenir Codesys Group ou Codesys GmbH.
Le nom CODESYS est un acronyme et signifie "Controller Development System". La version 1.0 a été lancée en 1994. Le système de programmation peut être distribué et utilisé sans licence, il peut être installé en toute légalité sur de multiples postes de travail sans protection contre la copie. Dans ce cas, les coûts d'utilisation des licences d'exécution sont relativement élevés, en fonction des performances de la plate-forme cible et du nombre de licences achetées. Dans le domaine de l'embarqué, il faut par exemple compter des montants à deux chiffres en euros pour chaque licence achetée.

## Domaines d'application

L'outil logiciel couvre différents aspects de la technique d'automatisation industrielle dans une seule interface :

### Développement

Tous les langages spécifiés de la CEI 61131-3 (Commission électrotechnique internationale) sont inclus dans CODESYS :
* IL (liste d’instructions), langage textuel inspiré de l'assembleur classique, il est cependant considéré comme "deprecated" (obsolète) par l'organisation d'utilisateurs PLCopen de la CEI 61131-3 et ne devrait plus être utilisé pour de nouveaux projets.
* ST (Texte structuré, inspiré par PASCAL) pour la programmation structurée
* LD (Langage ladder), en français aussi „schéma à contacts". Ce langage représente graphiquement les câblages classiques des relais.
* FBD (Function Block Diagram), en français „boîtes fonctionnelles“. Langage graphique composé de modules (boîtes) dont la fonction est fournie par le système, par une programmation propre ou par des bibliothèques.
* SFC (Sequential Function Chart), langage graphique composé d'étapes, de transitions et de bifurcations, idéal pour la programmation de flux et de processus logiques.
Langage supplémentaire au standard CEI :
* CFC (Continuous Function Chart) est un langage semblable aux boîtes fonctionnelles. Pendant que l’éditeur „boîtes fonctionnelles“ s’oriente au réseau et arrange les éléments automatiquement, le CFC permet de les placer librement à l’écran. Les contre-réactions peuvent être réalisées sans variables intermédiaires. Le CFC est particulièrement approprié pour afficher un aperçu d’une application.
Le code d'application généré avec Codesys est traduit en code machine natif (code binaire) pour être téléchargé sur l'automate par des compilateurs intégrés. Les principales familles d'unités centrales 32 et 64 bits sont compatibles, par exemple TriCore, 80x86/iX, ARM/Cortex, architecture Power, SH, MIPS, Blackfin et autres.
En fonctionnement en ligne avec l'automate, Codesys offre des fonctions de débogage étendues, par exemple la surveillance/écriture/forçage des variables , les points d'arrêt/exécution pas à pas, l'enregistrement en ligne des valeurs de variables sur l'automate dans une mémoire tampon circulaire (Sampling Trace) et la sauvegarde de l'image de la mémoire, par exemple en cas d'exception ("CoreDump").
La version V3.x de Codesys est basée sur la Codesys Automation Platform, un cadre d'automatisation que les fabricants d'appareils peuvent compléter par leurs propres modules plug-in.
Avec la Codesys Professional Developer Edition, l'outil peut être complété par des composants supplémentaires payants, par exemple un support UML intégré, une connexion au système de gestion des versions Apache Subversion, une mesure du temps d'exécution ("profiling") directement sur l'automate ou une analyse statique du code de l'application.
Avec le Codesys Application Composer, les utilisateurs peuvent faire générer des applications d'automatisation complètes dans le cadre de l'outil CEI 61131-3. Pour cela, ils peuvent configurer leur machine ou leur installation sur la base de modules qui définissent par exemple la structure mécatronique ou la fonction logicielle à utiliser, y compris l'ensemble des fonctionnalités. À partir de cette configuration, un configurateur intégré génère un code CEI 61131-3 qui peut être visualisé.

### Runtime

Après l'implémentation du système d'exécution Codesys Control, les appareils intelligents peuvent être programmés avec Codesys. Ce système d'exécution est disponible sous forme de code source et de code objet dans le cadre d'un toolkit payant et peut être porté sur différentes plateformes.
Depuis début 2014, il existe également une version runtime pour le Raspberry Pi. Celle-ci ne garantit toutefois pas de propriétés en temps réel dur sans adaptation du système d'exploitation standard Raspian. Les interfaces Raspberry Pi, telles qu'I²C, SPI et 1-Wire, sont supportées en plus des bus de terrain basés sur Ethernet.
En outre, des systèmes SoftPLC pour Windows et Linux sont disponibles et transforment les PC industriels et autres plates-formes d'appareils connues de différents fabricants tels que Janztec, WAGO, Siemens ou Phoenix Contact en commandes compatibles Codesys.

### Technologie des bus de terrain

Il est possible d'utiliser de différents bus de terrain directement dans le système de programmation Codesys. L'outil intègre à cet effet des configurateurs pour les systèmes les plus importants, comme Profibus, CANopen, EtherCAT, Profinet, Ethernet IP. Pour la plupart de ces systèmes, des piles de protocoles sont disponibles sous forme de bibliothèques Codesys téléchargeables.
En outre, la plate-forme est compatible avec des protocoles de communication spécifiques aux applications, comme BACnet ou KNX pour l'automatisation des bâtiments.

### Communication

Pour l'échange de données avec d'autres participants dans les réseaux de contrôle, des protocoles de communication intégrés de manière transparente peuvent être intégrés et utilisés dans Codesys. Il s'agit notamment de protocoles propriétaires, de protocoles standardisés dans la technique d'automatisation, comme OPC et OPC UA, de protocoles standard pour les interfaces sérielles et Ethernet, ainsi que de protocoles standard de la technologie web, comme MQTT ou https. Ces derniers sont également proposés sous forme de bibliothèques encapsulées pour un accès simplifié aux clouds publics d'AWS ou de Microsoft (Azure).

### Visualisation

Directement dans le système de programmation Codesys, l'utilisateur peut créer des masques de visualisation complexes à l'aide d'un éditeur intégré et les animer sur la base des variables de l'application. Des éléments de visualisation intégrés sont disponibles à cet effet. Grâce à une boîte à outils optionnelle, l'utilisateur peut créer ses propres éléments de visualisation. Les masques créés sont utilisés entre autres pour les tests d'application et lors de la mise en service en ligne du système de programmation. Avec des clients de visualisation optionnels, les masques créés peuvent également servir à la commande de la machine ou de l'installation, par exemple sur des automates avec écran intégré (nom de produit Codesys TargetVisu), dans un runtime portable propre, par exemple sous Windows ou Linux (nom de produit Codesys HMI) ou dans un navigateur Web compatible HTML5 (nom de produit Codesys WebVisu). Pour faciliter l'utilisation, une application Android gratuite est disponible pour Codesys WebVisu (nom de produit Codesys Web View). Les dernières versions de Codesys TargetVisu et de Codesys WebVisu permettent la superposition et l'accélération graphique.

### Motion CNC Robotics

Une solution modulaire optionnelle est également entièrement intégrée dans le système de programmation et permet de commander des mouvements complexes avec une commande programmée selon la norme CEI 61131-3. Le système modulaire comprend:
* des éditeurs pour la planification des mouvements, par ex. à l'aide de cames ou de descriptions CNC selon DIN 66025
* un configurateur de groupes d'axes pour le paramétrage de la cinématique des robots
* des modules de bibliothèque pour le décodeur, l'interpolateur, pour le traitement des programmes, entre autres selon PLCopen MotionControl, pour les transformations cinématiques ainsi que pour les templates de visualisation.

### Safety

Pour que les fabricants de machines et d'installations puissent atteindre le niveau d'exigence de sécurité requis (niveau SIL) après une analyse des risques, tous les composants utilisés dans le système doivent satisfaire au niveau SIL déterminé. Des parties logicielles pré-certifiées au sein de Codesys facilitent aux fabricants d'appareils la certification de leurs systèmes de commande selon SIL2 ou SIL3. À cet effet, Codesys Safety est constitué de composants au sein du système de programmation et du système d'exécution, la configuration s'effectuant à son tour de manière entièrement intégrée dans l'environnement de programmation CEI 61131-3.
Les utilisateurs de la technique de commande utilisent les fonctions de sécurité avec des appareils qui ont déjà implémenté Codesys Safety. En outre, un produit supplémentaire est disponible, avec lequel les bornes certifiées EtherCAT Safety de Beckhoff peuvent être configurées au sein du Codesys Development System.

### Industrie 4.0 / Automation Server

Pour l'administration des appareils compatibles, une plateforme Industrie 4.0 est disponible, qui permet par exemple, via un navigateur web, de déposer des projets en code source et en code binaire, ainsi que de les télécharger sur les appareils connectés. De plus, les données d'application souhaitées des appareils peuvent être enregistrées, représentées et analysées dans une application intégrée au serveur. L'ensemble de la plateforme est hébergé dans un cloud public, les utilisateurs s'inscrivent pour un compte privé. La communication entre le cloud et les commandes se fait via une passerelle logicielle spéciale dont les propriétés de sécurité ont été évaluées par SSL Labs avec la note A+. Cette connexion peut donc être utilisée pour communiquer en toute sécurité avec des appareils intégrés dans le serveur d'automatisation sans autre tunnel VPN ou pare-feu, par exemple pour afficher des visualisations web déposées ou pour déboguer/mettre à jour le logiciel d'application sur l'appareil.

## Sources d'information et d'aide supplémentaires

Depuis 2012, le fabricant gère un forum en ligne où les utilisateurs peuvent communiquer entre eux. En 2020, ce forum a été transformé en plateforme de questions-réponses "Codesys Talk", qui est également utilisée comme plateforme ouverte pour les projets de développement open-source ("Codesys Forge"). Une application Android est disponible pour simplifier l'utilisation de la plateforme ("Codesys Forge").
Le Codesys Store est un magasin de développement en ligne dans lequel des options et des produits supplémentaires sont proposés. On y trouve entre autres des exemples de projets gratuits qui facilitent l'essai des fonctions et des technologies prises en charge. Comme dans une "boutique d'applications", les utilisateurs ont la possibilité de rechercher et d'installer les produits et projets proposés directement à partir du système de développement Codesys, sans avoir à quitter la plateforme.

## Diffusion sur le marché

Plus de 400 fabricants d'appareils dans différents secteurs industriels ont implémenté Codesys comme interface de programmation pour leurs composants d'automatisation intelligents. Il s'agit notamment d'appareils d'acteurs mondiaux comme ABB, Schneider Electric, Beckhoff, WAGO ou Festo, mais aussi de fournisseurs de niche de systèmes de commande industriels pour des domaines d'application très spécifiques. Il en résulte plusieurs dizaines de milliers d'utilisateurs qui utilisent Codesys. Dans le Codesys Store, plus de 200.000 utilisateurs vérifiés sont enregistrés (12/2021). En raison de son haut degré de diffusion, Codesys peut être qualifié de standard du marché parmi les outils de programmation indépendants des appareils selon la norme CEI 61131-3. Codesys est utilisé dans de nombreux établissements d'enseignement (écoles professionnelles, écoles supérieures, universités) dans le monde entier pour la formation aux techniques de commande et d'automatisation..

### Programmation, bibliothèques et protection logiciel

Du fait de la grande diversité des cibles possibles, CODESYS permet de gérer les autorisations d'utilisation suivant le type de processeur, la marque du produit cible, ou le temps d'utilisation. Ainsi un constructeur, ou un développeur tiers peut créer une bibliothèque et limiter son utilisation.
La version 3 de CODESYS est plus orientée objet, et nécessite des plateformes plus rapides qu'avec CODESYS 2.3, pour un résultat d'apparence équivalente.

## Adhésion à des organisations

* PLCopen
* OSADL
* CAN in Automation
* OPC Foundation
* Profibus
* SERCOS interface
* EtherCAT
* IO-Link
* ODVA
* The Open Group
* Wind Marketplace