Codesys

**CODESYS** on ohjauslaitteiden, kuten ohjelmoitava logiikka, ja sulautettujen järjestelmien ohjelmointiin tarkoitettu kansainvälisen IEC 61131-3 normin mukainen ohjelmointiympäristö.

## Esittely
CODESYSin on kehittänyt ja sitä markkinoi saksalainen ohjelmistoyritys 3S-Smart Software Solutions, joka sijaitsee Kemptenin kaupungissa Baijerissa. 
Ensimmäinen versio, V.1.0, julkaistiin vuonna 1994. CODESYS on lyhenne sanoista **CO**ntroller **DE**velopment **SYS**tem. CODESYS on lisenssivapaa ilmaisohjelma ja sen voi ladata yrityksen kotisivuilta.
Ohjelmointiympäristö kattaa teollisuusautomaation eri lajit yhdessä ohjelmistossa.

## Tekniikka
Ohjelmointikielinä CODESYS-kehitysympäristössä ovat kaikki viisi IEC 61131-3 normin mukaista ohjelmointitapaa.

Tekstieditorit:
* IL (Instruction list) eli käskylista, muistuttaa assembler-ohjelmointikieltä 
* ST (Structured text) eli rakenteinen teksti, muistuttaa Pascal- ja C-kieliä

Graafiset editorit:
* LD (Ladder logic) eli tikapuu- tai relekaavio-ohjelmointi yhdistää virtapiirit virtuaalisesti
* FBD (Function block diagram) eli toimilohkokaavio visuaaliseen ohjelmointiin 
* SFC (Sequential function chart) eli vuokaavio-ohjelmointi askelmaiseen ohjelmointiin

Lisäksi CODESYS sisältää graafisen editorin, joka ei ole IEC-normin mukainen:

* CFC (Continuous Function Chart) eli sekvenssikaavio-ohjelmointi muistuttaa lähinnä vapaalla kädellä ohjelmoitavaa toimilohkokaaviota (FBD). 

Toimintolohko-ohjelmoinnissa kytkennät lohkojen tulojen ja lähtöjen välille muodostetaan automaattisesti. Sekvenssikaavio-ohjelmoinnissa pitää ohjelmoijan piirtää ne. 
Kaikki lohkot voidaan asetella vapaasti, mikä mahdollistaa takaisinkytkentäsilmukoiden tekemisen ilman apumuuttujia.

Integroidut kääntäjät muuntavat CODESYSillä luodun sovelluskoodin natiiviksi konekieliseksi binäärikoodiksi, joka sen jälkeen ladataan ohjaimeen. Tärkeimmät 16- ja 32-bittiset suoritinperheet (CPU) on tuettu,
kuten C166, TriCore, 80x86, ARM/Cortex, Power Architecture, SH, MIPS ja BlackFin.

CODESYS ohjelman ollessa yhteydessä ohjaimeen, se tarjoaa laajat käännöstoiminnot, kuten monitorointi/kirjoitus/pakotus, asettamalla kirjanmerkkejä/suorittamalla yksittäisiä askelia tai tallentamalla muuttujien arvoja yhteydessä olevan ohjaimen rengaspuskuriin (Näytteenoton jäljitys).

CODESYS V3.x perustuu ns CODESYS Automation Platform -alustaan, joka on automaatiojärjestelmärunko laitevalmistajille. Nämä voivat laajentaa CODESYSiä omilla liitännäismoduuleillaan.

CODESYS Professional Developer Edition tarjoaa mahdollisuuden lisätä lisenssinalaisiin työkaluihin komponentteja, kuten esimerkiksi integroidun UML-kielen tuen, yhteyden SVN-versionhallintaan tai sovelluskoodin staattisen analysoinnin.

Maksuttomalla CODESYS Application Composer -ohjelmistolla voidaan luoda IEC 61131-3 automaatiosovelluksia. Koneen tai laitoksen konfigurointi voi perustua moduuleihin, esim. määritellään koneen mekaaninen rakenne tai käytettävät ohjelmatoiminnot jotka sisältävät koko projektin sisältämät toiminnot.

## Runtime
CODESYS Control Runtime Systemin implementoinin jälkeen älykkäät ohjainlaitteet voidaan ohjelmoida CODESYSllä. Maksullinen Toolkit sisältää tämän Runtime systemin lähde- ja objektikoodin ja se voidaan sovittaa eri alustoille.

## Kenttäväyläteknologia
Erilaisia kenttäväyliä voidaan käyttää suoraan CODESYS ohjelmointiympäristössä. Tähän tarkoitukseen on olemassa konfigurointityökalut yleisimpiin kenttäväyliin, kuten Profibus, Modbus RTU ja TCP, CANopen,CAN-väylä, EtherCAT, Profinet, Ethernet IP sekä Ethernet TCP/IP. Joihinkin järjestelmiin on saatavilla protokollapinot CODESYS-kirjastosta, jotka voidaan ladata erikseen.

FDT (Field Device Tool) -standardin avulla voidaan liittää kolmansien osapuolten laitekohtaisia rajapintoja. Kommunikointi näiden rajapintojen kautta toteutetaan DTM-laitekuvauksen (Device Type Manager) luomalla yhteydellä.

## Visualisointi
Integroitu editori auttaa käyttäjää luomaan näyttöjen ja käyttöliittymien visualisoinnit suoraan CODESYS-ohjelmointiympäristössä, ja niiden animointi perustuu sovelluksen muuttujiin. Saatavilla olevat valmiit visualisointielementit helpottavat sovellusten tekoa. Optiona saatavilla oleva toolkit mahdollistaa omien elementtien tekemisen. Näin luotuja näyttöjä voidaan käyttää sovellusten testauksessa ja käyttöönotossa ohjelmointiympäristön ollessa yhteydessä ohjaimeen. 
Yhdessä visualisointi-asiakasohjelmiston kanssa näitä näyttöjä voidaan käyttää myös koneiden ja laitosten ohjauksissa (jolloin ohjain ja näyttö on yhdistetty samaan laitteeseen), nettiselaimessa (verkkoselain) tai siirrettävässä runtimessä Windows tai Linux alustalla.

## Liikkeenohjaus
CODESYS SoftMotion on ohjelmointiympäristöön integroitu modulaarinen lisäsovellus, joka mahdollistaa monimutkaisten liikkeiden ohjauksen IEC 61131-3 ohjelmoinnilla. 
Modulaariset sovellukset sisältävät:
* Editorit liikkeenohjaukseen. esimerkiksi CAM-ohjaus tai DIN 66025 normin mukainen CNC-ohjaus.
* Ohjelmakirjastot dekooderille, interpolointiin, ohjelman suoritukseen, esimerkiksi PLCopen MotionControlin mukaisesti, kinematiikkamuunnoksiin ja visualisointimalleille.

## Turvallisuus
Jotta saavutettaisiin riskiarvion perusteella vaadittava turvallisuuden eheystaso (, SIL), kaikkien järjestelmän komponenttien tulee täyttää kyseisen tason vaatimukset. Esisertifioidut ohjelmistokomponentit CODESYS-ohjelmistossa helpottavat laitevalmistajien ohjaimien hyväksyntää SIL2 tai SIL3 turvatasoihin. CODESYS Safety koostuu komponenteista, jotka sisältyvät ohjelmointiympäristöön ja runtime systemiin, kun taas projektisuunnittelu on kokonaan integroitu IEC 61131-3 ohjelmointiympäristöön.

## Käyttö teollisuudessa
Yli 350 laitevalmistajaa eri teollisuusaloilta tarjoaa älykkäitä CODESYS-ohjelmoitavia automaatiolaitteita. Sen vuoksi tuhannet loppukäyttäjät, kuten koneiden ja tehtaiden rakentajat, ympäri maailmaa käyttävät CODESYSiä kaikenlaisissa automaatiosovelluksissa. 

CODESYS Device Directory -laitevalmistajakirjasto tarjoaa yleiskatsauksen lähes 400 laitteeseen jotka ovat CODESYS-ohjelmoitavia. Nämä johtavat laitevalmistajat ovat aloilta, kuten ohjaus- ja säätötekniikka, automaatiokomponentit ja sulautetut järjestelmät.

## Katso myös
* IDE Ohjelmointiympäristö
* Ohjelmointi
* Automaatio
* Prosessitekniikka
* Ohjelmoitava logiikka
* Sulautettu järjestelmä
* Pascal (ohjelmointikieli)

## Aiheesta muualla
* Homepage of 3S-Smart Software Solutions 
* CODESYS Device Directory 
* CODESYS Store	
* Homepage CODESYS Users' Conference 
* http://www.oscat.de/ OpenSource library for version 2 and 3 of CODESYS
*3S - Smart Software Solutions GmbH kotisivut 

## Kirjallisuutta
Saksankielistä:
* B. Vogel-Heuser/A. Wannagat (2008) *Modulares Engineering und Wiederverwendung mit CoDeSys V3*, Oldenbourg Industrieverlag
* Herbert Bernstein (2007) *SPS-Workshop mit Programmierung nach IEC 61131 mit vielen praktischen Beispielen, mit 2 CD-ROM*, VDE Verlag.
* Prof. Dr. Birgit Vogel-Heuser (2008) *Automation & Embedded Systems*, Oldenbourg Industrieverlag.
* Heinrich Lepers (2005) *SPS-Programmierung nach IEC 61131-3 mit Beispielen für CoDeSys und STEP 7*, Franzis Verlag
* Günter Wellenreuther/Dieter Zastrow (2007) *Automatisieren mit SPS - Übersichten und Übungsaufgaben*, Vieweg Verlag.
* Norbert Becker (2006) *Automatisierungstechnik*, Vogel Buchverlag.

Muilla kielillä:
* Russian: Igor Petrov: *Controller Programming: The standard languages and most important development tools*. Solon Press, 2007
* Portuguese: Marcos de Oliveira Fonseca et al.(2008) *Aplicando a norma IEC 61131 na automação de processos*, ISA América do Sul.
* Norwegian: Dag Håkon Hanssen (2008) *Programmerbare Logiske Styringer – baser på IEC 61131-3*, tapir akademisk forlag.