Automatisierungsoftware

Günter Herkommer,

Die Trends beim Versionsmanagement

In der Hochsprachenentwicklung ist Software-Versionsmanagement nicht mehr wegzudenken. Wieso gestaltet sich die Einführung in der Automatisierungstechnik so schwierig? Welche Lösungsansätze gibt es?

© ITQ

Die Tage, in denen ein Anlagen- oder Maschinenprogrammierer ein bisschen Code in ein paar Tagen geschrieben hat und für sich alleine verwalten musste, sind gezählt. Heute ist meist eine größere Anzahl von Entwicklern an einem SPS-Programm beteiligt. Zudem nimmt die Zahl der Projekte und der Versionen sowie der Umfang der Projekte ständig zu. Nicht zuletzt kann es sich keine Firma mehr leisten, aufgrund von Fehlzeiten seiner Entwickler mit einer Fehlerbehebung oder einem Umbau zu warten. Stattdessen müssen die Programme von mehreren Entwicklern und Inbetriebnehmern verstanden werden und auf dem Server zu finden sein. Soweit die Theorie – die betriebliche Praxis sieht heute jedoch vielfach noch anders aus!

Dadurch, dass in der Automatisierungstechnik selten mit rein textuellen Sprachen programmiert wird, ist die Darstellung eines Vergleichs verschiedener Versionen und das Mergen – also das Zusammenführen von Zweigen – nicht immer trivial. Ein Programmierer, der aus der Elektrotechnik kommt und es seit vielen Jahren gewohnt ist, in KOP, AS und FUP zu programmieren, greift selten auf strukturierten Text zurück und will seinen Code beim Projektvergleich auch nicht in irgendwelchen meist kryptischen Textzeilen entziffern müssen. Auch XML-Formate, die hierfür teilweise als Lösung angeboten werden, lesen viele Programmierer nicht gerne.

Ein weiteres Problem der Automatisierungstechnik sind die Baustellen-Aufenthalte. Ein Entwickler, der sich monatelang weit weg vom zentralen Server aufhält, überlegt sich üblicherweise seine eigene Methode der Sicherung. Sobald er wieder in der Firma ist, erwarten ihn dann vermutlich viele Konflikte beim Zurückladen des Projektes auf den Server. Wäre da noch die „menschliche Komponente“, die nicht außer Acht zu lassen ist: Die meisten Maschinenprogrammierer sind – bedingt durch die Historie dieses Berufs – „Einzelkämpfer“. Sie sind es noch nicht gewohnt, teamorientiert zu entwerfen und zu entwickeln und haben sich fast immer bereits einen für sie praktikablen Workflow der Versionierung erarbeitet.

Anzeige

Das Prinzip der Versionsverwaltung

Das Grundprinzip der Software-Versionierung: Das Ablegen verschiedener Versionen von Dateien auf einem zentralen Archiv wird Tool- unterstützt koordiniert.

© ITQ

Ungeachtet dieser „Hemmschuhe“ nimmt die Notwendigkeit eines Konfigurationsmanagements beziehungsweise einer Versionsverwaltung in der Automatisier­ungstechnik immer mehr zu. Die Versionsverwaltung zählt zu den essenziellen Werkzeugen der agilen Programmierung. Die Protokollierung des entsprechenden Entwicklers und des Datums der Änderung erfolgt hierbei meist automatisch. Zusätzlich hat der Benutzer die Möglichkeit, den Änderungsgrund anzugeben. Für die Qualitätssicherung im Bereich der Lebensmittel- und Medizinbranchen sind solche Nachweise in vielen Fällen schon Pflicht. Die grundsätzliche Funktionsweise eines Software-Versionsverwaltungssystems stellt sich aus Sicht des Benutzers so dar, dass er die Source- und Dokumentationsdateien in ein übergeordnetes Archiv, oft „Repository“ genannt, ablegt. Von dort werden die Dateien dann geladen („ausgecheckt“), lokal verändert und nach Veränderung wieder in das Archiv zurück geladen („eingecheckt“), wobei hier eine treffende Beschreibung der Veränderung anzugeben ist. Im einfachen Fall checkt sich ein Kollege die bereits geänderten Dateien aus, verändert diese und checkt sie wieder auf dem Server ein, so dass es keinerlei Konflikt geben kann.

Problematischer wird es, wenn zwei Kol­legen parallel an derselben Datei ar­beiten und im Anschluss daran einchecken wollen. Aber auch hier hilft das System in der Regel, indem es die Versionen entweder automatisch zusammenführt oder bei komplizierteren Änderungen auf einen Konflikt hinweist und das Auflösen halbautomatisch unterstützt. Die meisten Versionsverwaltungstools bieten auch den Lock-Mechanismus als einstellbare Option für bestimmte Dateien oder Dateitypen an. Das heißt: Einzelne Dateien werden vor einer Änderung durch den Benutzer gesperrt und nach Abschluss der Änderung wieder freigegeben. Während sie gesperrt sind, können andere Benutzer diese Dateien nicht ändern.

Grundsätzlich lässt sich zwischen drei Arten der Versionsverwaltung unterscheiden: lokal, zentral und verteilt. Bei der lokalen Versionsverwaltung wird die Historie einfach lokal auf dem Entwicklungsrechner gespeichert. Beim zentralen Ansatz ist lokal auf dem Rechner ein Client installiert, der dann zum Ein- und Aus-Checken auf einen zentralen Server zugreift. Mit verteilten Versionsmanagementsystemen können Projekte lokal auf dem eigenen Rechner versioniert und – sobald sich die Gelegenheit dazu ergibt – wieder in das zentrale System eingefügt werden. Gerade letztere Variante ist in der Automatisierungstechnik immer öfter gefragt, da hier die Programme nicht selten auf der Baustelle, sprich nicht immer mit direktem Zugriff auf den Firmenserver fertiggestellt beziehungsweise erweitert werden.

In den einzelnen Repositories hat es sich bewährt, die Unterverzeichnisse „Trunk“, „Tags“ und „Branches“ anzulegen. Der Trunk (Stamm) beinhaltet das aktuelle Arbeitsverzeichnis. Dort werden die täglichen Entwicklungs­arbeiten getätigt. Ein Gesetz, an das sich die Entwickler zu halten haben, ist dabei, dass Änderungen, die in den Trunk eingecheckt werden, immer compilierbar sind. In Tags (Markierungen) werden spezielle Markierungen während des Projektfortschritts erzeugt. Eine solche Markierung ist beispielsweise eine neue auslieferbare Version der Anwendung. Branches (Verzweigungen) stellen schließlich parallele Entwicklungsstränge dar. Dies ist zum Beispiel der Fall, wenn eine Version abgeschlossen ist und nach einer Auslieferung weitergepflegt wird. Eine Weiterentwicklung von abgeschlossenen Versionen ist in der Regel dann notwendig, wenn nachträglich Fehler bekannt werden, die direkt zu beheben sind, noch bevor eine neue Version zur Auslieferung kommen kann. Branches sollten auch dann anlegt werden, wenn eine Weiterentwicklung oder Optimierung am Trunk zu tätigen ist, die den Trunk für längere Zeit nicht übersetzbar machen würde. Um die Änderungen auch in die neue Version einzupflegen, lassen sich verschiedene Zweige mit einem „Merge“ zusammenführen.

Die Vor- und Nachteile der gängigen Tools

Beispielhafte Historie einer Software-Entwicklung: Verwaltung von Releases und Parallel-Entwicklungen in Branches beziehungsweise Tags und anschließendes Zurückführen in die Hauptentwicklung.

© ITQ

Das derzeit wohl bekannteste freie Versionsverwaltungstool ist Subversion, kurz SVN. Bei diesem Freeware-Tool handelt es sich zunächst um eine reine Kommandozeilen-Applikation. Im Internet findet sich jedoch eine breite Palette an grafischen Frontends. Meist werden die Programme TortoiseSVN (Open Source) oder SmartSVN von der Firma Syntevo verwendet, wobei SmartSVN vor allem in der Professional-Version mehr Features bietet,  jedoch weniger performant ist.

Subversion ist eine zentrale Versions­verwaltung. Die Verwaltung der Daten geschieht also auf einem einzigen Server in einem Archiv (Repository). Für jedes Projekt wird üblicherweise ein eigenes Repository verwendet. Es ist aber auch möglich, mehrere Projekte in einem gemeinsamen Verzeichnis abzulegen. Das Mergen von Branch oder Tag mit dem Trunk kann Subversion automatisiert durchführen – jedoch nur solange die Änderungen klar erkennbar sind. Bei parallelen Änderungen an beiden Zweigen gilt meist, bestimmte Konflikte noch per Hand zu lösen. Was Subversion unter anderem auszeichnet, ist die effiziente Art, wie Verzweigungen und Markierungen gespeichert werden. Das Tool erzeugt dafür keine physische Kopie, sondern nutzt Verlinkungen zum Haupt-Entwicklungsstrang. Grundsätzlich handelt es sich bei Subversion um ein sehr leistungsfähiges Werkzeug, das aber für die Hochsprachenprogrammierung entwickelt wurde. Dementsprechend erfüllt es nicht alle Anforderungen der Automatisierungstechnik zum Beispiel in puncto grafischem Vergleich oder dezentraler Verwaltung.

Um Änderungen an einzelnen Datenbausteinen feststellen zu können, sind Steuerungsprogramme, deren gesamter Code in einer einzigen Projektdatei verwaltet wird, zuerst zu modularisieren. Dies ist zum Beispiel bei Codesys-basierten Systemen sowie bei Systemen von Rockwell oder Siemens der Fall. Um den Ein-Check-Vorgang auto­matisiert durchführen zu können, gibt es die Möglichkeit, Tools für die Durchführung der Modularisierung zu schreiben. Das bedeutet speziell für Siemens, die Quellen zu exportieren, bei Rockwell l5k-Dateien zu erstellen und auch bei Codesys die einzelnen Module zu exportieren. Ein ähnliches Prozedere hat nach dem Aus-Check-Vorgang zu erfolgen: Die vom Kollegen geänderten Dateien müssen wieder ins Projekt eingefügt werden. Dieser Import und Export kann durchaus einige Minuten in Anspruch nehmen.

SVN-Schnittstelle als Standard oder gegen Aufpreis

Das Standard-Kontextmenü von Tort­oise­SVN im Windows Explorer: Hiermit sind schon etwas mehr als die alltäglichen Anwendungsfälle bei der Verwendung eines Versions­verwaltungstools abgedeckt.

© ITQ

Projekte basierend auf Steuerungssoftware des Anbieters B&R haben in dieser Beziehung eine kleine Sonderstellung: Dadurch, dass hier die Module schon im File-System in einzelne Dateien abgelegt werden, ist ein Im- und Export nicht nötig. B&R liefert mit der Entwicklungsumgebung auch eine Schnittstelle zu SVN mit, jedoch mit weniger Funktio­nalität als es TortoiseSVN bietet. Außerdem legt der österreichische Steuerungshersteller die grafischen Programmiersprachen und tabellarischen Variablen-Deklarationen im XML-Format ab, so dass ein Text-Vergleich immer möglich ist. Allerdings ist das Vergleichen von XML-Dateien mühsamer und bedarf etwas Einarbeitungszeit.

Andere Freeware-Tools wie GIT, Mercurial und Bazaar, die hinsichtlich der Funktionsweise Subversion sehr ähneln, bieten die Möglichkeit, ohne direkte Serververbindung zu arbeiten. Es handelt sich hierbei um verteilte Versionsverwaltungssysteme, bei denen jeder Benutzer eine lokale Kopie des gesamten Repositories inklusive der Versionsgeschichte besitzt. Im direkten Vergleich ist GIT am weitesten entwickelt und bietet die meiste Funktionalität sowie ausgereifte Explorerfunktionen.

Bei der Verwendung von Codesys V3 hat der Anwender ab etwa Mitte des Jahres die Möglichkeit, eine SVN-Integration gegen Aufpreis zu bestellen. Diese wird eine ähnliche Funktion in die Datenbank integrieren können, wie den Projektvergleich, der bereits seit längerem für die Version 2 verfügbar ist. Somit werden auch Programmiersprachen wie KOP und FUP direkt vergleichbar sein. Anders als bei dem für Version 2 bestellbaren ENI-Server handelt es sich bei Codesys V3 jedoch um eine direkte Integration, deren Konfiguration einfacher werden soll. Anbieter von Codesys-V3-basierten Entwicklungsumgebungen, wie sie zum Beispiel für die Programmierung von Steuerungen der Hersteller Schneider Electric, Beckhoff oder Bosch zur Anwendung kommen, können diese Integration ab Sommer ebenso hinzubestellen.

Bildhafter Vergleich von Kontaktplan mit Versiondog am Beispiel von Siemens: Der Programmierer muss sich nicht durch kryptische Textvergleiche quälen.

© ITQ

Direkt auf die Versionsverwaltung für die Automatisierungstechnik spezialisiert sind die Produkte VersionWorks (Rockwell Automation Solutions) und Versiondog (Auvesy). Das Tool Version­Works bietet neben der Versionierung und dem bildhaften Vergleich von Rockwell-Programmen auch Schnittstellen zur Siemens- und Codesys-Welt an, wird in seiner jetzigen Form jedoch nicht mehr weiterentwickelt. Die Firma Rockwell hat vielmehr entschieden, diese Funktionalitäten mit in die Software „FactoryTalk AssetCentre“ zur Verwaltung der Anlagengüte (Asset Management) aufzunehmen.

Seit 2007 widmet sich auch die Firma Auvesy der Versionsverwaltung und automatischen Sicherung in der Automatisierungstechnik und bietet das verteilte Versionsverwaltungssystem Versiondog an. Dieses Tool empfiehlt sich als herstellerübergreifende Lösung vor allem für Maschinen- und Anlagenbauer, aber auch für produzierende Endkunden, welche unterschiedliche Steuerungsprogramme versionieren wollen. Die Firma kooperiert diesbezüglich mit bekannten Anbietern wie ABB, Siemens, Schneider Electric, 3S oder Phoenix Contact. Wie von anderen Systemen gewohnt, bietet Versiondog auch den Vergleich von Office-Dokumenten und sogar von pdf-Dateien an. Der Preis des Systems ist gestaffelt. Abhängig von der Anzahl der Projekte, der Vergleichertypen und der Option des automatischen Backups werden unterschiedliche Editionen oder frei skalierbare Einzel-Lizenzen angeboten.  Vor allem für Siemens-Programme ist dieses System zu empfehlen, da es CFC- oder SFC-Pläne grafisch vergleichen kann und ohne den zeitraubenden Im- und Export der Quellen auskommt. Aktuelle Systemerweiterungen wie die S7-Standard-Bausteinverwaltung oder das Verzweigen (Branching) sollen im Laufe des Jahres integriert werden.

Steuerungshersteller erkennen Notwendigkeit

Projekt-Vergleich in Codesys 2.0: Ähnlich soll der Vergleich mit der bald erhältlichen SVN-Integration aussehen:

© ITQ

Die aufgeführten Beispiele zeigen, dass die Notwendigkeit einer Versionsverwaltung auch im Automatisierungsbereich von den Steuerungsherstellern und IDE-Anbietern durchaus erkannt wurde. Dem Problem der längeren Abwesenheit vom zentralen Archiv lässt sich mit der Verwendung einer dezentralen Versionierung begegnen.

Da viele Inbetriebnehmer und Entwickler inzwischen mit UMTS-Sticks ausgestattet sind, liegt es zudem nahe, dass es dieses Problem in naher Zukunft nicht mehr geben wird. Allerdings ist der schon erwähnte menschliche Aspekt und der damit verbundene Aufwand für die Ein­führung und den Erhalt der Akzeptanz bei allen Entwicklern nicht zu unterschätzen: Bis ein Software-Versionsmanagementsystem in einem Unternehmen, das bisher ohne solche Hilfsmittel gearbeitet hat, vollkommen akzeptiert ist und mit allen Finessen zur Anwendung kommt, können zwischen einem halben und zwei Jahren vergehen.

Nach der Einarbeitungszeit beträgt der tägliche Mehraufwand dann aber nicht mehr als zehn Minuten. Im Gegensatz dazu steht stundenlange Arbeit, die notwendig werden kann, um nach der „wahrscheinlich damals eingespielten Version“ zu suchen oder Änderungen ohne Historie nachzuvollziehen.

Autor: Inge Anthuber ist Consultant bei ITQ, München.

Die Hauptaufgaben des Versionsmanagements

■ Protokollierung: Es muss jederzeit nachvollziehbar sein, wer wann was geändert hat.

■ Archivierung und Wiederherstellung: Die einzelnen Stände eines Projektes werden nachvollziehbar abgespeichert; dadurch ist es jederzeit möglich, auf alle Versionen zurückzugreifen und eventuell Änderungen rückgängig zu machen.

■ Koordinierung und Rechtevergabe: Bei der Implementierung durch mehrere Programmierer ist es hilfreich, den Zugriff dieser Entwickler auf den Source-Code koordinieren zu können, um beispielsweise externen Entwicklern nicht den vollen Zugriff auf manche Dateien zu erlauben.

■ Verzweigung: Gleichzeitiges Entwickeln an verschiedenen Entwicklungszweigen, die nach Fertigstellung meist automatisiert zusammengeführt werden können.

  • Xing Icon
  • LinkedIn Icon
Anzeige
Anzeige

Das könnte Sie auch interessieren

Anzeige

Grossenbacher Systeme

Embedded KI als Servicetechniker

Teure Ausfallzeiten und Servicetickets gehören zu den zentralen Herausforderungen eines effizienten Fertigungsbetriebs. Embedded KI kann dazu beitragen, Kosten zu senken und die "Overall Operating Effectiveness (OEE)" zu verbessern, indem sie im...

mehr...
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Jetzt Newsletter abonnieren