Home

Fernwartungstool für Feldgeräte

image

Contents

1. field2 field2 field2 has Tamparan B Abbildung 31 ERD Datenbank ys_hei01_Temperatur_7 Temperatur_8 ys_hei01_Temperatur_9 hys_hei01_Temperatur_10 E hys_hei01_Temperatur_11 E hys_me01_Istwert_0 E hys_me01_lstwert_1 Abbildung 32 ERD umgesetzt B Eh Eh Eh Eh Eh Eh SG Die historischen Daten sind mit dem Prozessabbild ber die Namenskonvention und nicht ber Entit ten miteinander verbunden Ich sch tze dies als die sinnvollere und performantere Art ein um die Daten abzulegen Die Alternative w re die histori schen Daten allesamt in eine Tabelle oder eine pro cps Tabelle zu schreiben Die Datens tze m ssten dann aber mit Ids dem entsprechenden Feld und dem Datensatz im csp Teil zugewiesen werden Historische Daten k nnen aber schnell grosse Da tenvolumen annehmen M ssten die historischen Daten bei jeder Abfrage auseinan derdividiert werden w rde am Schluss die Performance wesentlich leiden Autor Simon Anderegg Seite 52 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh EENS Hochschule f r Technik und Informatik Software Schule Schweiz 8 Bedienerinterface 8 1 Design Die Abbildung 33 gibt eine bersicht ber die Struktur auf dem Webserver Die ausgezogen Liniene zeigen welche Files wo includet werden Die Gepunkteten Linien illustrieren die Verlinkung der Module im Browser untereinander Gelb
2. 16 COB s definiert werden k nnen Ein COB ist im eigentlichen Sinn ein Prozess Dies erm glicht den Aufbau eines kooperativen Multitaskings Auch wenn ein COB noch nicht vollst ndig abgearbeitet ist kann er seine Rechenzeit jederzeit an den n chsten COB abgeben Mit dem Befehl NCOB wird dies bewerkstelligt Weiter ist es m glich ein COB in den idle Zustand zu setzen Mindestens ein COB muss vorhanden sein da mit ein Anwenderprogramm lauff hig ist Aus einem COB werden im Normalfall klei nere Programmeinheiten wie Programm Blocks PB und Funktions Blocks FB aufgerufen PBs und FBs k nnen wiederum andere PBs und oder FBs aufrufen bis zu einer Verschachtelungstiefe von sieben Ebenen acht mit dem COB Die Programmvariablen werden in so genannten Registern oder Flags gespeichert Register sind 32 Bit Ganzzahl oder Float Werte je nachdem welche Befehle darauf angewendet werden Flags sind 1 Bit Speicherstellen Desweiteren stehen dem Ent wickler sogenannte Datenbl cke zur Verf gung Sie k nnen als eindimensionales Ar ray von 32 Bit Werten definiert werden Ein Datenblock kann maximal 16384 Ele mente aufnehmen W hrend auf Register Rechenoperationen direkt ausgef hrt wer den k nnen muss das Element eines Datenblockes zuerst mit einem zus tzlichen Be fehl auf ein Register kopiert werden will man damit rechenoperationen ausf hren Das Arbeiten mit Datenbl cken ist also etwas umst ndlicher als Registermanipulatio nen D
3. com intervall gibt an wie h ufig ein Request auf den Server ausgef hrt werden soll Dieser kann auch null sein Es werden dann im schnellstm glichen Intervall kontinuierlich Daten gesendet com timeout bricht die Kommunikation nach der angegebenen Zeit ab egal ob gerade Daten gesendet werden oder ob Daten empfangen werden Sie he S 36 Abbildung 22 State Event Kommunikation Feldger t Communication Timeout 2 TCP IP Information Ip Addr Sender zeigt die IP Adresse von welcher das gesendete IP Data gramm stammt Receiver Port zeigt von welchem Port die gesendeten Daten stammen Received bytes zeigt die Anzahl Daten bytes die ber TCP empfangen wurden Icp Packets to send zeigt wie viele TCP Pakete f r einen HTTP Request gesendet werden m ssen State TCP IP ist zur Fehlersuche gedacht Es zeigt in welchem State das Kommunikationsprogramm gerade steckt Siehe S 36 Abbildung 22 State Event Kommunikation Feldger t Die wichtigsten Zust nde sind 6 7 sendT CPI Packets 9 receiveTCPI Packet 3 Diagnostics from Saia API zeigt die Zust nde der IP Schnittstelle Die Details sind der Saia Dokumentation zu entnehmen 4 HTTP Request In dieser Rubrik k nnen einige Informationen ber die an den Server gesende ten Daten eingesehen werden total sent bytes informiert ber die gesamte Anzahl Bytes die pro Request an den Server gesendet werden Header Length di
4. Objektname modlId Die Funktions Id Id Die Funktionsaufruf Id v1 v40 Es k nnen wahlweise 1 40 Flags als Argumente mitgegeben werden addValuesToBufferR objName modlId id v1 40 kopiert Register Werte in den Sendebuffer objName Objektname modld Die Funktions Id Id Die Funktionsaufruf Id v1 v40 Es k nnen wahlweise 1 40 Register als Argumente mitgegeben werden addCharsToBuffer objName pos v1 40 f gt Zeichenketten in den Sendebuffer ein objName Objektname pos Die position an der der String in den Sendebuffer eingef gt werden soll Das At tribut rFillPointer wird auf pos gesetzt und mit jedem eingef gtem Zeichen inkreme tiert pos kann auch weggelassen werden dann wird rFillPointer nur inkrementiert V1 v40 Es k nnen wahlweise 1 40 Zeichen mitgegeben werden addFileBoundToBufferShort objName pos f gt ein File Trennstring f r den Header in den Sendebuffer ein objName Objektname pos siehe Methode addCharsToBufferf addFileBoundToBuffer objName pos f gt ein File Trennstring in den Sendebuffer ein objName Objektname pos siehe Methode addCharsToBufferf getFillPosition objName rOut gibt den Werte von rFillPointer zur ck objName Objektname rOut R ckgabewert Inhalt rFillPointer getFillPositionInBytes objName rOut gibt den Wert die aktuell Position von rFillPointer in Bytes zur ck Falls noch daten im rFillRegister sind werden diese auch mitgez hlt objName Objekt
5. chlich einige Differenzen auszumachen In den Spalten Eing R und Out Eing ist eine Variable aufgef hrt In der MySQL Datenbank steht je doch der Inhalt der Variable Desweiteren stimmen einige Ist Werte nicht berein dies liegt an der zeitlich verschobenen Auslesung der Daten Pr ft man die Werte ge nauer so sieht man dass sie nahe beieinander liegen und daher plausibel sind ISECHTIEE aen dr ititi ti HI EC urn SEET SE a a d EI a u gt EEEEEEERBEREE Abbildung 40 Testprinzip Wie den anderen Protokollen entnommen werden kann ist der Test bis auf einen Punkt zur Zufriedenheit ausgefallen Bei der Funktion SPRO1 wurde dem Makro http addValuesToBufferR irrt mlicher weise ein Flag als Parameter anstelle eines Registers mitgegeben In diesem Falle m sste eigentlich der Saia Compiler reklamieren weil in der Routine eine copy Ope ration auf ein Flag ausgef hrt wird Dies tut er aber berraschenderweise nicht Es wird daher zu einem Laufzeitfehler im Feldger t kommen Die Steuerung bringt dies offenbar nicht aus dem tritt sie l uft weiter und ignoriert die fehlerhafte Instruktion Aufgrund der ignorierten Instruktion wird allerdings ein falscher Wert an den Webserver bermittelt Ich habe nun das http addValuesToBufferR Makro dahinge hend angepasst dass bei einem Flag als Parameter ein Warning beim Compilieren generiert wird Ignoriert man das Warning wird das Flag
6. createTable WriteToDbFailed saveErrorLog Abbildung 18 Zustandsdiagramm File Upload Mit OldFileToBitStream wird der Inhalt vom vorderen Zyklus aus dem File ausgele sen und in den Arbeitsspeicher kopiert anschliessend wird das neu auf den Webser ver hochgeladene File mit copyNewFileFromTemp vom Tempor ren Verzeichnis des Webservers ins Arbeitsverzeichnis kopiert und damit das alte berschrieben Mit readNewDataFile wird das File ausgelesen Die Methode writeDateToDB ver gleicht die Daten vom vorderen Kommunikationszyklus mit den aktuellen Weichen Autor Simon Anderegg Seite 31 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh EEE fe Hochschule f r Tachrik und Informatik Software Schule Schweiz die alten Daten von den neuen ab so wird mit dem folgenden SQL Befehl die Datenbank mit dem neuen Wert aufgefrischt INSERT INTO table SET id id1 field1 datal field2 data2 ON DUPLICA TE KEY UPDATE field1 datal field2 data2 Ist kein Eintrag mit einem primary key Id1 vorhanden wird ein neuer Datensatz mit den nach dem Schl sselwort SET angegebenen Werten in die Tabelle eingef gt Be steht bereits ein primary key mit dem Wert id1 so werden die alten Werte mit den neuen ersetzt Zu beachten ist dass die ON DUBLICATE KEY UPDATE Anweisung MySQL spezifisch ist und nicht dem SQL Standard entspricht aber in diesem Fall usserst praktisch ist Existiert die Tabe
7. gt IN gt gt pa EI B d m ISS KA EE Grindelwald Sen l Betriebsleitsystem t Abbildung 2 L sungsansatz Kunde 1 Die Abbildung 2 zeigt eine m gliche L sung des Problems Eine Kopfstation ausger stet mit einer TCP IP Schnittstelle sammelt die Daten und sendet sie per HTTP Request durch die Firewall hindurch an die bereits vorhandene Webserver Infrastruktur Die Daten werden in die bestehende Applikation integriert und stehen den Clients damit zur Verf gung Die Firewall muss nicht speziell konfiguriert werden da der HTTP Traffic wie ein normaler Browser Traffic aussieht und daher die Firewall unbehelligt passieren kann Kunde 2 stellt elektrische Hochleistungsantriebe f r Werkzeugmaschinen her F r diesen projektierte und erstellte man die Automationssoftware eines Pr fstandes Je der Antrieb durchlief ein vorgegebenes Belastungs Programm und wurde wenn das Testprozedere erfolgreich verlaufen war ausgeliefert Der Kunde hatte den Wunsch die Protokoll und das Testergebnis zusammen mit der Serienummer des Antriebes auf seinem ERP abzuspeichern Auch hier stellte sich die Frage Wie kann der Datenaustausch rasch unkompliziert kosteng nstig und m g lichst ohne zus tzliche Hardware realisiert werden Etwas verallgemeinert ist der Wunsch des Kunden 2 in der n chsten Abbildung skiz ziert Mehrere Feldbusnetze k nnen wie in der vorderen Anwendung ebenfalls mit ei ner TCP IP Kopfstation ausger stet werden D
8. zieren k nnen so wird am besten das meist verbreitetste Protokoll verwendet welches Firewalls meist unbehelligt passieren kann n mlich dass HTTP Protokoll M chte man zus tzlich die eingangs erw hnte Effizienz ber cksichtigen empfiehlt sich ein HTTP File Upload zu verwenden Mit dieser Methode k nnen die Feldger te Bin rdaten direkt ohne aufw ndige Konvertierung in einen Buffer schreiben welcher dann zyklisch gesendet wird Dies w re eine asynchrone Kommunikation Die Konvertierung w rde der vergleichsweise rechenstarke Webserver bernehmen Deterministisch ist diese Art der Kommunikation nat rlich nicht F r Logging Trenddatenerfassung und Uberwachung von Anwendungen ist dies in den meisten F llen gen gend 2 2 Beteiligte Kommunikationspartner Abbildung 11 Kommunikationsstruktur mit Zentraler Datenverarbeitung Ist die Technologiefrage gekl rt stellt sich als n chstes die Frage wie die Technolo gie einzusetzen ist Es gibt verschiedene M glichkeiten die Daten zu senden Die Kommunikationsstruktur besteht aus einer zentralen Datensenke und den darum her um angeordneten Clients Jeder Client besteht aus einem Datenkonsumenten K und einem Datenproduzenten P Gelangen Daten von einem Produzent zur Datenvera beitungsebene so muss diese die Daten speichern und an alle anderen Clients bzw an deren Konsumenten verteilen Autor Simon Anderegg Seite 18 72 Diplomarbeit Fernwartungstool f r Feldger te d d d
9. zus wei na au 68 LA EE Eet 69 15 Ausbhck au lesen Eee lesen 70 162 Quellenangaben a Ra IR ENTER EST 71 17 Abbild ngsverzeichnisa sauer a 72 Autor Simon Anderegg Seite 3 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe REN ANNIE P Hochschule f r Techrik und Informatk Software Schule Schweiz 1 Allgemeines 1 1 Leserkreis Als Feldger te engl Field Device FD werden sowohl Aktoren Stellglieder Ventile wie auch Sensoren Messumformer in der Fabrik und Prozessautomation bezeichnet Die Feldger te sind dann mit einem Steuerungs und Leitsystem meist ber einen Bus verbunden Hier werden die Daten ausgewertet und dienen dann zur Regelung Steuerung und weiteren Verarbeitung Dazu geh rt z B auch die Visualisierung und Anzeige des Ergebnisses z B Ventil ge ffnet geschlossen Druck Durchfluss Temperatur f r das Personal Das Dokument richtet sich an Privatpersonen oder Firmen welche abgesetzte elek tronische Ger te betreiben respektive einsetzen wollen Um den Inhalt dieser Arbeit verstehen zu k nnen sollte der Leser eine Vorstellung von TCP IP und dem darauf aufbauenden HTTP Protokoll haben Grundkenntnisse in den Bereichen Softwareent wicklung und design sind ebenfalls von Vorteil Autor Simon Anderegg Seite 4 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eh EENS Hochschule f r Technik und Informatik Software Schule Schweiz 1 2 Ei
10. 29 Verarbeitet die vom Webserver empfangenen Daten und schreibt diese bei Bedarf in die Datenbank 7 Bediener Interface Kap 8 S 53 Liest und schreibt Daten aus der Datenbank und stellt sie dem Benutzer tabellarisch oder Graphisch dar 8 Datenbank Kap 7 S 52 Speichert die Prozess und Historydaten 9 Request Browser Beinhaltet die Sessiondaten bzw die geforderte Ansicht der Daten 10 Response Browser Enth lt die darzustellenden Daten bestehend aus HTML CSS und Javascript 11 Browser Interpretiert den vom Server im Response gesendeten HTML Code und stellt ihn dar 12 3rd partie Interface Auch einem Fremdsystems k nnten die Daten verf gbar gemacht werden Die Schnittstelle m sste an die Bed rfnisse des Fremdsystems angepasst werden Eine M glichkeit dies zu tun w re zum Beispiel mit Webservices also mit SOAP oder RPC 13 3rd partie Applikation Datenkonsument oder Lieferant eines Fremdsystems Third partie Clients sind im Moment kein angebunden Autor Simon Anderegg Seite 24 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech ENER Hochschule f r Technik und Informatik Software Schule Schweiz 3 1 Datenfluss Feldger te Datenverarbeitung Browser Die Regel und Steueraufgaben der Applikation sind jeweils einzelnen Funktion zuge ordnet So sind als Beispiel die Messwerterfassung und die Regelung jeweils einer Funktion zugeordnet Der Eingangsvektor Parameter der jeweiligen Fu
11. Bedienerntertace 55 Abbildung 35 Ansicht Drozessabbuid een 56 Abbildung 36 Editiermodus Prozessabbuid seen 56 Abbildung 37 Chartaufzeichnung u a anna ine reine 57 Abbildung 38 Debugging mit dem Saia Programming Tool Don 59 Abbildung 39 Integrationstestresultat Funktion MEGSOII 61 Abbildung 40 KE E e EE 62 Abbildung 41 Datenfl sse und Erzeuger 66 Abbildung 42 Installation Peldebene 68 Autor Simon Anderegg Seite 72 72
12. Informatik Software Schule Schweiz 14 Resumee Software ist vergleichbar mit einem Uhrwerk Zahn f r Zahn m ssen die Zahnr der ineinander greifen um am Schluss ein funktionierendes Ganzes zu geben Klemmt eines der unz hligen Zahnr dchen im Uhrwerk so steht es still Wie nun das klemmende R dchen finden Zu einem funktionierenden Software Uhrwerk geh rt auch eine einwandfrei funktionierende Infrastruktur Eine zentrale Funktion hat in diesem Projekt das Netzwerk So traten eine gewisse Zeit immer Ausf lle der Verbindung des Feldger tes zum Webserver auf Die Verbindung war nur zeitweilig unterbrochen am Anfang ca alle 1 2 Wochen f r ein paar Stunden Dann wurden die Ausf lle zusehends h ufiger Ich fragte mich Was k nnte die Ursache sein Ein fehlerhaft funktionierendes ADSL Modem Oder liegt der Fehler im lokalen Netzwerk beim Feldger t Oder gar am Feldger t selbst Nach l ngerem Suchen fand ich heraus dass am hausinternen Telefonnetz ein Telefon ohne ADSL Mikrofilter betrieben wurde welches die St rungen verursachte Ein ohne Mikrofilter betriebenes Telefon kann die Internetverbindung st ren tut es aber oft nicht oder nur sporadisch Eine weitere Schwierigkeit war die Saia Steuerung die wenn man mehr als 5kB bermittelt jeweils das TCP RST Flag sendet und damit die Kommunikation zu fr h beendet Auch der Hersteller konnte mir in diesem Punkt nicht weiterhelfen Trotz Austausch von Wireshark Aufzeichnungen und N
13. Informatik Software Schule Schweiz 8 2 Umsetzung Die Darstellung der Daten ist bewusst einfach und daher bersichtlich gehalten Als bersicht dient eine Liste aller abrufbaren Tabellen in der Datenbank Klickt man eine an so erscheint eine die Ansicht der Tabelle Simons Page Generator Treffer 10 Seite 1 1 A lt lt gt gt Edit ID_HEIOL a v kbar kmay L ns ar Ria v Rta v Temperatur a v Uia v uga v Ef o 363 250 30 200 43387 254 chart 3365 4095 E 403 333 29 200 45872 250 chart 3331 4095 E z 363 250 30 200 44696 251 chart 3347 4095 E 393 333 25 200 57547 201 chart 3180 4095 Ef 4 1050 5000 64 200 4750 812 chart 4000 4095 Ef s 117 83 4 200 199902 48 chart 2048 4095 Efe 250 100 d 200 1797560 1547 chart 410 4095 Si 720 1000 60 200 8026 639 chart 3937 4095 Els 720 1000 60 200 10702 612 chart 3887 4095 GG 670 1000 37 200 33466 335 chart 3508 4095 Abbildung 35 Ansicht Prozessabbild Dargestellt wird ein Ausschnitt aus der jeweiligen Datenbank Tabelle anh ngig was im recCfg php Kap 5 2 Umsetzung Schnittstelle zu Feldebene S 29 als Kommuni kationsfelder angegeben wurde In der Liste sind Filter und Sortierfunktionen inte griert Mit dem E Knopf rechts kann kann ein Datensatz editiert werden Simons Page Generator Treffer 10 Seite 1 1 A lt lt gt gt Edit ID_HEIO1 a v DEER kmay k_position a v S ar Rta v Temperatur a v Uia v uga
14. d Bist Pechhrghachits Se P Hochschule f r Techrik und Informatk Software Schule Schweiz 2 3 Datenclients In unseren Anwendung gibt es zwei Arten von Clients Feldebene Clients und Bedie nebene Clients Beiden sind ihre spezifischen Eigenheiten gegeben durch Rechen st rke verf gbarem Arbeitspeicher und dessen Verbindung zur Datenverarbeitungs ebene Gemeinsam haben die beiden Clients das HTTP Protokoll welches sie mit der Datenverabeitungsebene verbindet Alle Daten die gesendet werden m ssen vom Empf nger auch wieder identifiziert werden k nnen Dazu werden ids mitgesendet Diese ids oder Kennungen sind die Overhead Daten Die Gr sse der Kennung die verwendet werden muss ist abh ngig davon wie viele unterschiedliche Kategorien bzw Pakete man bilden m chte Hat man 32 Bit Werte und ein Adressraum von 32 Bit den man bermitteln m chte so ergibt sich eine 32 bit lange id W hlt man eine kleine Kennung und eine im Verh ltnis grosse Datenmenge so ent steht ein geringer Overhead Im Prinzip ist es eine Frage nach der Gr sse der Ken nung und der ihr zugeordneten Datenmenge Die am Bandbreitensparendste Art zu kommunizieren ist je nach Datenaufkommen die Push Variante D h alle Produzenten schreiben bei Bedarf die Daten in die Daten verarbeitungsebene diese leitet die Daten an die anderen Clients weiter Wir spre chen hier also von einer Freignisorientierten und synchronen Kommunikation Diese w re mit den heut
15. das Zieldokument welches den Request verarbeiten soll angegeben werden Im Feld Content Type muss der Inhalt des Requests spezifiziert werden nach RFC 2388 Das Feld Content Length beinhaltet die L nge des Bodys in Bytes Im Feld Host muss die gew nschte URL definiert werden damit der Server falls dieser mehr als eine Domain hostet die Daten richtig zuordnen kann Im Body werden die einzelnen Files mit der im Header angegebenen boundary unter teilt Die boundary muss so gew hlt werden dass ein Teil des bin ren Inhalts des Fi les nicht zuf llig die gleiche Form wie die boundary selbst annehmen kann Den boundarys werden zwei vorangestellt Zwischen den File boundarsy s sind die Autor Simon Anderegg Seite 27 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh GE fe Hochschule f r Tachrik und Informatik Software Schule Schweiz beiden Felder Content Disposition und Content Type aufzuf hren Content Dispo sition enth lt die Attribute form data und filename Form data enth lt den namen des Formulares und filename den Dateinamen Darauf folgt der bin re Inhalt Abschnitt eines Files 83414204d2c598 Content Disposition form data name Da0001 fillename id0001i bin Content Type application octet stream een 8a14204d2c598 Der Filename ist mit idxxxxr bin gew hlt f r xxxx wird eine vier Zeichen lange Id verwendet sie ist die Funktionsaufruf Id bzw Tabellen Id Mit vier Zeichen k
16. linken Spalte finden sich die Namen der Routinen Funktion bzw deren Funktion Vertikal sind die Spaltenfelder aufgef hrt rot die mittels ProMosNT direkt aus dem Feldger t ausgelesenen Werte gelb die Werte aus der Datenbank gr n das Testresultat p 5 B 3 eo ZS D wl Si 3 m 9 z ory 2 a St a 3 S Sen NAME e E E S ES SEA AEEEEeiatss z Temperatur Vorlauf l Holzkessel 0 64R rNull 1 4095 30 2048 3283 0 3 0 0 0 0 0 0 0 1 0 0 11 120 0 R cklauf l Holzkessel 1 65R rNul 1 3358 20 2048 32737 0 3 2 0 0 0 0 0 0 1 0 0 0 1 120 0 Vorlauf Heizung 2 66R rNull 1 3358 50 2048 32887 0 3 0 0 0 0 0 0 0 1 0 0 0 1 120 0 Aussentemperatur 3 67R rNull 1 2867 150 410 3268 2 0 3 0 0 0 0 0 0 0 1 0 0 0 1 120 0 Raumtemperatur A 68R rNul 1 4000 0 O 4000 0 3 0 0 0 0 0 1 0 0 0 0 0 1 120 0 Speicher Oben Tauchf 5 69R rNull 1 2048 50 0 2048 0 3 0 0 0 0 0 1 0 0 0 0 0 1 120 0 Speicher Unten Tauchf 6 7OR rNull 1 410 0 D 40 0 3 0 0 0 0 0 1 0 0 0 0 0 1 120 0 Speicher pos ca 1 4 7 74RrNul 1 2048 50 2457 38322 0 3 0 0 0 0 0 0 0 1 0 0 0 1 120 0 Speicher pos ca 1 2 8 80 R rNul 1 2040 50 2457 3720 0 3 0 0 0 0 0 0 0 1 0 0 0 1 120 0 Speicher pos ca 3 4 9 81R rNull 1 4013 50 2457 3481 7 0 3 0 0 0 0 0 0 0 1 0 0 0 1 120 0 Schaltschrank Temperatur 10 87 R rNul 1 221 0 50 287 2 3 0 0 0 0 0 0 0 0 0 0 0 1 120 0 Referenzspannung der F hler 11 83 R rNul 1 4095 0 2048 4095 0 3 0 0 0 0 0 0 0 0 0 0 0 1 120 0 Temperatur Vorlauf l H
17. nur die ge nderten Werte zur Datenverabeitungsebene gesendet aber alle gelesen Write All Read All Es werden alle Werte zur Datenverarbeitungsebene gesendet und alle Werte von der Datenverarbeitungsebene gelesen Um ge nderte Werte festzustellen m ssen die zu kommunizierenden Werte mit den Werten aus dem letzten Kommunikationszyklus verglichen werden Unterscheiden sie sich muss der Wert gesendet werden Dies ben tigt Speicherplatz und Rechenzeit F r die zu sendenden Daten muss eine Id vergeben werden was weiteren Speicher platz belegt und zus tzlich den Daten Overhead vergr ssern je nachdem sogar ver doppeln w rde Diesen Nachteil haben alle Write Single Varianten gemeinsam Datentransfer Tmax T1 2 N1 2 Nmax Zu sendende Nutzdaten Abbildung 12 Datentransfer Nutzdaten Zeichnet man qualitativ den Datentransfer zu den Nutzdaten die gesendet werden Autor Simon Anderegg Seite 20 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech Emm G Hochschule f r Techrik und Informatik Software Schule Schweiz m ssen in einem xy Diagramm auf so ist ersichtlich dass solange weniger als die H lfte der Gesamtdaten gesendet werden es g nstiger ist mit einem Id Value Sys tem zu fahren Vorausgesetzt Id und Nutzdateneinheit haben die gleiche Gr sse Die blaue Linie zeigt die Write All Variante die rote Linie die Write Single Variante Die Write All Variante wird vom Datentransfer
18. sind die vom Browser direkt abrufbaren Module rot dargestellt die Konfigurati on grau die allgemein verwendbaren Library Funktionen gr n die Schnittstelle f r die Feldebene Gut sichtbar der hierarchische Aufbau der Applikation Die Files in den grauen Felder liegen aus Sicherheitsgr nden im nicht ffentlichen Verzeichnis sen des Webservers Einzig die gelben und gr nen Files die als Schnittstelle zu den Clients fungieren m ssen von aussen ansprechbar bzw ausf hrbar sein Erkennbar ist im Diagramm die 3 Tier Architektur Bestehend Darstellungsschicht gelb Ge sch ftslogik grau und der Datenbank nicht dargestellt Z hlt man die Feldebene dazu ist es gar eine 5 Tier Architektur includes includes SS me UE Jlibrary db_connection php includes iibrary css php JlibraryImyPage php Jibrary tableView php Jibrary HTML_myTable php Abbildung 33 Filestruktur Webserver Damit das Projekt unabh ngig von den bergeordneten Pfaden und unabh ngig von URLs ist werden durchwegs relative Pfade verwendet Autor Simon Anderegg Seite 53 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Peches SN P Hochschule f r Techrik und Informatk Software Schule Schweiz Die Klassendiagramme der Webanwendung fallen in dieser Anwendung hierarchisch flach aus D h es gibt zur Hauptsache assoziative Kompositionen Verbindungen der Klassen Die U
19. tigt RobjectOffsF wird zum F llen des Sendebuffers ben tigt RbitRegister Bits m ssen als 32 Bit Werte in den Sendebuffer geschrieben werden Hierf r wird jedes Bit zuerst im rBitRegister gespeichert ist dieses voll oder m chte eine neue Funktion in den Sendebuffer schreiben so wird das rBitRegister als ganzes in den Sendebuffer kopiert rOffsetCounterR Wird ben tigt um Register in den Sendebuffer zu schreiben Zeigt immer auf die Position der n chsten berschreibbaren Register Position im Sendebuffer ROffsetCounterF Wird ben tigt um Flags in den Sendebuffer zu schreiben Zeigt immer auf die Position der n chsten berschreibbaren Flag Position im Sendebuffer chHttplLength L nge des Sendebuffers in Anzahl Register Ist mit vier zu multiplizieren um Bytes zu erhalten Autor Simon Anderegg Seite 44 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Lsrahearhe REN ANNIE P Hochschule f r Techrik und Informatk Software Schule Schweiz rFillRegister Wird zum fF llen des Sendebuffers mit ASCII Zeichen 8 Bit Werten ben tigt In Datenbl cke k nnen nur Register 32 Bit Werte eingef gt werden Daher wird Byte f r Byte zuerst in das rfillRegister geschrieben Ist es voll kann es in den Sendebuffer kopiert werden DbSendBuffer Ist ein Datenblock Ein Datenblock ist ein Array von 32 Bit Werten Methoden addValuesToBufferF objName modlId id v1 40 kopiert Bit Werte in den Sendebuffer objName
20. zu r ck Der Server kann nicht von sich aus mit dem Client eine Kommunikation aufbau en Dies ist in den allermeisten Anwendungen nicht nachteilig beschr nkt sich die Kommunikation vom Server zum Feldger t auf Sollwert nderungen der Anlagen und hnliches w hrend umgekehrt die Feldger te kontinuierlich ihr Prozessabbild auf den Server schreiben Im COB 0 l uft die Applikation der Steuerung Diese ruft die Makros httpAddVa luesToBufferR F mit den zu kommunizierenden Werten auf Aufrufen ist nicht kor rekt eigentlich m sste man es eher beinhalten nennen da Makros an der entspre chenden Stelle im Code expandiert werden Makros haben eine Reihe Vorteile siehe Kapitel Programmierung gegen ber Funktionsaufrufen bei Saia Steuerungen Der Einfachheit halber spreche ich auch bei Makros von aufrufen Immer im Wissen dass Makros keine eigentlichen Funktionen sind Ein griffiges Interface in der Applikation zu haben erschien mir wichtig Daher gibt es lediglich zwei Routinen an die die Applikationsroutinen ihre zu Kommunizieren den Werte bergeben k nnen Dies macht ein nachtr gliches Hinzuf gen von Werten leicht Die httpAddValuesToBufferR F Makros schreiben die zu kommunizierenden Daten in denHTTP Buffer Gleichzeitig registrieren diese aber auch bei dessen ers tem Aufruf die Adressen der Kommunikationsvariablen Damit sp ter bestimmt wer den kann an welche Adressen die empfangenen Daten geschrieben werden m ssen Die Routin
21. Content int generatelnputRow void css int getRowCountd int bodyContent int Ces getEditableRowNbr int bodyAttributte int CO S S iE getSelectvalue int voi isRowEditingo boolean BE awa vol proceedi void getSortAsArrayl Arrays getFilterAsArrayl Arrays getFilterAsSQLString String getSortAsSQLS tringd String getBrLimitAsSQLStringd String dbCon Class getArrayHeadi Arrays host String setBrLimitAsSQLString void user String getpages nchor int dbName int setHiddenFieldd void lastErrNo int setTableContent void lastErrMe String setTableHeadi void setArrayHeadl void setHtmITablei void setDatasetsPerPage void setdatasetsMatched void setpages nchor void getDatasetUpdatei int getDatasetDelete int getDatasetEdit String getHiddenFieldd String getDatasetsPerPage void getTableHead String getHtmITable String getTabNamei String setTabNamet void form Form tabName String FormDefaultName formMainName String FormName dbquery void databasei void getQueryd String getAffectedRowsi int getErrorTxt void Abbildung 34 Klassendiagramm Bedienerinterface Autor Simon Anderegg Seite 55 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh cm Hochschule f r Technik und
22. Diplomarbeit Fernwartungstool fur Feldger te Diplomarbeit Nr MT 06 01 03 Abstract Feldger te Mikrocontroller die mit einem Webserver ber das HTTP Protokoll kommunizieren er ffnen M glichkeiten zur Fernwartung und Analyse von Automaten oder Maschinen In dieser Diplomarbeit soll ein System entwickelt werden welches erlaubt solche Automaten und Ge r te ber einen Browser fernzusteuern Keywords Fernwartung Feldger te Fernwartungstool Fernsteuerung Experte Betreuer Student Rolf Lanz Hamlet Tamazian Simon Anderegg Software Schule Schweiz Alpenstrasse 125 Lehrerhaus Steinenbr nnen Wankdorffeldstr 102 3052 Zollikofen 3148 Lanzenh usern 3014 Bern 031 911 26 40 079 768 32 78 031 84 83 273 hamlet tamazian ch simon anderegg org rolf lanz bfh ch Diplomarbeit Fernwartungstool f r Feldger te Inhaltsverzeichnis 1 Allgemeines a TE e 4 1 1 Beserkreis sus ra EN A TEEN deer ee Eder 5 1 3 Definitionen und Abkurzungen 9 1 4 Abgrenzung des Umfeldes dagegen Ee eege Eege 10 1 5 Feldebene ene2 2 2 ee een gegen 11 15 1 Installation sea ser 11 d EE EE 11 1 9 3 System D EE 11 1 5 4 Systemstart und Gvstem Ghutdown 11 1 5 5 Verhalten bei Power Fall arena na 11 1 5 0 SPTACHen EE 11 1 5 7 Hardware sun nes eisen 12 1 5 3 Progtammierung rei II Bein rn 13 1 6 Datenverarbetungsebene 15 1 0 1 UmgeDung EE 15 1 9 2 Programmierung en EE 16 1 6 3 Datenbank an a a HIST 16 1 6 4 Ee le EE E MED 16 1 7 Sys
23. PGU Anschluss f r das Programmierger t Programming Unit Profibus FMS LON 1 3 nicht bei PCD2 M110 Profibus DP Il oder Ethernet TCP IP J nicht bei PCD2 M170 und PCD2 M480 LON ll a EE oder Ethernet TCP IP 7 nur bei PCD2 M1 70 nur bei PCD2 M480 auch als schnelle Z hlereing nge nutzbar nicht bei PCD2 M11 0 Abbildung 8 Blockschema PCD2 M480 Benutzerhandbuch Saia Auf die PCD2 M480 kann seriell ber RS232 Schnittstelle ber USB oder via Ether net zugegriffen oder diese programmiert werden Autor Simon Anderegg Seite 12 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech cm Hochschule f r Technik und Informatik Software Schule Schweiz 1 5 8 Programmierung Die PCD2 M480 wird mit Anweisungsliste programmiert Die Anweisungsliste kurz AWL genannt ist eine in IEC 61131 3 standardisierte Methode zur Programmierung von speicherprogrammierbaren Steuerungen SPS Als Entwicklungsumgebung wird das von Saia mitgelieferte PG5 Version 1 3 122 verwendet Abbildung unten ein Screenshot des Editors mit einem St ck AWL Code Zu sehen ist die Definition eines Funktionsblocks Unter einem Funktionsblock ist eine Softwarefunktion im g ngigen Sinn zu verstehen Die Parameter k nnen nur by reference bergeben werden F SAIA IL Editor module is not part of program COM02 src laj xj LC File Edt Search View Project Online Tools Window Help al x beussm
24. Ressource T Abbildung 29 Sequenzdiagramm Kommunikation Feldebene Autor Simon Anderegg Seite 48 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eh cm Hochschule f r Technik und Informatik Software Schule Schweiz 6 2 1 Serviceschniittstelle Die Serviceebene habe ich mit dem graphikorientierten Leitsystem ProMoSNT reali siert Dieses l uft auf einem herk mmlichen Windowsrechner Die Kommunikation mit ProMosNT und dem Feldger t besteht aus einer Ethernet UDP Verbindung Das Kommunikationsprogramm pollt dabei 2 3 mal in der Sekunde die gew nschten Re gister und Flags der Steuerung In der Steuerung selbst muss hierzu keine spezielle Software installiert oder erstellt werden Die UDP Anfragen vom Leitsystem werden vom Betriebssystem der Steuerung behandelt Dieses liefert auf Anfrage die ge w nschten Flags und Register an das Leitsystem Im Servicefenster k nnen die Feh ler und Kommunikationsparameter eingesehen und die Parameter wenn n tig mit ei nem Mausklick angepasst werden Communication over HTTP TCP IP configuration 1 http Comm On off Ip addr 1 TCP server Ip addr 2 TCP server com timeout com intervall in s 10 Remote Port com timeout in s H TCP IP information Ip addr sender 2 20 23 Receiver Port Received bytes tcp Packets to send State TCP IP Re Round Trip Time in ms Diagnostics from Saia API Channel diagnostic 3 Global diagnostic Receiver diagnostic Tran
25. achbau der Anlage mit meinem Programm beim Hersteller gelang es nicht die Fehlerquelle zu orten Dieses Problem wird sp ter noch gel st werden m ssen Im Moment k nnen aus diesem Grund nicht die gesamten Daten bermittelt werden Ebenso hab ich festgestellt dass sich der Ausgabe Buffer von php manchmal etwas unberechenbar verhalten kann wenn im gleichen Skript File Operationen Fehler und Debug Daten loggen gemacht werden So sendeten die Funktionen header Content type application spsx header Content Length strlen uplFileToDB gt outputString echo uplFileToDB gt outputString nach dem ausgeben der Header Daten jeweils zwei CR LF und dann f lschlicherweise folgte noch ein LF Dies hat zur Folge dass das LF als Modul Id in der SPS interpretiert wird und damit eine falsche Id ausgwertet wird Dies kann nat rlich gef hrlich sein Da bekannt ist welches Modul die Id 10 besitzt LN Ascii 10 weiss man in etwa in welchen Bereich des Speichers die falschen Daten hineingeschrieben werden Diesem Problem muss man sicher weitere Aufmerksamkeit schenken Liegt das fertige Uhrwerk schlussendlich vor blickt der Uhrmacher trotz all den M hen mit einem gewissem Stolz auf das tickende Erzeugnis und berlegt wozu seine Entwicklung auch noch genutzt werden k nnte Autor Simon Anderegg Seite 69 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe REN ANNIE P Hochschule f r Techrik und Informat
26. ag rPosition Arrays RemPort int Register rCount Arrays cfg_timeout int Register rPosition Arrays cfg_stateTCP int kSendRegLength int maxFunctionlds httpHeaderLength int rFillPointer int http ContentLength int rObjectOffsF int 1 tcpPacketsFor neHittpReg int rObject ffsR int httpRecContentPos Int rBitRegister int 1 sortedList httpRecContentLength int r ffsetCounterr int hitpRecResponseNotOk boolean r ffsetCounterf int length const int httpRecContentTypeNotOk boolean cHttp1 DataLength int 2000 dbSortedArray Arrays hitpRecContentNotFound boolean rFillRegister int 1 dbDataArray ArrayList httpRecContentLength_Dat int dbSendBuffer Arrays httpRecContentLengthDataNotOk boolean httpRecContentLgthinyNmbr boolean httpRecContentLgthUnEvenNmbr boolean timeForRoundTrip int htpOnof boolean rRecBufferTCP Arrays rSendBufferTCP Arrays KType_R int 5 KType_F int 3 kKType_O int 21 KType_T int 18 KType_C int 19 searchStr_GetByte void moveBytesToRegeisterf void searchString void isAsciiDezNumber void S IPD InitODMO void S IPD OpenClientTCP O void 5 IPD SendDatad void 5 IPD ReceiveData Oo void S IPD DisconnectTCP void insertYalued void addYaluesToBufferf 0 void binarySearch void addyYaluesToBufferR vo
27. ann eine gen gend grosse Anzahl Id s generiert werden Das i am Schluss steht f r eine 32 bit Integer Zahl Damit weiss der Server wie lang und vor allem auf welche Weise der Bin rstream zu verarbeiten ist Zus tzlich ist noch der Typ b f r Bit implemen tiert Weiter Datentypen wie Floats k nnten noch implementiert werden Ist das letzte File angef gt muss der letzten boundary noch der Abschlusstring angef gt werden Sie sieht dann wie folgt aus 8a14204d2c598 Autor Simon Anderegg Seite 28 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech Se vd Hochschule f r Tachrik und Informatik Software Schule Schweiz 5 Verarbeitung Feldebene 9 1 Design Die Aufgabe der Verarbeitung Feldebene ist es die vom Webserver in den Http Re quests empfangenen Dateien vom Feldger t Client auszulesen zu verarbeiten und bei Bedarf in die Datenbank zu schreiben Wie im Kapitel 2 4 Varianten S 20 Be schrieben muss die Ereignisroutine auf dem Server implementiert werden D h es muss eruiert werden k nnen ob sich ein Wert ge ndert hat Hat er sich ge ndert muss er in die Datenbank geschrieben werden W rde das System als only viewing ausgelegt so k nnten nat rlich immer alle Werte in die Datenbank geschrieben wer den Da aber auch Daten an das Feldger t gesendet werden und somit noch andere Datenquellen Werte in die Datenbank schreiben d rfen nur ge nderte Werte in die Datenba
28. atenbl cke sind die Massenspeicher Elemente der Saiasteuerungen Man kommt daher nicht umhin mit denselben zu arbeiten Die Saiasteuerungen kennen folgende Ressourcetypen Resource Beschreibung Adress Bereich I Input Eingang 07 8191 O Output Ausgang WECKER F Flag Merker O 8191 T Timer Zeitglied 0 450 X Text 0 3999 DB Data Block 0 3999 Der Saia Pr prozessor l sst auch Makrokonstrukte zu wie dies herk mmliche C Pr prozessoren auch tun Makros haben eine Reihe von Vorteilen gegen ber den Funktionsaufrufen FB bei Saia Steuerungen Dasselbe Makro kann mit unterschied licher Anzahl Parameter aufgerufen werden ein entscheidender Vorteil f r viele Ar ten von Anwendungen Variablen k nnen bei Saia Funktionen FBs nur by refe rence bergeben werden Daher ist das Programmverhalten bei einem Makro Auf ruf identisch mit einem Funtionsblock Aufruf da Makroparameter immer eine syntak tische Referenz von einem Variablennamen sind Weiter k nnen in Saia Funktionen die Adressen der mitgegebenen Variablen nicht mehr eruiert werden gerade diese werden aber fters ben tigt Desweiteren k nnen mit Saia FBs keine lokalen Varia blen deklariert werden in Makros hingegen schon Auch lassen sich Namensr ume mithilfe der Saia Makros konstruieren wie man das in sp teren Kapiteln sehen kann In diesem Projekt wurden daher vielfach Makros anstelle von Funktionsbl cken ver wendet Makros laufen im brigen auch e
29. atur Speicher Oben Tauchf Speicher Unten Tauchf Speicher pos Ya Speicher pos 1 2 Speicher pos 3 4 Ventile Mischventil Ladung Speicher Mischventil Heizung Autor Simon Anderegg Seite 66 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d bor SN A Hochschule f r Techrik und Informatik Software Schule Schweiz Regler Heizungsregler Kessel Hochhaltung Pumpen Ladepumpe Speicher Umw lzpumpe Heizung Schaltuhren Anwesenheit Heizung Nachttarif Olkessel einschalten Speicherbewirtschaftung Speicherladungs Steuerung Bedientableaux Bedientaster LED Anzeige Autor Simon Anderegg Seite 67 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech 9 Hochschule f r Technik und Informatik Software Schule Schweiz 13 1 Hardwareschnittstellen Die Hardwareinstallation der Feldebene besteht aus einer Saia SPS mit digitalen und analogen IOs Diese stellen die elektrischen Verbindungen zur Anlage dar Die Signa le der IOs steuern mittels Koppelrelais und Sch tzen die Anlage In unserem Fall be steht die Anlage aus einer kombinierten l Holz Heizungsanlage welche exempla risch die M glichkeiten des realisierten Systems zeigen soll Abbildung unten Ansicht der bestehenden Schaltschrank Installation Abbildung 42 Installation Feldebene Autor Simon Anderegg Seite 68 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Se vd Hochschule f r Tachrik und
30. aut Dann wird Paket um Paket aus dem Sendebuffer ausgelesen und an den Webserver gesendet calculateAndWWriteContLength entry calculateContentLength do hitplnsertContentLenftghToBufferd exit caleTCP_Packetst IntervallTimerElapsed startintervallTimer fillFilerramesInSendBuffer do httpAddFileFramesToBuffer TCF ACK from Server fIIHTTPHeadInSendBuffer do httpAddCharsToBuffer TCP ACK from Server TCP ACK from Server packetsLeftToSend EvaluateDataSizesOfFiles do httpAddYaluesToBuffer CommunicationTimeout InitTCPIP entry intDOMO do OpenGlientTCP Conetent Abbildung 22 State Event Kommunikation Feldger t Autor Simon Anderegg Seite 36 72 Diplomarbeit Fernwartungstool f r Feldger te vd d d d Berner Fachhochschule Hochschule f r Technik und Informatik nr ae She Schu httpSendBuffer HTTP Header id p41 p2 p3 p4 Id p1 p2 p3 p4 Id p1 p2 p3 p4 id p1 p2 p1 p2 p3 p4 Id p1 p2 p3 p4 id p41 p2 p3 p4 p1 p2 p3 p4 Id p1 p2 p3 p4 id p1 p2 p3 p4 p1 p2 p3 p4 Id p1 p2 p3 p4 p2 p3 p4 Id p1 p2 p3 p4 p2 p3 p4 Id p1 p2 D i p4 Abbildun
31. cht Byte f r Byte dem HTTP Request der sp ter ber die TCP IP Schnittstellen gesendet wird Deshalb muss der Http Sendbuffer mit denn n tigen HTTP String Grundger st formatiert werden Der Aufbau des Buffers ist in Ab bildung 23 gezeigt und entspricht der Beschreibung im Kapitel 4 HTTP Request zum Server S 26 Das Makro httpAddCharsToBuffer schreibt zuerst den HTTP Header in den Sendebuffer F r jedes zu kommunizierende File muss ein Filehead erstellt wer den darauf folgen die bin ren Daten Diese k nnen erst nach erfolgter Formatierung eingef gt werden Gleichzeitig schreibt es die Position der File anf nge im Sendebuf fer in ein Array damit nach erfolgter Formatierung die Daten auch an die richtige Position geschrieben werden Abgeschlossen wird ein File mit einem speziellen Trennstring Der State calculate AndWriteContLength berechnet die L nge der Content Daten und schreibt diese in das Feld Content Length im Sendebuffer Des weiteren wird berechnet wieviele TCP IP Pakete f r ein HTIP Request gesendet werden m ssen Danach ist die Initialisie Autor Simon Anderegg Seite 35 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Hochschule f r Technik und Informatik Software Schule Schweiz rung des Sendebuffers abgeschlossen und das Programm kann in den Sendemodus bergehen Wenn der Timer im State CheckCommilntervall abgelaufen ist wird zun chst eine TCP IP Verbindung zum Webserver aufgeb
32. d Einheit f r Einheit einem Datenbankfeld zugeordnet Die L nge einer Einheit wird durch den Datentyp bestimmt Die Art wie eine Einheit interpretiert wird bestimmt ebenfalls der Daten Autor Simon Anderegg Seite 30 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eh ENEE Hochschule f r Technik und Informatik Software Schule Schweiz typ Das erste Element beinhaltet immer die Datensatz Id und wird immer als 32 Bit Integer im Big Endian Format interpretiert In Abbildung 18 der Ablauf des File upload Vorgang Zuerst wird eine Verbindung zur Datenbank hergestellt Schl gt der Verbindungsaufbau fehl wird ein Eintrag ins Error txt File geschrieben und die Abarbeitung gestoppt Steht die Verbindung zur Datenbank wird ein Objekt der Klasse fileToDB instanziert Die Methode writeFile ToDB wird in einer Schleife aufgerufen Pro Aufruf wertet Sie einen Eintrag im Array recCfg im Definitionsfile receive_conf php und somit ein Hochgeladenes File aus Methode writeFileToDB I OpenDb onnection DBisOpen DE Connection Falled sayeErrorLob readOldDatarileFailed saveErrorLog i OldFileToBitStream copyNewFile copyFailed saveErrorLog InewFileTbBitStream saveErrorLog newFileToBitStreamfFailed saveErrorLog WritToDbFailed saveErrorLog ifTableNotExists amp amp AutoCreateTable Create ifTableNotExists amp amp AutoCreateTable
33. d nicht n her eingegangen Werden spezielle Einstellungen ben tigt werden diese erw hnt Es ist jedoch eine Standardkonfiguration anzustreben Dasselbe gilt f r die MySQL Datenbank Ein installiertes PHP und MySQL Modul gilt als Voraussetzung Auf Funktionen und Mechanismen des Webservers wird nur eingegangen wenn es dem Verst ndnis von Abl ufen oder Problemen dient 1 4 1 3 Sicherheit Ein wichtiger Punkt bei solchen Kommunikationen ist die Datensicherheit und Inte grit t speziell wenn die Kommunikation bers Internet abgewickelt wird Die Sicher heit ist jedoch nicht Inhalt dieser Arbeit Das verwendete Ger t unterst tzt HTTPS leider nicht und zus tzlich noch ein Verschl sselungsverfahren zu entwerfen w rde den Rahmen dieser Arbeit sprengen Autor Simon Anderegg Seite 10 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe REN ANNIE P Hochschule f r Techrik und Informatk Software Schule Schweiz 1 5 Feldebene 1 5 1 Installation Um die Kommunikationssoftware auf der SAIA SPS zu installieren muss der Quellco de sowie die Programmierumgebung der Firma SAIA vorhanden sein Um die Datenverarbeitungsebene zu installieren wird ein WAMP LAMP System vor ausgesetzt Eine automatische Installationsroutine ist nicht vorgesehen die Installa tion ist jedoch nicht sonderlich kompliziert Der PHP Quellcode wird ins HTTP Ver zeichnis des Webservers kopiert Das Datenbankschema wir bei ei
34. die mit Jumpes realisiert werden m ssen vereinfachen die Lesbarkeit der Programme nicht gerade Es empfiehlt sich daher die Programme berlegt zu struk turieren 1 6 Datenverarbeitungsebene 1 6 1 Umgebung Die auf der Feldebene anfallenden Daten werden auf einem Webserver gespeichert und verarbeitet Als Webserver wird ein so genanntes LAMP oder WAMP System ver wendet LAMP WAMP Webserver Systeme bestehen aus einem Server mit einem Linux oder Windows Betriebssystem und einem darauf aufsetzenden Apache Webserver Der Apache Webserver beinhaltet unter anderem ein PHP Modul dieses wiederum verf gt ber eine MySQL Datenbank Schnittstelle Der Vorteil in der Ver wendung eines solchen Systems liegt vor allem in deren Verbreitung bei kommerziel len Hostern und in dessen kostenlosen Verf gbarkeit Damit die Datenbankschemata und PHP Programme dieser Arbeit funktionieren wird MySQL und PHP ab der Ver sion 5 0 vorausgesetzt Autor Simon Anderegg Seite 15 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Ge vd Hochschule f r Tachrik und Informatik Software Schule Schweiz 1 6 2 Programmierung PHP ist eine objektorientierte Skriptsprache mit deren Hilfe sich dynamische Websei ten erstellen lassen PHP ist syntaktisch stark an C angelehnt So existiert zum Bei spiel auch der allseits bekannte printf Befehl PHP zeichnet sich aus durch eine gros se Funktionsbibliothek Alleine zum Bearbeiten von Arrays existie
35. e L nge des HTT Headers in Bytes Content Length die L nge des HTTP Contents in Bytes http request buffer length die maximal L nge des Sendbuffers Das Saia Betriebssystem l sst keine dynamische allokation von Speicher zu Daher muss die L nge vom Sendebuffer zum vornherein definiert werden Er muss gr sser definiert werden als total sent bytes 3 HTTP Response Informiert ber Fehlerzust nde und Auswertungen des Response vom Web Server siehe auch Abbildung 25 Validierung Server Response Im Fehlerfall Autor Simon Anderegg Seite 50 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d ok Se P Hochschule f r Techrik und Informatk Software Schule Schweiz leuchtet ein Feld rot auf Ist alles i O bleibt es gr n not a 200 answer Die Server Antwort beginnt nicht mit HTTP 1 1 200 OK wrong data type Kein Feld Content Type oder es beinhaltet nicht den Datentyp spsx no field Content Length Die Response beinhaltet kein Feld Content Length Invalid Nmbr in Content Length field Der Inhalt vom Feld Content Length ist nicht in numerischer Form Cont Lentgh must be divisible by 8 Die L nge des Inhalts Content Length ist nicht durch 8 Teilbar Der Inhalt muss immer aus einem Schl ssel von 4 Byte und einem Werte von 4 Byte L nge bestehen Abbildung 27 Address lookup t able http Content not found Der Inhalt ist v
36. e aufgezeichnet werden die ausserhalb einer gewissen Toleranz liegen Eine weitere Idee w re eine graphischen Oberfl che zu realisieren Da die Datenorganisation und das bertagunsprotokoll per HTTP upload definiert ist k nnte diese L sung serverseitig auch auf anderen Plattformen implementiert wer den Autor Simon Anderegg Seite 70 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d ch Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz 16 Quellenangaben Literatur Cryptographie Decryt HX Mel Doris Baker ADDISON WESSLEY pet Objektorientiertes Ana Rolf Wenger Berner Fachhochschule lyse und Design Datenkommunikation Rolf Lanz Berner Fachhochschule und Rechnernetze Relationale Datenban Arno Schmidhauser Berner Fachhochschule ken Algorithmen und Daten Dr Beatrice Amrhein Berner Fachhochschule strukturen Handbuch SAIA Saia Burgess AG Computer amp Automation l WEKA FACHMEDIEN GmbH Online Quellen www php net www mysql com www sbc support ch Autor Simon Anderegg Seite 71 72 Diplomarbeit Fernwartungstool f r Feldger te 17 Abbildungsverzeichnis Abbildung 1 Hierarchie Modell nach ISAa On 5 Abbildung 2 L sungsansatz Kunde 1 an 6 Abbildung 3 L sungsansatz Kunde 2 7 Abbildung 4 bersicht Beispiel Ioplementaton 7 Abbildung 5 bersicht use case s sessesesessesesesesesessesesesese
37. ee las JEo JR H 1p12 HR AEE moveBytesToRegeister rRemoteIp RemIP_1 RemIP_2 RemIP_3 RemIP_4 JR noIP21 Ip12 moveBytesToRegeister rRemoteIp RemIP2_1 RemIP2_2 RemIP2_3 RemIP2_4 noIP21 COBSEG 12 a CHP cfg_timeout0ld cfg_timeout JR 2 noLoadNewi COPY cfg_timeout save new val cfg_timeoutold COPY cfg_timeout tTineout noLoadNewi CHP cfg_Intervallold cfg_Intervall JR Z noLoadNew copy cfg_Intervall save new val cfg_Intervallold coPY cfg_Intervall tSendIntervall noLoadNew STL tSendIntervall ANH httponoff communication over http is 1 on JR L doNothing SYSRD 7000 read systemcounter ms timeRoundTripHreg copy cfg_Intervall tSendIntervall COPY cfg_timeout tTimeout LD cfg_stateTCP 1 M H D Ready Iin1 coli fei INS OFFLINE Abbildung 9 Programmierumgebung Saia Die Sprache ist an Assembler angelehnt Der Code wird in so genannte Ausf hrungs bl cke strukturiert Saia nennt dies BLOCTEC BLOCTEC ist eine Methode zur Pro grammstrukturierung d h zum Unterteilen von Anwenderprogrammen in einzelne eigenst ndige Programmteile sog Blocks Der zyklische Organisations Block COB ist das Grundstrukturelement eines Pro gramms Vergleichbar mit der Main Funktion in C Mit dem Unterschied dass bis zu Autor Simon Anderegg Seite 13 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Lsrahearhe Eed P Hochschule f r Techrik und Informatk Software Schule Schweiz
38. egg Seite 39 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Lsrahearhe Eed P Hochschule f r Techrik und Informatk Software Schule Schweiz te mit einem Divide and conquer Algorithmus auch bin re Suche oder Englisch bi nary search genannt Omax log2 n 1 Die maximale Anzahl Operationen Omax um im Worst Case ein Element in einer sortierten Liste zu finden steigt nur logarithmisch zur Anzahl Elemente n wie dies in der obigen Formel zu erkennen ist So sind f r 1023 Werte lediglich maximal zehn Operationen n tig um den gesuchten Wert zu finden F r die doppelte Anzahl Ele mente w re demnach nur eine Operation mehr n tig um das gesuchte Element zu fin den Wurde eine entsprechende ID im ID Array gefunden so gibt die binarySearch Routine den Index zur ck Mit dem Index kann nun im Address Array die entspre chende Adresse und der Datentyp ausgelesen werden WriteValueToRessource berschreibt nun die Ressource mit dem empfangenen Wert value Autor Simon Anderegg Seite 40 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eh cm Hochschule f r Technik und Informatik Software Schule Schweiz 6 2 Umsetzung Die Aufgabe wird in drei Teile aufgeteilt in eine Klasse COMO2 in ein Klasse Http und eine Klasse sortedList Die Programmierung habe ich an die Objekt Orientierte Welt angelehnt Einige Ideen und Prinzipien k nnen von der objektorientierten Welt in die konvent
39. eldger te d d d d eeh 9 Hochschule f r Technik und Informatik Software Schule Schweiz 3 System bersicht Die aus dem Kapitel 2 1 Wahl des bertragungsprotokolls hervorgegangene Kom munikationsvariante soll nun beschrieben werden Unten eine bersicht des Sys tems Die einzelnen Positionen werden in den folgenden Kapitel genauer erl utert HTTP Request P ER HTTP Response HTTP Request HTTP Response HTTP Request E H SS Bu v EE HTTP Response 1 Applikationssoftware Feldger t Die Applikationssoftware steuert die Anwendung des Ger tes Sie tauscht mittels Me thoden der Kommunikationssoftware applikationsspezifische Daten aus 2 Kommunikationssoftware Feldger t Die Kommunikationssoftware sendet in regelm ssigen Abst nden Daten zum Server Push Betrieb und erh lt Daten mit der Response vom Server 3 HTTP Request zum Server Kap A4 S 26 Der Request beinhaltet das Prozessabbild des Feldger tes in Form eines HTTP File uploads nach RFC 1867 4 HTTP Response vom Server Der Response enth lt die Daten f r den Client in Form eines bin ren HTTP File Downloads Autor Simon Anderegg Seite 23 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d ok Se P Hochschule f r Techrik und Informatk Software Schule Schweiz 5 Webserver Der Webserver nimmt die HTTP Requests der Clients entgegen 6 Verarbeitung Feldebene Kap 5 S
40. en ist assozoziert die Klasse fileToDB die Klasse database Sie kappselt die PHP MySQL Datenbankfunktio nen Autor Simon Anderegg Seite 32 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d ch Hochschule f r Technik und Informatik Software Schule Schweiz filesToDB dbCon database debugTxt String errorTxt String dbCon Class host String user String dbName int copyFileFromTempbDir boolean copyFileToStream String conyBinArrayTolntArray Arrays C conyIntToBinFormat void dbqueryd resource bitStreamToArray void database void arrayToDBLikeArray void getQueryd String createTablei void getAffectedRows0 int arrayToDB void arraysToDBi void getChangedYalues boolean arrayHysToDBi boolean doFiletoDBihtmITagName String file String dataType int fields String boolean Abbildung 19 Klassendiagramm Datenverarbeitung Autor Simon Anderegg Seite 33 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Ge vd Hochschule f r Tachrik und Informatik Software Schule Schweiz 6 Kommunikationssoftware Feldger t 6 1 Design Die Kommunikationssoftware auf dem Feldger t stellt das Interface zwischen der Ap plikation und dem Webserver dar Sie sendet in einstellbaren abst nden die Aktuel len Daten zum Server und erh lt ihrerseits die aktuellen Werte mit dem Response
41. en m ssen bei jedem Zyklus aufgerufen werden Diese schreiben die Werte in den Sendebuffer vom Http Modul Dieses wiederum ist daf r besorgt die Daten an den Webserver auszuliefern COB 0 COB 12 addValuesToHttpR addValuesToHttpF Application gi httpSendBuffer gt tcpipSend Abbildung 20 Daten senden Autor Simon Anderegg Seite 34 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz Nachfolgend ein Sequenzdiagramm vom Gesamtzusammenhang fieldeontroller Side Server Side 1 Applications gt 1 1 httpAddValuesToBufferR 1 2 httpAddYaluesToBufferF Q 1 2 HitpFileUploadd 2 1 DbConnectd connection 2 2 uploadedFileToDBl 2 3 getChangedYaluesi changedvalues HitpFileDowrnload 3 YalidateDataAndWriteToMemoryd Abbildung 21 Sequenzdiagramm Gesamtablauf Zuerst werden einige Initialisierungschritte gemacht Im State InitTCPIP wird die Saia TCP IP Schnittstelle initialisiert F r jedes zu sendenden File muss die die Gr s se ermittelt werden damit in den n chsten Schritten der daf r n tige Platz im Sende buffer reserviert werden kann Die zu sendenden Bytes pro File werden beim ersten Aufruf von httpAddValuesToBuffer ermittelt Der Sendebuffer entspri
42. en zu speichern sind Fields Komma separiert die Feldnamen der Tabelle Zuvorderst steht im mer der Feldname des Prim rschl ssels der Tabelle FieldsLog Besagt welche Felder der in fields angegebenen Felder kontinuier lich mit einem Zeitstempel versehen abgelegt werden sollen Auch hier k nnen die Felder Kommasepariert angegeben werden DataType Bestimmt wie die Daten in L nge und Format zu verarbeiten sind i steht f r einen 32 bit integer im Format Zur Zeit sind nebst dem i Typ noch ein b Typ f r Booleans implmentiert Die Typen konvertierung k nnen nach belieben erweitert werden Beispiels weise mit ein Float Dazu m sste die Methode bitStreamToArray der Klasse FileToDB mit der gew nschten Transformationsfunk tion erg nzt werden Modld Hier wird die Modul Id angegebenen Die Verbindung die durch das Konfigurationsfile receive conf php zwischen der Datenbank Tabelle und dem hochgeladenen File hergestellt wird sieht wie folgt aus id0009i bin ID_HEIO1 ID HEIO k_b k_b km k_m k_position Ri Rt Id p1 p2 p3 p4 p5 p6 p7 p8 Id p1 p2 Uq Vi Temperatur Abbildung 17 Interpretation eines hochgeladenen Files Orange die ModId integriert im Filenamen blau der im File enthaltene Datentyp Die Daten werden als kontinuierlicher Datenstrom eingelesen un
43. er a S e A is Content Length gt gt numeric Pr y S SS A di 4 _ is Content Length Yes N SE divisble by8 e er lt gt no is Content Length En S yes 0 7 x e d S S writeData do Nothing AA give ErrorStat Abbildung 25 Validierung Server Response Zuerst wird berpr ft ob der Server eine HTTP 200 OK gesendet hat Danach muss sichergestellt werden das der Application Type spsx ist Spsx ist ein individuell festgelegter Content Type Damit wird sichergestellt dass der Inhalt im Body auch dem erwarteten Format entspricht Ansonsten besteht die Gefahr aus Versehen eine Textmessage oder eine Postkarte in den Speicher des Feldger tes einzulesen Als n chstes wird berpr ft ob im Header ein Feld Content Length vorhanden ist Wurde das Feld gefunden so wird als n chstes berpr ft ob die L nge numerisch ist Das heisst die L ngenangabe muss aus ASCII Zeichen zwischen 0 9 bestehen Ein Schl ssel Wert Paar im Content besteht zusammen aus 8 Byte daher wird als n chstes gepr ft ob die Content L nge durch 8 teilbar ist Ist die L nge zudem un gleich null werden die gesendeten Daten eingelesen und interpretiert Der empfangene Inhalt muss nun weiterverarbeitet werden Die Daten liegen wie folgt organisiert als Bitstream im Empfangsbuffer id 32Bit value32 Bit id value 1 id value 2 aaue n Fanc en M ounen BEER Abbildung 26 Datenorganisatio
44. eration amp Control Abbildung 1 Hierarchie Modell nach ISA 95 Aber nicht nur Datenaustausch mit Fremdsystemen ist in zunehmenden Masse ge fragt auch Fernsteuern von Anlagen ist in Zukunft immer mehr ein Thema So wollen Industriebetriebe und Produktionsbetriebe zentral ihre Produktionsanlagen von einer Leitwarte aus steuern oder von dezentral verteilten Systemen m ssen Status und Fehlermeldungen zentral verwaltet werden k nnen In den n chsten zwei Beispielen m chte ich die Problematik an zwei F llen aus der Praxis erl utern In meiner bisherigen beruflichen Laufbahn bin ich Datenaustausch Thematiken des fteren begegnet So erstellte ich im Auftrag meines fr heren Arbeitgebers Betriebs leitsysteme f r Bergbahnen Diese erfassten unter anderem auch Wetterdaten wie Wind Luftfeuchtigkeit und Temperatur Der nahe liegende Gedanke des Kunden war diese Daten f r das G steinformationssystem zu nutzen Ein G steinformationssys tem umfasst die Verteilung von Informationen ber verschieden Kan le wie Leucht Autor Simon Anderegg Seite 5 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d aech Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz schriftenanzeigen Flatscreens Internet Kabelfernsehen etc Wie kann die Kom munikation zwischen den beiden Anwendungen schnell und kosteng nstig realisiert werden Feldbus ene Clients Webserver aah em d 12
45. fehle in die bestehende Abfrage des Scripts zu schmuggeln Unterbinden kann man dies in dem die SQL Abfragen die ja zumeist dynamisch d h vom serverseitigen Skript ge neriert werden die Variablen konsequent quotet und deren Inhalt vor der Verarbei tung pr ft Dem Webserver Client der Datenbank sollten nur die Rechte zugewiesen werden welche dieser f r seine Arbeit ben tigt Wenn er beispielsweise nur lesen muss so werden ihm keine Rechte f r CREATE gegeben Autor Simon Anderegg Seite 64 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Kaerch Se P Hochschule f r Techrik und Informatk Software Schule Schweiz Die so genannten globalen Variablen sollten deaktiviert werden PHP kann automa tisch Variablen f r Daten erzeugen die per GET oder POST an den Webserver gesen det werden ffentlich zug nglich gemacht werden sollen nur die Verzeichnisse und Dateien auf dem Webserver welche von aussen angesprochen werden m ssen Verzeichnis Lis tings sollten keine ausgegeben werden 12 5 Sicherheit Feldebene Da die Feldebene als TCP Client arbeitet ist sie gegen ber Manipulationen weniger bzw gar nicht gef hrdet vorausgesetzt der Response wird ignoriert Wird der Re sponse ausgewertet so k nnte dieser m glicherweise manipuliert worden sein Nicht zu vergessen ist dass andere Feldger te die einen Mini Webserver integriert haben angreifbarer sind da man direkt mit ihnen interagieren und so
46. g 23 Aufbau Sendbuffer Der Aufbau des Http Requests l sst sich eins zu eins im Sendebuffer abbilden so dass die TCP IP Routine nichts anderes zu machen braucht als den Buffer zu senden In Abbildung 23 ist die Gliederung vom Request bzw Sendebuffer gezeigt Er besteht aus dem HTTP Header gefolgt vom Header File 1 vom bin ren Inhalt wie im Kapi tel 4 HTTP Request zum Server beschrieben gefolgt vom Closing File 1 Auf diese Weise k nnen mehre Files aneinandergereiht werden Zum Schluss muss der content noch abgeschlossen werden COB 12 readRessorceAddressFromldTable writeDataToReceiveBuffer gt httpRecBuffer writeValueToRessource Application Ressources Abbildung 24 Empfangen HTTP Response des Webservers Autor Simon Anderegg Seite 37 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d aech EE SI Hochschule f r Technik und Informatik Software Schule Schweiz Die Verarbeitung der empfangenen Daten l sst sich in folgende Hauptteile gliedern Die HTTP Daten werden vom receiveData Routine empfangen und anschliessend in den HTTP Empfangsbuffer geschrieben Die Daten werden vom validateHttpHeaderf auf Datentyp L nge etc gepr ft Die Validierung des HTTP Headers sieht folgende berpr fungen vor yes lt content Type spsx i S SS e Or x gt lt lt does field gt yes lt Content Length exist _ y
47. gezielt nach Schw chen oder Einbruchsm glichkeiten suchen kann Dies ist nicht m glich wenn das Feldger t als HTTP Client arbeitet und der Response ignoriert wird Autor Simon Anderegg Seite 65 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eh EENS Hochschule f r Technik und Informatik Software Schule Schweiz 13 Datenbasis SPS Datenbank f1 DU GUI A fn Abbildung 41 Datenfl sse und Erzeuger Die Daten sind auf der Feldebene bereits nach Kategorien oder Gleichartigkeit ge gliedert sein Um auf das Beispiel der Heizung zur ckzukommen w ren Pumpen eine Kategorie Ventile und Messf hler weitere Kategorien Bei den allermeisten Maschi nen oder Automaten k nnen solche Funktionsgruppen gebildet werden Ein Software entwickler wird daraus Funktionseinheiten bilden In der Software unseres Heizungs beispiels sind die Anlagenelemente in Funktionen oder im Saia Jargon in Funktions bl cke gekapselt Diese Daten werden via das entwickelte Softwaremodul auf den Webserver kommuni ziert Die Feldebene besteht aus den folgenden wesentlichen Softwareelementen welche Informationsgehalt von Interesse aufweisen Messf hler Temperatur Vorlauf Heizung l Holzkessel R cklauf l Holzkessel Vorlauf Aussentemperatur Raumtemper
48. gister und maximal 8192 Flags anzusprechen sind sind 16 Bit f r den Adressraum mehr als ausreichend W rde der Adressraum nicht ausreichen kann Data Type und Address in 2 Arrays aufgeteilt werden Damit k nnten 2 32 Adressen und 2 32 Datentypen angesprochen werden Wird ein ID Wert Paar vom Server empfangen muss das ID Array nach der berein stimmenden Id durchsucht werden Sollen hunderte von Variablen kommuniziert wer den und damit ist zu rechnen beinhaltet doch die vorliegende relativ kleine Muster anlage alleine ber 500 kommunizierbare Register und noch mehr Flags w rde eine Lineare Suche viel zu viel Rechenzeit ben tigen Daher muss eine andere L sung ge funden werden Die Daten sollten geordnet abgelegt werden zum Beispiel in einer Baumstruktur ein Heap w re dazu geeignet kann dieser doch in einem Array gespei chert werden und belegt nicht wie in einer Baumstruktur zus tzlich Speicher f r die Knotenadressen In einem Heap k nnen mit relativ kleinem Aufwand proportional zur H he des Baumes oder log2 zur Anzahl Elemente Elemente ersetzt und gel scht werden Dies ist im konkreten Fall nicht n tig die Id Liste muss beim Aufstarten er fasst werden und bleibt danach statisch Also w rde auch eine Sortierte Liste rei chen Der Suchaufwand in einem Heap oder in einer sortierten Liste ist bedeutend kleiner als bei einer linearen Suche Vorausgesetzt man durchsucht die sortierte Lis Autor Simon Ander
49. h die oben genannten Problemstellungen im nachfolgen dem Use Case ausgedr cken Messen Datenverarbeitungsebene Daten aufbereiten E E j DE BEEN Steuern ausliefern Daten protokollieren A Aufzeichnen o Regeln Abbildung 5 bersicht use case Prozessdaten m ssen erfasst protokolliert werden und anderen Systemen oder Benutzern verf gbar gemacht werden Autor Simon Anderegg Seite 8 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Sak Se P Hochschule f r Techrik und Informatik Software Schule Schweiz 1 3 Definitionen und Abk rzungen API ASCII AWL CSS CMS CISC CR LF DB DCS DCOM ERP FUPLA GUI HTML HTTP SCADA SOAP TCP UDP USB URL VPN WAMP Application Programming Interface American Standard Code for Information Interchange Anweisungsliste IEC 61131 3 Cascading Style Sheets Content Management System Complex Instruction Set Computing Carriage Return Line Feed Wagen R cklauf Zeilenvorschub Database Datenbank Distributed Control Systems Distributed Component Object Model Enterprise Resource Planning Funktionsplan Grpahical User Interface Hypertext Markup Language HyperText Transfer Protocol HyperText Transfer Protocol Secure International Electrotechnical Commission Internet Protocol Information Technology Instrument Society of Amerika Request for Comments Relational database management system Remote Procedure Call Linu
50. hnung Die Chartansicht ist noch ausbauf hig Die Achsen m ssten mit Einheiten beschriftet werden auch k nnten eine Bl tterfunktion und eine Zoomfunktion integriert werden Zur Erzeugung der Kurve wurde normales CSS verwendet Die Ausgabe von CSS und HTML l uft bedeutend schneller ab als die Generierung eines Bildes im jpg oder ein png Format Autor Simon Anderegg Seite 57 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz 9 Kontrollfunktionen und Tests 9 1 Allgemeines Das Entwickeln von Software besteht aus planen designen implementieren und tes ten Entwickeln debuggen und testen geht Hand in Hand einher So wird eine Funk tion oder Methode schon beim Entstehen St ck f r St ck getestet anders lassen sich keine funktionierenden Programme erstellen Es war mir wichtig diese Regeln beim Entwickeln einzuhalten 9 2 Modultests Feldebene Die Tests werden mithilfe des Saia Online Debuggers getestet Mit dem Debugger kann direkt auf den Speicher der Steuerung zugegriffen Breakpoints gesetzt werden etc Die vollst ndigen Tests befinden sich im Testdokument Als Beispiel wird nach folgend der Test der COMO2 SearchString dokumentiert Die Testergebnisse der restlichen Tests sind im Testprotokoll zu finden Test der Routine COMO2 searchStringO Funktionsbeschreibung Die Routine sucht in einem String Array von Bytes nach dem V
51. id addCharsTo ufferd void addFileBoundToBufferShort void addFileBoundToBufferd void getFillPositiond void getFillPositioninBytest void addOneYalueToBufferF O void addOneYalueToBufferR void InsertldAndAddressInSortedList void Abbildung 28 Klassendiagramm Kommunikation Feldebene Klassse COMO2 Attribute Die Attribute sind ausschliesslich Kommunikationsvariablen welche von der Serviceschnittstelle von ProMosNT bedient werden Methoden InitODMO Initialisiert den Open Data Mode Saia API OpenClientTCPO ffnet einen Client TCP Kanal im IP Open Data Mode Saia API Connect ICPO Verbindet einen TCP Kanal im IP Open Data Mode mit einem Server TCP Kanal Saia API SendData Sendet Daten ber einen Kanal im IP Open Data Mode Saia API ReceiveData Empf ngt Daten ber einen Kanal im IP Open Data Mode Saia API DisconnectTCP Autor Simon Anderegg Seite 43 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe REN ANNIE P Hochschule f r Techrik und Informatk Software Schule Schweiz Trennt einen TCP Kanal im IP Open Data Mode Saia API Close Schliesst einen Kanal im IP Open Data Mode Saia API SerchStr_GetByte Extrahiert ein Byte aus einem Register SearchString Sucht linear in einer Zeichenkette nach dem Vorkommen einer anderen Zeichenkette Bei Erfolg wird die Endposition der gefundenen Zeichenkette zur ckgegeben W
52. ient am wenigsten Rechen und Speicherbedarf einnimmt und somit als die beste Variante angesehen werden kann vorausgesetzt es steht gen gend Bandbreite zur Verf gung Wie gross ist denn berhaupt dass zu erwartende maxi male Kommunikationsvolumen Die Frage wird im n chsten Kapitel beantwortet 2 4 1 Datenaufkommen Auf dem jetzigen Client sind rund 1100 32 Bit Integer Werte zu kommunizieren Dazu gesellen sich rund 1200 Flags Booleans Total in Bytes 1100 4 1200 8 4550 Bytes Rechnen wir noch den Overhead dazu ergeben sich ca 7 10 Kbyte pro Request Die TCP IP MTU welche die Saia Ether netschnittstelle verarbeiten kann ist 744 Bytes Autor Simon Anderegg Seite 21 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Kaerch SE P Hochschule f r Techrik und Informatik Software Schule Schweiz Dadurch wird klar dass sich eine ereignisgesteuerte Kommunikation bei einer Breit bandverbindung nicht lohnt Im Gegenteil Die Durchlaufzeit auf dem Feldger t w r de sich erh hen und damit die Kommunikationsgeschwindigkeit sinken Zudem w r den sich kleinere Transporteinheiten kaum lohnen da das Verh ltnis Nutzlast Over head sich viel ung nstiger entwickeln w rde je kleiner die Nutzdatenpakete wer den Die Kommunikationsgeschwindigkeit ist bei so geringem Datenvolumen in erster Linie von der Antwortzeiten des Servers abh ngig Autor Simon Anderegg Seite 22 72 Diplomarbeit Fernwartungstool f r F
53. iese kommunizieren mit einem Webser ver ber das HTTP Protokoll Am Webserver angegliedert ist ein RDBMS System Dieses ist die Schnittstelle zum ERP Es kann als eigenst ndiges System betrieben werden kann aber auch Bestandteil des ERP s sein oder im Webserver integriert werden Autor Simon Anderegg Seite 6 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh ENER Hochschule f r Technik und Informatik Software Schule Schweiz Webserver RDBMS ERP Clients Messprotokolle MPI Produktionsdaten HTTP Feldbus CAN EIB ProfiBus SR l emmmer nn ums Abbildung 3 L sungsansatz Kunde 2 In dieser Arbeit m chte ich an einem einem konkreten Beispiel eine M glichkeit aufzeigen wie die Automation und die IT Welt sich weiter ann hern k nnten Webserver no O HTP d i mg mm um 4 gt T HTTP EN Heizung Abbildung 4 bersicht Beispiel Implementation Einer bestehenden Heizungsanlage deren Steuerung mit einer IP Schnittstelle ausger stet ist sendet in regelm ssigen Abst nden Ihre Daten per HTTP Request zum Webserver Das Prozessabbild wird in der Datenbank gespeichert Die Prozessdaten k nnen im Webbrowser der die Daten auf dem Webserver abruft eingesehen werden Autor Simon Anderegg Seite 7 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d oke cm Hochschule f r Technik und Informatik Software Schule Schweiz Zusammengefasst lassen sic
54. igen Browsern und den g ngigen Firewall aufbauten nur umst nd lich zu l sen Firewalls m ssten speziell konfiguriert werden bzw Ports ge ffnet wer den sowie Plugins oder Applets f r Browser m ssten entwickelt werden Meist ist die Einflussnahme auf die IT Infrastruktur bei Firmen beschr nkt will man Ger te mit Aussenweltverbindung ohne Zusatzaufwand in bestehende Netzwerke installie ren so ist es problemloser auf die verbreitete Pull Variante wie ein Web Browser dies tut zur ckzugreifen Ein Browser sendet bei Bedarf eine Anfrage Request f r Daten zum Server Dieser sendet die nachgefragten Daten mit der Response umge hend an den Client zur ck Autor Simon Anderegg Seite 19 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech EENS Hochschule f r Technik und Informatik Software Schule Schweiz 2 4 Varianten Wie oben begr ndet ist eine ereignisorientierte Kommunikation zu umst ndlich Aber auch bei der Client Pull oder Polling Variante gibt es verschiedene Realisierungs m glichkeiten Aus Sicht des Clients lassen sich verschiedene Kommunikationsvari anten unterscheiden Write Single Read Single Nur ge nderte Werte werden zur Datenverarbeitungsebene gesendet nur ge nderte Werte werden von der Datenverarbeitungsebene gelesen Write All Read Single Es werden alle Werte an die Datenverabeitungsebene gesendet aber nur die ge nder ten gelesen Write Single Read All Es werden
55. illPointer EQU R rOobjectOffsF EQU R rObjectOffsR EQU R rBitRegister EQU R rFillRegister EQU R roffsetCounterR EQU R POETsercounterEF EQU R SENDGROUP Und einen Methodenaufruf der Klasse HTTP heep a3dCharsTegurfer ihr ra 11 0 9 Dt Tne rT E TTA ptp pl Ate Feb Ee E E E Ko KEE E EE EE EE E EE EEN Eine solches Design erh ht die Wiederverwendbarkeit und erleichtert die Lesbarkeit des Codes betr chtlich So k nnte die Klasse http jetzt beliebig oft instanziert wer den Vermutlich liesse sich die Programmierung noch weiter in die Objektorientierte Richtung treiben So k nnte eventuell das Factory Pattern verwendet werden um die n tige Struktur zusammen mit den Routinen Makros mit demselben Namensraum zu erzeugen Leider kann ich hier den objektorientierten Ansatz aus Zeitgr nden nicht noch weiterausbauen In Abbildung 28 ist ein Klassendiagramm aufgef hrt Die Struktur besteht aus der Hauptklasse COMO2 welche auch die Service Schnittstelle beinhaltet Autor Simon Anderegg Seite 42 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech zm Hochschule f r Technik und Informatik Software Schule Schweiz rSearchedStrHttp k Arrays rSearchedStrContenfType Arrays rSearchedStrContentLentgh Arrays cfg_Intervall int diag int diag_glob int RecvIP int RecwPort int timeout int DiagReg int http RemiP2 int Flag rCount Arrays RemiP1 int Fl
56. ionelle prozedurale Welt bertragen werden Nat rlich einige wichtige Elemente wie Vererbung Polymorphie etc lassen sich schwerlich umsetzten Schaut man die Datenorganisation eines Objektes an so besteht ein Objekt aus einer Gruppe von Attributen und den dazugeh renden Funktionen Diese Art von Koh sion l sst sich auch in einer nicht objektorientierten Programmiersprache abbilden um das Konzept verst ndlich zu machen nachfolgend ein Beispiel in C Die Attribute k nnen in eine Struktur gepackt werden die dazugeh renden Methoden Funktio nen k nnen syntaktisch aneinander gebunden werden typedef struct d Char recBufferTcp char searchedStrHttpok ehar searchedStrContentLentgh unsigned int httpRecContentLength_ Dat BOOL httpRecContentLengthDataNotok COMO2 HTTP 200 OK r n Content Length 0 0 COMO2 myCom02 COMO2 SearchString COMO2 this char searchedString int searchedStringLentgh d int 23 int Te i 0 while this gt recBufferTcp i 0 j 0 while this gt recBufferTcp i this gt searchedString j if j lt searchedStringLentgh 1 this gt searchedStrHttpok true return i Jr LEF include lt stdio h gt int maing int argc Const char argv i I com02SearchString myCom02 myCom02 gt searchedStrHttpok strlen myComO2 gt searchedStrHttpok Autor Simon Anderegg Seite 41 72 Diplomarbe
57. it Fernwartungstool f r Feldger te d d d d eeh GE vd Hochschule f r Tachrik und Informatik Software Schule Schweiz Kurz gesagt handelt es sich hier um eine Ansammlung von Funktionen mit gleich be ginnendem Namen welche alle die gleiche Struktur als Parameter aufnehmen Das obige C Beispiel zeigt die Klasse COMO2 Sie besteht aus einigen Attributen und der Methode comO02SearchString Sie sucht mit einer linearen Suche in einem String nach einem anderen String Alle Methoden der Klasse beginnen mit COMO2 _ Der Klasse muss nat rlich eine Referenz der ihr zugeh renden Attribu te mitgegeben werden Diese wird den Methoden mit einem Zeiger auf die Struktur des jeweiligen Objektes mitgegeben Innerhalb der Methoden k nnen die Attribute des Objektes mit dem this Zeiger angesprochen werden hnliche Konstrukte kann man auch mit Saia AWL und mithilfe der Makros und Va riablen Namen erzeugen Namensr ume k nnen mit einem Punkt oder mit einer GOUP Klausel erzeugt werden Die Struktur struct der http Klasse w rde dann wie folgt aussehen siehe auch S Kapitel GROUP http nl kSendReqLength EQU http n1 kIdVENO3 1 Flag rClount EQU R http nl1 kSendReqLength Register rCount EQU R http nl1 kSendReqLength Flag rPosition EQU R http nl1 kSendReqLength Register rPosition EQU R http nl1 kSendReqLength rF
58. k Software Schule Schweiz 15 Ausblick Mit der vorliegenden Arbeit ist die Basis geschaffen f r Fernwartungstechnik f r Feldger te mi Datenaustausch ber einen Webserver Ein wichtiger Punkt das Protokoll Ubertragungsart ist definiert und eine Referenzanlage implementiert Die Feldebene f r Saia Ger te ist relativ weit gediehen Ein Sch nheitsfehler ist klar die fehlende DNS Aufl sung Diese k nnte in einem weiteren Schritt implementiert werden Ebenso k nnte in Sachen Verschl sselung noch ein weiteres Projekt ge startet werden Eine Implementierung f r andere Feldger te w re ebenso denkbar Die Datenverabeitungsebene k nnte aber auch als M2M Plattform dienen D h Ger te der Firma A k nnten via Webserver mit Ger ten der Firma B Daten austauschen Dies in einem LAN oder dezentral weltweit verteilt Auf der Datenverabeitungsebene liessen sich diverse weitere Datenauswertungstools realisieren F r viele Industrieanwendungen w re dies nicht einmal n tig der bestehende Funktionsumfang w rde gen gen da es vielfach nur darum geht Prozessdaten einem anderem System zur Verf gung zu stellen Dieses verarbeitet die Daten dann weiter Soll ein Man Machine Interface geschaffen werden gibt es noch viel zu tun Datenumrechnungen in die eigentlichen physikalischen Gr ssen ist nur ein Stichwort Ebenso liesse sich die Datenaufzeichnung beliebig verfeinern damit sie beispielsweise per Mausklick aktiviert werden kann oder nur Wert
59. ld in einer Tabelle Zusammengefasst Feldger t Datenverarbeitung Ger t Datenbank Funktion Tabelle Funktionsaufruf Datensatz Parameter Datenfeld Da nun die Umsetzung der Daten von der Feldebene zur Datenverarbeitungsebene bekannt ist muss als n chstes festgelegt werden wie die Daten von der Quelle zum Ziel gelangen Es stellt sich die Frage wie das Modell effizient auf das HTTP Proto koll umgesetzt werden kann Die ID des Feldger tes kann in ein HTTP Header Feld geschrieben werden Da ein File Upload Request mehrere Files enthalten darf kann die ID einer Funktion dem Filnamen bzw dem Formularnamen zugeordnet werden Um nicht unn tigen Over head zu produzieren werden die Daten der Parameter zusammen mit der Funktions aufruf ID serialisiert und bin r in das hochzuladene File geschrieben Id p1 p2 p3 p4 Id p1 p2 p3 p4 Id p1 p2 Abbildung 14 Inhalt eines hochgeladenen Files Dem Inhalt der Datenfelder od Parameter wird immer die Datensatz ID bzw Funti onsaufruf ID vorangestellt Die ID der Parameter ergibt sich aus der Reihenfolge der Parameter Auf dem Server muss definiert werden welcher Parameter in welches Feld der Tabelle geschrieben werden muss Diese Zuordnung kann in einem Config File definiert werden Wenn man nun das Ergebnis der berlegungen anschaut erh lt man das folgenden Konstrukt f r den Http Request Auto
60. lle table nicht und ist das Flag globCfg createTables im File receive _conf php auf true gestellt wird die Tabelle automatisch von der Methode wri teDateToDBi erstellt Die Methode WriteHysDataToDB schreibt die Daten in die Logging Tabelle des mit fieldsLog angegebenen Feldes Der Wert soll aber nur in die Tabelle geschrieben werden wenn er sich vom zuletzt in die Tabelle eingetragenen Wert unterscheidet Damit wird verhindert dass die Tabelle mit unn tigen Redundanten Daten vollge schrieben wird Um nicht ein Abfrage Statement und darauf wenn n tig ein Schreib statement durchf hren zu m ssen wird das folgende SQL Statment verwendet INSERT INTO bs table C time data SELECT actualTime newValue FROM DUAL WHERE NOT EXISTS SELECT time data FROM bs table where newValue SELECT data FROM hys table ORDER BY time DESC LIMIT 0 1 Damit ist die Datenbank selbst in der Lage zu bestimmen ob der Wert in die Daten bank eingetragen werden muss oder nicht Das INSERT Statement wird nur ausge f hrt wenn das Resultat des Subselects nach WHERE NOT EXISTS kein Resultat lie fert Der Platzhalter actuallime beinhaltet die aktuelle Zeit newValue ist der neu einzutragene Wert Auch hier wird wenn die Tabelle hys table nicht existiert und das Flag globCfgl createTables im File receive _conf php auf true gestellt ist die Tabel le automatisch erstellt Wie im Klassendiagramm in der n chsten Abbildung zu seh
61. n Der letzte Datenstand wird vom Betriebssystem ins Flash der SPS geschrieben 1 5 6 Sprachen Die Sprache ist deutsch in den Kommentaren im Code jeweils Englisch Autor Simon Anderegg Seite 11 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Hochschule f r Technik und Informatik Software Schule Schweiz 1 5 7 Hardware Die Hardware der Feldebene besteht aus einer SAIA SPS PCD2 M480 mit einem Freescale vormals Motorola Coldfire 5407 32 Bit CISC Prozessor Als Erweiterung ist ein Ethernetmodul gesteckt Tar anon puan ji ei BE E HB snsseesr sergersg s DOC 8 Wu DI UL UN P m Led RE III nm mm na nunnanen aaen helps la dan Dice ZS Gr Koch H Abbildung 7 PCD2 M480 e E A im Basisger t E A in Erweiterungen Speisung Adressen 0 127 Adressen 128 CPU und E A Bus E A Bus S Es Backup p Anwender Interrupt Eing nge jA Am end Arnwendermedien Speicher Pau ee F Modul Bus R Register Steckplatz A Steckplatz BI Steckplatz B2 Me Watch Dog F Modul F Modul F Modul F Merker Flag Kommunikation fl chtig volatile Kommunikation Kommunikation nicht fl chtig non volatile P Programme TX Texte DB Datenbl cke PGU USB Serielle RS232 422 485 RS232 422 485 Sa s Schnittstelle Display Profibus DP zj 1 PCD2 M110 ist nicht erweiterbar x 4 g 1
62. n im Empfangsbuffer Autor Simon Anderegg Seite 38 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz Immer 64 Bit 8Byte beinhalten ein Id mit dem ihr zugeordneten Wert value Im Gegensatz zum Request sendet der Server nur ge nderte Daten an den Client Des halb muss der Server eine Id zu jedem Wert value mitsenden Die Id Setzt sich aus der Funktions Id der Funktionsaufruf Id dem Datentyp und der Parameter Id zusam men wie dies in Kapitel 4 HTTP Request zum Server beschrieben wurde Die L nge der Teil Ids ist jeweils 8 Bit Dies bedeutet eine Einschr nkung auf maximal 256 Funktionen maximal 256 Aufrufe einer Funktion maximal 256 Datentypen und maxi mal 256 Parameter pro Funktion Byte Operationen werden vom Controller effizien ter ausgef hrt deshalb die Wahl auf gleichgrosse 8 Bit Einheiten Der Client f hrt einen Address Lookup Table welcher aus zwei Arrays besteht Eines mit den Ids und eines mit der dazugeh renden Speicheradressen sowie deren Daten typ binarySearch sucht im ID Array nach der vom Webserver gesendeten identi schen Id binarySearch ID Array Address Array id address 1 id address 2 Data Type 16bit Address 16bit Data Type 16bit Address 16bit id address n Data Type 16bit Address 16bit Abbildung 27 Address lookup t able Da maximal 16384 Re
63. n verf gbar Autor Simon Anderegg Seite 16 72 Diplomarbeit Fernwartungstool f r Feldger te SI D Berner Fachhochschule PRINTER fe Hochschule f r Techrik und Informatik Software Schule Schweiz 1 8 Verwendete Software und Tools Apache 2 2 0 PHP Version 5 2 MySQL 5 0 18 MPHMyAdmin Version 2 7 0 Firefox 2 0 0 16 mit Webdevelopper Plugin 1 1 6 Microsoft Internet Explorer 6 0 29 Wireshark Version 0 99 3 Zend Studio Version 3 5 2 Saia PG 5 Version 1 3 Openoffice Version 2 4 Microsoft Excel ProMoSNT Version 1 3 Jude Community Version 3 1 Micrografx 6 0 b UltraeEdit 32 Version 9 2 Textpad 4 7 2 Total Commander 5 5 Autor Simon Anderegg Seite 17 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech EENS Hochschule f r Technik und Informatik Software Schule Schweiz 2 Wahl der bertragungsart 2 1 Wahl des bertragungsprotokolls Eine der Schwierigkeiten beim Programmieren von Mikrocontrollern ist in vielen F l len die Knappheit der Ressourcen So auch in unserem Fall Man m chte m glichst viel Rechenzeit f r die Anwendung zu Verf gung haben und m glichst wenig f r die Kommunikation verbrauchen m ssen Daher ist eine bertragungsart gefragt die m glichst wenig Ressourcen und Prozessorzeit beansprucht Will man ber das Internet kommunizieren k nnen ist das IP Protokoll gegeben M chte man ohne spezielle Konfiguration der Firewall ber diese hinweg kommuni
64. name rOut r ckgabewert addOneValueToBufferF objName value kopiert den Inhalt eines Flags in den Sendebuffer objName Objektname value fakultativ Paramater Das Makro wird nicht expandiert wenn kein value Para Autor Simon Anderegg Seite 45 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe REN ANNIE P Hochschule f r Techrik und Informatk Software Schule Schweiz meter mitgegeben wird addOneValueToBufferR objName value kopiert den Inhalt eines Registers in den Sendebuffer objName Objektname value fakultativ Paramater Das Makro wird nicht expandiert wenn kein value Para meter mitgegeben wird InsertIdAndAddressInSortedList objName idMod idDataSet dataType idPa ramter rAddr erzeugt aus idMod idDataSet dataType und idParameter eine Id Siehe auch Abbildung 27 Address lookup t able und f gt diese in das das sortierte Id Array ein Die Adresse und der Ressourcetype von rAddr wird parallel dazu in das Address Ar ray eingef gt objName Objektname IdMod Modul oder Funktions Id idDataset Datensatz Id oder Funktionsaufruf Id dataType Kommunikationsdatetyp idParamter Parameter Id rAddr Ressource die registriert werden soll Klasse sortedList Attribute dbSortedArray ist ein Datenblock der die sortierte Liste ID Array beinhaltet dbDataArray ist ebenfalls ein Datenblock der alle Ressourcen Address Array beinhaltet Die Liste wird parallel mit dbSortedAr
65. nem Request des Feldger tes automatisch erzeugt wenn im Konfigurationsfile globCfgl createTables true gesetzt ist Im File db connection php m ssen die Datenbankverbindungs Parameter eingetragen werden 1 5 2 Selbsttest Der SPS Befehlssatz stellt verschiedene Pr froutinen zur Verf gung Diese sind je doch nicht Teil der Aufgabe und werden hier nicht n her erl utert 1 3 3 System Setup Zum System Setup geh rt die URL sowie die IP Adresse des Webservers Letztere kann ber die Serviceschnittstelle Abbildung Service Panel Kommunikation S 49 de finiert werden Die URL konnte leider nicht auf die Serviceschnittstelle gef hrt wer den weil das Verwendete Service Tool die Kommunikation von Texten nicht unter st tzt Hier m sste sicher noch eine bessere L sung gefunden werden Die URL ist im Code einfach anzupassen Bei einer IP Adresse Anderung des Webservers sind also keine Codeanpassungen n tig Vorteilhafter w re es wenn der DNS Dienst zur Aufl sung der IP Adresse verwendet werden k nnte Das Feldger t unterst tzt DNS leider nicht 1 5 4 Systemstart und System Shutdown Das System auf der Feldebene startet selbstst ndig sobald der Strom eingeschaltet wird Abgeschaltet wird es mit dem Ausschalten des Stroms Der Webserver soll hier nicht behandelt werden dies ist Sache des Hosters 1 5 5 Verhalten bei Power Fail Da der Power Fail das normale Shut Down Prozedere der SPS ist gehen dabei auch keine Daten verlore
66. nf hrung Immer h ufiger m ssen in Firmen Produktionsdaten erfasst und protokolliert wer den Dies bringt h ufig Schnittstellenprobleme und nicht zu untersch tzen manch mal auch Konfliktpotential zwischen Automations und IT Fachkr ften mit sich Automations Fachleute arbeiten h ufig in einem anderen Umfeld als ihre Kollegen der IT Abteilung Ihr Alltag besteht aus C AWL IEC 61131 3 FUPLA Mikrocontrol lern SPS en SCADA undDCS Die IT Abteilung hingegen denkt und Programmiert zumeist in Hochsprachen wie Java NET und SQL Das Bindeglied zwischen den bei den Welten wird MES Manufacturing Excecution System genannt In der neueren Vergangenheit haben SCADA Anbieter immer mehr IT Funktionalit ten wie Prozess datenerfassung Produktionsstatistiken und Rezeptur Management in ihre Produkte integriert Meistens handelt es sich dabei um propriet re L sungen Den Automati onsprojekten folgen in vielen F llen mehr oder weniger umfangreiche Projekte wel che die Kommunikation zwischen den beiden Welten zum Beispiel via OPC OLE for Process Control erm glicht OPC wurde von einigen grossen Firmen zwecks Vereinheitlichung des Datenaustau sches ins Leben gerufen Es fusst im wesentlichen auf Microsofts DCOM Der Server muss demnach ein Microsoft Betriebssysteme haben Die Kommunikationen ber Firewalls hinweg ist ebenfalls nicht ohne weiteres m glich Level 4 Business Planning amp Logistic Level3 Manufacturing Op
67. nk gelangen Sonst w rden die neu geschriebenen Daten von anderen Quel len zum Beispiel Benutzereingaben wieder berschrieben HTTP Request Values gt Changed Values 4 Clientprogramm rec php Datenbank Fel Tabell eldenene 2 Changed Values w abelen HTTP Response ii Changed Values recCfg php Abbildung 16 Datenfluss Feldger t Abbildung 16 verdeutlicht den Zusammenhang 5 2 Umsetzung Schnittstelle zu Feldebene Im File rec php wird die Klasse fileToDB instanziert Und die Methode WriteFileToDB der Klasse fileToDB in einer Schleife ausgef hrt Dabei wird jeder Eintrag des asso ziativen Arrays im Konfigurationsfile recCfg php einzeln ausgelesen Ein Eintrag beinhaltet die Informationen wie ein vom Client hochgeladenes File zu behandeln ist recCfg array table gt hei01 fields gt ID HEIOl k b k m k position Ri Rt Temperatur Ui Uq fieldsLog gt Temperatur dataType gt i ModId gt 9 Zum Syntax Die Variable recCfg beschreibt ein numerisches Array das mit au tomatisch mit jedem Eintrag erweitert wird Jedem Eintrag wird ein Sub Array mit ei nem Assoziativen Array zugewiesen Der Inhalt des Assoziativen Arrays mit Schl s sel Wertpaaren hat folgende Bedeutung Autor Simon Anderegg Seite 29 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech dE ee table In welcher Tabelle die Dat
68. nktion bein haltet alle wichtigen Informationen ber den Zustand des Objektes Funktion Somit kann auf der Datenverarbeitungsebene einer Funktion jeweils eine Tabelle zu geordnet werden Der Eingangsvektor einer Funktion wird in der Tabelle als Daten satz abgebildet Im Browser wiederum l sst sich der Inhalt der Tabellen auf bersichtliche Weise dar stellen Datenverarbeitung Prozessdaten Visualisierungsdaten SPS Browser DU DU In Abbildung 13 Datenfluss Feldebene Datenverarbeitung Autor Simon Anderegg Seite 25 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eh Se vd Hochschule f r Tachrik und Informatik Software Schule Schweiz 4 HTTP Request zum Server 4 1 Design Um die Daten vom Feldger t der richtigen Datenbank der richtigen Tabelle dem Richtigen Datensatz und dem richtigen Datenfeld zuordnen zu k nnen m ssen die Daten entsprechend organisiert gesendet werden Jedem Feldger t jeder Funktion jedem Funktionsaufruf und jedem Parameter in der Feldebene wird deshalb eine ein deutige ID zugeordnet Die ID vom Feldger t entspricht einer Datenbank die ID einer Funktion entspricht einer Tabelle die ID eines Funktionsaufrufs entspricht der Datensatz ID und die Pa rameter ID entspricht einem Datenfe
69. olzkessel 064 0 1 4095 30 2048 3283 0 0 3 0 0 0 0 0 0 0 d 0 0 1 0 0 R cklauf l Holzkessel 16 0 1 3358 20 2048 3273 0 0 ee 0 0 0 0 0 0 1 0 0 0 0 0 Vorlauf Heizung 2 66 0 1 3358 50 2048 3288 0 0 3 0 0 0 0 0 0 0 A 0 0 0 0 0 Aussentemperatur 36 0 1 2867 150 410 3267 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 Raumtemperatur 4 68 0 1 4000 0 O 4000 0 0 3 0 0 0 0 0 d 0 0 0 0 0 0 0 Speicher Oben Tauchf 5 69 0 1 2048 50 0 2048 0 0 3 0 0 0 0 0 1 0 0 0 0 0 0 0 Speicher Unten Tauchf 6 70 0 1 410 0 D 40 0 0 3 0 0 0 0 0 d 0 0 0 0 0 0 0 Speicher pos ca 1 4 7T A 0 1 2048 50 2457 3832 0 0 3 0 0 0 0 0 0 0 A 0 0 0 0 0 Speicher pos ca 1 2 8 80 0 1 2040 50 2457 3720 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 Speicher pos ca 3 4 9 8 0 1 4013 50 2457 3481 0 0 3 0 0 0 0 0 0 0 d 0 0 0 0 0 Schaltschrank Temperatur 10 87 0 1 221 0 50 226 0 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 Referenzspannung der F hler dir 83 D 1 4095 0 2048 4095 0 0 3 0 0 0 0 D 0 0 0 0 0 0 0 0 Pr fresultate id Abbildung 39 Integrationstestresultat Funktion MESOI Als Test werden die Inhalte der gelben und roten Felder mit der EXCEL Formel WENN C2 C15 ok f verglichen Alle Felder welche ein ok enthalten ha ben den gleichen Inhalt Die Felder die ein f beinhalten stimmen nicht mit einan Autor Simon Anderegg Seite 61 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Ee cm Hochschule f r Technik und Informatik Software Schule Schweiz der berein Es sind tats
70. om Header durch eine Leerzeile getrennt Wird keine solche Leerzeile gefunden ist http Content not found gesetzt Autor Simon Anderegg Seite 51 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz 7 Datenbank Das Datenbankschema ist zweiteilig organisiert alle Tabellen die das aktuelle Pro zessabbild enthalten haben das Pr fix cps_ Current Process Status vorangestellt Daten die historischer Natur sind also Aufzeichnungen haben das Pr fix his_ histo risch und haben jeweils ein Timefeld und ein Datenfeld Pro Datenbankfeld in den CPS Tabellen kann eine Loggingfunktion aktiviert werden siehe auch Kapitel Umsetzung Schnittstelle zu Feldebene S 9 Die Empfangsroutine rec php erstellt automatisch falls das entprechende Flag im Konfigurationsfeld recCfg php aktiviert ist eine neue historische Tabelle Die Namensgebung f r die historischen Daten ist wie folgt aufgebaut his CpsTabname CpsFeldName Index Die Abbildungen 31 und 32 zeigen den Aufbau EB ops od E ops hei time time time E cps_led04 EI ops mei data data data E ops moi E ops musz E ops out A A A E cps_pid11 E cps_pid12 B ops spmi E ops ven el bus hem Temperatur 0 id_tab1 id_tab2 id_tabn E bes hett Temperatur 7 E bes heit Temperatur 2 field1 field1 field1 hys_hei01_Temperatur_3 vs hei Temperatur A vs heit Temperatur
71. om erwarteten Feldger t stammen Es k nnte sich auch eine Drittpartie als das erwartete Feldger t ausgeben Die Daten sind nicht manipulationssicher The man in the middle k nnte die Daten ver ndern gelingt es ihm sich zwischen die Kommunikationspartner zu schalten Ebenfalls k nnte der Webserver Betreiber leugnen Datenpakete erhalten zu haben Dieser Punkt ist wohl nicht der wichtigste der vier Sicherheitsregeln k nnte aber in manchen Anwendungen praktisch sein M chte man die ersten drei Punkte erf llt haben so m sste man beim jetzigen Pro jektstand ein VPN Tunnel zwischen den beiden Kommunikationspartnern einrichten 12 3 Sicherheit Kommunikation Webserver Browser Die Sicherheitsbetrachtungen vom vorangehenden Kapitel gelten auch hier Jedoch liesse sich die Sicherheit der Kommunikation zwischen Webserver und Browser einfa cher und ohne zus tzliche Hardware massgeblich steigern zum Beispiel mit einer Verschl sselung durch HTTPS Des weiteren m sste ein Authentifikationszertifikat zum Beispiel von Verisign gekauft werden Die Sicherheit liesse sich weiter durch Streichlisten verbessern wie sie heute beim E Banking zur Anwendung kommen 12 4 Sicherheit Datenverarbeitungsebene Es gibt Einiges das auf der Datenverabeitungsebene sprich Webserver und Daten bank beachtet werden sollte Eines davon ist SQL injection Der Angreifer versucht via Webserver beispielsweise mit der Post oder Get Methode eigene SQL Be
72. ontent Length 4 Content Type Jfapplication spsx S SAIA Online Debug Fie Online Tools Options Help 51 8 PCD2 M44 Register 2217 Ascii Refresh 12217 Register 2218 Ascii Refresh 218 Der Gesucht Pointer hat die L nge der Gesucht Strings erreicht die Schleife wird abgebrochen und die Position der Such String Pointers zur ckgegeben 821762 JR L 13 21775 821763 COPY R 2825 189 821764 R 2198 189 u 821765 LD R 2824 15 Autor Simon Anderegg Seite 60 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech Hochschule f r Technik und Informatik Software Schule Schweiz 10 Tests Die korrekte bermittlung der Daten von der Feldebene in die Datenbank kann mit dem bestehenden Leitsystem verifiziert werden ProMosNT bietet eine EXCEL Kon nektivit t zu ihrer propriet ren Datenbank Nun k nnen alle gew nschten Werte aus der ProMosNT Datenbank ausgelesen werden Ebenso k nnte mit EXCEL via ODBC auf die MySQL Datenbank zugegriffen werden oder per copy paste die Daten vom Web Frontend die ebenso in identischer tabellarischer Form vorliegen in die Excel Tabelle eingef gt werden Die zweite Variante hat den Vorteil dass das Web Fron tend gleich mitgepr ft wird Ich habe mich daher f r die zweite Variante entschieden Abbildung 40 Testprinzip Die restlichen Testtabellen sind im Anhang zu finden Siehe unten Tabelle zur Erl uterung der m glichen Testresultate der Funktion MESO1 In der
73. orkommen eines zweiten Strings Testvariante Whitebox Test mit dem Debugger Testbeschreibung Die Routine bedient sich der Subroutine searchStr_GetByte an der mit Index ange geben Position gibt diese immer das angeforderte Byte zur ck Die searchString Routine f hrt jeweils zwei Zeiger mit einer zeigt auf das aktuelle Byte des Such Strings und einer zeigt auf das aktuelle Byte des gesuchten Strings Der Such String Zeiger wird kontinuierlich erh ht w hrend der Gesucht String Pointer nur inkremen tiert wird wenn der Inhalt auf den die beiden Pointer zeigen identisch ist Hat der Gesucht String Pointer die angegebene L nge erreicht so gilt der String als gefun den Der R ckgabewert ist die gefundene Position Hat der Such String Pointer die L nge des Such Strings erreicht so gilt der String als nicht gefunden Der R ckgabe wert ist 1 Das Durchsuchen des Strings kann mit dem Debugger nachvollzogen werden Such String HTTP 1 1 200 OK Date Fri 15 Aug 2008 10 46 19 GMT Server Apache 2 2 0 Win32 DAV 2 mod ssl 2 2 0 OpenSSL 0 9 8amod autoindex color PHP 5 1 1 X Powered By PHP 5 1 1 Content Length 4 Content Type application spsx Gesuch String Content Type application spsx Autor Simon Anderegg Seite 58 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Hochschule f r Techrik und Informatik Software Schule Schweiz Ein Breakpoint wird auf der Zeile gesetzt auf der die beiden B
74. r Simon Anderegg Seite 26 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Ge vd Hochschule f r Tachrik und Informatik Software Schule Schweiz Request id_1 File id_1 Id p1 p2 p3 p4 Id Di p2 p3 p4 Id pi p2 Id pi p2 p3 p4 Id pi p2 p3 p4 Id p1 p2 Id pi p2 p3 p4 Id p4 p2 p3 p4 Id p1 p2 File id_2 Id pi p2 p3 p4 Id pi p2 p3 p4 Id p1 p2 Id p1 p2 p3 p4 Id Di p2 p3 p4 Id p1 p2 Id pi p2 p3 p4 Id pi p2 p3 p4 Id p1 p2 Id pi p2 p3 p4 Id pi p2 p3 p4 Id p1 p2 Id pi p2 p3 p4 Id p1 p2 p3 p4 Id p1 p2 Id p1 p2 p3 p4 Id Di p2 p3 p4 Id pi p2 Abbildung 15 Organisation der Daten pro Request Gut ersichtlich ist der Eingangsvektor einer Funktion jeweils beginnend mit der ID und den darauf folgenden Daten 4 2 Umsetzung Eine HTTP Nachricht ist zweiteilig gegliedert und besteht aus Header und Body Ge nauere Defintionen und Beschreibungen finden sich in RFC 2616 F r das geplante Vorhaben kommt die POST Methode zur Anwendung Der Header muss dann wie folgt ausehen POST pv rec php HTTP 1 1 Content Type multipart form data boundary 8a14204d2c598 Host www anderegg org Content Length 4902 In der ersten Zeile wird die Methode wie mit dem Server kommuniziert wird spezifi ziert Des weiteren muss
75. ray mitgef hrt Methoden InsertValue objName rNewElement dataArrayl dataVall f gt einen Wert in dbSortedArray ein Das neue Element wird solange mit dem n chst niedrigen Element getauscht bis der Wert des vorangestellten Elementes klei ner oder gleich gross ist wie das einzuf gende Ist die endg ltige Position des Ele mentes gefunden so wird an derselben Stelle im dataArrayl1 der Parameter dataVall eingef gt objName Objektname rNewElement Neues in dbSortedArray einzuf gende Element dataArrayl1 Datenarray hier wird dataVall an der gleichen Position wie rNewEle ment eingef gt DataVall einzuf gender neuer Wert t BinarySearch yy xx array length ff ii DESC_ASC Sucht nach der Divide amp Conquer Methode in einem Datenblock Array nach dem identischen Werte Ist ein identischer Wert gefunden wird der Index in yy ausgegeben und der ACC ist H gesetzt Ist kein identischer Wert zu finden wird die linke Begrenzung von den beiden Begrenzungszeiger zur ckgegeben und der ACC L gesetzt xx gesuchter wert yy position ff ii float oder integer array O integer 1 float array datenblock Autor Simon Anderegg Seite 46 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe REN ANNIE P Hochschule f r Techrik und Informatk Software Schule Schweiz length l nge des datenblocks DESC_ASC ASC 0 liste ist aufsteigend sortiert DESC_ASC ASC 1 liste ist absteigend sor
76. ren ber 40 Funk tionen PHP ist zur Zeit in Version 5 3 als Alpha Version verf gbar Auf www php net findet sich mehr Informationen zum Thema Als Entwicklungsumgebung kann ein beliebiger Editor mit oder ohne Syntax High lighting verwendet werden Um umfangreichere Projekte zu verwalten w rde sich ein Plugin f r Eclipse anbieten Zumal f r Eclipse Versions Verwaltung Tools wie CVS zur Verf gung stehen In vorliegender Arbeit wird das Zendstudio verwendet 1 6 3 Datenbank Als Datenbank bietet sich wie bereits erw hnt der MySQL Server in der Version gt 5 0 an Dieser zeichnet sich gegen ber seinen Vorg nger Versionen mit erh hter Funktionalit t aus So lassen sich sich Stored Procedures Views und Triggers defi nieren Auch Transaktionen k nnen verwendet werden 1 6 4 Benutzereigenschaften Um Zugriff auf die Benutzeroberfl che der Datenaverarbeitungseben zu erhalten muss Benutzername und Passwort eingegeben werden Damit wird der Benutzer identifiziert und es werden ihm die entsprechenden Rechte zugewiesen 1 7 Systementscheide Die auf dem Feldger t entwickelte HTTP Schnittstelle kann Verbindung zu beliebigen Webservern herstellen wenn auf dem Webserver die Daten dem definierten Protokoll entsprechend ausgewertet werden Als Muster Implementation wurde ein Webserver Datenbanksystem gew hlt das die gr sste Verbreitung hat PHP und MySQL Dieses Konfiguration ist beinahe bei jedem Webhoster zu g nstigen Konditione
77. rnen Geb ude vom Zutrittsystem ber Licht Jalousien Hei zung und Klimaanlage alles miteinander vernetzt W re es jemandem m glich Kon trolle via Fernwartung ber ein oder mehrere Ger te zu erlangen so k nnte dieser gleichwohl Schaden anrichten oder an sensible Daten wie An oder Abwesenheitszei ten von Personen etc gelangen F r zwielichtige Personen w re es beispielsweise in teressant zu wissen wann der Chef nicht im B ro oder wann der Villenbesitzer aus ser Haus ist usw Bei heutigen Systemen mit Pr senzschalter welche nat rlich den Komfort erh hen lassen sich schon heute R ume berwachen und Zutritte aufzeich nen Heute sind solche Systeme vielfach propriet r und die Daten bleiben zumeist In house Somit sind m gliche Hackerattacken auf einen kleinen Personenkreis be grenzt welche erstens Zutritt zum Geb ude haben zweitens Zugriff zum System und drittens ber das n tige Spezialwissen mit den n tigen Ger tschaften verf gen Des halb gewinnt die Problematik eine neue Dimension wenn solche Daten nun auf einen Webserver geschrieben werden wo die Hackerattacken von berall her gestartet werden k nnen und somit eine gr ssere Anzahl Personen ber das n tige Spezialwis sen f r Attacken auf einen Webserver verf gen Dennoch bin ich berzeugt dass sich eine zufriedenstellende Sicherheit erreichen liesse Zum einen durch die heute bli chen Verschl sselungs und Authentifizierungsverfahren zum anderen verhinder
78. rsache daf r ist die Art der Aufgabenstellungen in Webapplikationen die h ufig aus sequentiellen Abl ufen besteht Request auswerten SQL Statement erstellen Informationen aus Datenbank lesen verarbeiten Gesch ftslogik HTML CSS Javascript rendern Einen grossen Teil der Datenaufbereitung sollte schon mit dem Datenbankschema bzw mit der Datenbank Abfrage erledigt werden k nnen Autor Simon Anderegg Seite 54 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Eech cm Hochschule f r Technik und Informatik Software Schule Schweiz TableView form String tabName String FormDefaultllame jSeriptF unction String datasetsPerPage int 300 brLimitAsSQLS tring String datasetsMatched int visEdit boolean visDelete boolean visAdd boolean visAddText String Neuer Datensatz visDeleteAll int pagesAnchor int pagesCount int pagesMatched int buttonAddDataSet String buttonForward String buttonBackwards String buttonStart String HtmIHiddenFields String HtmITable String tableHead String arrayHead String WrapFields Arrays xmiVersion int HiddenField String docType int xmins int Tableview void title int getUniqueRowkKey int charset int getvisibleRowvalues int javascript int getinputElementSize int styleDeclaration int generateldFields void head
79. sesessesesesseseseseesere gt 8 Abbildung 6 Abgrenzung Peldebene 10 Abbildung 75 PED2 MAOO naar ei en 12 Abbildung 8 Blockschema PCD2 M480 Benutzerhandbuch Saia 12 Abbildung 9 Programmierumgebung Gaga 13 Abbildung 10 Prgrammbeispiel in Blocterc 15 Abbildung 11 Kommunikationsstruktur mit Zentraler Datenverarbeitung 18 Abbildung 12 Datentranster Nutzdaten 20 Abbildung 13 Datenfluss PFeldebene Datenverarbetung 25 Abbildung 14 Inhalt eines hochgeladenen Fles 26 Abbildung 15 Organisation der Daten pro Reouest 27 Abbildung 16 Datenfluss PFeldoger t 29 Abbildung 17 Interpretation eines hochgeladenen Eiles 30 Abbildung 18 Zustandsdiagramm File Upload 31 Abbildung 19 Klassendiagramm Datenverarbeitung nn 33 Abbildung 20 Daten senden sun ee 34 Abbildung 21 Sequenzdiagramm CGesamtablaut 35 Abbildung 22 State Event Kommunikation Peldger t een 36 Abbildung 23 Aufbau Ree Eng EE 37 Abbildung 24 Empfangen HTTP Response des Webserverg 37 Abbildung 25 Validierung Server Hesponse 38 Abbildung 26 Datenorganisation im FEmpfoangsbufter 38 Abbildung 27 Address lookup t able 39 Abbildung 28 Klassendiagramm Kommunikation Feldebhene 43 Abbildung 29 Sequenzdiagramm Kommunikation Peldebene 48 Abbildung 30 Service Panel Kommunkatonm 49 Abbildung 31 ERD Datenbank ae ee Ee 52 Abbildung 32 ERD ee EE 52 Abbildung 33 Filestruktur Webserver 53 Abbildung 34 Klassendiagramm
80. smitter busy Transmitter active Receive data Transmitter diagnostic Server connection Port connected Not executed Diagnostic nr man 0 Ok 0 HTTP Request HTTP Response Send buffer information Parser Information total sent Bytes 4 4576 not a 200 http answer 5 We wrong data type Header Length 170 No field Content Length Content Length 4402 Invalid Nmbr in Content Length field http request buffer length 8000 So esch eg divisible by 8 Startposition Content On Bytes 253 Content Length Data 0 23 Abbildung 30 Service Panel Kommunikation Autor Simon Anderegg Seite 49 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe Eed P Hochschule f r Techrik und Informatk Software Schule Schweiz 1 TCP IP Configuration Mit http Comm On off kann die Kommunikation aktiviert bzw deaktiviert werden Im Feld IP addr 1 TCP Server kann die IP Adresse des Webservers einge geben werden Im Feld IP addr 2 TCP Server kann die IP Adresse eines zweiten Webser vers angegeben werden Die Kommunikation zu diesem wird umgestellt wenn das H kchen dahinter gesetzt ist Dies erm glicht ein einfaches Umschalten zwischen einer Entwicklungsplattform und einer Liveplattform Mit com Timeout kann das TCP IP Timeout f r das Saia API angegeben werden g Mit Remote Port kann der Port des Servers angegebenen werden Ubli cherweise Port 80 f r Webserver
81. t eine konservative Datenaufschaltung auch das Schadenpotenzial Die Datensicherheit soll hier nicht eingehend behandelt werden w re es doch f r sich alleine ein buchf llendes Thema 12 2 Sicherheit Kommunikation Feldebene Webserver Mit Sicherheit ist hier die Abh r und Manipulationssicherheit der Kommunikation zwischen Feldebene und Webserver gemeint Die fehlerfreie bertragungssicherheit Autor Simon Anderegg Seite 63 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bestehens Eed P Hochschule f r Techrik und Informatik Software Schule Schweiz wird durch das TCP Protokoll sichergestellt Im kryptographischen Sinn wird Sicher heit wie folgt definiert Confidentiality Die Vertraulichkeit stellt sicher dass die Nachricht niemand anderes lesen kann als der vorgesehene Empf nger Authentication Die Authentikation stellt sicher dass die empfangene Nachricht auch von dem Sender stammt als der er sich ausgibt Integrity Mit der Integrit t kann berpr ft werden ob jemand die gesendeten Daten manipuliert hat Nonreputation Die Reputation Der Empf nger kann nicht verleugnen die Nachricht erhalten zu haben In diesem Projekt konnte keinem dieser Punkte Beachtung geschenkt werden Stan dard HTTP geht unverschl sselt bers Netz D h jeder der sich an geeigneter Stelle einklinkt kann mitlesen Ebenfalls kann auf dem Webserver nicht garantiert werden dass die Daten auch wirklich v
82. tementscheide ege EMA 16 1 8 Verwendete Software und Too ua arm 17 2 Wahl der Ubertragungsart nein eisen 18 2 1 Wahl des Ubertraoungsprotokolls 18 2 2 Beteiligte Kommunikationspartner 18 2 3 Dal En Non a a NONE ar Bine 19 2 2 Ee E ru ENDE 20 2 4 1 Datenaulkonmen en sen ae 21 3 Syslem bersicht rk EE 23 3 1 Datenfluss Feldger te Datenverarbeitung Browser 25 4 HTTPR Begqiest zum Server ea 26 A 1 e e e Se an een en a E nee 26 4 27 Umsetzung SE 27 5 Verarbeitung Feldebene ssesesesesesessesesessesesesesesessrsesessesesesesesessesosorseno 29 er ER Ee EE 29 5 2 Umsetzung Schnittstelle zu Peldebene 29 6 Kommunikationssoftware Peldger t een 34 ep ERT N a EE ER Ee Te EE 41 6 2 1 Serviceschottstelle 49 7 Datenbank EE 52 8 BedienerinterfacE iineoae eaei aa EE 53 8 1 Design se ne ae Rs ee 53 EE EE 56 9 Kontrollfunktionen und Test a Resten 58 Autor Simon Anderegg Seite 2 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Sos GE 9 Br hu kund I k Eh Allgemenes Sr N Nee eech 58 9 2 Modultests En EEN 58 kk Leet ee ed AAA 61 11 DAS HTTP Protok lls za Re a ae 63 12 Manipulatisnssicherh lt 4 A 2 NEEN 63 1251 Allgemeines ne A OTE R E E E R aE ie 63 12 2 Sicherheit Kommunikation Feldebene Webserver 63 12 3 Sicherheit Kommunikation Webserver Browser 64 12 4 Sicherheit Datenverarbetungsebene nn 64 12 5 Sicherheit Feldebene Na ee ee 65 13 erer 66 13 1 Har waresch iltstellen
83. tiert In Abbildung 29 ist der Gesamtablauf des Kommunikationsprozesses abgebildet In Init1 wird die Kommunikaionschnittstelle initialisiert Sie wird einmalig beim Start aufgerufen Danach werden beim ersten Aufruf von addValuesToBufferR und add ValuesToBufferF die Anzahl Flags und Register gez hlt gleichzeitig werden die Adressen der Ressourcen in die sortierte Liste geschrieben Da nun die Menge der zu Kommunizierenden Ressourcen bekannt ist kann der HTTP Request in der Routine init2 in den Sendebuffer geschrieben werden Jetzt ist die Initialierung abgeschlossen und es kann weiter in den Sende Empfangsmodus im Kommunikationsloop bergegangen werden Die Aplikation l uft im COB 0 w hrend die Kommunikation im COB 12 l uft COB 12 gibt seine Rechenzeit jeweils mit einem NCOB an COB 0 ab wenn er auf ein ACK vom Server wartet Zyklusmessungen im COB 0 zeigen dass die Prozessorlast durch die Kommunikation kaum gestiegen ist Sie liegt mit oder ohne COB 12 bei ca 6 milisekunden Autor Simon Anderegg Seite 47 72 Diplomarbeit Fernwartungstool f r Feldger te Berner Fachhochschule Hochschule f r Technik und Informatik Software Schule Schweiz COBO COB 12 COMD2 Applications 3 COM020 2 init1O 5 CallApplicationso 8 COMO2G Fe 17 CallApplications 9 init20 6 addValuesToBufferR rComYalues ki 7 addvaluesToB
84. trotzdem korrekt aber mit 31 Bits an Overhead bermittelt Autor Simon Anderegg Seite 62 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Bist Leraheaiehe Fersssnensane md Informatik hrik ur CR Bos Fr Schu A Sch hweiz 11 Das HTTP Protokoll Das Http Protokoll wird verwendet um Daten ber ein Netzwerk zu transportieren Das Http Protokoll entstand zusammen mit HTML am Cern in Genf aus dem Bed rf nis der Wissenschaftler heraus Daten auf elektronischem Weg untereinander auszut auschen Das HTTP Protokoll selbst ist zustandslos und basiert auf dem TCP IP Proto koll Da TCP IP eine fehlerfreie bertragungsart ist mit checksum kann diesbez g lich auch das HTTP Protokoll als fehlerfreie bertragungsart angesehen werden Um Bin rdaten zu senden sieht das HTTP Protokoll das Multipart form data vor Mehr dazu l sst sich im RFC 1867 und RFC 1521 unter iana org Internet Corporation for Assigned Names and Numbers nachlesen 12 Manipulationssicherheit 12 1 Allgemeines Beim jetzigen Prototypen wurde die Sicherheit nicht priorit r behandelt Auf den ers ten Blick ist man versucht zu sagen die Daten von Ger te berwachungen etc b ten kein lohnenswertes Ziel f r Hacker Die berwachten Ger te sind aber nicht einfach nur Selbstzweck sondern haben bestimmte Funktionen und Aufgaben zu erf llen Sie steuern Prozesse in Fabrikationen oder ganze Geb udeautomationen In vielen F llen ist heute in einem mode
85. twas schneller ab Das Kompilat des Pro grammcodes wird nat rlich mit h ufiger Verwendung von Makros etwas gr sser Autor Simon Anderegg Seite 14 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Sak SN fe Hochschule f r Techrik und Informatik Software Schule Schweiz COB 0 ADD 1 2 R 100 MUL R 100 3 R100 CFB 1 gt FB 1 R 100 DIV 1 A 2 CPB 1 pB 1 R 101 ECOB SUB R 101 R 102 2 EFB R 103 EFB Abbildung 10 Prgrammbeispiel in Bloctec In Abbildung 10 ein Beispiel eines AWL Programmes COB 0 wird gestartet 1 mit 2 addiert und im Register 100 gespeichert Register 100 wird mit 3 multipliziert im Register 100 ist jetzt 9 danach wird der Funktionsblock 1 mit Register 100 als Parameter aufgerufen Im FB 1 wird der Parameter 1 R 100 mit 2 dividiert das Resultat in Register 101 abgespeichert Ganzzahldivision im Register 101 steht jetzt 4 der Divisionsrest wird im Register 102 gespeichert Danach wird im COB 0 der Programmblock 1 aufgerufen Dort wird 2 vom Register 101 subtrahiert und in Register 103 abgespeichert Danach werden falls vorhanden andere COBs aufgerufen ansonsten startet das Programm von vorne Hier wird ersichtlich dass sich etwas komplexere Programmgebilde sehr schnell ber sehr viele Zeilen erstrecken Es ist daher eine besondere Herausforderung ber sichtliche und lesbare Programme zu schreiben Programmverzweigungen und Schleifen
86. ufferf fComVvalues LI 10 addCharsToBuffertheaderStrind S IPD Library 1 8 PD LibraryO SIE E Ka D OpenClientTCPO 11 getFillPositioniInBytes hitpHeaderLength 12 addFileBoundToBufferd N 13 addFileFramesToBufferd t 14 addCharsToBufferg 15 gefFillPositioninByteso httpSendLength 16 addTextsToBuffer_closel t H 20 COM020 21 ReadFromSendBuffer_WriteToTCPBuffer SendBuffer 22 S IPP SendDatafrSendBufferTCP 18 addvaluesToBufferRirComYalues 19 addvaluesToBufferF fComYalues DiagReg D 2 p 8 IPD ReceiveDatao gt rRlecBufferTCP DiagReg Se I fee Teer en near nn 24 httpRecR amp sponseNot k searchString rRecBuffer rSearchedStrHttpOk 26 httpRecCd 28 hitpRecC 29 rid evall 27 rBytes gearchStr_GetByte rRecBuffer Position WateBuffer rRecBuffer ntentLengthDataNotOk searchString rRecBuffer rSearchedStrContentLentgh pntentLgthUnEvenNmbr isAsciiDezNumber rBytes 30 sortedListBinarySearchtrid rSearchedvValue dbSortedArray dbHttpDataldrindexMa sortedList rPosition I I I I 25 httpRecCdntentTypeNotOk searchString rRecBuffer rSearchedStrContentType l I I I 31 readAddrdss rPosition sortedList dbDataArray 32 writeDataTo
87. urde die Zeichenkette nicht gefunden wird 1 zur ckgegeben M ssten l ngere Zeichenketten durchsucht werden so k nnte zum Beispiel ein Boyer Moore Algorithmus verwendet werden Dieser arbeitet effizienter als die lineare Suche IsAsciiDezNumberf Gibt TRUE zur ck wenn der Parameter einen Wert zwischen 48 57 ASCII 0 9 hat Klasse HTTP Attribute Flag rCount ist ein Integer Array von der L nge kSendReqLength Also die maximale Anzahl Funktions Ids Es beinhaltet die Anzahl Flags die f r jede Funktion Methode Kommuniziert werden m ssen Register rCount Ist ein Integer Array von der L nge kSendReqLength Also die maximale Anzahl Funktions Ids Es beinhaltet die Anzahl Register die f r jede Funktion Methode Kommuniziert werden m ssen Flag rPosition Ist ein Integer Array von der L nge kSendReqLength Es beinhaltet f r jede Funktion die Startposition im Sendebuffer Damit zur Laufzeit jede Funktion die Register daten an den richtige Ort schreiben kann Register rPosition Ist ein Integer array von der L nge kSendReqLength Es beinhaltet f r jede Funktion die Startposition im Sendebuffer Damit zur Laufzeit jede Funktion die Flag Daten an den richtige Ort schreiben kann rFillPointer wird zum bef llen des Sendebuffers mit dem Header und den Fileheader und Abgrenzungsstrings ben tigt Speichert im wesentlichen die aktuelle Position des zuletzt geschriebenen Zeichens rObjectOffsR wird zum F llen des Sendebuffers ben
88. v Ef o 363 250 30 200 43677 253 chart 3361 4095 E 403 333 29 200 46241 249 chart 3326 4095 E 2 403 333 29 200 45062 252 chart 3342 4095 uj fs 393 333 25 200 57871 Log chart 3176 IER Ef 4 1050 5000 64 200 4750 812 chart 4000 4095 Els 117 83 4 200 199902 48 chart 2048 4095 Ej s 250 100 1 200 1797560 1547 chart 410 4095 El 720 1000 60 200 8132 638 chart 3935 4095 Ej s 720 1000 60 200 10810 611 chart 3885 4095 E 9 670 1000 37 200 33599 334 chart 3506 4095 Abbildung 36 Editiermodus Prozessabbild Ein editierter Wert wird mit dem n chsten Response zum Feldger t bermittelt Clickt man auf eines der blauen Felder in der Spalte Temperatur erscheinen die auf gezeichneten Werte des entsprechenden Feldes wahlweise als Chartaufzeichnug oder als Listenansicht Autor Simon Anderegg Seite 56 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Ee Hochschule f r Technik und Informatik Software Schule Schweiz ListenansichtListenansicht Mozilla Firefox Datei Bearbeiten Ansicht Chronik Lesezeichen Extras Hilfe a gt x wi AS t 1 7 http www anderegg org pw chartjline php dbName hys_hei01_Temperatur_3 EZ Links anpassen ch EDL nlagen Verwalt D windows Media gg ProMoS NT Li wsdi httpifflocalhost FCK anla _ ListenansichtListenansicht ListenansichtListenansicht B aons Gen ar AT Tre art ht er werte vom heutigen Tag Abbildung 37 Chartaufzeic
89. volumen her erst dann interessant wenn die Werte h ufig ndern und somit in jedem Kommunikationszyklus gesendet werden m ssen ndern sich die Daten relativ selten benutzt man besser die Write Single Id Value Variante In dieser Anlage sch tze ich dass ein grosser Teil der Daten ber l ngere Zeitr ume konstant bleiben und daher selten gesendet werden m ssen wir bewegen uns daher im Diagramm im gr n eingef rbten Bereich Auf dieser An nahme basiert die folgende Vergleichstabelle Kommunikationsarten vom Client aus gesehen Bandbreite Rechenzeit Rechenzeit Rechenzeit Daten Feld Client Browser Client verabeitung Write Single klein gross klein klein Read Single Write All mittel normal mittel Read Single Write Single mittel mittel mittel Read All Write All gross klein klein mittel Read All Grunds tzlich sollen nur ge nderte Werte in die Datenbank geschrieben werden Sonst werden unter Umst nden von anderen Clients inzwischen ge nderte Werte berschrieben Daher wird je nach Kommunikationsvariante die Rechenzeit und Speicherbedarf um die ge nderten Werte zu eruieren von einem Kommunikations partner zum anderen verschoben Der Rechenaufwand beim Client ist f r die Write All Variante daher gering weil die Vergleichsarbeit von der Datenverarbeitungsebene bernommen wird Aus der obigen Gegen berstellung geht hervor dass die Write All Read Single Vari ante auf dem Cl
90. x Apache MySQL PHP Manufactoring Excecution System Object Linking and Embedding OLE for Process Control Hypertext Preprocessor Supervisory Control and Data Acquistion Speicherprogrammierbare Steuerung Structured Query Language Simple Object Access Protocol Transmission Control Protocol User Datagram Protocol Universal Serial Bus Uniform Resource Locator Virtual private network Windows Apache MySQL PHP Autor Simon Anderegg Seite 9 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d Ce Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz 1 4 Abgrenzung des Umfeldes 1 4 1 1 Feldebene Einer bestehenden funktionsf higen SPS Heizungssteuerung soll eine HTTP Client Kommunikationsschnittstelle implementiert werden Die Anwendungsschnittstelle stellt dabei die bestehende Applikation dar Um eine Kommunikation mit dem Webserver zu erm glichen wird eine Submenge des HTTP Protokolls implementiert Das Saia Betriebssystem stellt das daf r n tige TCP IP API zur Verf gung Das Kom munikationsmodul wird in die bestehende Prozesssteuerung integriert Die Software der Prozessablaufsteuerung ist bestehend ebenso die Hardwareinstal lationen Neu hinzu kommt das Kommunikations Modul Programm Prozessablauf Betriebssystem Saia NT OS Abbildung 6 Abgrenzung Feldebene 1 4 1 2 Datenverarbeitungsebene Auf die Apache Webserver Installation Konfiguration und Funktionen wir
91. ytes verglichen werden 51 8 PCD2 M48x 188 Register 2217 Ascii Refresh 12217 Register 2218 Ascii Refresh 12218 ERROR 4 NO RESPONSE FROM PCD OFF LINE gt Go online COMMUNICATIONS S BUS TCP IP 192 168 0 5 R R 2218 A1 21 NO P1 EB IX8 C0B12 ERROR 4 NO RESPONSE FROM PCD OFF LINE gt Go online COMMUNICATIONS S BUS TCP IP 192 168 0 5 ON LINE STOPPED 821753 CMP 821754 A1 21 NO P1 EB IX8 Abbildung 38 Debugging mit dem Saia Programming Tool PGS Autor Simon Anderegg Seite 59 72 Diplomarbeit Fernwartungstool f r Feldger te d d d d eeh Lu 2 Hochschule f r Techrik und Informatik Software Schule Schweiz Cycle 4 HTTY sara online pebug UT File Online Tools Options Help 51 8 PCD2 H48x 188 f Register 2217 Ascii Refresh 12212 Register 2218 Ascii Refresh 12218 Cycle 175 HTTP 1 1 200 OK Date Fri 15 Aug 2008 10 46 19 GMT Server Apache 2 2 0 Win32 DAV 2 mod ssl 2 2 0 OpenSSL 0 9 83a mod_autoindex color PHP 5 1 1 X Powered By PHP 5 1 1 Cntent Length 4 Content Type application spsx SAIA Online Debug 8 PCD2 M48x 188 Register 2217 Ascii Refresh 12217 o Register 2218 Ascii Refresh Bei einem Match wird auch der Pointer auf Gesucht String inkrementiert Cycle 189 Cycle 175 HTTP 1 1 200 OK Date Fri 15 Aug 2008 10 46 19 GMT Server Apache 2 2 0 Win32 DAV 2 mod _ssl 2 2 0 OpenSSL 0 9 8a mod autoindex color PHP 5 1 1 X Powered By PHP 5 1 1 C

Download Pdf Manuals

image

Related Search

Related Contents

AT-ID700P  el archivo de datos tecnicos en PDF  消費者情報あおもり(2014.2)の閲覧はこちらから  (N8171-43A) 取扱説明書 (No.050806)  LG N1T1DD1.AUAR01I  Owner`s manual Rev B  

Copyright © All rights reserved.
Failed to retrieve file