180 likes | 258 Views
Positionierungssystem für motorbetriebene Tafeln. Andreas Glausch, Andreas Kerlin, David Weese. Produktidee. Problem - optimale Positionierung von Tafeln in Mehr-Tafel-Anlagen - vollständige Nutzung der Tafelflächen
E N D
Positionierungssystem für motorbetriebene Tafeln Andreas Glausch, Andreas Kerlin, David Weese
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
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 iden oberen bzw. unteren Rand erreicht hat • Nummerierung von hinten nach vorn, dann von links nach rechts, hinterste Tafelposition durch 4 teilbar, ( Beispiel nebenstehend ) 0 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
Control-Panel A1 A2 A3 A4 LineA LineB LineC LineD B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 Col1 Col2 Col3 Col4 Tafel Weiter Holen Up Down Get Clear Tafel Löschen Auto Eingänge des Prozessors
Anschlüsse • 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: L0, ... ,L15 • 16 mal MRi und MTi ( i = 0...15) • zum Tafellöschsystem: - 4 Tafelbits - 1 Löschbit
Der Prozessor Speicheraufbau
Befehlsformat 16Bit-Ein-Adressmaschine Befehlsaufbau (1Byte) Beispiele: add B Mode = 0, Operand = 01 jmp 0123h Mode = 0, Operand = 11 sub [C] Mode = 1, Operand = 10 and [8002h] Mode = 1, Operand = 11
Befehlssatz nicht vorkommende Opcodes entsprechen NOP
CPU - Layout ALSU A kku B 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)
ALSU (ArithmeticLogicShiftUnit) Bus ALSU- Decoder s3 s2 s1 s0 BA ALU a b c alrs Akku Flags RSU al rs (Right Shifter) ALSU-Decoder: - ALU benutzt parametrischen Carry-Skip-Adder aus vier 4-Bit-Carry-Lookahead-Addern (c0 = 0)
Mikrosteuerwerk IR Flags K 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)
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 - R = 1 bedeutet Lese- und W = 1 Schreibzugriff (R W)
Microcode Reset LD [B] ADD 0042h
NOP und unerfüllter bedingter Sprung Jxx Reg JMP 0123h und erfüllter bed. Sprung Jxx Imm ST [1234h]
Assemblercode Definitionen (TASM Syntax) motor .EQU 0c000hsensor .EQU 0c000hhoch .EQU 3runter .EQU 1aus .EQU 0zeilen .EQU (0c021h) ;() entspricht indirektspalten .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->Cdownloop: ;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
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 alleTafeln herunter gefahren, und beimWiederhochfahren die Einzelschritte jederTafel gezählt (für spätere Berechnungennotwendig).
Initialisierung: Programmablauf 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
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.