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.