Benutzung der Web-Technologie zur Entwicklung eines internet-basierten Prozessleitsystems Anwendungsbeispiele, Softwarestruktur, Programmiertechniken Fachbereichskolloquium der Fachhochschule Lippe und Höxter 03.12.2007 1
Inhalt Zur Person Watt is ne Regelung? Aufbau eines Automatisierungssystems Aufgaben der Teilkomponenten Web-basiertes Leitsystem Motivation Aufbau eines web-basierten Leitsystems Anforderungen an die Software Implementierung Beispiele für einige Teilaufgaben Begleitend: Implementierungsbeispiele 2
Zur Person Über 20 Jahre Tätigkeit bei Schoppe & Faeser, Hartmann & Braun, Elsag Bailey und ABB im Bereich der Prozessleittechnik Entwicklung von Sonderlösungen Wichtiges Projekt: ein Emulator für das Prozessleitsystem Melody der Firma ABB Automation 2006 Gründung der Firma secolon Tätigkeitsfelder: hochwertige Software für technische Anwendungen 3
Watt is ne Regelung? Temperatursollwert + - Regler Relais T ist Steckdose Prozess (Topf mit Wasser) Messglied (hier: für Temperatur) Regler (hier: Ein-/Ausschalter) Stellglied (hier: über Relais geschaltetertauchsieder) 4
Aufbau eines Automatisierungssystems Konfiguration Bedienen und Beobachten Eingangskarten Regelung Steuerung Ausgangskarten P, T, L Prozess 5
Aufgaben der Teilkomponenten (1) Messwertaufbereitung Konvertierung der elektrischen in digitale Überwachung der elektrischen Signale auf z.b. Kabelbruch Interner Speicher für die aktuellen Messwerte (Anlagenabbild, Schnappschuss) Stellgrößenverarbeitung Konvertierung der digitalen in elektrische Signale Überwachung der Funktion des angeschlossenen Stellgliedes (Endlagen, Kabelbruch usw.) Interner Speicher für die aktuellen Werte (Anlagenabbild, Schnappschuss) 6
Aufgaben der Teilkomponenten (2) Regelung / Steuerung (aktives System) Beinhaltet Automatisierungslogik Entgegennehmen von Stellbefehlen Ventil auf/zu Sollwert größer/kleiner Sollwert auf Wert x Regelung von Prozessgrößen auf vorgewählte Sollwerte durch geeignete Verstellung von Eingangsgrößen der Prozesses (der Regelstrecke) Interner Speicher für die aktuellen Werte (Anlagenabbild, Schnappschuss) Ggf. Vergangenheitswerte bei bestimmten Bausteinen (Integratoren, Totzeitgliedern, Filter) 7
Aufgaben der Teilkomponenten (3) Bedienen und Beobachten Darstellen von Messwerten Aktuelle Werte Vergangenheitswerte (Kurvenverläufe) Darstellung und Bearbeitung von Meldungen Führen einer Alarmliste Quittieren von Alarmen Protokollierung der Aktionen Eingabe von Bedienbefehlen Gedächtnis notwendig Einsatz einer Datenbank 8
Web-basiertes Automatisierungssystem - Motivation Gesamtprozess besteht aus räumlich weit verteilten Teilprozessen Datentransfer aus teilweise unerschlossenem Gebiet oder sogar von beweglichen Komponenten (Tanklastern ) dennoch zentrale Datenhaltung Bedienen und Beobachten von verteilten Bedienplätzen Arbeitsplatz Heimarbeitsplatz (z.b. in der Bereitschaftszeit) Von Unterwegs wo immer ein Internetzugang verfügbar ist 9
Aufbau eines web-basiertes Automatisierungssystems Bedienplatz 1 Bedienplatz 2 Bedienplatz m Datenserver Regelung Steuerung Regelung Steuerung Regelung Steuerung Teilprozess 1 Teilprozess 2 Teilprozess n 10
Grundkonzept der Implementierung Regelung/Steuerung vor Ort: z.b. durch Systeme von WAGO, Phoenix oder ähnlichen Anbietern (Zuverlässigkeit/Verfügbarkeit) Stromversorgung ggf. durch Solar-Energie Datentransfer durch GSM-Netz mit HTTP-Protokoll Verbindung nur zur Datenübertragung Stehende Verbindung mit proprietärem Protokoll Datenserver als Web-Server mit Datenbank Individuelle Konfiguration des Servers Nutzung gehosteter Systeme, um auch Klein-Usern einen kostengünstigen Einstieg zu ermöglichen Entwicklung der Software auf der Basis des kleinsten gemeinsamen Nenners 11
Problematik von Web-Applikationen Verteilte Programmierung (Server/Client; verschiedene Seiten) Verschiedene Programmiersprachen Kein Gedächtnis der Web-Seiten Kein kontinuierlich im Hintergrund laufender Prozess, sondern Aktion nur auf Anfrage 12
Das Handwerkszeug Serverseitig Clientseitig PHP (D)HTML PEAR DOM SQL XML CSS Javascript AJAX Datenhaltung / Versionierung / Back-up Subversion Tortoise SVN 13
Anforderungen an die Software Keine Installation auf den Client-Rechnern Nutzung von allen hauptsächlich im Internet vertretenen Browsern muss möglich sein Nutzung der auf verschiedenen Betriebssystem-Plattformen vorhandenen Werkzeuge Weitestgehender Aufbau der Web-Seiten auf dem Server Minimale Nutzung sicherheitskritischer Komponenten (ActiveX ) 14
Implementierung des Datenservers: Basispaket Datenserver als Web-Server mit Datenbank, z.b. XAMPP: Windows/Linux Apache MySQL PHP+PEAR Perl Komplettes Basis-Paket mit allen notwendigen Bausteinen, das auf fast allen gehosteten Systemen vorhanden ist (Strato, KIS-Europe, 1&1, ) Software-Entwicklung erfolgt auf einer möglichst weit verbreiteten Basis, um möglichst vielen Kundenanforderungen gerecht werden zu können. 15
Implementierung der Software auf dem Daten-Server (1) Programmierung in PHP Datenhaltung in der Datenbank MySQL Bereitstellen einer Programmierer-Schnittstelle (API) als Include-Datei Attribute der DFÜ-Komponente Attribute der Messstellen Wert/Uhrzeit der Messwerte Generische Programmierung der Standardseiten Parameterübergabe über hidden input Variablen Zugriffsverwaltung über Sessions 16
Implementierung der Software auf dem Daten-Server (2) Teilaufgabe Daten einsammeln Übertragung durch die DFÜ-Komponente als HTTP-Request (Post) http://server/pfad/savedata.php?id=hier&wert=1.2345& Zeit=2007-11-27%2011:32:33 Parsen und abspeichern Als Rohwert Als physikalischer Wert Ggf. Ermitteln von Alarmsituationen und Eintragen von Alarmen in die Alarmtabelle Erfolg zurückmelden ( Values Stored;2007-12-03 16:05:31 ) 17
Implementierung der Clientanwendung Teilaufgaben Darstellen und Aktualisieren von Messwerten Als Zahl (Beispiel Wasserversorgung) Als Balken (Beispiel Abwasserbetrieb) Als Alarmstatus Frei positionierbar auf Prozessbildern mit CSS Darstellen von Kurvenverläufen Darstellen von Alarmliste und Alarmstatus Quittieren von Alarmen Benutzerverwaltung (Demo) 18
Rahmen Code für eine Web-Seite mit CSS <HTML> <HEAD> <STYLE type="text/css">.einst { position:absolute; left:7px; top:2px; z-index:2; font-size:11px; font-weight:bold;}.zweist { position:absolute; left:3px; top:3px; z-index:2; font-size:11px; font-weight:bold;} </STYLE> </HEAD> <BODY> <TABLE> <?PHP for ($j=1;10;$j++) { echo <TR><TD class=zweist>spalte 1</TD><TD>Spalte2</TD></TR> ; }?> </TABLE> </BODY> </HTML> 19
Stellbefehle Nur Stellbefehle Ein/Aus Erfolgen über SMS-Dienst per HTTP-Request an Provider SMS-Provider HTTP-Request Datenserver HTTP-Request Bedienplatz SMS Regelung Steuerung 20 Teilprozess n
Aktualisieren von Messwerten Kompletter Neuaufbau der Seite Nutzung von AJAX (asynchronuous Javascript and XML) Spezielle Programmierung für verschiedene Browser notwendig, aber dann sehr flexibel Nutzung von HTML-Bordmitteln (Frames, Javascript OHNE httprequest) ebenfalls möglich Seite als Frameset Ein Frame der Größe 0,0 aktualisiert sich über META-Command refresh und fragt aktuelle Daten vom Server ab Javascript auf dieser Seite liest bei Event onload diese Daten aus und ändert Elemente der Darstellungsseite (DHTML, DOM) 21
Navigation HTML-Seiten (und der Web-Server haben normalerweise keine Gedächtnis Rückwärts und Vorwärts -Buttons der Browser nicht immer ausreichend -> andere Lösung Relevante Daten können über SESSION-Variablen gespeichert werden und bleiben dann für die Dauer der Session verfügbar. Ist aber nur ratsam für global interessierende Daten Nutzung von INPUT vom Typ hidden für die Speicherung und Weitergabe temporärer Daten 22
Danke Nur Schlaglichter auf die Möglichkeiten Kein Anspruch auf Vollständigkeit Fragen und Anmerkungen sind willkommen 23