Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Positionierungssystem für motorbetriebene Tafeln

Ähnliche Präsentationen


Präsentation zum Thema: "Positionierungssystem für motorbetriebene Tafeln"—  Präsentation transkript:

1 Positionierungssystem für motorbetriebene Tafeln
Andreas Glausch, Andreas Kerlin, David Weese

2 Produktidee Problem - optimale Positionierung von Tafeln in Mehr-Tafel-Anlagen - vollständige Nutzung der Tafelflächen Ziel - vereinfachendes Kontrollsystem für automatische Positionierung der Tafeln konkret - Nutzung vorhandener Tafelsysteme - Design eines Eingabepanels - Möglichkeit der voll- und halbautomatischen Tafelpositionierung - optionale Verwendung von Reinigungssystemen - zyklisches Bereitstellen der Tafeln

3 Externe Schnittstellen
Tafel-Schnittstelle - max. 4x4 Tafeln mit Schrittmotorik und jeweils einem Eingang für Richtung MRi und Takt MTi - je Tafel zwei Sensoren SOi und SUi, die genau dann 1 liefern, wenn Tafel i den oberen bzw. unteren Rand erreicht hat Nummerierung von hinten nach vorn, dann von links nach rechts, hinterste Tafelposition durch 4 teilbar, ( Beispiel nebenstehend ) 4 8 1 5 9 2 6 10 Anforderungen ans externe Tafellöschsystem (TLS) - 4 Eingänge für maximal 16 Tafeln - 1 Eingang zum Starten der Löschaktion - 1 Ausgang, der Abschluss der Aktion signalisiert

4 Eingänge des Prozessors
Control-Panel A1 A2 A3 A4 LineA LineB LineC LineD B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 Col Col Col Col4 Tafel  Weiter Holen Up Down Get Clear Tafel  Löschen Auto Eingänge des Prozessors

5 Anschlüsse Eingänge: vom Control Panel 13 Signale: Tafelbits (LineA, ..., LineD, Col1, ..., Col4) Aktionsbits (Auto, Up, Down, Get, Clear) vom Tafellöschsystem: 1 Fertig-Signal Reset Stromversorgung 5V Ausgänge: 16 LEDs: L0, ... ,L15 16 mal MRi und MTi ( i = ) zum Tafellöschsystem: Tafelbits Löschbit

6 Der Prozessor ROM (32kb) (Programm) (EPROM) Speicheraufbau RAM (16kb)
0x0000 0x7FFF RAM (16kb) (Daten) 0x8000 0xBFFF Ein-/Ausgabe 0xC000 0xFFFF Adresse Lesezugriff Schreibzugriff 0xC xC00F (i = ) Bit0 = SUi , Bit1 = SOi , Bit2-Bit7 = 0 Bit0 = MTi , Bit1 = MRi , Bit2-7 unbenutzt 0xC010 Bit0...3 = LineA...D, Bit4...7 = Col1...4 Bit[i] = Li 0xC011 Bit0 = Down, Bit1 = Up, Bit2 = Get, Bit3 = Clear, Bit4 = Auto, Bit 5,6,7 = 0 Bit[i] = Li+8 0xC020 (TLS) Bit0 = Fertig Bit1-Bit7 = 0 Bit0..3 = Tafel i, Bit4 = Löschbit, Bit5-Bit7 unbenutzt 0xC030 Anzahl Tafelzeilen unbenutzt 0xC031 Anzahl Tafelspalten sonst

7 16Bit-Ein-Adressmaschine 5Bit 1Bit 2Bit Opcode Mode Operand Mode
Befehlsformat 16Bit-Ein-Adressmaschine Befehlsaufbau (1Byte) 5Bit 1Bit 2Bit Opcode Mode Operand Mode Beschreibung direkt (Register oder Immediate) 1 indirekt (registerindirekt oder absolut) Operand Beschreibung Befehlslänge 00 Register A 1Byte 01 Register B 10 Register C 11 Immediate 3Byte Beispiele: add B Mode = 0, Operand = jmp 0123h Mode = 0, Operand = sub [C] Mode = 1, Operand = and [8002h] Mode = 1, Operand = 11

8 nicht vorkommende Opcodes entsprechen NOP
Befehlssatz Opcode Befehl Beschreibung ADD A = A + <Operand> 1 SUB A = A - <Operand> 8 OR A = A | <Operand> 9 AND A = A & <Operand> 10 NOT A = ~A 11 SHL A = A << 1 12 SHR A = A >> 1 16 LD A = <Operand> 17 ST <Operand> = A 24 JMP PC = <Operand> 25 JZ IF (Z = 1) PC = <Operand> 26 JC IF (C = 1) PC = <Operand> 27 JNZ IF (Z = 0) PC = <Operand> 28 JNC IF (C = 0) PC = <Operand> 31 NOP No Operation nicht vorkommende Opcodes entsprechen NOP

9 INTERNER BUS (nullterminiert)
CPU - Layout ALSU A kku B Flags: CF ZF C Mikrosteuerwerk IR INTERNER BUS (nullterminiert) PC 20 Steuerleitungen PC- Inkrement austauschbar ROM Memory Controller MAR RAM MDR I/O R W Leitungen mit werden vom Mikrosteuerwerk ein- oder ausgeschaltet Registergrößen: A, B, C, PC, MAR, MDR - 16 Bit IR - 8 Bit (oberen 8 Bits des Busses werden ignoriert)

10 (ArithmeticLogicShiftUnit)
ALSU (ArithmeticLogicShiftUnit) Bus ALSU- Decoder s3 s2 s1 s0 BA ALU a b c al rs Akku Flags RSU al rs (Right Shifter) ALSU-Decoder: Befehl a b c s3 s2 s1 s0 BA al rs NOP x ADD 1 SUB AND OR NOT LSHIFT RSHIFT - ALU benutzt parametrischen Carry-Skip-Adder aus vier 4-Bit-Carry-Lookahead-Addern (c0 = 0)

11 IR Flags K PC Steuerspeicher (512x20) Steuerleitungen Mikrosteuerwerk
Dekodierschaltung decode Resetleitung PC Inkr. (/decode) Steuerspeicher (512x20) Steuerleitungen Dekodierschaltung K setzt PC entsprechend IR und Flags. (Bsp.: JNZ führt mit gesetztem ZF NOP aus, JNZ mit gelöschtem ZF JMP.) Am Ende jeder Instruktion wird ein Fetch und ein Decode ausgeführt (siehe Microcode)

12 - R = 1 bedeutet Lese- und W = 1 Schreibzugriff (R  W)
Memory Controller austauschbar Memory Controller ROM MAR 15 Bit Adresse 16 Bit Adresse 16 Bit Daten R RAM 14 Bit Adresse MDR 16 Bit Daten 16 Bit Daten R W I/O 6 Bit Adresse 8 Bit Daten R W Read Write MAR-Bits 15 und 14 Speicherbereich Adressbits 0 x ROM 14...0 1 0 RAM 13...0 1 1 I/O 5...0 - R = 1 bedeutet Lese- und W = 1 Schreibzugriff (R  W)

13 Microcode Reset LD [B] ADD 0042h Schritt Aktion 1. Ain, Bin, Cin, PCin
2. ALU:OR (löscht CF, setzt ZF) 3. PCout, MARin 4. MDRout, IRin, PCinc, decode LD [B] Schritt Aktion 1. Bout, MARin, R 2. MDRout, Ain 3. PCout, MARin 4. MDRout, IRin, PCinc, decode, ADD 0042h Schritt Aktion 1. PCout, MARin, R 2. MDRout, ALU:ADD, PCinc 3. PCinc 4. PCout, MARin 5. MDRout, IRin, PCinc, decode

14 NOP und unerfüllter bedingter Sprung Jxx Reg
Schritt Aktion 1. PCout, MARin 2. MDRout, IRin, PCinc, decode JMP 0123h und erfüllter bed. Sprung Jxx Imm Schritt Aktion 1. PCout, MARin, R 2. MDRout, PCin 3. PCout, MARin 4. MDRout, IRin, PCinc, decode ST [1234h] Schritt Aktion 1. PCout, MARin, R 2. MDRout, MARin, PCinc 3. Aout, MDRin, W, PCinc 4. PCout, MARin 5. MDRout, IRin, PCinc, decode

15 Assemblercode Definitionen (TASM Syntax)
motor .EQU 0c000h sensor .EQU 0c000h hoch .EQU 3 runter .EQU 1 aus .EQU 0 zeilen .EQU (0c021h) ;() entspricht indirekt spalten .EQU (0c022h) #DEFINE MOV(x,y) LD x\ST y #DEFINE ADD(x,y) LD x\ADD y\ST x #DEFINE SUB(x,y) LD x\SUB y\ST x #DEFINE INC(x) LD x\ADD 1\ST x #DEFINE DEC(x) LD x\SUB 1\ST x Initialisierungsphase (Auszug) LD tafel ;Tafelnummer nach A laden ADD sensor ;A enthält Tafelsensoradr. ST C ;A->C downloop: ;Tafel ganz runter fahren LD (C) AND 1 ;teste Bit0 = SUTafel JNZ downend ;stoppe, wenn gesetzt MOV (runter,(C)) ;Motoradr. gleich JMP downloop ;Sensoradr. downend: MOV (0,B) ;Zähler auf Null setzen

16 uploop:. ;Tafel ganz hoch fahren LD. (C) AND. 2
uploop: ;Tafel ganz hoch fahren LD (C) AND 2 ;teste Bit1 = SOTafel JNZ upend ;stoppe, wenn gesetzt MOV (hoch,(C)) ;Motoradr. gleich INC (B) ;Makro. Nicht mit indirekt ;verwechseln! JMP uploop ;Sensoradr. upnend: MOV (B,zaehler) ;enthält Anzahl der ;Schrittmotorsteps einer ;Tafel(von oben nach unten) In der Initialisierungsphase werden alle Tafeln herunter gefahren, und beim Wiederhochfahren die Einzelschritte jeder Tafel gezählt (für spätere Berechnungen notwendig).

17 Programmablauf Initialisierung: Alle Tafeln nach unten fahren
und Istwerte auf 0 setzen n – Anzahl der Tafeln n Sollwerte (Zielpositionen) n Istwerte – (aktuelle Positionen) n Maxwerte – (maximale Positionen) n Positionen (Tafelreihenfolge) aktuelle Tafel Alle Tafeln nach oben fahren Dabei Istwerte erhöhen Maxwerte auf Istwerte setzen Sollwerte berechnen Istwerte anpassen (evtl. Motoren bewegen) Tafeltaste gedrückt? Panel-Eingabe abfragen „Weiter“ gedrückt? ja nein neue aktuelle Tafel aktuelle Spalte rotieren ja nein „Runter“ gedrückt? Sollwerte neu berechnen Sollwert für aktuelle Tafel dekrementieren ja nein „Hoch“ gedrückt? Sollwert für aktuelle Tafel inkrementieren ja nein „Holen“ gedrückt? Sollwert für aktuelle Tafel auf 0 setzen ja nein „Löschen“ gedrückt? Löschvorgang für aktuelle Tafel starten ja nein

18 ... Rotation am Beispiel einer 3x2-Tafelmatrix
1. Kapitel 1. Kap... 2. Kap... 1. Kapitel 1. Kapitel 2. Kapitel 2. Kapitel 3. Kapitel 4. Kap... 3. Kap... ... Das 7. Kapitel überschreibt das 1. Kapitel.


Herunterladen ppt "Positionierungssystem für motorbetriebene Tafeln"

Ähnliche Präsentationen


Google-Anzeigen