Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Positionierungssystem für motorbetriebene Tafeln Andreas Glausch, Andreas Kerlin, David Weese."—  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 Tafel-Schnittstelle -max. 4x4 Tafeln mit Schrittmotorik und jeweils einem Eingang für Richtung MR i und Takt MT i -je Tafel zwei Sensoren SO i und SU i, die genau dann 1 liefern, wenn Tafel i den oberen bzw. unteren Rand erreicht hat Externe Schnittstellen 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 - Nummerierung von hinten nach vorn, dann von links nach rechts, hinterste Tafelposition durch 4 teilbar, ( Beispiel nebenstehend )

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

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

6 Speicheraufbau ROM (32kb) (Programm) (EPROM) 0x0000 0x7FFF RAM (16kb) (Daten) 0x8000 0xBFFF Ein-/Ausgabe 0xC000 0xFFFF AdresseLesezugriffSchreibzugriff 0xC xC00F (i = ) Bit0 = SU i, Bit1 = SO i, Bit2-Bit7 = 0 Bit0 = MT i, Bit1 = MR i, Bit2-7 unbenutzt 0xC010Bit0...3 = LineA...D, Bit4...7 = Col1...4 Bit[i] = L i 0xC011Bit0 = Down, Bit1 = Up, Bit2 = Get, Bit3 = Clear, Bit4 = Auto, Bit 5,6,7 = 0 Bit[i] = L i+8 0xC020 (TLS) Bit0 = Fertig Bit1-Bit7 = 0 Bit0..3 = Tafel i, Bit4 = Löschbit, Bit5-Bit7 unbenutzt 0xC030Anzahl Tafelzeilenunbenutzt 0xC031Anzahl Tafelspaltenunbenutzt sonstunbenutzt Der Prozessor

7 Befehlsformat 5Bit1Bit2Bit OpcodeModeOperand ModeBeschreibung 0direkt (Register oder Immediate) 1indirekt (registerindirekt oder absolut) OperandBeschreibungBefehlslänge 00Register A 1Byte 01Register B 10Register C 11Immediate3Byte 16Bit-Ein-Adressmaschine Beispiele: add BMode = 0, Operand = 01 jmp 0123hMode = 0, Operand = 11 sub [C]Mode = 1, Operand = 10 and [8002h]Mode = 1, Operand = 11 Befehlsaufbau (1Byte)

8 Befehlssatz OpcodeBefehlBeschreibung 0ADDA = A + 1SUBA = A - 8ORA = A | 9ANDA = A & 10NOTA = ~A 11SHLA = A << 1 12SHRA = A >> 1 16LDA = 17ST = A 24JMPPC = 25JZIF (Z = 1) PC = 26JCIF (C = 1) PC = 27JNZIF (Z = 0) PC = 28JNCIF (C = 0) PC = 31NOPNo Operation nicht vorkommende Opcodes entsprechen NOP

9 CPU - Layout ROM RAM Mikrosteuerwerk A B C IR PC MAR MDR I/O Memory Controller 20 Steuerleitungen R W ALSU kku PC- Inkrement Flags:CFZF 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) INTERNER BUS (nullterminiert) austauschbar

10 ALSU ALSU- Decoder - ALU benutzt parametrischen Carry-Skip-Adder aus vier 4-Bit-Carry-Lookahead-Addern (c 0 = 0) abcabc ALU RSU (Right Shifter) s3 s2 s1 s0 BA al rs Befehlabcs3s2s1s0BAalrs NOP000xxxxx00 ADD SUB AND OR NOT LSHIFT RSHIFT111xxxxx01 AkkuFlags Bus ALSU-Decoder: (ArithmeticLogicShiftUnit)

11 Mikrosteuerwerk Steuerspeicher (512x20) PC K Dekodierschaltung Resetleitung IRFlags decode Inkr. ( /decode ) 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 Memory Controller 16 Bit Daten RAM ROM I/O 15 Bit Adresse 16 Bit Daten Memory Controller 14 Bit Adresse 6 Bit Adresse 16 Bit Daten 8 Bit Daten Read Write 16 Bit Adresse MAR MDR R R W MAR-Bits 15 und 14SpeicherbereichAdressbits 0 xROM RAM I/O R = 1 bedeutet Lese- und W = 1 Schreibzugriff (R W) austauschbar

13 LD [B] SchrittAktion 1.B out, MAR in, R 2.MDR out, A in 3.PC out, MAR in 4.MDR out, IR in, PC inc, decode, Reset SchrittAktion 1.A in, B in, C in, PC in 2.ALU:OR (löscht CF, setzt ZF) 3.PC out, MAR in 4.MDR out, IR in, PC inc, decode ADD 0042h SchrittAktion 1.PC out, MAR in, R 2.MDR out, ALU:ADD, PC inc 3.PC inc 4.PC out, MAR in 5.MDR out, IR in, PC inc, decode Microcode

14 JMP 0123h und erfüllter bed. Sprung Jxx Imm SchrittAktion 1.PC out, MAR in, R 2.MDR out, PC in 3.PC out, MAR in 4.MDR out, IR in, PC inc, decode NOP und unerfüllter bedingter Sprung Jxx Reg SchrittAktion 1.PC out, MAR in 2.MDR out, IR in, PC inc, decode ST [1234h] SchrittAktion 1.PC out, MAR in, R 2.MDR out, MAR in, PC inc 3.A out, MDR in, W, PC inc 4.PC out, MAR in 5.MDR out, IR in, PC inc, decode

15 Definitionen (TASM Syntax) Assemblercode 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) LDtafel;Tafelnummer nach A laden ADDsensor;A enthält Tafelsensoradr. STC;A->C downloop:;Tafel ganz runter fahren LD(C) AND1;teste Bit0 = SU Tafel JNZdownend;stoppe, wenn gesetzt MOV (runter,(C));Motoradr. gleich JMPdownloop;Sensoradr. downend: MOV(0,B);Zähler auf Null setzen

16 uploop:;Tafel ganz hoch fahren LD(C) AND2;teste Bit1 = SO Tafel JNZupend;stoppe, wenn gesetzt MOV (hoch,(C));Motoradr. gleich INC(B);Makro. Nicht mit indirekt ;verwechseln! JMPuploop;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 Initialisierung: Programmablauf n – Anzahl der Tafeln n Sollwerte (Zielpositionen) n Istwerte – (aktuelle Positionen) n Maxwerte – (maximale Positionen) n Positionen (Tafelreihenfolge) aktuelle Tafel Alle Tafeln nach unten fahren und Istwerte auf 0 setzen Alle Tafeln nach oben fahren Dabei Istwerte erhöhen Maxwerte auf Istwerte setzen Sollwerte berechnen Panel-Eingabe abfragen Tafeltaste gedrückt? Weiter gedrückt? neue aktuelle Tafel ja nein Istwerte anpassen (evtl. Motoren bewegen) aktuelle Spalte rotieren Holen gedrückt? Runter gedrückt? Hoch gedrückt? Löschen gedrückt? Sollwert für aktuelle Tafel dekrementieren Sollwert für aktuelle Tafel inkrementieren ja nein Sollwert für aktuelle Tafel auf 0 setzen ja nein Löschvorgang für aktuelle Tafel starten ja nein Sollwerte neu berechnen

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


Herunterladen ppt "Positionierungssystem für motorbetriebene Tafeln Andreas Glausch, Andreas Kerlin, David Weese."

Ähnliche Präsentationen


Google-Anzeigen