Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
  


informatik artikel (Interpretation und charakterisierung)

Mail

Realisierung / implementierung


1. Java
2. Viren

1.1. Allgemeines In der Testphase wurde der Eprom-Baustein mit einem Bootstrapprogramm beschrieben. Dieses 8K Byte große Programm liefert Debug-Informationen an den PC. Über die serielle Schnittstelle wird das Hochregalroboter-programm mit dem Programm Term95 auf das RAM geschrieben. Die Projektsoftware muß im Adressbereich 2000h-3FFFh organisiert werden, da hier der RAM-Bereich liegt. Es wurde ein Shareware-Crossassembler benutzt, welcher über Internet bezogen wurde.

1.2. Befehlsbibleothek
Die Befehlsbibleothek enthält elementare Funktionen zum Ansteuern des Displays, der Tastatur und des Roboters.
1.2.1. Display:

. Zeichen ausgeben
. Befehl an das Display schicken

. Display initialisieren
. Display löschen
. Zeichenkette vom ROM lesen und auf Display ausgeben


Das Unterprogramm DISPLAY hat die Aufgabe den Buchstaben, welcher im Akkumulator liegt, auf dem Display anzuzeigen. Da das Display wie langsamer RAM-Speicher angesprochen wird, muß mit Hilfe des Busy-Signals auf das Display gewartet werden. Erst dann können die Daten an die Adresse E003 geschickt werden. DISPLAY_BEFEHL funktioniert ähnlich wie die Subroutine DISPLAY, hier wird jedoch ein Befehlsbyte zum Display, an die Adresse E001 gesendet. Diese beiden Funktionen sind Grundlage für alle weiteren Displayfunktionen.Das Display wird in der Subroutine "DISPINI" initialiesiert. Der Display-Controller wird in den 2 Zeilenmodus-geschalten, der Bildschirm wird gelöscht, das automatische Weiterbewegen des Cursors wird angeschalten und als letzes wird der Cursor ausgestellt. Die Funktion "DISPCLR" löscht den Bildschirm. Die Funktion "CURSOR" ließt aus dem Akkumulator die Cursorposition. Die erste Position der Zeile 1 hat dem Wert 00h, die erste Position in Zeile 2 wird mit Cursorwert 40h aktiviert. Mit dem Befehl DB können Daten und Zeichenketten ins ROM abgelegt werden. Die Subroutine "ROM2DISP" bedient sich desMaschienenbefehles MOVC, der diese Zeichenketten aus dem ROM ausliest. Eine Zeichenkette ist definiert als Menge von ASCII-Zeichen, die mit dem Byte 0 abgeschlossen wird. Das DPTR-Register enthält die Adresse des Strings und eine Anzahl von 256 Zeichen kann eingelesen werden.

1.2.2. Tastatur:
. Taste einlesen

. Zeichenkette einlesen
. 2 Byte String in eine Dezimalzahl umwandeln

. Tastaturstatus übergeben

Als Eingabemedium wird eine 3x4 Tastaturmatrix verwendet. Die Tastatur schickt an die Adresse ein Byte, welches den momentanen Status der Tastatur zurückgibt. Die Funktion "TASTE" ließt ein Zeichen von Tastatur, wandelt dieses Zeichen in ein ASCII-Zeichen um und legt diesen Wert in den Akkumulator ab. Die Tastaturmatrix muß über die Software entprellt werden. Das erledigt eine sehr kurze Warteschleife, danach wird noch ein Zeichen vom Eingabegerät gelesen und mit dem vorherigen Zeichen verglichen. Sind beide Zeichen gleich, hat ist die Taste immer noch gedrückt. Das Zeichen wird erst an das Hauptprogramm zurückgegeben, wenn der Benutzer die Taste losläßt. Die Subroutine "READLN" nutzt diese Funktion, um ein komplette Zeichenkette von der Tastatur zu lesen. Die Eingabe wird mit dem Enterzeichen oder mit der maximalen Anzahl der Zeichen beendet. Mit der Cancel-Taste kann jederzeit die Eingabe abgebrochen werden. Mit dem Unterprogramm "STR2DEZ" kann eine mehrstellige Zahl, welche im ASCII-Code im Speicher liegt, in eine Dezimalzahl umgewandelt werden.
1.2.3. Motorsteuerung:

. Drehe Motor
. automatische Motorsteuerung nach dem Linienalgorithmus von Breesenham

. manuelle Motorsteuerung
. PC-Steuerung

. Motorstatus ausgeben
Die Subroutine DREH übermittelt den Akkumulatorinhalt an die Adresse C000h des Motors 96 mal hintereinander. Damit bewegt sich der Greifer um einen Millimeter. Zwischen den Motoraufrufen befindet sich eine Warteschleife von 4 ms. Weiterhin ruft diese Routine die Funktion Motor_status auf. Es wird getestet, ob einer der Endtaster bereits betätigt ist. Ist dies der Fall, wird der Akkumulatorinhalt so modifiziert, daß sich der Greifer vom jeweiligen Endtaster wegbewegt. Die Ansteuerung der einzelnen Motoren ist weiter oben beim Themapunkt Grundlagen erklärt. Die Funktion "MOTOR" fährt automatisch von Position 0 zu einen angegebenen Fach und nimmt einen Gegenstand auf oder legt diesen ab. Der Funktion müssen zwei Werte übergeben werden. Im Register R0 befindet sich die horizontale Position des Faches und im Register R1 wird die vertikale Position übergeben. Um die nötige Auflösung zu erhalten, werden die X- und Y-Koordinaten mit den Fachabständen multipliziert, daraus ergibt sich eine 16-Bit Information. Die Register R3,R5 sind die Lowbytes und die Register R4, R6 sind die High-Bytes der beiden Koordinaten. Mit den Anfangskoordinaten (0 , 0) und den Endkoordinaten bewegt der Roboter seinen Greifer auf einer Linie. Ein schneller Linienalgorithmus ist der Bresenham-Algorithmus. Beide 16-Bit Zahlen werden verglichen. Ist der Anstieg in X größer als Anstieg in Y, wird der Programmteil "ABARBEITUNGX" aufgerufen, ist der Y-Anstieg jedoch größer, wird die Subroutine "ABARBEITUNGY" aufgerufen. Der Breesenham-Algorithmus funktioniert nun folgendermaßen. Der Roboter bewegt sich Schritt für Schritt auf der ausgewählten Achse und benutzt das 16-Bit Hilfsregister zum testen. Das Hilfsregister wird um den maximalen Achsenwert der kürzeren Seite erhöht. Das Hilfsregister wird mit der längeren Seite verglichen. Ist das Hilfsregister größer, wird der der Robotor vertikal und horizontal bewegt und das Hilfregister gelöscht, ansonsten wird der Roboter nur horzontal bewegt. Die Prozedur "manuell_Steuern" fragt ständig den Tastaturstatus mit dem Befehl "Press" ab. Ist die Taste "cancel" gedrückt, wird aus dem Programm gesprungen und zum Hauptmenu zurückgekehrt. Die anderen Tasten werden weiter ausgewertet und in den Code der Motorsteuerung umgewandelt. Mit diesem Parameter, der im Akkumulator liegt, wird die Funktion "Dreh" aufgerufen. Die Cursorsteuerung bewegt den Greifer horizontal und Vertikal, Taste "0" und "Enter" bewegen den Greifer vor und zurück. Die Funktion "PC-Steuerung" wartet auf ein Zeichen von der Seriellen Schnittstelle. Dieses Warten kann mit der Taste "Abbruch" beendet werden und der Benutzer kehrt zum Hauptprogramm zurück. Wird ein Wert vom PC empfangen, wertet der Mircocontroller dieses Byte aus, welches die Nummer der Funktion beinhaltet. Der Funktion müssen jedoch noch Parameter übergeben werden. Also wartet der Mircocontroller auf weitere Daten. Wenn alle notwendige Daten übermittelt wurden, wird die Funktion mit diesen Parametern gestartet. Ist die Funktion beendet schickt der Mircocomputer dem PC ein Signal , welches die Bereitschaft bekannt gibt, neue Befehle aufzunehmen.

1.2.4. Serielle Schnittstelle zum PC
Die Prozeduren für die serielle Schnittstelle liegen in der Befehlsbibliothek "motor.mak" und ist unter PC-Steuerung zu finden. Die Register werden initialisiert. Der serielle Modus 1, 8 bit UART und 4800 Baud wird eingestellt und der Timer1 wird gestartet. Der Mircrocontroller wartet auf einen Datenbyte. Dieses Byte gibt an, wie der Roboter sich bewegt. Der ASCII-Code der numerischen Tastatur übernimmt die Funktion der Steuerung. Nur die Tasten "+" und "-" varieren zum 3x4 Tastaturblock. Bei Betätigung dieser Tasten wird der Greifer vor und zurück bewegt. Wenn der auzuführende Prozess des Mircocontrollers beendet ist, schickt das Programm ein Zeichen zum PC. Damit gibt der Mircocontroller dem PC bekannt, daß er neue Befehlsdaten emfangen kann.

1.3. Hauptprogramm des Hochregalroboters

1.3.1. Bedienung

Der Benutzer kann ohne Vorkennis den Roboter bedienen. Dies ist durch eine intuitive Menusteuerung möglich:









1

links/hoch 2
hoch 3

rechts/hoch
4

links 5 6
rechts

7
links/runter 8

runter 9
rechts/runter

Abbruch 0
Greifer vor Bestätigen

Greifer zurück




Menüsteuerung im Programm des
Hochregalroboters



Mehrfachbelegung der 3x4 Tastaturmatrix

Der jeweilige Menupunkt wird mit den Cursortasten ausgewählt und mit der Taste "Bestätigen" aktiviert. Der Punkt "Ablegen" fordert die Fachnummer vom Benutzer. Nach der Eingabe fährt der Roboter das gewünschte Fach an, legt den Gegenstand ab und kehrt zum Ausgangspunkt zurück. Der Menupunkt "Nehmen" fährt nach der Eingabe das gewünschte Fach an , nimmt den Gegenstand und kehrt zur Anfangsposition zurück. Der Benutzer hat weiterhin die Möglichkeit den Roboter manuell oder über einen Computer zu steuern. Der Menupunkt "Steuern" gibt ein Untermenu auf dem Display aus. Dieses Menu hat die Auswahlmöglichkeiten "PC-Steuerung" und "manuell Steuern". Der Mircocontroller besitzt die Möglichkeit mit einem Personalcomputer über die serielle Schnittstelle zu kommunizieren. Der PC sendet ein Befehlsbyte an den Mircocontroller, welcher den Roboter steuert. Der zweite Menupunkt ermöglicht es dem Benutzer den Hochregalroboter manuell zu steuert. Die Cursortasten bewegen den Greifer in horizontaler und vertikaler Richtung. Die Tasten "0" und "Enter" Bewegen den Greifer vor und zurück. Mit den "Abbruch" Taste wird zum Hauptmenu zurückgesprungen. Mit dem Menupunkt "Hilfe" wird dem Benutzer eine kurze Hilfe in Form einer Scrollschrift gegeben. Mit der "Abbruch" Taste gelangt der Benutzer ins Hauptmenu zurück.

1.3.2. Programmroutinen des Hauptprogrammes













Programmablaufplan des Hauptprogrammes


Das Unterprogramm MENU gibt, nach der kurzen Information, ein Auswahlmenü auf dem Display aus. Das Auswahlmenü wird mit Hilfe des DB-Befehls in den EPROM abgelegt und mit der Subroutine ROM2DISP auf das Display geschrieben. Ein beliebiger Menupunkt kann mit den Cursortasten ausgewählt werden. Die folgenden Zahlen stehen für Cursorbewegungen < 2-oben, 8-unten, 4-links, 6-rechts >. Mit der Funktion TASTE werden diese Zahlen eingelesen und mit der Entertaste (Zeichen 12) bestätigt. Die Varible Menu_status gibt die Cursorposition an. Die Funktion ABLEGEN ruft das Programm EINGABE auf. Die Funktion READLN ließt die Fachnummer ein. Die Zeichenkette wird mit STR2DEZ in die Nummer des Faches umgewandelt. Diese Date wird mit Hilfe der Variable Fachx dividiert. Die Y-Koordinate steht nun im Akkumulator und die X-Koordinate liegt im B-Register. Diese Werte werden in das Register R0,R1 geschrieben und der Funktion "MOTOR" übergeben. Der Funktion wird weiterhin das Befehlsbit F0 übergeben. Ist dieses Bit gelöscht wird die Funktion Ablegen aktiviert. Das Unterprogramm NEHMEN arbeitet mit den gleichen Funktionen wie ABLEGEN. Diese Funktion wird mit dem gesetzten Bit F0 aktiviert. Das Unterprogramm STEUERN ruft den Befehl ROM2DISP auf, um die Menupunkte auf den Bildschirm anzuzeigen. Der Benutzer hat die Möglichkeit zwischen den Menüpunkten PC-STEUERUNG, MANUELL STEUERN auszuwählen. Die Funktion Menu_Steuerung2 gibt den ausgewählten Menupunkt zum Hauptprogramm zurück. Die Funktion Menu_steuerung2 funktioniert nach dem Prinzip der Funktion Menu_steuerung. Das Unterprogramm PC-Steuerung ermöglicht die Kommunikation zwischen PC und Mircocontroller mit Hilfe der seriellen Schnittstelle. Der zweite Menupunkt Manuell Steuern ermöglicht es dem Benutzer den Greifarm über die Cursortasten zu steuern. Mit der Funktion Press wird ständig der Tastaturstatus überprüft. Wird ein anderer Wert als FFh an das Hauptprogramm übergeben, wertet das Programm den Tastaturstatus aus. Je nach gedrückter Taste wird der Akkumulator mit den Wert der Motorsteuerung geladen und die Funktion Dreh aufgerufen. Dieses Programm schleift solange, bis die Taste "Abbruch" gedrückt wird. Der letzte Hauptmenupunkt HILFE schreibt eine Zeichenkette an die Cursorposition 040h. Die Zeichenkette wird vorher im ROM mit dem DB-Befehl abgelegt. Es wird ein 16-Zeichen großer Ausschnitt vom kompletten String an Cursorposition 0 des Displays ausgegeben. Nach einer kurzen Warteschleife wird dieser Auschnitt, um zwei Zeichen nach links verschoben, wieder an Position 0 angezeigt. Der Tastaturstatus wird ständig mit der Funktion Press überprüft und solange die Laufschrift ausgegeben, bis die Taste "Abbruch" gedrückt wird.

 
 

Datenschutz
Top Themen / Analyse
indicator Internet - Dienste:
indicator Hashing -
indicator Informationsdieste
indicator Das Paketformat von IP
indicator Fernzugriff auf Fremdsysteme (Telnet)
indicator JPEG
indicator Berufliche Handlungskompetenz
indicator Speicher
indicator Netzwerkkarten
indicator RLE (Run Length Encoding)


Datenschutz
Zum selben thema
icon Netzwerk
icon Software
icon Entwicklung
icon Windows
icon Programm
icon Unix
icon Games
icon Sicherheit
icon Disk
icon Technologie
icon Bildung
icon Mp3
icon Cd
icon Suche
icon Grafik
icon Zahlung
icon Html
icon Internet
icon Hardware
icon Cpu
icon Firewall
icon Speicher
icon Mail
icon Banking
icon Video
icon Hacker
icon Design
icon Sprache
icon Dvd
icon Drucker
icon Elektronisches
icon Geschichte
icon Fehler
icon Website
icon Linux
icon Computer
A-Z informatik artikel:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #

Copyright © 2008 - : ARTIKEL32 | Alle rechte vorbehalten.
Vervielfältigung im Ganzen oder teilweise das Material auf dieser Website gegen das Urheberrecht und wird bestraft, nach dem Gesetz.
dsolution