REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  












Semesterbericht



Thema: Entwicklung einer Software zur Fernüberwachung und Fernsteuerung des Sicherheitsstromversorgungssystem

multi 0108 der Firma Saft Nife.










Anlagen


Begriffserklärung

Quellennachweis

Diskette mit Programmcode und Resourcen


Einführung


Um eine gesicherte Stromversorgung auch bei Netzausfällen zu gewährleisten, bietet die Wirtschaft Lösungen für fast alle Problemstellungen an. Im Bereich der EDV, der Gebäudeautomatisierung und der Prozeßleittechnik kommen vor allem unterbrechungsfreie Stromversorgungssysteme zum Einsatz. Die DIN VDE 108 schreibt den Einbau einer Sicherheitsstromversorgung in Gebäuden für Menschenansammlungen, wie z.B. Beherbergungsbetrieben, Großgaragen, Schulen und Arbeitsstätten, vor. Diese Systeme müssen eine Nennbetriebsdauer von 1 oder 3 Stunden gewährleisten. Sicherheitsstromversorgungssysteme nach DIN VDE 0108 versorgen Sicherheitssysteme wie z. B.: Personenaufzüge (Evakuierungsfahrt), Rauch- und Wärmeabzugseinrichtungen, Lüftungsanlagen, Sicherheitsbeleuchtung, Überwachungs- und Warnanlagen. Das multi 0108 der Firma Saft Nife ist eine Sicherheitsstromversorgung für die Sicherheitsbeleuchtung mit Zentralbatterie zur Versorgung von Sicherheits- und Rettungszeichenleuchten und anderen ausgesuchten Verbrauchern.

Formelle Aufgabenstellung für die Gruppe

Aufgabe:         Software zur Fernüberwachung und Fernsteuerung des Sicherheitsstromversorgungssystem

multi 0108 der Firma Saft Nife

Teilnehmer:    Jan Hohndorf, Matthias Buchhorn

Zeitraum: 5 Wochen


Ein Programm zur Fernüberwachung und Fernsteuerung des Sicherheitsversorgungssystems multi 0108 soll geplant und entwickelt werden. Dabei liegt der Schwerpunkt auf die Wartbarkeit des Programmes, da das System ständig von den Technikern der Firma Saft Nife weiterentwickelt wird. Voraussetzung ist ein gut geplanter System- u. Programmentwurf . Der Systementwurf besteht aus dem Lasten- und Pflichtenheft. Der Programmierer orientiert sich an den Vorgaben des Systemanalytikers. Aufgabe ist es, ein Programm zur Visualisierung der Vorgänge im Sicherheitsversorgungssystem für den Endanwender zu erstellen. Durch eine graphische Benutzeroberfläche werden Systemzustände übersichtlich präsentiert und aufgetretene Störungen schneller erkannt. Der Monteur bzw. Servicetechniker benutzt ein anderes Programm mit dem Namen multipro zur Neukonfiguration der Anlage.

Organisatorisches Umfeld




Aufgabenstellung Programmausarbeitung


Der Computer ist über eine serielle Schnittstelle mit der Anlage verbunden. Das multi 0108 nutzt das Bytebusprotokoll zur sicheren Übertragung der Informationen. Es ist vorgesehen über ein Modem oder einer RS 244 Schnittstelle bis zu 16 Endgeräte anzusteuern, wenn die Software der Anlage diese Funktion unterstützt. Die Datenstruktur des Programmes soll auf dieses Kriterium ausgelegt werden. Da eine Anlage mehrere tausend Leuchtmittel besitzen kann, werden die Leuchtmittel in mehreren Untergruppen geteilt. Der Benutzer bewegt sich hierarchisch zwischen 4 Ebenen. Der Hauptschirm zeigt alle angeschlossene Hauptgeräte an. Mit dem Betätigen der linken Maustaste auf einen solchen Zeichen-Objekt werden alle Unterstationen dieser Anlage angezeigt. Mit dem Betätigen der rechten Maustaste erscheint ein neuer Dialog mit den Sytemeigenschaften der Anlage. Die 3. Ebene zeigt die Gruppeneingänge der ausgewälten Unterstation an. Die letzte Ebene zeigt die zugehörigen geschalteten Endstromkreise und deren Leuchtmittel. Das Programm überprüft ständig den Status der Anlage. Sendet die Anlage einen Alarm, ordnet die Software diese Fehlermeldung einer Zeichenkomponente zu. Durch Vergabe von Paßwörtern wird die Auswahl bestimmter Personenkreise vorgenommen. Die Entwicklungsumgebung für diese Projektaufgabe ist Delphi 1.0 unter Windows 3.11. Die Entscheidung fiel auf Delphi, da es die unkomplizierte graphische Anwendungsentwicklung mit der Programmiersprache Pascal verbindet.

Grundlagen

Das Bytebus Protokoll


Die Strukturen der Sicherheitsbeleuchtungsanlage werden auf einem PC entworfen und über eine serielle Schnittstelle zur Anlage gesendet. Es war eine erhöhte Datensicherheit nötig. Weiterhin sollte das verwendete Protokoll "point-to-multipoint" fähig sein und unabhängig von der Hardware funktionieren. Die Softwarefirma HEDON entwarf auf Grundlage diese Anforderungen das Bytebus-Protokoll. Das Bytebus Protokoll wurde für Systeme mit einem Master und mehreren Slaves konstruiert. Die Informationen werden über ein 4-Schichten-modell ausgetauscht. Schicht 2 und 3 sind äquivalent zur HDLC Familie ( hide data link control) die in der DIN ISO 3309 Norm beschrieben ist . Dieses Protokoll wird auch in der 2. Schicht des OSI-Referenzmodells verwendet. Der aktive Teil ist immer der Master. Er schickt ein Kommando an ein bestimmtes multi 0108 und es reagiert auf einem Kommando des Computers immer mit einer Antwort.


Abbildung 1 2. bis 4. Schicht des Bytebusprotokolls

Die UART - Schicht (Bitübertragungsschicht)

Die Aufgabe der untersten Schicht wird vom UART-Chip übernommen. Der UART-Chip wird mit bestimmten Eigenschaften, wie Baudrate, Stopbits, Datenbits, Parität, etc. programmiert. Diese Schicht ist für den Programmierer transparent und muß nur einmal, mit dem Windows API-Befehl setCommState initialisiert werden.

Frame-Schicht (Sicherungsschicht)

Frameschicht markiert den Blockanfang, das Blockende und beinhaltet zwei Prüfbytes. Der Rahmen wird durch die Bytes DLE STX geöffnet und mit den Bytes DLE ETX geschlossen. Der Inhalt des Rahmens sind Daten des BBLINK Layer. Falls im Datenblock des BBLINK-Layer DLE vorkommt, kann es zu falscher Interpretation des Rahmenendes kommen, deshalb ist der Einsatz von 'Byte stuffing' erforderlich. Für jedes DLE welches in BBLINK-Data vorkommt, wird ein weiteres DLE gesendet. Falls der Empfänger ein DLE empfängt, wartet er auf das nächstes Zeichen. Ist dieses dann ETX oder STX, so erkennt der Empfänger den Rahmenanfang oder das Rahmenende. Andernfalls wird erkannt, das ein DLE-Data-Character empfangen wurde. Die Länge des Feldes 'CRC' beträgt 2 Byte. Das erste Byte enthält die errechneten Werte der Bits 0 bis 7 und das zweite Byte der Bits 8 bis 15 der gesamten Daten im BBLINK-Layer. Die Gesamtlänge des Frames ist nur durch den Buffer-Speicher begrenzt und ist ein Konfigurationsparameter des BBFRAM-Layer. Längere Frames werden nicht beachtet.

Link-Schicht (Festlegung der Rahmenarten)

Für eine "point-to-multipoint" Verbindung wird die Adressatennummer benötigt. So kann mit einem Adreßbyte eine beliebige Sicherheitsbeleuchtungsanlage angesprochen werden. Das zweite Byte der Link-Schicht ist ein Kontrollbyte. Es läßt sich in 3 Gruppen teilen: unnummerierte Schicht (U-Block), Supervisor Schicht(S-Block) und Informationsschicht (I-Block)

unnummerierte Schicht (Steuerrahmen - U-Block):

Aufgabe: Transport von Steuerzeichen


93 - Kommando                     - ( Setze normalen Anwortmodus)

53 - Kommando                     - ( Unterbreche Verbindung)

73 - Antwort - ( Bestätigung)

97 - Antwort - ( Fehlerhafter Rahmen)

Supervisor Schicht - (Steuerrahmen - S-Block):

Aufgabe: Übermittelt den Status des Master oder Slavegerätes


sss1 0001 - Kommando                     (zum Empfang bereit)

sss1 0101 - Kommando                     (nicht bereit für Empfang)

sss1 0001 - Antwort               (zum Empfang bereit)

sss1 0101 - Antwort               (nicht bereit für Empfang)


Die Empfangsfolgenummer ist in den Bits 7,6,5 verschlüsselt. Schickt das multi 0108 die Antwort "nicht bereit für Empfang" , muß der Master solange das Kommando "zum Empfang bereit" schicken, bis die Anlage die angeforderten Daten schickt. Die Empfangsfolgenummer des Kommandos hat den gleichen Wert wie die Empfangsfolgenummer des zuletzt abgeschickten Informationsblockes.

Informationsschicht - (Steuerrahmen - I-Block):

Die Aufgabe der Informationsschicht ist die gesicherte Übermittlung von Daten. Dieses Datenbyte enthält die Sendefolgenummer (Bits 1,2,3), die Empfangsfolgenummer(Bits 5,6,7) und die Information das eine User-Schicht übermittelt wird.Eine Informationsschicht ist an Bit 0 und Bit 4 erkennbar, denn Bit 0 ist immer auf null gesetzt und Bit 4 hat den Wert 1.

User- Schicht

In der Userschicht sind die Daten gekapselt. Es ist möglich mit Hilfe des Framekommandos die Daten in kleine gleich große Stücke zu fragmentieren. Das Kommando "next frame" (080h) öffnet eine Fragmentkette. Mit dem Kommando "last frame" (081h) wird die Fragmentkette geschlossen. Welche Länge ein Fragment hat, wird mit dem Kommando "configuration frame" (082h) festgelegt. Das zweite Byte in der Userschicht gibt die Befehlsnummer an. Wenn die Daten nicht vollständig in einen Fragment eingelesen wurden, muß der Master mit einem leeren Userframe und dem Framekommando "next frame" das nächste Fragment anfordern. Die Nummer der wichtigsten Kommandos ist aus Tabelle1 ersichtlich. Eine nähere Beschreibung befindet sich in der Dokumentation "bytebus message specification" der Firma Hedon.

Tabelle Userschicht

Befehl

Beschreibung

Senden

Empfangen


generelle Konfiguration lesen




generelle Konfiguration schreiben




erste Netzwerkstruktur schreiben




erste Netzwerkstruktur lesen




setze Zeit und Datum



11 [B]

schreibe Alarm Konfiguration



12 [C]

lese Alarm Konfiguration



13 [D]

schreibe Alarm Gruppen Konfiguration



14 [E]

lese Alarm Gruppen Konfiguration



15 [F]

lösche den Meldespeicher




Zeitpunkt  für Tagestest festlegen

2,3,6



schreibe Benutzerdefinierter Alarm




lese Benutzerdefinierter Alarm




lese Tageseinstellungen




starte Tagestest

1 oder 3



lese Anzahl der Einträge im Meldespeicher




lese Einträge vom Meldespeicher


1+14(X+1)


lese Software Version aus




lese Meßwerte



28 [1C]

lese Alarme ein



29 [1D]

lese Anlageneigenschaften




lese Stromkreiswerte




lese GEK-Stromkreis-Test-Daten




schreibe Leuchtentexte




lese Leuchtentexte




schreibe zweite Netzwerkstruktur




lese zweite Netzwerkstruktur




schalte System ein/aus



43 [2B]

lösche Alarme



44 [2C]

schreibe 3. Netzwerkstruktur



45 [2D]

lese 3.Netzwerkstrukur




Tabelle 2 verdeutlicht dieses Bytebusprotokoll anhand eines Beispiels. Multirem sendet 6 Fragmente zur Anlage mit der Nummer 01. Jedes Fragment wird durch die DLE STX und DLE ETX Bytes gekapselt. Der zweite gesendete Befehl hat den Wert 10, also muß nach der Bytestuffing-Methode eine weitere 10 übertragen werden. Jeder U- und I-Block enthält die Empfangsfolgenummer. Wenn Daten verschickt werden, erhöht sich die Sendefolgenummer im I-Block. Das erste Byte in der Datenschicht gibt das Fragmentbyte an. Die zwei Bytes des CR-Checks wird aus der Link- und der darunterliegenden Userschicht berechnet.


Tabelle Bytebusprotokoll

Master (Kommando)

Slave (Antwort)

 

Anfang

Nr.

Befehl

Daten

CRC

Ende

Anfang

Nr.

Antwort

Daten

CRC

Ende

Bedeutung





8D B0








Antwortmodus




82 C8 00

AC BA





80 C8 00



Fragmentlänge











B7 13


Versionsnummer











B7 13


Sender nicht bereit











15 E0


Versionsnummer wird gesendet













zum Empfang bereit

Frame

Linkschicht

Usersch.

Frameschicht

 

Programmierung der seriellen Schnittstelle mit Hilfe der API-Funktionen


Die Programmierung der seriellen Schnittstelle unter Windows unterscheidet sich grundsätzlich von MS-DOS.

Windows erlaubt keinen direkten Zugriff auf die Hardware. An die Stelle der eigenen Routine tritt ein Gerätetreiber mit dem Namen COMM.DRV. Dieser Treiber ist das einzige Modul , dem es erlaubt wird, direkt über die Interuptvektoren mit den seriellen Schnittstellen zu arbeiten. Eine serielle Schnittstelle kann mit dem Windowsbefehl OpenComm geöffnet werden. Der Befehl OpenComm legt zusätzlich die Größe des Empfangs- und Sendebuffers fest. Die Funktion gibt den Wert null zurück, wenn die Schnittstelle erfolgreich geöffnet wurde. Damit eine serielle Schnittstelle initialisiert werden kann, bedarf es eines sogenannten Gerätekontrollblockes (DCB). Mit dem Befehl BuildCommDCB wird dieser Kontrollblock initialisiert. Mit allen diesen Einstellungen wird nun die jeweilige serielle Schnittstelle über den Befehl SetCommState initialisiert. Um vom Empfangsspeicher Daten auszulesen, wird die API-Funktion ReadComm verwendet. Die Funktion WriteComm schreibt Daten in den Sendebuffer. Eine unangenehme Eigenschaft des WriteComm Befehls ist es Daten im Sendebuffer zu überschreiben, wenn nicht genügend Speicherplatz im FIFO-Buffer vorhanden ist. Darum muß mit der Funktion GetCommError die Größe des Freien Sendespeichers überprüft werden. Zu einem sauberen Beenden eines Programmes gehört auch, die serielle Schnittstelle mit dem Befehl CloseComm zu schließen.

Realisierung / Implementierung

Entwicklungsumgebung

Die Wahl der Programmiersprache und Laufzeitumgebung wurde vom Auftraggeber freigestellt. Als Entwicklungsumgebung wurde Delphi 1.0 ausgewählt. Die Vorteile sind kurze Entwicklungszeiten für graphische Oberflächen, einfache Ereignisbehandlung, objektorientierte Programmierung und leichte Einbindung der Windows API - Funktionen. Der Nachteil ist, das Delphi sich mit seiner Struktur Pascal ähnelt und große Differenzen zur weitverbreiteten C++ Syntax aufweist. Die Laufzeitumgebung ist Windows 3.1x und Windows 95. Nach einer Neucompilierung des Quellcodes mit Delphi 2.0 nutzt das Programm auch die weiterentwickelten API-32-Funktionen. Es wurde uns von der Firma Saft Nife eine Sicherheitsstrom-versorgungsanlage mit der aktuellsten Firmware-Version 2.04 zur Verfügung gestellt. Die ersten Wochen wurde der Kommunikationverkehr zwischen dem Programm multipro und der Anlage untersucht. Ein speziell für diese Anforderung geschaffenes serielles Kabel ermöglichte eine Überprüfung des Datenstromes durch einen zweiten Rechner. In der dritten Woche erhielt das Projektteam die Dokumentation des Bytebusprotokolls der Firma Hedon.

Befehlsbibliotheken

Befehlsbibliotheken werden in Delphi UNIT genannt. Jedes graphische Formular besitzt eine eigene Unit. Die Module Anlage_.pas, Fenster_.pas, Konfig_.pas beinhalten die Hauptklassen und besitzen keine Formulare. Die Unit STRUKTUR besitzt die Datenstruktur der Klassen TAnlage und TKonfig, da Records und Konstanten außerhalb von Klassen vereinbart werden müssen. Alle wichtigen Datenstrukturen sind in einer Klasse gebündelt, somit erhöht sich Übersichtlichkeit des Programmes.


Abbildung Befehlsbibliotheken

Das Modul main.pas steuert alle Ereignisse und ordnet diese den entsprechenden Prozeduren zu. Im Hauptdialog kann der Benutzer folgende Ereignisse auslösen:

Des Programm beginnt mit dem Einlesen der Konfigurationsdaten aus der multirem.ini. Der Timer wird gestartet und ließt Fragmentweise die Anlagedaten in die interne Datenstruktur des Programmes ein. Die Schaltflächen in der Werkzeugleiste lösen bei Betätigung Ereignisse aus. Folgende Schaltflächen stehen dem Benutzer zur Verfügung. Anlagedaten sichern bzw. wiederherstellen, Tagestest auslösen, Jahrestest auslösen, Konfiguration ändern, neues Paßwort eingeben, Hilfedokument und Beenden. Mit Betätigen der linken Maustaste auf dem vorher ausgewählten Zeichenobjekt wird die nächste Unterstruktur angezeigt. Mit Betätigen der rechten Maustaste auf ein zuvor ausgewähltes Hauptverteiler-Zeichenobjekt wird ein neuer Dialog geöffnet, welcher die Eigenschaften des Hauptgerätes anzeigt und in dem der benutzerdefinierte Name geändert werden kann. Alle anderen Zeichenobjekte haben keine Eigenschaften, es kann jedoch der benutzerdefinierte Name geändert werden. Mit der Betätigung der Schaltfläche "Zurück" werden die Zeichenobjekte eine Ebene höher angezeigt. Wird das Hauptfenster durch den Benutzer vergrößert, verkleinert, aus den Hintergrund geholt oder verschoben, wird der Inhalt des Hauptfensters nochmals gezeichnet. Die Klasse Anlage steuert die gesamte Kommunikation mit der Anlage. Jeder Anlage wird ein instanziertes Objekt zugewiesen. Zu einer späteren Firmware-Version werden mehrere Anlagen auf den seriellen Bus senden können. Jedes Anlagenobjekt erhält alle Daten und Methoden einer reellen Anlage. Bevor es zu einer Kommunikation kommt, müssen mehrere Vorbereitungen getroffen werden. Eine entsprechende serielle Schnittstelle wird konfiguriert und geöffnet. Dann wird der Timer gestartet und im Abstand von 250 ms werden Kommandos zur Anlage geschickt und auf eine Antwort des multi 0108 gewartet. Das erste Kommando schaltet die Anlage in den normalen Antwortmodus. Das zweite Kommando übermittelt die Fragmentlänge. Die Fragmentierung der Daten erhöht die Übertragungssicherheit. Das dritte Kommando ließt die Firmware-Version ein. Das Programm Multirem soll die Firmware-Version 2.x unterstützen. Wird eine niedrigere Versionnummer ausgelesen, wird das Programm mit einem Hinweisdialog beendet. Mit allen weiteren Kommandos wird die gesamte Konfiguration der Anlage eingelesen. Die Konfigurationsdaten werden über Zeigeroperationen direkt in die interne Datenstruktur geschrieben und auf dem Bildschirm angezeigt. Die Klasse Fenster besitzt Methoden und Daten um diese Daten zu visualisieren. Das Programm Multirem teilt die Struktur der Anlage in vier Ebenen auf: Anzeige aller angeschlossenen multi 0108, der Haupt- und Unterstationen (US), der Gruppeneingänge (GE) und der geschalteten Endstromkreise (GEK) mit zugehörigen Leuchtmitteln. Weiterhin können alle Eigenschaften des multi 0108 angezeigt werden. Um die serielle Schnittstelle und die Passwörter zu konfigurieren ließt bzw. schreibt die Klasse Konfig die entsprechenden Daten in die Konfigurationsdatei Multirem.ini. Das multi 0108 sendet mit 9600 Baud und jeder Datenblock besteht aus 8 Datenbits, 1 Stopbit und besitzt kein Paritätsbit.

Ereignisse (Events)

Windows ist ein dynamisches System, das bedeutet, daß die Methode des linearen sequentiellen Programmablaufes transformiert und wesentlich verbessert wurde . Es wird auf ein bestimmtes Ereignis gewartet und dieses wird von einem Programm ausgewertet. Diese Programmiermethode mindert die Rechnerauslastung und ermöglicht das Multitasking. Multitasking heißt, daß mehrere Programme parallel ablaufen können.


EVENTHANDLER

 

Starte Programm

 

Öffne serielle Schnittstelle

 

neues Passwort

 

Passwort 2x eingeben

 

neu Passwort-Dialog

 

Worte Überprüfen

 

Felder freischalten

 

starte Timer

 

lade Konfiguration

 
Abbildung Eventbehandlung


Methoden und Daten der Klasse TKonfiguration

Die Klasse TKonfiguration arbeitet mit der Konfiguration des Programmes, Passwörtern und der seriellen Schnittstelle.


Daten dieser Klasse:

KonfigIO        

TKonfigIO;

Konfigurationsstruktur

PasswortRichtig 

Byte

Status des Benutzers; 0-Beobachter; 1 - User; 2- Master; 3- Servicetechniker

comport

integer;

Nummer der geöffneten COM-Schnittstelle


Konstruktor dieser Klasse:          

Create


Konfiguration:

lade

Lade die letzten Einstellung aus multirem.ini

speicher;

speichere die aktuelle Einstellung

setzeKonfiguration

Setze die aktuelle Einstellung


Die Arbeit mit Passwörtern:

PasswortTesten (passwort:String)

eingegebenes Passwort überprüfen und Variable PasswortRichtig setzen

PasswortErstellung

neues Passwort eingeben


serielle Schnittstelle öffnen:

VerbindungAufnehmen:integer

serielle Schnittstelle öffnen, gibt den Fehlerstatus zum Hauptprogramm zurück

Methoden und Daten der Klasse TAnlage:

Die Klasse TAnlage kapselt die Methoden und Daten für die Kommunikation mit einer Anlage. So können mehrere Anlagen sinnvoll verwaltet werden. Jeder multi 0108 wird ein instanziertes Objekt zugewiesen. Ein Timer ruft alle 250 ms die Methode "Kommunikation" auf, um die Initialisierung der Datenstruktur und die Überwachung der Sicherheitsbeleuchtungsanlage durchzuführen.


Status der Kommunikationfortschrittes: (boolean)

Verbunden

besteht eine Verbindung ?

send_framesize

Wurde Fragmentgröße Bestätigt

send_version

Wurde die Versionsnummer bestätigt ?

send_generalKonfig

Wurde Konfiguration zurückgeschickt ?

send_NetzWS1

Wurde die 1. Netzwerkstruktur eingelesen

send_NetzWS2

Wurde die 2. Netzwerkstruktur eingelesen

send_NetzWS3

Wurde die 3. Netzwerkstruktur eingelesen

abgeschickt

Wurde der jeweilige Befehl abgeschickt

warteAufAntwort

Befehl wurde abgeschickt, warte nun auf Antwort


Variablen für die Übertragung

HVT      

byte

Nummer des Hauptverteilers

Infobyte          

byte

Sende und Empfangsfolgenummer; Infobyte = rrr1sss0

SBlockbyte        

byte

Supervisor-layer beinhaltet Empfangsfolgenummer

RR                

boolean

Anlage bereit oder nicht bereit

count             

Integer

empfangene Daten ohne Start und Endblock

Fragmentfeld      

TFragmentfeld

ein Fragment; Länge 200 bytes

nextFragment      

byte

Nummer des Fragments


Daten von multi 0108:

AnzahlHVT          

byte

aktuelle Anzahl der Hauptverteiler

general            

Tgeneral

generelle Konfigurationsdaten

MeldespeicherGroesse

word

die Größe des Meldespeichers

versionsnummer     

word

aktuelle Firmware-Versionsnummer


Konstruktor dieser Klasse:

Create(HVT:byte)

initialisiere Daten für einen bestimmten HVT


Hier ist das Herzstück der Kommunikation:

Kommunikation

Strukturen einlesen u. Anlage überprüfen


Überprüft den Empfangsbuffer nach eingegangenen Nachrichten:

Rueckantwort:byte

kontrolliert den Empfangsbuffer


Kommandos die zur Anlage geschickt werden:

sendePing

schaltet Anlage in den normalen Antwortmodus

sendDisconnect

beendet die Verbindung mit der Anlage

ReseiveReady

sendet der Anlage : zum Empfang bereit

ReseiveNotReady

sendet der Anlage: zum Empfang nicht bereit

sendeFragmentlen

sendet  Fragmentlänge zur Anlage

Softwareversion_auslesen

fordert die Softwareversion an

generalKonfig_auslesen

fordert die Konfiguartion der Anlage an

sendeNetzWS1

Fordert die 1. Netzwerkstruktur an

starteTagestest

startet den Tagestest


zurückgesendete Antworten:

lese_generalKonfig

ließt die Konfiguration ein und setzt Variable general

lese_1Netzwerkstruktur

ließt 1. Netzwerkstruktur ein und setzt Variable NetzWS1

lese_2Netzwerkstruktur

ließt 2. Netzwerkstruktur ein und setzt Variable NetzWS2

lese_3Netzwerkstruktur

ließt 3. Netzwerkstruktur ein und setzt Variable NetzWS3

lese_alarmKonfig

ließt Alarmkonfiguration ein

lese_alarmGruppenKonfig

ließt Alarmgruppen Konfiguration ein

lese_BenutzerdefiniertenAlarm

ließt den benutzerdefinierten Alarm ein

lese_TagestestWerte

ließt die Tagestestwerte ein

lese_Meldespeicher

ließt den die Texte aus dem Meldespeicher

lese_Version

lese Firmware-Version aus

lese_messwerte

lese Messwete der Anlage aus

lese_GEKStromKreisTest

lese Werte der GEK's aus

lese_Leuchtentexte

lese Leuchtentexte aus

lese_2Netzwerkstruktur

lese 2. Netzwerkstruktur aus

lese_Betriebsstatus

lese Betriebsstatus aus

lese_3Netzwerkstruktur

lese 3. Netzwerkstruktur


Prozeduren für das Bytebus-Protokoll:

LeseDaten (len:word)

Lese komplettes Frame von der serielle Schnittstelle

DatenAuswertung

auswertung des User-frames

schreibeDaten (P: Pointer; len:longint; Kontrollbyte:byte; Fragment:byte)

schreibt komplettes Frame zur seriellen Schnittstelle

FragmentiereDaten (P:Pointer;len:longint)

bei einem Userframe müssen die Daten vorher fragmentiert werden

Infoframe (zugriff:boolean) : byte

erhöht die Sende- (zugriff=true) oder Empfangsfolgenummer (zugriff=false)

crcheck (p:pointer;len:longint; var crc1,crc2:byte)

berechnet die Kontrollbytes aus Daten

Bytestuffing (P:pointer;len:word;var newp:pointer;var newlen:word)

Nach einen Daten DLE wird noch ein DLE angehangen = "bytestuffing"

Befehlsbestaetigung (zeichenkette:string)

Status der der Übertragung


Lade und speichere Konfiguration der Anlage:

LadeEinstellung (Name:String)

stelle Konfiguartion einer Anlage wieder her

SpeicherEinstellung (Name:String)

rette Konfiguration einer Anlage

Methoden und Daten der Klasse TFenster

Die Klasse Fenster stellt die interne Datenstruktur graphisch dar. Vier Ebenen ermöglichen eine Übersichtliche Darstellung aller HVT's, US, GE's und GEK's mit allen Leuchtmitteln. Darüber hinaus werden die Systemeigenschaften eines Hauptgerätes angezeigt.


Daten dieser Klasse:

aktuelle_Ebene

Byte

Nummer der aktuellen Ebene

aktHVT, aktUS, aktGE, aktGEK

Integer

ausgewählter HVT, US, GE, GEK

mausX, mausY, MausTaste

Integer

Mausstatus


Konstruktor dieser Klasse:

Create


Zeige die Eigenschaften eines Hauptverteilers an:

EigenschaftHVT(NummerHVT :Byte)

Eigenschaftsdialog eines Hauptverteilers anzeigen


Zeichne und ermittle Komponenten in der aktuellen Ebene:

zeichneEbene

zeichne die aktuelle Ebene mit allen Komponenten

KomponenteErmitteln:Integer

Ermittle die angewählte Komponente


Zeichne jeweilige Komponente

zeichneHVT (nummer:integer; name:string;  bezeichner1, bezeichner2:string; status:boolean; fehler:boolean)

zeichnet ein Hauptverteiler-Zeichenobjekt

zeichneUS (nummer:integer; name:string; bezeichner1, bezeichner2:string; status:boolean; fehler:boolean)

zeichnet ein Unterstation - Zeichenobjekt

zeichneGE (nummer:integer; name:string; bezeichner1, bezeichner2:string; status:boolean; fehler:boolean)

zeichnet ein Gruppeneingang - Zeichenobjekt

zeichneGEK (nummer:integer; name:string; bezeichner:string; feld:T_Leuchten;  kreis1,kreis2:byte)

zeichnet ein Geschalteter-Endstromkreis-Zeichenobjekt

zeichneKomponente (x,y,nummer:integer; name:string;  bezeichner1, bezeichner2:string; status:boolean; fehler:boolean)

Zeichnet eine Komponente für einen HVT, US oder GE

mitte (s:String;max:integer):integer

zentriert einen Schriftzug



Abschließende Beurteilung des Projektes


Die Arbeit am Projekt teilte sich in den Teil Lasten- und Pflichtenheft-Erstellung und in den Teil der Programmerstellung. Nach zwei Wochen kristallisierten sich die Ansprüche der Auftraggebers heraus. In der dritten Woche erhielt die Gruppe die Dokumentation über das Bytebusprotokoll. So stand nur ein effektiver Zeitraum von 3 Wochen zur Programmierung des Programmes zur Verfügung. Das Projekt kann in diesem Umfang nicht von einem Programmierer allein bewältigt werden. In dem Zeitraum von 5 Wochen konnten alle wichtigen Bibliotheken für die Kommunikation mit der Anlage, zur Darstellung der Zeichenkomponenten und der Konfiguration des Programmes erstellt werden. Aufgabe für das nächste Programmiererteam ist unter anderem die Anpassung des Programms an die nachfolgenden Firmware-Versionen. Diese Versionen werden der Anlage ermöglichen, die Daten über ein Modem oder einer RS 422- Schnittstelle zu senden. Weiterhin konnte aus den oben genannten Zeitgründen das Pflichtenheft nicht vollständig erfüllt werden. Alle Masken und Dialoge konnten jedoch fertiggestellt werden. Zur Weiterführung dieses Softwareprojektes werden zwei erfahrene Delphi-Programmierer und ein Zeitraum von 2 bis 3 Monaten empfohlen. In vier Wochen Projektarbeit, abzüglich Einarbeitungszeit, müssen die Dialoge den vollständigen Funktionsumfang des Pflichtenheftes enthalten. Die Unterstützung der neuen Firmware wird voraussichtlich etwa einen Monat in Anspruch nehmen. Das Produkt überwacht multi 0108 Geräte, die in sensiblen Bereichen eingesetzt werden. Deshalb ist es sehr wichtig das Programm multirem unter Praxisbedingungen ausgiebig zu testen. Diese Testphase kann einen Zeitumfang von bis zu einen Monat annehmen.



Begriffserklärung



API       Das "Applikation Interface" ist eine Schnittstelle zwischen Anwendungsprogramm und Windowsfunktionen.

Bytestuffing                           Prinzip: Enthält die Linkschicht ein DLE wird nochmals ein DLE versendet, um Verwechslungen mit der Frameschicht zu vermeiden.

Bytebusprotokoll                               Vier-Schichten-Kommunikations-Modell der Firma Hedon.

CRC Der "Cyclic Redundancy Check" berechnet nach einem vorgegebenen Algorithmus zwei Prüfbytes aus den Daten der Linkschicht.

Delphi  Objektorientierte graphische Entwicklungsumgebung

DLE Zusammen mit dem nächsten Zeichen kennzeichnet DLE den Blockanfang (STX), das Blockende (ETX) oder Daten (DLE)

ETX Im Zusammenhang mit dem Zeichen DLE markiert ETX das Ende eines Übertragungsblockes.

Event    Anwendung wartet auf ein vorher definiertes Ereignis.

Firmware                               Die Versionsnummer der Software in der Notbeleuchtungsanlage.

Fragment                                Große Datenmengen werden in kleinere Datenblöcke geteilt.

GE In einem Gruppeneingang sind mehrere GEK's zusammengeschlossen.

GEK Der geschaltete Endstromkreis beschreibt die zwei elektrisch unabhängige Stromkreise an dem mehrere Leuchtmittel angeschlossen sind.

I-Block Der Informationsblock besteht aus einem Byte, welches die Sende-, Empfangsfolgenummer und den Anfang der Userschicht kennzeichnen.

HDLC "Hide Data Link Control" ist ein bitorientiertes Steuerungsverfahren zur Datenübermittlung nach DIN ISO 3309. Es wird in Schicht 2 und 3 des Bytebusprotokolls und Schicht 2 des OSI-Referenzmodells benutzt.

Hedon Niederländische Softwarefirma, welche multipro entwickelt.

HVT Der Hauptverteiler ist das Hauptmodul in der Notbeleuchtungsanlage.

Master  Steuert die Kommunikation zu anderen Geräten (Slaves).

multi 0108                             Sicherheitsstromversorgungssystem nach DIN VLE Norm 0108.

Multirem                                Programmname dieses Projektes - "Multi Remote".

Multipro                                 Programm der Firma Hedon - "Multi programing".

OSI-Referenzmodell Gedankenmodell, welches die Kommunikation in aufgabenbezogene (funktionale) Schichten teilt. (Wird beim ISDN-Datenprotokoll verwendet)

RS-232 Serielle Schnittstellennorm, die zwei Teilnehmer miteinander verbindet.

RS-422 Serielle Schnittstellennorm, die beliebig viele Teilnehmer miteinander verbindet.

Saft Nife                                alter Name des Auftraggebers, neuer Firmenname ist SiLiBat.

SiLiBat Name des Auftraggebers, alter Firmenname ist Saft Nife

S-Block Der Supervisory Block besteht aus einen Byte, welches den Status des Senders bzw. Empfängers darstellt.

SE Schalteingänge sind meist extern angebrachter Schalter.

Slave    Antwortet auf Kommandos des Masters.

STX Im Zusammenhang mit dem Zeichen DLE markiert das ETX den Anfang eines Übertragungsblocks.

Timer   Das Hauptprogramm wird in Intervallen unterbrochen und ein Unterprogramm gestartet.

U-Block           Der unnumerierte Block transportiert Steuerzeichen, welche den Empfangsstatus und die Empfangsfolgenummer beinhalten

UART Steuert den I/O Kontroller, der die Kommunikation mit anderen Geräten über die serielle Schnittstelle ermöglicht.

US Jede Unterstation ist einem Knoten zugeordnet. Jeder Knoten hat festgelegte Gruppeneingänge.








Quellennachweis:




Borland Delphi 2                   Doberenz/ Kowalski Hanser Verlag ISBN 3-446-18670-0

Delphi 2 in 21 Tagen Dan Osier SAMS ISBN 3-87791-869-7

Delphi 2                     Dirk Louis Markt & Technik ISBN 3-8272-5107-9

Windows intern                     Honekamp, Wilken Data Becker ISBN 3-89011-284-6

Delphi, die Referenz  Michael Starke TEWI Verlag ISBN 3-89011-284-6



HEDON electronic developments documention:


Bytebus message specification                (1998)

Bytebus protocol specification                (1991)

Functional specification               (1998)

Fragmented frame specification  (1996)

Configuration file (1997)


Borland C++ Quellcode des Programmes multipro version 2.04.