14. Engineering Funktionalitäten
14.1. Scriptsprache
Das System verfügt über eine integrierte Script-Sprache zur Realisierung von komplexen Bedienfolgen, Dialogen, Datenmanipulation etc. Die Sprache steht sowohl im Bereich der Benutzeroberfläche als auch als eigenständige, autonome Ablaufeinheit zur Verfügung.
Die Scriptsprache entspricht weitestgehend der Syntax von ANSI-C besitzt jedoch eine sehr große Anzahl an fertigen Funktionen für leittechnische Aufgaben.
Die Scriptsprache unterstützt Multi-Threading (quasi-parallele Ausführung von Code-Abschnitten auf gemeinsamen Daten und Objekten in nur einem Programm). Darüber hinaus werden angepasste Datentypen zur Manipulation von Prozess-Datenpunkten angeboten. Durch die Ausführung als schneller Interpreter entfällt die Notwendigkeit von Übersetzungsläufen (Kompilation), was die meisten Änderungen im laufenden Betrieb erlaubt. Kompilieren ist nur in wenigen Szenarios weiterhin notwendig.
Die Scriptsprache sollte leicht zu bedienen sein und dabei auch Funktionalitäten wie Autovervollständigen für bekannte und definierte Befehle unterstützen. Darüber hinaus soll ein Debugger zur Verfügung stehen, um Schritt für Schritt die Entwicklung aufzubauen und um Ausstiegspunkte für Scripte für Stopps zu definieren. Dieses Debugger Tool soll bei der Suche nach Fehlern in der Kommunikation zwischen den Einheiten als auch in bestehenden Scripts helfen.
14.2. Multi Engineering mit integrierter Versionskontrolle
Ein Versionsverwaltungssystem wird zum Verwalten von verschiedenen Dateien verwendet. Die Dateien werden in einem Repository abgelegt, deren Änderungen werden vom Verwaltungssystem erfasst und als neue Version gespeichert. Die Versionen werden mit einem Zeitstempel versehen und können jederzeit wiederhergestellt werden.
Es soll möglich sein, Projekte mit verschiedenen Versionsverwaltungssystemen zu verwalten sowie deren Funktionalität auch in einem Graphikprogramm anzuwenden. Dadurch können Projektdateien schnell und einfach dem Repository hinzugefügt oder dort aktualisiert werden, ohne das Projekt beenden zu müssen. Im Lieferumfang sind die Skripte für CVS und SVN enthalten.
14.3. Grafische Editier-Oberfläche für die Entwicklung von Panel Files
Die gewählte Software muss über eine graphische Oberfläche verfügen (GUI - graphical user interface), die eine Bearbeitung auf verschiedenen Ebenen bzw. Layern ermöglicht und darüber hinaus Drag&Drop unterstützt, um neue Objekte zu platzieren oder Aktivitäten auf bestehende Projekte zu verteilen. Innerhalb der GUI soll es eine Möglichkeit geben, erstellte Buttons und Objekte mit bestehenden oder neu zu definierenden Datenpunkten zu verbinden.
Darüber hinaus soll es möglich sein, verschiedene Ansichtsvarianten eines Projekts zu erstellen und diesen sowohl Arbeitsplätze als auch Benutzer zuzuweisen. Das soll während der Laufzeit möglich sein, sobald der jeweilige Benutzer die entsprechenden Rechte besitzt, diesen Wechsel durchzuführen.
Innerhalb der graphischen Oberfläche soll es eine Möglichkeit geben, neu erstellte Templates, Objekte oder Panel Files gleich zu testen. Die GUI soll zudem schnell verfügbare System-Menüs und weitere nützliche Tools integriert haben, um z.B. für System-Management, Treiber-Konfiguration oder Content Management einfache Änderungen vorzunehmen.
Die graphische Editier-Oberfläche sollte auf den vom System selbst gegebenen Funktionalitäten aufbauen und sowohl die Neugestaltung als auch die Anpassung des Layouts und der gegebenen Möglichkeiten zum Editieren und Hinzufügen von Funktionalitäten innerhalb der Paneldateien ermöglichen.
Es muss sowohl möglich sein, existierende Icons oder Widgets wiederzuverwenden als auch neue zu erstellen. Die Programme sollen das Erstellen von hierarchischen Strukturen mit über- und untergeordneten Panels unterstützen. Darüber hinaus soll es möglich sein, Referenzobjekte zu definieren - also alle Parameter und Attribute, aus denen das Objekt besteht, zu setzen und all diese Einstellungen mit einem Klick zu kopieren und einzufügen. Auch nach dem Kopieren und Einfügen eines Referenzobjekts muss es möglich sein, definierte Attribute über die Konfiguration zu ändern. Darüber hinaus soll es möglich sein, zu entscheiden, ob dies nur für die Kopie oder für alle ähnlichen Objekte gilt.
Bei der Arbeit an Paneldateien und dem Hinzufügen von Objekten sollte es möglich sein, Verbindungen zwischen mehreren Objekten auszurichten. Dies geschieht über Konnektoren und erfüllt allgemein bekannte Funktionen, die auch in anderen Anwendungen verwendet werden, wie z.B. das Anpassen der Verbindungswege, wenn eines der Objekte verschoben wird, oder das Definieren von individuell gesetzten Konnektoren an Objekten auf der Grundlage bestimmter Anforderungen.
Es soll möglich sein, Konnektoren zwischen zwei Referenzobjekt-Typen zu setzen und nicht nur innerhalb des selben Typs.
Interaktionen zwischen dem Konfigurationstool der Datenpunkte und der Objekt-Funktionalitäten ist Grundvoraussetzung für die Auswahl als Basis für die gesuchte Lösung.
Anstelle eines graphischen Editor-Tools soll es möglich sein, alle Parameter, Konfigurationen und alles, was zur Gestaltung von Paneldateien benötigt wird, einschließlich Funktionalitäten und Objekten, per Coding zu erstellen. Beide Wege sollen gleichzeitig anwendbar sein und Massenkonfiguration soll unterstützt werden, um Elemente der Benutzeroberfläche zu erstellen.
14.4. Engineering Tools und Online-Änderungen
Für die Erstellung von Prozessbildern und für die Veränderung von Parametern sollen einfache Tools zur Verfügung gestellt werden. Diese werden um Möglichkeiten von Web Engineering und durch Upload von aktualisierten Dateien ergänzt.
Es soll neben den Benutzeroberflächen zum Zeichnen von Objekten und der Möglichkeit, mittels einfachem Tool Einstellungen zu verändern, auch möglich sein, mittels eigenem Engineering Änderungen am System durchzuführen. Dazu zählen auch Möglichkeiten, mittels Scripts und Masseneinspielungen Aktualisierungen durchzuführen.
Zudem soll eine Online-Änderung ermöglicht werden, ohne die Server neu starten oder kompilieren zu müssen.
Egal, über welche Oberfläche und welches Zielmedium (vollständiges UI, mobiles UI oder Web UI) muss nur einmal Engineering-Arbeit erfolgen. Es soll nicht für jede Runtime einer eigenen Entwicklung bedürfen.
14.5. Erweiterung für Bibliotheken und Programmiersprachen
Das System soll die Einbindung vorhandener Objektbibliotheken unterstützen und bereits eine Basisbibliothek zur Verfügung stellen. Diese Bibliotheken sollen erweiterbar sein und zur Weiterverwendung zur Verfügung stehen. Anhand dieser neuen Bibliotheken sollen neue Anlagen einfacher umgesetzt werden können und gegebenenfalls soll es einfach möglich sein, die Inhalte und bestehenden Objekte zu adaptieren – sei es für Designänderungen oder Ergänzungen.
Das System soll im UI den Einsatz von JavaScript Bibliotheken und JavaScript Graphikobjekten erlauben und im Bereich der API-Schnittstelle die Programmiersprachen C++ und C# (C Sharp) inklusive TPL (Task Parallel Library) unterstützen.
14.6. Wiederverwenden von Objekt-Bibliotheken, Branding Packages und Subprojekten
Die Software soll Branding und White-Labeling unterstützen, um kundenangepasste Corporate Identity Vorgaben zu erfüllen und darüber hinaus auch ganzheitliche Lösungen anzubieten, ohne die zugrunde liegende Software zu erkennen (z.B. als OEM Lösung). Um eine entsprechende Version vorbereiten zu können, soll eine entsprechende Branding Version vom Software Anbieter zur Verfügung gestellt werden.
Um mit kundenspezifischen und Sektor-angepassten Lösungen erfolgreich arbeiten zu können, ist es notwendig, erstellte Objekt-Bibliotheken in anderen Projekten wieder zu verwenden. Das bedeutet einfache Integration und Adaption von bestehenden Bibliotheken auf der einen Seite, auf der anderen Seite müssen die Bibliotheken einfach bearbeitbar sein, um auf neue Kundenanforderungen allgemein oder spezielle Anforderungen eines Kunden reagieren zu können. Hier muss es auch möglich sein, zu entscheiden, ob eine Änderung nur einmalig für einen Kunden passiert oder die gesamte Bibliothek für künftige Integrationen angepasst werden soll.
Ein leichter Weg, um Bibliotheken oder andere Funktionalitäten zu integrieren, ist die Erstellung von Subprojekten. Hilfreiche Tools und Objekte können so einfach zu neuen Projekten hinzugefügt werden. Wenn die Funktionalität einmal in einem Subprojekt zum Laufen gebracht wurde, kann dieses kopiert werden und wird in einem neuen Projekt diese Routinen und Mechanismen ebenfalls aktivieren.
14.7. Unterstützung der Entwicklung durch Wizards und Frameworks
Um die Entwicklungszeit zu minimieren, soll das System mittels Wizards, welche bei der Konfiguration von Einstellungen unterstützen, bedienbar sein. Bestimmte Funktionalitäten müssen so nicht neu entwickelt werden, sondern können auf bestehenden Prozessen aufbauen. Damit kann wertvolle Zeit für die Entwicklung gespart und gängigen Standards Folge geleistet werden.
Eine derartige Unterstützung soll auch für definierte Treibertypen zur Verfügung stehen. So muss nicht jede Steuerung manuell implementiert werden, sondern diese soll durch Eingabe definierter Werte einfach konfigurierbar sein. Durch Nutzung des spezifischen Treibers soll ohne Mehraufwand und Kosten auch der entsprechende Client für die einfache Integration zur Verfügung stehen.
Für bestimmte Programminhalte soll eine erweitere Oberfläche zur Bearbeitung zur Verfügung stehen. Diese führt durch den Entwicklungsprozess und bietet gängige Möglichkeiten zur Integration. Für abweichende Einstellungen soll es dennoch möglich sein, per Scripting Ergänzungen oder Änderungen in die Lösung hinzuzufügen.
14.8. Node-RED Support für einfache Prozess-Ablauf-Erstellung
Die Lösung soll eine Umgebung beinhalten, in der es basierend auf Node-RED möglich ist, einfache Prozess-Entwicklung zu integrieren. Node-RED basiert auf der Workflow-Engine Node.js und ermöglicht mittels graphischer Oberfläche das Erstellen von Workflows. Es bietet viele nützliche, vorkonfigurierte Prozessbilder, z.B. für Datenaustausch. Die visuelle, Web-basierende Oberfläche ermöglicht das Erstellen mittels Drag&Drop, zusätzlich werden zahlreiche vordefinierte Funktionen zur Verfügung gestellt. Zusätzliche Funktionalitäten können mittels JavaScript hinzugefügt werden.
Für Projekte im Sicherheitsbereich soll die gewählte Lösung Node-Red 1.0 unterstützen und Möglichkeiten zum Einbau von Redundanz bieten.