# CODESYS

CODESYS (voorheen CoDeSys) is een ontwikkelomgeving voor het programmeren van automatiseringsproducten volgens de internationale industriële standaard IEC 61131-3.

## Introductie

CODESYS is ontwikkeld en wordt geleverd door het Duitse softwarebedrijf CODESYS GmbH, gesitueerd in de Beierse stad Kempten. Versie 1.0 werd gelanceerd in 1994. De term CODESYS was voorheen een acroniem dat stond voor Controller Development System. CODESYS kan kosteloos gedownload worden via de CODESYS-website, sommige pakket uitbreidingen kosten echter geld. De softwaretool is te gebruiken voor meerdere takken van de industriële automatiseringstechniek.

## Softwareontwikkeling

Alle vijf de programmeertalen voor applicatieontwikkeling zoals gedefinieerd in de IEC 61131-3 zijn beschikbaar binnen de CODESYS-ontwikkelomgeving.
* IL (Instruction list) is een programmeertaal lijkend op Assembler en is inmiddels uitgefaseerd (standaard uitgeschakeld binnen CODESYS v3.5)
* ST (Structured text) is een tekstgeoriënteerde taal en is qua syntax gebaseerd op PASCAL.
* LD (Ladder diagram) is een visueelgeoriënteerde taal en lijkt qua gebruik sterk zeer sterk op elektrische schakeldiagrammen.
* FBD (Function block diagram) biedt de mogelijkheid om eenvoudig zowel booleaanse als analoge expressies te programmeren.
* SFC (Sequential function chart) is bedoeld voor het programmeren van stappenprogramma's.
Extra grafische programmeermethode beschikbaar in CODESYS welke niet is gedefinieerd in de IEC-standaard:
* CFC (Continuous Function Chart) is vergelijkbaar met FBD maar dan met meer vrijheid. Anders dan bij de netwerkgeoriënteerde FBD-editor, waar de verbindingen tussen ingangen, operatoren en uitgangen automatisch worden gekoppeld, moet dit door de programmeur worden gedaan. Alle 'blokken' kunnen echter wel willekeurig geplaatst worden, hetgeen het mogelijk maakt terugkoppelingen te maken zonder extra variabelen te hoeven definiëren.
ST en CFC zijn tegenwoordig de meest gebruikte taal om te programmeren in CODESYS. Dit komt doordat CFC visueel georiënteerd is terwijl ST uiterst krachtig is om de meest complexe problemen te tackelen. Vaak wordt ST gebruikt om individuele FB's te schrijven en dient CFC als "glue-logic", ofwel de code waar de ST-FB's met elkaar verbonden worden. Deze wijze van softwareprojectie (dus CFC voor "glue" & ST voor FB's) komt dan ook in diverse Distributed Control Systems (DCS)-systemen veelvuldig voor en wordt over het algemeen door de meeste programmeurs als zeer prettig ervaren.
De geïntegreerde compilers zetten de applicatiecode, zoals gemaakt in CODESYS, om naar hardwarespecifieke binaire machinetaal en wordt geladen in de besturing. De meest gangbare 32- en 64-bit CPU-families worden ondersteund, waaronder de C166 family, TriCore, 80x86, 80x64, ARM/Cortex, Power Architectuur, SH, MIPS, Blackfin en vele andere. De 16-bits-architecturen zijn backward compatible, maar worden niet meer actief ondersteund.
Zodra CODESYS verbinding met de besturing heeft (online is), biedt het uitgebreide debuggingfunctionaliteiten, waaronder variabelen lezen/schrijven/forceren, het zetten van breakpoints waarmee door de applicatie gestapt kan worden en het opslaan van variabelen in de controller in een ringbuffer die in een grafiek kan worden weergegeven.
CODESYS V3 IDE is zelf ook gebaseerd op het zogenaamde CODESYS Automation Platform. Leveranciers van besturingen hebben de mogelijkheid dit componentenraamwerk te gebruiken in hun eigen IDE of uit te breiden met eigen 'plug-in'-modules. Alleen leveranciers en system integrators hebben toegang tot dit platform.
De CODESYS Professional Developer Edition (PDE) biedt de mogelijkheid de programmeeromgeving, CODESYS 3.5 IDE, met moderne ontwikkelhulpmiddelen uit te breiden. Voor deze PDE is een licentie nodig. De PDE biedt geïntegreerde UML-ondersteuning, een verbinding met Apache Subversion of Git (vanaf SP17) voor versiebeheer, of statische codeanalyse van de applicatiecode. De Profiler dient om de doorlooptijd van een programma te meten en daar waar nodig te optimaliseren en een Test Manager om unit tests te schrijven waarmee de code geautomatiseerd doorgetest kan worden. Vanaf het tweede kwartaal van 2024 werd UML-ondersteuning uitgefaseerd, omdat deze plug-in in verhouding tot standaard aanwezige visuele programmeertools binnen CODESYS geen meerwaarde bood.
De CODESYS Application Composer (AC) maakt het mogelijk om complete automatiseringsapplicaties te bouwen zonder te programmeren. Een deel van de composer is licentievrij te gebruiken, maar de werkelijk belangrijke componenten hieruit vereisen een licentie. Met de composer kunnen machines of fabrieken geconfigureerd worden op basis van modules, bijvoorbeeld middels het definiëren van een mechatronische constructie of de complete softwarefunctionaliteit van een project.
Forge.Codesys.com is een opensourceplatform voor gebruikers en ontwikkelaars om elkaar hulp en ondersteuning te bieden. Tevens biedt dit platform gebruikers de mogelijkheid om opensourceprojecten te maken.

## Runtime

Het programmeren van platformonafhankelijke code gebeurt binnen de CODESYS Integrated Development Environment (IDE). Deze code kan zodanig worden geschreven dat deze zonder wijzigingen op vrijwel elk hardwareplatform kan functioneren inclusief de eigen gemaakte of standaard beschikbare bibliotheken. Vervolgens wordt de code gecompileerd (afhankelijk van de gekozen hardware in de IDE wordt de juiste compiler gebruikt) en kan deze worden uitgevoerd op het desbetreffende target device. Zodra de hardware wordt uitgewisseld voor een ander merk/model verandert er dus niets aan de code (behalve de eventuele compilerkeuze binnen de hardware en de mogelijkheden van de hardware zelf). Veel leveranciers leveren eigen drivers en software mee voor hun eigen hardware, maar verandert niets aan het platformonafhankelijke basisprincipe van CODESYS.
Na het implementeren van het CODESYS Control Runtime Systeem kunnen intelligente apparaten geprogrammeerd worden met CODESYS. Voor vele merken en typen PLC's zijn deze runtimes te verkrijgen (via CODESYS of de leverancier van de hardware). De Runtime dient als een vertaallaag tussen de gebruikerscode en de fysieke soft- en hardware van het desbetreffende platform waarop deze Runtime draait. Door middel van een betaalde toolkit (Runtime-Toolkit) is het mogelijk om zelf Runtimes te ontwikkelen en omvat een runtimesysteem als source- en objectcode. Deze voorbeeldcode kan dan op maat gemaakt worden en is via de meegeleverde compilers voor vele hardwareplatformen te porteren.

## Veldbustechnologie

Verschillende veldbussen kunnen direct gebruikt worden in het programmeersysteem. Hiervoor bevat CODESYS geïntegreerde configuratoren voor de meestgebruikte systemen, waaronder MODBUS RTU, MODBUS TCP, Profibus, CANopen, EtherCAT, ProfiNet en/of Ethernet/IP. Voor sommige systemen zijn extra protocolstacks beschikbaar in de vorm van CODESYS-bibliotheken die mee geladen worden met de applicatie. Door middel van een FDT Frame-plug-in kunnen extra leverancierspecifieke gebruikersomgevingen worden geïntegreerd. Communicatie tussen deze omgevingen gaat middels een communicatie-DTM (Dual Transfer Mode). FDT-technologie is alleen beschikbaar voor system integrators binnen het CODESYS Automation Platform.

## Visualisatie

De geïntegreerde editor helpt de gebruiker om complexe visualisaties direct in hetzelfde programmeerpakket CODESYS te creëren en deze te animeren gebaseerd op de variabelen van de applicatie. Om dit te vereenvoudigen zijn standaard visualisatie-elementen beschikbaar. Een optionele toolkit (Visu-Toolkit) biedt de mogelijkheid tot het ontwikkelen van eigen (complexe) visualisatie-elementen. De schermen worden onder andere gebruikt voor het testen en inbedrijfstellen van de applicatie. In combinatie met optionele visualisatielicenties, zijn de schermen tevens te gebruiken om de machines of fabrieken te bedienen, bijvoorbeeld middels besturingen met geïntegreerd display, in webbrowsers of als losse runtime op een Microsoft Windows- of Linuxcomputer.

## SoftMotion

Een optionele modulaire oplossing voor het aansturen van complexe bewegingen middels een, volgens de IEC 61131-3-geprogrammeerde besturing, is tevens volledig geïntegreerd in het CODESYS-programmeerpakket. Deze modulaire SoftMotion-oplossing bevat:
* Editors voor bewegingsprofielen, waaronder grafische CAM's of DIN 66025 CNC-beschrijvingen.
* Bibliotheek met modules voor decoders, interpolators, aansturen van de beweging, bijvoorbeeld via PLCopen MotionControl, kineastische transformaties en visualisatietemplates.

## Safety

Om het benodigde SIL-niveau te behalen is een risicoanalyse benodigd waarna alle systeemcomponenten moeten voldoen aan dit niveau. Gecertificeerde softwarecomponenten binnen CODESYS maken het eenvoudiger voor leveranciers om hun besturingen SIL2 of SIL3 gecertificeerd te krijgen. CODESYS Safety module bestaat uit componenten binnen het programmeersysteem en het runtimesysteen, waarbij de projectplanning volledig is geïntegreerd binnen de IEC 61131-3 programmeeromgeving.

## Industrieel gebruik

Meer dan 250 besturingsfabrikanten vanuit verschillende industriële sectoren bieden automatiseringsproducten met CODESYS-programmeermogelijkheid. Hierdoor zijn er wereldwijd duizenden eindgebruikers, zoals machinebouwers en overige automatiseerders, die CODESYS dagelijks toepassen voor velerlei automatiseringstoepassingen.
De CODESYS "Device Directory" geeft een overzicht van de bijna 400 producten van toonaangevende bedrijven die actief zijn op het gebied van besturingstechniek, automatisering en embedded systemen, die programmeerbaar zijn met CODESYS.