Bild von Wolfram Schäfer
Vor zwanzig Jahren habe ich unser Unter­nehmen gegründet, um anspruchs­volle Software mit Hochspra­chen und durch­dachter Archi­tektur für komplexe, varian­ten­reiche Maschinen und Anlagen zu entwickeln…

 

Im Maschi­nenbau wird diese Anfor­de­rung an die Flexi­bi­lität bei gleich­zei­tiger Wirtschaft­lich­keit durch die Modula­ri­sie­rung gelöst. In der Software­ent­wick­lung wenden wir genau das gleiche Prinzip an, um wirtschaft­lich flexibel und schnell quali­tativ hochwer­tige Software­lö­sungen zu erstellen. Die Prinzi­pien der objekt­ori­en­tierten Program­mie­rung (OOP) sind dafür beson­ders gut geeignet.

Seit über zwölf Jahren setzen wir deshalb die Prinzi­pien der OOP, der Conti­nuous Integra­tion (CI) und des Conti­nuous Deploy­ments (CD) in der Program­mie­rung von speicher­pro­gram­mier­baren Steue­rungen (SPS) sehr erfolg­reich ein. Damit entstehen mecha­tro­ni­sche Systeme, die die Vorteile der SPS mit denen aus der Hochspra­chen­ent­wick­lung kombi­nieren. Durch die Schaf­fung von Frame­works können wir viel schneller und agiler Appli­ka­tionen für unter­schied­liche Maschinen und Baureihen reali­sieren. Damit entsteht Software, die hinsicht­lich der nicht-funktio­nalen Quali­täts­kri­te­rien und den Anfor­de­rungen durch Indus­trie 4.0 gerecht wird. Die Software ist erwei­terbar, wartbar und vor allem wieder­ver­wendbar. Mittel­fristig zahlt sich dieses Vorgehen im Maschi­nenbau mit modularen Maschi­nen­kon­zepten immer aus.

Wir unter­stützen Sie bei der Erstel­lung solcher Frame­works und bei der Reali­sie­rung konkreter Appli­ka­tionen für Ihre Maschinen und Anlagen mit SPS. Dabei ist TwinCat3 von Beckhoff als sehr offenes und software­ge­trie­benes System unsere erste Präferenz.

Mehr lesen  Weniger lesen 

Wolfram Schäfer

Geschäfts­führer IT Enginee­ring Software Innovations

Heraus­for­de­rungen bei der SPS-Programmierung 

Die speicher­pro­gram­mier­bare Steue­rung (SPS, bzw. PLC, englisch Programm­able Logic Controller) wird in der Automa­ti­sie­rungs­technik für Steue­rungs- und Regelungs­auf­gaben überall einge­setzt, wo Prozesse automa­ti­siert werden. Sie stellt eine offene und univer­selle Automa­ti­sie­rungs­lö­sung für nahezu alle Branchen und Anwen­dungen dar: allge­meiner Maschi­nenbau, Holzbe­ar­bei­tungs­ma­schinen, Verpa­ckungs­ma­schinen, Blech­be­ar­bei­tung, Werkzeug­ma­schinen, Anlagenbau, Monta­ge­au­to­ma­tion, Gebäude- und Förder­technik bis zu Verkehrs­leit­sys­temen.Die Heraus­for­de­rung beim Einsatz dieser Maschinen ergibt sich aus den Verän­de­rung der etablierten Rahmen­be­din­gungen, die sich immer dynami­scher entwi­ckeln. Indus­trie 4.0 ist dabei ein zentraler Produk­ti­vi­täts­treiber mit dem Ziel, indivi­du­elle, varian­ten­reiche und auf Kunden­wunsch gefer­tigte Produkte bis zur Losgröße 1 zu Kosten wie in einer Massen­pro­duk­tion herstellen zu können. 

Dafür müssen die klassi­sche Produk­ti­ons­technik und die Infor­ma­tions- und Kommu­ni­ka­ti­ons­tech­no­logie viel enger mitein­ander vernetzt werden. Anbieter müssen ihre Maschinen zu anderen Anlagen und Infor­ma­ti­ons­sys­temen „öffnen“, Prozess­in­for­ma­tionen zur Verfü­gung stellen bzw. verar­beiten können. Dadurch entsteht eine ungeheure Dynamik.

Ebenso geraten Ferti­gungs­un­ter­nehmen unter Druck, ihre Produk­ti­vität weiter zu steigern, um Kosten­nach­teile zu vermeiden. Das sind ungewohnte Heraus­for­de­rungen, aber vor allem große Chancen für jene, die das erkannt haben und aktiv werden.

Wir können Ihnen aufzeigen, wie das bei Maschinen und Anlagen mit SPS geht und Sie bei der Umset­zung unterstützen!

Einschrän­kungen bei der „klassi­schen“ SPS-Programmierung 

Die Flexi­bi­lität spielt beim Aufbau einer modularen System­s­truktur eine wichtige Rolle: bei der Auswahl der Steue­rung selbst und der Baugruppen, von der Sensorik über die Aktorik bis hin zur Antriebs­technik. Diese Flexi­bi­lität wird verstärkt über den gesamten Produkt­le­bens­zy­klus einer Maschine bzw. Anlage bzw. für alle im Produkt­pro­gramm befind­liche Typen inner­halb von Baureihen gefordert.

Die Einsatz­sze­na­rien (z. B. herzu­stel­lende Produkte, Absatz­mengen, Produkt­va­ria­tionen) und Anfor­de­rungen (z. B. techni­sche, logis­ti­sche und sicher­heits-/recht­liche) ändern sich in immer kürzeren Zeiträumen.  Die modulare Hardware- und System­s­truktur der SPSen bietet für diese Anfor­de­rungen eine gute Grund­lage. Doch was ist mit der Software?

In der klassi­schen Form der Program­mie­rung von SPS-Steue­rungen wird häufig der Fokus auf die Erfül­lung funktio­naler Anfor­de­rungen gelegt. Das ist richtig und wichtig, aber eigent­lich selbst­ver­ständ­lich. Die nicht-funktio­nalen Anfor­de­rungen Wartbar­keit, Erwei­ter­bar­keit und Wieder­ver­wend­bar­keit werden bei der „klassi­schen“ Program­mie­rung oft vernachlässigt.

Probleme bei Vernach­läs­si­gung von nicht-funktio­nalen Anforderungen

  • Program­mierte Software­funk­tionen für eine Maschine können nicht bei einer anderen genutzt werden
  • Höherer Aufwand bei Software­test oder Fehlersuche
  • Funktio­nale Erwei­te­rung führt oft zu Verhal­tens­än­de­rung bei bestehenden Abläufen
  • Höherer Aufwand für Anpas­sungen an der Software
  • Abhän­gig­keit von einzelnen Programmierern
  • Vorteile der agilen Software­ent­wick­lung können nicht genutzt werden

Berück­sich­ti­gung von nicht-funktio­nalen Anforderungen

Bei der SPS-Program­mie­rung ist die Erfül­lung funktio­naler Anfor­de­rungen natür­lich wichtig. Werden die nicht-funktio­nalen Anfor­de­rungen Wartbar­keit, Erwei­ter­bar­keit und Wieder­ver­wend­bar­keit bei der Konzep­tion und Entwick­lung berück­sich­tigt, schafft man nachhal­tige Software­lö­sungen, die den langen Produkt­le­bens­zy­klen im Inves­ti­ti­ons­gü­ter­be­reich gerecht werden. Unter­stützt wird die SPS-Program­mie­rung durch:

Wartbarkeit 

Software kann ohne großen Aufwand an geänderte Spezi­fi­ka­tionen angepasst werden 

Erweiterbarkeit 

Software kann leicht um neue Funktionen erwei­tert werden 

Wiederverwendbarkeit 

Verwen­dung von Softwarebau­steinen für mehrere Maschinen, Baureihen, Anlagen bzw. Projekte 

Anwendung des agilen Vorgehensmodells SCRUM

  • keine Echtzeit­fä­hig­keit durch Latenzzeit
  • regel­mäßig funkti­ons­fä­hige Softwarestände
  • termin­ge­rechte Umsetzung
  • bessere Motiva­tion und Einbin­dung der Mitarbeiter
  • höhere Kunden­ori­en­tie­rung

Strukturierte und tool-gestützte Softwareentwicklung

  • Absiche­rung der Qualität über gesamten Entwicklungsprozess
  • flexible Berück­sich­ti­gung von Änderungswünschen

In der Praxis haben sich folgende Methoden bewährt

Konti­nu­ier­liche und automa­ti­sierte Prüfung des erstellten bzw. geänderten Source-Codes 
    • Ständige Verfüg­bar­keit eines ausführ­baren Systems
    • Frühzei­tiges Erkennen zur Lösung von Problemen bei der Integration
    • Steige­rung der Effizienz bei der Softwareentwicklung
    • Durch­füh­rung von automa­ti­sierten Tests (Unit-/ Regressions-Tests)
Stati­sche Code-Analyse: Methode zur Bewer­tung des Source-Codes nach formalen Qualitätskriterien 
    • Erkennen von Fehlern bereits vor dem Testlauf
    • Verbes­se­rung der „Güte“ des Source-Codes
    • Erleich­te­rung der Wartbar­keit und Wieder­ver­wend­bar­keit von Programmen
Code-Review ist die effizi­en­teste Methode, um die Software­qua­lität nachhaltig zu steigern. Die ständige Analyse des Source-Codes nach dem Vier-Augen-Prinzip ermög­licht dem Entwickler eine itera­tive Optimierung. 
    • Berück­sich­ti­gung und Steige­rung nicht-funktio­naler Qualitätsmerkmale
    • Effizi­ente Möglich­keit zur Einbin­dung von Kompe­tenzen anderer Entwickler
    • Erzie­lung einer wartbaren und erwei­ter­baren Software
Effek­tive Unter­stüt­zung einer verteilten, dezen­tralen Arbeitsweise 
    • Unabhän­giges Arbeiten an gleicher Software­ver­sion möglich
    • Software­ent­wick­lung und ‑anpas­sung auch an externen Stand­orten (z. B. vor Ort beim Kunden)
    • Spätere Versio­nie­rung der Änderungen und tool-gestützte Zusam­men­füh­rung im zentralen Repository

Struk­tur­ver­bes­se­rung von Quell­texten unter Beibe­hal­tung des bishe­rigen Programmverhaltens

Anpas­sung der Software bzw. von Modulen an neue Technologien

Objekt­ori­en­tierte Program­mie­rung für SPSen

Die objekt­ori­en­tierte Program­mie­rung hat ihren Ursprung in der Hochspra­chen­ent­wick­lung. Bei der OOP werden zusam­men­ge­hö­rige Daten sowie die auf sie anwend­baren Opera­tionen in Objekten zusam­men­ge­fasst. Anstelle der Abfolge von Befehlen werden vorrangig die Defini­tion der Objekte sowie ihrer Inter­ak­tionen behan­delt. Durch dieses Merkmal ergeben sich zentrale Vorteile bei der Erstel­lung, Verwen­dung und Pflege modularer Softwarebau­steine für SPS. Folgende Merkmale kennzeichnen die objekt­ori­en­tierte Programmierung.

Gemein­same Eigen­schaften (Attri­bute) und Funktionen (Methoden) werden in logischen Einheiten gebün­delt. Dafür werden genera­li­sierte Klassen genutzt.

Vorteil: Übersicht­lich­keit und Effizienz bei der Softwareentwicklung

Die Eigen­schaften eines Objekts sind im Objekt selbst verborgen, also gekap­selt (Data Hiding). Der Zugriff ist nur über im Objekt veran­kerte Methoden möglich. Dadurch sind die Objek­t­ei­gen­schaften geschützt; sie sind aller­dings für die „Außen­welt“ auch nicht von Belang.

Vorteil: Schutz vor schad­haften Änderungen

Eine Klasse ist ein abstraktes Modell bzw. ein Bauplan für eine Reihe von ähnli­chen Objekten. Von diesen Klassen können neue Klassen abgeleitet werden, welche die Eigen­schaften und Methoden der Eltern­klassen übernehmen.

Vorteil: Sicher­stel­lung von Software­qua­lität durch Kapse­lung von Eigenschaften

Dieselbe Methode kann auf unter­schied­liche Objekte angewendet werden.

Vorteil: Effizi­entes Programmierkonzept

Objekte kommu­ni­zieren unter­ein­ander durch den Austausch von Nachrichten, sog. Messages.

Effizi­ente objekt­ori­en­tierte Program­mie­rung durch Frameworks

Das Frame­work ist ein Program­mier­ge­rüst, das insbe­son­dere bei der OOP verwendet wird. Es stellt selbst kein fertiges Programm dar, sondern bildet für den Software­ent­wickler einen vorprogram­mierten Rahmen, inner­halb dessen die Anwen­dungen erstellt werden.

Einzelne Funktionen, Elemente und Bausteine sind bereits im Frame­work enthalten und müssen deshalb nicht immer wieder neu program­miert werden.

 

Bei der Programm­ent­wick­lung für SPS ergeben sich daraus mittel- bis langfristig unschätz­bare Vorteile. Ein verbrei­tetes Frame­work in der Micro­soft Welt ist beispiels­weise das „.NET Frame­work“, das Entwick­lungs­werk­zeuge, Schnitt­stellen und Klassen­bi­blio­theken enthält.

Schon ab einer Wieder­ver­wen­dungs­rate von 3 lohnt sich auch für die SPS-Program­mie­rung die Entwick­lung eines eigenen firmen- bzw. domänen­spe­zi­fi­schen Frame­works um darauf aufbauend varian­ten­reiche Appli­ka­tionen reali­sieren zu können.

Frame­works bieten große Vorteile bei der Softwareentwicklung

  • Wieder­keh­rende Funktionen und Elemente sind im Frame­work bereits enthalten oder vorpro­gram­miert und können bei der Entwick­lung verschie­denster Appli­ka­tionen wieder­ver­wendet werden. Das verein­facht die Arbeit des Program­mie­rers nachhaltig. Nutzen: Effizienz, Schnel­lig­keit, Fehler­frei­heit, Qualität etc.
  • Im Frame­work sind standar­di­sierte Schnitt­stellen enthalten, wodurch sich Kompo­nenten einfa­cher anspre­chen lassen.
  • Frame­works erlauben die Trennung von appli­ka­ti­ons­spe­zi­fi­schen Funktionen und allge­mein­gül­tigen Funktionen und Methoden. Das ermög­licht darüber hinaus eine effizi­ente Auftei­lung der Aufgaben und Verwal­tung des Quell­codes während der Entwicklung.

SPS-Program­mie­rung nach IEC 61131–3

Die Norm IEC 61131–3 (auch DIN EN 61131–3) ist ein inter­na­tio­naler Standard für Program­mier­spra­chen von speicher­pro­gram­mier­baren Steue­rungen. Ihr Ziel besteht in der Standar­di­sie­rung der Program­mie­rung der Steue­rungs­soft­ware für SPSen. Dabei sollen Program­mier­spra­chen herstel­ler­un­ab­hängig in einem einheit­li­chen Organi­sa­ti­ons­kon­zept (POE – Programm-Organi­sa­ti­ons­ein­heiten) mit der Pflicht zur Varia­blen­de­kla­ra­tion unter Verwen­dung von elemen­taren und abgelei­teten Daten­typen angewendet werden.

Program­mier­spra­chen für SPS-Programmierung

  • zwei textu­elle Fachspra­chen (AWL, ST)
  • zwei grafi­sche Fachspra­chen (KOP, FBS)
  • die überge­ord­nete Ablauf­sprache (AS), die sowohl grafi­sche als auch textu­elle Elemente enthält.
Weitere Merkmale aus der Norm IEC 61131–3 sind: 
  • anbie­ter­un­ab­hän­giger Programmierstandard
  • PLCopen-Zerti­fi­zie­rung
  • portable/ wieder­ver­wend­bare Software
  • Daten­kap­se­lung durch benut­zer­de­fi­nierte Datentypen

Entwick­lungs­um­ge­bungen für speicher­pro­gram­mier­bare Steuerungen

  • CoDeSys (Controller Develo­p­ment System) hat beim Lernen v.a. für Ausbil­dung, Studium, Schulungen und Lehrgängen den Vorteil, dass es als Program­mier­system kostenlos zu beziehen und zu den Vorgaben der IEC 61131–3 konform ist.
  • TwinCAT3 (The Windows Control and Automa­tion Techno­logy) bietet als Integra­tion in Visual Studio® eine leistungs­fä­hige und offene Entwick­lungs­um­ge­bung für die Program­mie­rung und Konfi­gu­ra­tion von SPS-Steue­rungen auch für die objekt­ori­en­tierten Erwei­te­rungen der IEC 61131–3.
  • STEP 7 (STeue­rungen Einfach Program­mieren) bzw. TIA Portal (Totally Integrated Automa­tion Portal): Bestand­teile der SIMATIC-Controller von Siemens mit einer etwas anderen Baustein­cha­rak­te­ristik als in der Norm IEC 61131–3 vorgegeben.

Entwick­lungs­um­ge­bung TwinCAT3 von Beckhoff

TwinCAT3 (TwinCAT – The Windows Control and Automa­tion Techno­logy) ist eine komplette Entwick­lungs­um­ge­bung für Steue­rungen von Beckhoff. Es ermög­licht dem SPS-Program­mierer einen einfa­chen Einstieg in die mächtigen Sprach­mittel der IEC 61131–3. Die Nutzung der Editoren und der Debug­ging-Funktionen hat die ausge­reiften Entwick­lungs­um­ge­bungen höherer Program­mier­spra­chen zum Vorbild. Beckhoff bietet damit ein sehr offenes und software­ge­trie­benes System an.

TwinCAT3 unter­stützt alle in der IEC 61131–3 beschrie­benen Sprachen:

  • Textu­elle Sprachen: Anwei­sungs­liste (AWL), Struk­tu­rierter Text (ST)
  • Grafi­sche Sprachen: Funkti­ons­plan (FUP), Kontakt­plan (KOP), Freigra­fi­scher Funkti­ons­pla­neditor (CFC), Ablauf­sprache (AS).

Mit TwinCAT3 kann auch die leistungs­starke Program­mier­sprache C++ verwendet werden: objekt­ori­en­tierte Program­mier­sprache, Echtzeit-Fähigkeit.

Unsere Empfeh­lung: Aus jahre­langer Erfah­rung präfe­riert iT Enginee­ring Software Innova­tions bei speicher­pro­gram­mier­baren Steue­rungen (SPS) die Systeme von Beckhoff aufgrund ihrer offenen und erwei­ter­baren Struktur.

Empfeh­lungen für die Software­ent­wick­lung von speicher­pro­gram­mier­bare Steue­rungen (SPS)

  • Die anwen­dungs­spe­zi­fi­sche Program­mie­rung des Steue­rungs­pro­gramms einer SPS sollte entspre­chend der Norm IEC 61131–3 erfolgen. Unter­stützt wird der Program­mierer durch die Entwick­lungs­um­ge­bung, die in der Steue­rungs­um­ge­bung des SPS-Herstel­lers integriert ist. Bei SIMATIC-Steue­rungen von Siemens wird der Program­mierer durch das TIA Portal unterstützt.
  • Die Methoden aus der Hochspra­chen­ent­wick­lung  sollten aus Gründen der Qualität und Wirtschaft­lich­keit auch bei der Software­ent­wick­lung für SPSen angewendet werden. Das umfasst insbe­son­dere die objekt­ori­en­tierte Program­mie­rung (OOP) und damit auch die Schaf­fung von domänen­spe­zi­fi­schen Frameworks.
  • Nur so lassen sich zukunfts­si­chere Steue­rungs­kon­zepte für SPSen reali­sieren. Die Beach­tung nicht-funktio­naler Anfor­de­rungen, wie Wartbar­keit, Erwei­ter­bar­keit und Wieder­ver­wend­bar­keit garan­tieren schließ­lich auch eine höhere Softwarequalität!
  • Diese Konzepte sind die perfekte Grund­lage, um im nächsten Schritt mit der virtu­ellen Inbetrieb­nahme ein noch höheres Niveau bei Software­qua­lität und Entwick­lungs­ge­schwin­dig­keit zu erreichen.

Mit virtu­eller Inbetrieb­nahme erreicht Ihre SPS das nächste Level.

Laptop zeigt virtuelles Modell einer Maschine als Symbol für virtuelle Inbetriebnahme

Unser Angebot

Wir unter­stützen Sie bei Ihren Projekten der Program­mie­rung für speicher­pro­gram­mier­bare Steue­rungen (SPS). Dabei bringen wir unsere jahrzehn­te­lange Erfah­rung aus der Software­ent­wick­lung im Hochspra­chen­be­reich mit dem objekt­ori­en­tierten Ansatz (OOP) ein. Wir können profes­sio­nelle Frame­works entwi­ckeln und warten sowie anspruchs­volle Appli­ka­tionen nach IEC 61131–3 programmieren.

Wir bieten Ihnen Know-how und Erfah­rungen aus unter­schied­lichsten Projekten und Branchen. Dadurch profi­tieren Sie auch im Bereich von SPS-Anwen­dungen von den Quali­täts­kri­te­rien Wartbar­keit, Erwei­ter­bar­keit und Wieder­ver­wend­bar­keit. So sind Sie mit profes­sio­nellen Lösungen optimal für die Heraus­for­de­rungen durch Indus­trie 4.0 aufge­stellt und können indivi­duell, flexibel und agil auf neue Entwick­lungen und Trends reagieren.