Projektdokumentaion

Transcrição

Projektdokumentaion
Entwicklung eines Steuerungsprogramms für einen
Extruder mit serieller Kommunikation in .NET mittels
Reverse Engineering
Semesterprojekt von
Martin Rahn (905473)
Florian Krabbenhöft (905431)
Betreuer:
Herr Prof. Dr. Ing. Kißig
Ansprechpartner im Fachbereich Maschinenwesen:
Frau Dipl. Ing. Wunderlich
Frau Prof. Dr. rer. nat. Mauritz-Boeck
Projekt zur Entwicklung einer Software für einen
Messstand der FH-Kiel im Fachbereich Maschinenbau
Beschreibung des Projekts
Eine Software, die unter MS DOS läuft, zur Steuerung eines Messstandes für den Extruder
PL2000, soll für Microsoft Windows neu entwickelt werden.
Projektplanung
•
•
•
•
•
•
•
Entwicklung einer Software zum Abhören der Seriellen- Schnittstelle
Aufnahme des Datenstroms von Computer (mit MS DOS Software) zum Messgerät
und umgekehrt.
Analyse des aufgezeichneten Protokolls
Entwicklung einer Software Schnittstelle zum Extruder
Entwicklung eines Testprogramms welches die wichtigsten Funktionen des Gerätes
prüft
Analyse und Design einer Benutzeroberfläche mit Hilfe von UML
Entwicklung des eigentliche Messprogramms
Ziel
Entwicklung eines Messprogramms für Windows 98 oder spätere Version mit folgenden
Funktionen:
• Einstellungsmöglichkeit der Heiztemperaturen in den 5 Heizzonen
• Messen der Temperaturen in den 5 Heizzonen
• Einstellung der Umdrehungsgeschwindigkeit der Schnecke des Extruders
• Aufnahme der Messdaten für den Druck, die Temperatur, das Drehmoment und der
Umdrehungsgeschwindigkeit des Extruders
• Einstellung der Abtastzeit für die Messdaten
• Unterstützung einer Exportfunktion für Microsoft Excel
Projektübersicht
1. Schritt „Analyse der alten Messeinrichtung“
Extruder
Alte Messstation
MS DOS
COM1
Der Extruder ist über den Comport 1 des Computers an den Extruder angeschlossen. Über
eine MS-DOS Software ist es so möglich, den Extruder zu steuern und Messdaten
aufzunehmen.
Dabei existieren 2 Programme:
• Ein Testprogramm: Testet alle Funktionen des Extruders
• Ein Messprogramm: Führt eine Messung mit dem Extruder durch
2. Schritt „Entwicklung einer Messeinrichtung zum
Mitprotokollieren“
Alte Messstation
MS DOS
Protokollrechner
Extruder
MS
Windows XP
COM1
COM1
COM2
„Nullmodem“ Kabel
Die Befehle zwischen alter Messstation und Extruder sollen von einem zweiten Rechner
mitprotokolliert und anschließend analysiert werden. Dabei werden die Daten von Comport1
auf Comport2 und umgekehrt übertragen und gleichzeitig in beide Richtungen
mitprotokolliert.
3. Schritt „Entwicklung der neuen Messeinrichtung“
neue Messstation
Extruder
MS
Windows XP
COM2
Der Protokollrechner wird zur neuen Messstation und neue Test- und Messsoftware für diese
Rechner auf Basis der analysierten Protokolle geschrieben.
Aus dem Grund heraus, dass die neue Messstation einmal der Protokollrechner gewesen ist,
wird der Extruder nun an Comport2 angeschlossen. Das Programm ermöglicht jedoch auch
den Anschluss an den Comport1.
3.1 Entwicklung des Testprogramms
Zunächst ist ein Testprogramm entwickelt worden mit dem die Initialisierung getestet worden
ist sowie die grundlegenden Funktionen des Extruders.
3.2 Entwicklung des Messprogramms
Der letzte Schritt ist es schließlich, ein dem alten Programm entsprechendes Messprogramm
zu entwickeln, welches in einstellbaren Zeitabständen Messdaten in eine Excel-Tabelle
aufnimmt.
Die Extruder Schnittstelle
Ergebnisse der Protokollanalyse
Einstellung der RS232 – Schnittstelle
Zur Kommunikation mit dem Extruder müssen folgende Einstellungen vorgenommen werden:
Baudrate:
9600 baud/sec
Daten Byte Größe: 8 Bit
Parität:
keine Parität
Anzahl der Stop Bits: 1 Bit
genutztes Protokoll: keins
Es handelt sich dabei um eine asynchrone serielle Datenübertragung, die durch einen eigenen
Software Handshake gesteuert wird.
Aufbau eines Extruder-Befehls und dessen Antwort
•
•
•
Der Extruder Befehl wird wie gefolgt gekapselt:
<DC1><STX>(Befehl)<ETX>
Antwort des Extruders (n = 0..50):
<ACK><CR>(s1)<CR>(s2)<CR>(s3)<CR>...<CR>(sn)<CR><ETX><CR>
s1, s2, s3, sn: Sind dabei Strings wobei die Kürzeste Antwort überhaupt keine Strings
enthält.
Abschluss des Extruder Befehls:
Bevor dieser gesendet wird muss garantiert sein das die Antwort bereits empfangen
worden ist.
Der Abschluss erfolgt durch folgendes Steuerzeichen
<DC3>
Initialisieren des Extruder-Interfaces
Zu Initialisierung des Extruders muss zunächst ein Initialisierungsprogramm übertragen
werden.
1. Zunächst wird überprüft ob der Speicher des Extruders gefüllt ist oder nicht. Dazu
dient folgender Befehl:
<DC1><DC3><DC1><STX>0RB,<ETX>...<DC3>
Dabei dienen die beiden zusätzlich führenden Steuerzeichen zum Prüfen der
Verbindung.
2. Die Antwort des Extruders sollte darauf lauten:
<ACK><CR>0005<CR><ETX><CR>
Dabei können die folgenden Zahlen zurückgegeben werden mit der Bedeutung:
0005: Der Speicher des Extruder ist leer
FF38: Test-Initialisierungsprogramm im Speicher. (pl2000pr.200)
FFC9: Mess-Initialisierungsprogramm im Speicher. (pl200pr.055)
3. Sollte der Speicher nicht leer sein und das geforderte Initialisierungsprogramm sich
nicht im Speicher befinden muss das vorhandene Programm zunächst gelöscht
werden. Dazu dient folgender Befehl:
<DC1><STX>0CB,<ETX>...<DC3>
Die Antwortet sollt darauf lauten:
<ACK><CR><ETX><CR>
4. Übertragen des Initialisierungsprogramms:
Dazu dient folgender Befehl:
<DC1><STX>0RP,1FFD,41FB,<ETX>
Wobei bei den unterschiedlichen Intiaisierungsprogrammen eine andere Zahl
angegeben werden muss:
41FB: Kennung für das Testprogramm
6068: Kennung für das Messprogramm
Der Extruder antwortet:
<ACK><CR>
5. Worauf das eigentliche Programm zu übertragen ist:
Die folgenden Dateien sind dabei auszulesen und zu übertragen und die folgenden
Endungen noch anzufügen.
Das Testprogramm:
Programmdatei: pl2000pr.200
Ende: <NULL><NULL><NULL><00E4><0060>
Das Messprogramm:
Programmdatei: pl2000pr.055
Ende: <NULL><NULL><00EF><0064>
Im Erfolgsfall Antwortet der Extruder mit:
<ETX><CR>
andernfalls mit <ESC><CR> oder <NAK><CR>
Bekannte Befehle des Extruders
Erläuterungen
Bei den meisten Befehlen wird nur mit einer kurzen Bestätigung durch den Extruder
geantwortet:
<ACK><CR><ETX><CR>
Nur bei einer umfangreicheren Antwort wird deshalb noch auf die Antwort eingegangen.
... bedeutet dass eine entsprechende Antwort erwartet wird.
1. Beeper steuern
Beeper einschalten:
<DC1><STX>0BE,1,<ETX> ... <DC3>
Beeper ausschalten:
<DC1><STX>0BE,0,<ETX> ... <DC3>
2. Pumpe steuern
Pumpe einschalten:
<DC1><STX>0PU,1,<ETX> ... <DC3>
Pumpe ausschalten:
<DC1><STX>0PU,0<ETX> ... <DC3>
3. Kühlung steuern
Der Befehl lautet:
<DC1><STX>0EW,30,31,23,45,30,30,31,31,2E,3,<ETX> ... <DC3>
Dabei gibt man über die 2. Zahl an, welche Zone im Extruder angesprochen wird:
31 : Zone 1
32: Zone 2
33: Zone 3
...
Über die beiden markierten hinteren zwei Zahlen wird der Status angegeben an oder aus:
30,30 : Die Kühlung soll ausgeschaltet werden.
31,31 : Die Kühlung soll eingeschaltet werden.
Einstellungen sichern:
<DC1><STX>0M1,<ETX><DC3>
4. Heizung steuern
Die Heizung kann in zwei verschiedenen Modi betrieben werden.
1. Einstellung der Heizleistung
2. Vorgabe einer Solltemperatur
4.1 Einstellung der Heizleistung
Dabei sollte folgende Einstellungen für jede einzelne Zone durchgeführt werden, um den
Modus zur Einstellung der Heizleitung zu aktivieren.
<DC1><STX>OEW,30,31,53,57,3E,38,30,30,31,3,<ETX> ... <DC3>
Die Antwort sollte dabei sein wenn alles funktioniert hat:
<ACK><CR>0000<CR><ETX><CR>
Dabei gibt man über die 2. Zahl an, welche Zone im Extruder angesprochen wird:
31 : Zone 1
32: Zone 2
33: Zone 3
...
Einstellungen sichern:
<DC1><STX>0M1,<ETX><DC3>
Die eigentliche Heizungsansteuerung:
Der Befehl lautet:
<DC1><STX>0EW,30,31,4F,50,30,35,30,2E,30,3,<ETX> ... <DC3>
Die Antwort sollte dabei sein wenn alles funktioniert hat:
<ACK><CR>0000<CR><ETX><CR>
Dabei gibt man über die 2. Zahl an, welche Zone im Extruder angesprochen wird:
31 : Zone 1
32: Zone 2
33: Zone 3
...
Einstellungen sichern:
<DC1><STX>0M1,<ETX><DC3>
Über die markierten hinteren Zahlen wird die Leistung der Heizung eingestellt,
dabei wird ein Prozentwert eingestellt, welcher in hexadezimaler Form kodiert ist.
Hier einige Beispiele:
30,30,30,
30,35,30,
31,30,30,
- 0% Die Heizung ist ausgeschaltet
- 50% Heizleistung
- 100% Heizleistung
4.2 Vorgabe einer Solltemperatur
Dabei sollte folgende Einstellungen für jede einzelne Zone durchgeführt werden, um den
Modus zur Einstellung der Solltemperatur zu aktivieren.
<DC1><STX>OEW,30,31,53,57,3E,38,30,30,31,3,<ETX> ... <DC3>
Die Antwort sollte dabei sein wenn alles funktioniert hat:
<ACK><CR>0000<CR><ETX><CR>
Einstellungen sichern:
<DC1><STX>0M1,<ETX><DC3>
Die eigentliche Heizungsansteuerung:
Der Befehl lautet
<DC1><STX>OSC,1,120,<ETX> ... <DC3>
Die erste 1 gibt an welche Zone eingestellt werden soll hier Zone 1.
1: Zone 1
2: Zone 2
...
Die folgende Zahl gibt die Solltemperatur an hier 120 was bedeutet die Heizung soll eine
Solltemperatur von 120°C erreichen.
Bestätigung der Heizungseinstellung
<DC1><STX>0M1,<ETX><DC3>
5. Mess-Datenblock auslesen
Datenblock der Messdaten sollen ausgelesen werden
<DC1><STX>0M1,<ETX><DC3>
Nachfragen ob der Datenblock schon zur Verfügung steht
<DC1><STX>0ST,<ETX><DC3>
Antwort des Extruders:
<ACK><CR>000C<CR>0008<CR>0000<CR>0001<CR><ETX><CR>
Es muss 000C zurückgegeben werden, wobei signalisiert wird, dass der Block bereit steht
ausgelesen zu werden. Steht eine kleinere Zahl an dieser Stelle, so steht der Datenblock noch
nicht zur Verfügung und es muss noch gewartet werden.
Datenblock anfordern:
<DC1><STX>0G1,<ETX><DC3>
Die Antwort ist der Messdatenblock:
Geschwindigkeit in DIG
Drehmoment in DIG
<ACK><CR>0000<CR>0000<CR>0000<CR>0000<CR>0000<CR>0000<CR>
4 zusätzliche
-?Temperaturmessungen in DIG
00AA<CR>003D<CR>003B<CR>0039<CR>02FB<CR>02FB<CR>02FA<CR>02FB<C
R> Gültiger Temperaturwert
Temperaturmessungen in °C in den 8 möglichen Heizzonen
0042<CR>0049<CR>0048<CR>0042<CR>0038<CR>0000<CR>0000<CR>0000<C
R>
Gültige Temperaturwerte
8 mögliche Druckmessungen in DIG
0246<CR>0494<CR>0563<CR>0000<CR>0000<CR>0001<CR>0000<CR>0000<C
R>
gültiger Druckwert
FFFF<CR><ETX><CR>
Endekennung
Beenden der Messdatenabfrage:
<DC1><STX>0CV,<ETX><DC3>
Die meisten Daten werden in DIG übertragen und müssen mit einem Faktor multipliziert
werden um den entsprechenden Wert in °C, bar, Nm oder 1/min zu erhalten. Diese Faktoren
sind durch Vergleichswerte aus früheren Messungen ermittelt worden und können daher noch
ungenau sein.
6. Geschwindigkeit der Schnecke einstellen
Der Befehl lautet:
<DC1><STX>0SR,1,7FF,<ETX> ... <DC3>
Es sind zwei verschieden Geschwindigkeitseinstellungen möglich, wobei nur die erste
Einstellung vom Extruder unterstützt wird für die Schnecke.
Die folgende Zahl gibt dabei die Geschwindigkeit vor.
0x7FF bedeutet dabei = 0 RPM
Die Umrechnung für alle folgenden Geschwindigkeitseinstellungen sieht dabei wie folgt aus
0x800 + (0x11 * sp) wobei „sp“ die Geschwindigkeit in RPM angibt
Beschreibung für Programmierer
Anforderungen für die Programmentwicklung
Das Programm ist für das .NET Framework 1.1 von Microsoft entwickelt und mit dem C#
Builder von Borland geschrieben worden. Darum ist sicherzustellen dass eine
Entwicklungsumgebung für das .NET Framework 1.1 oder neuer installiert ist.
Um Daten in einer Excel-Tabelle einzutragen und sie grafisch aufbereitet darzustellen sind
ActiveX Elemente des Microsoft Office XP Paketes verwendet worden. Deshalb ist
sicherzustellen, dass Microsoft Office XP oder die zugehörigen Web Components installiert
sind.
Übersicht der Klassen
In diesem Abschnitt werden die wichtigsten Klassen besprochen die im Extruder
Messprogramm ihre Verwendung finden um mit dem Extruder zu kommunizieren.
Pakete
•
•
•
ExtruderMess
Enthält alle Klassen des eigentlichen Messprogramms wie eine Klasse für das Fenster
und deren einzelnen Steuerelementen, sowie Klassen für die Datenhaltung
Devices
Enthält Klassen zur Kommunikation zum Extruder.
Win32API
Abbildung der Win32API in den Namensraum von C#.
Klassen
•
Grüne Klassen (darstellende Klassen)
o WinForm
Repräsentiert die Klasse des Hauptfensters der Anwendung ExtruderMess, das
sich in drei Blöcke einteilen lässt: einem Teil zum Setzen der Anfangsdaten,
einer Messeinrichtung und einer Oberfläche zum Nachbearbeiten.
o SetupControl
Beschreibt alle Steuerelemente zum Setzen der Anfangswerte.
•
•
o MeasurementControl
Beschreibt alle Steuerelemente zur Messung mit dem Extruder.
o ExportControl
Enthält alle Steuerelemente zur Nachbearbeitung der gemessenen Daten und
deren Weiterverarbeitung in MS Excel.
Gelbe Klassen (Datenhaltungsklassen)
o PreSettings
In dieser Klasse sind alle Messbedingungen festgehalten.
o ArrayList
Enthält alle Messdaten, welche nacheinander in dieser Liste gespeichert
werden.
o MessStruct
Stellt eine Struktur der Messdaten dar, die in der Messliste eingetragen werden.
Rote Klassen (Hardwarenahe Klassen)
o Extruder
Ist eine Ableitung von ExtruderDevice und übersetzt Funktionen in C# gängige
Elemente wie Eigenschaften und enthält Funktionen zum Umgang mit
Threads.
o ExtruderDevice
Enthält die gesamte Funktionalität des Extruders.
o CommPort
Repräsentiert eine serielle Schnittstelle des Computers.
o AdvAPI32, WinBase und Kernel32
Kapselung von Win32-API-Funktionen
Die CommPort Schnittstelle
Diese Klasse stellt alle Funktionen zur Verfügung, um über die serielle Schnittstelle des
Computers mit einem anderen Gerät zu kommunizieren.
Diese Klasse wird von der folgenden Klasse ExtruderDevice genutzt, um mit dem Extruder
Daten auszutauschen. Dabei muss die Schnittstelle richtig eingestellt werden. (siehe Extruder
Interface)
Die Einstellung der unterschiedlichen Attribute wie Baud-Rate, Größe der Daten usw. erfolgt
über Eigenschaften.
Die Extruder Schnittstelle
Diese Klasse enthält alle Befehle, die nötig sind mit dem Extruder zu kommunizieren.
Die Klasse verwendet die serielle Schnittstelle, um eine Verbindung zum Extruder
herzustellen. So übergibt man dem Konstruktor ExtruderDevice(id: CommIdVal) die
Nummer der seriellen Schnittstelle.
Damit man mit dem Extruder „sprechen“ kann, muss zunächst ein Programm übertragen
werden.
Die Funktion TransmitProg übernimmt dies. Dabei gibt es drei Möglichkeiten, welche im
Datentyp ProgType eingetragen sind
1. EMPTY: Stellt sicher, dass sich kein Programm im Extruder befindet.
2. TEST: einfaches Testprogramm mit dem die Funktionen des Extruders getestet
werden
(Vorsichtig teilweise instabil!)
3. MESS: Das Programm mit dem die Messungen durchgeführt werden sollten, da es am
zuverlässigsten arbeitet.
Die Messdaten werden dabei nicht als atomare Werte zurückgegeben, sondern in Strukturen.
Diese Strukturen enthalten den entsprechenden Messwert des Extruders in DIG (eine Extruder
eigene Einheit), einen Faktor zur Umrechnung in die entsprechende SI-Einheit und den
Messwert in der SI-Einheit. Beim Druck kommt zudem auch noch ein Nullpunkt (in DIG)
hinzu, der dementsprechend kalibriert werden muss, welches die Methode
calibratePressureZeroPoint() übernimmt.
Was auffällt ist, dass man an die eigentlichen Messdaten nicht herankommt, da sie geschützt
sind, deshalb muss man von dieser Klasse eine abgeleitete Klasse bilden, welche einen
Zugriff erlaubt.
Dies übernimmt die Klasse Extruder.
Sie stellt im Wesentlichen Eigenschaften und schreibgeschützten Zugriff auf die Messdaten
bereit und enthält einige Methoden, die das Multithreading der Messdatenabfrage regeln.
Extrudermessprogramm – Benutzeranleitung
Voraussetzungen
Dieses Messprogramm dient der Steuerung und Aufnahme der Messdaten eines Extruders mit
PL/2000-Interface der Firma Brabender.
Das Programm erfordert die Installation des Microsoft .NET-Frameworks in der Version 1.1,
mit installiertem .NET-Servicepack 1. Im Weiteren gelten die Hard- und SoftwareVoraussetzungen des Microsoft .NET-Frameworks.
Darüber hinaus muss das PL/2000-Interface über eine serielle Schnittstelle an den PC
angeschlossen sein.
Initialisierung
Nach dem Programmstart erscheint das Dialogfeld Initialisierung des Extruders. Das
Programm tritt nun in Kommunikation mit dem Extruder, überprüft ihn und setzt alle Werte
auf einen Anfangszustand zurück. Tritt kein Fehler auf, so wird im Anschluss das
Hauptfenster geöffnet. Im Fehlerfall wird eine Meldung ausgegeben, und das Programm wird
durch Klick auf die Schaltfläche Schließen beendet. Die häufigste Fehlerursache ist ein nicht
korrekter Anschluss des Extruders. Falls ein Fehler auftritt, überprüfen Sie daher die serielle
Verbindung vom PC zum PL/2000-Interface und ob selbiges eingeschaltet ist.
Hauptfenster
Das Hauptfenster ist in drei Reiter eingeteilt: Voreinstellungen, Messung und
Nachbearbeitung. Während der Messung selbst ist nur die Messung-Registerkarte verfügbar.
Voreinstellungen
In diesem Dialog werden versuchsbezogene Informationen eingegeben.
Bei den Kategorien Allgemeines, Extruder-Bedingungen und Material-Bedingungen handelt
es sich um rein informative Einstellungen, die im Anschluss zusammen mit den Messdaten
gespeichert werden. Die meisten dieser Daten werden aus vorherigen Versuchen geladen, und
das Programm bietet weitere Daten aus vergangenen Sitzungen zum Auswählen an.
In der Kategorie Interface befindet sich die Einstellung CommPort, die auf COM1 oder
COM2 eingestellt werden kann und die zur Kommunikation mit dem Extruder verwendete
serielle Schnittstelle angibt.
Die Kategorie Tuning-Parameter ermöglicht eine genauere Justierung der Messdaten. Der
Extruder liefert für Druck, Drehzahl, Drehmoment und den zusätzlichen Temperatursensor
Werte, die erst mit den entsprechenden Faktoren multipliziert den tatsächlichen Wert in der
richtigen Einheit ergeben. Die Tuning-Parameter sollten normalerweise nicht verändert
werden. Sollte jedoch in den Messergebnissen eine proportionale Abweichung zu den
tatsächlichen Werten feststellbar sein, kann diese mit den Faktoren ausgeglichen werden. Die
Faktoren werden zu diesem Zweck auch in der Excel-Tabelle gespeichert.
Messung
Der obere Teil dieses Dialogs zeigt eine schematische Ansicht des Extruders. Hier können
Drehzahl und die fünf Heiztemperaturen für den Versuch eingegeben werden, darunter
werden die momentanen Werte angezeigt. Werden die Werte über die Pfeil-Schaltflächen
verändert oder wird nach der Eingabe die Eingabetaste gedrückt, so werden sie sofort an den
Extruder übertragen. Dies macht sich durch eine kurze Verzögerung bemerkbar.
Zusätzlich sind die Werte für den zusätzlichen Temperaturfühler (oben) und den Druckmesser
(unten) abzulesen.
Im unteren Teil werden die Diagramme mit den gemessenen Werten angezeigt. Die vier
Schaltflächen Drehmoment, Temperatur, Druck und Geschwindigkeit aktivieren oder
deaktivieren die Anzeige des jeweiligen Diagramms.
Die Schaltflächen Start und Stopp starten und stoppen die Messung, also die Aufzeichnung
der Messdaten. Während der Messung können die voreingestellten Heiztemperaturen nicht
mehr verändert werden, die Drehzahl kann jedoch jederzeit neu eingestellt werden. Die Reiter
Voreinstellungen und Nachbearbeitung sind während der Messung ebenfalls nicht verfügbar.
Die Schaltfläche Reset löscht alle Messdaten nach bestätigter Sicherheitsabfrage
unwiderruflich.
Nachbearbeitung
Dieser Dialog zeigt im Wesentlichen die Excel-Tabelle an, die die Messdaten und
Voreinstellungen enthält. Die Tabelle ist schreibgeschützt.
Zusätzlich sind zwei Schaltflächen enthalten, die diese Tabelle direkt in Excel öffnen oder sie
als Excel-Tabelle speichern.

Documentos relacionados