Upload
heidi
View
19
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
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
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
MTi MRi Wirkung 0 1 0 Tafel i fährt einen Schritt
runter 0 1 1 Tafel i fährt einen Schritt
hoch 1 0 x keine Wirkung
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 )
012
456
89
10
Control-Panel
A1LineA
LineB
LineC
LineD
Col1 Col2 Col3 Col4
HolenWeiter
Löschen
Tafel
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
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
Anschlüsse
Speicheraufbau
ROM (32kb)(Programm)
(EPROM)
0x0000
0x7FFF
RAM (16kb)(Daten)
0x8000
0xBFFF
Ein-/Ausgabe0xC000
0xFFFF
Adresse Lesezugriff Schreibzugriff
0xC000...0xC00F(i = 0...15)
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 = FertigBit1-Bit7 = 0
Bit0..3 = Tafel i,Bit4 = Löschbit,Bit5-Bit7 unbenutzt
0xC030 Anzahl Tafelzeilen unbenutzt
0xC031 Anzahl Tafelspalten unbenutzt
sonst unbenutzt unbenutzt
Der Prozessor
Befehlsformat
5Bit 1Bit 2Bit
Opcode Mode Operand
Mode
Beschreibung
0 direkt (Register oder Immediate)
1 indirekt (registerindirekt oder absolut)
Operand
Beschreibung
Befehlslänge
00 Register A
1Byte01 Register B
10 Register C
11 Immediate 3Byte
16Bit-Ein-Adressmaschine
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
Befehlsaufbau (1Byte)
Befehlssatz
Opcode
Befehl
Beschreibung
0 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
CPU - Layout
ROM
RAM
Mikrosteuerwerk
A
B
C
IR
PC
MAR
MDRI/O
Memory Controlle
r
20 Steuerleitungen
R W
ALSUkku
PC- Inkrement
Flags:
CF ZF
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)
INTE
RN
ER
BU
S
(nullte
r min
iert)
austauschbar
ALSU
ALSU-Decoder
- ALU benutzt parametrischen Carry-Skip-Adder aus vier 4-Bit-Carry-Lookahead-
Addern (c0 = 0)
a
b
c
ALU
RSU(Right
Shifter)
s3
s2
s1
s0
BAal
rsal rs
Befehl a b c s3
s2 s1 s0 BA al rs
NOP 0 0 0 x x x x x 0 0
ADD 0 0 1 1 0 0 1 0 1 0
SUB 0 1 0 0 1 1 0 0 1 0
AND 0 1 1 1 0 0 0 1 1 0
OR 1 0 0 1 1 1 0 1 1 0
NOT 1 0 1 0 0 1 1 1 1 0
LSHIFT 1 1 0 1 1 1 1 0 1 0
RSHIFT 1 1 1 x x x x x 0 1
AkkuFlags
Bus
ALSU-Decoder:
(ArithmeticLogicShiftUnit)
Mikrosteuerwerk
Steuerspeicher(512x20)
PC
KDekodierschaltung
Resetleitung
IR Flags
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)
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
R W
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)
austauschbar
LD [B]Schritt Aktion
1. Bout, MARin, R
2. MDRout, Ain
3. PCout, MARin
4. MDRout, IRin, PCinc, decode,
ResetSchritt Aktion
1. Ain, Bin, Cin, PCin
2. ALU:OR (löscht CF, setzt ZF)
3. PCout, MARin
4. MDRout, IRin, PCinc, decode
ADD 0042hSchritt Aktion
1. PCout, MARin, R
2. MDRout, ALU:ADD, PCinc
3. PCinc
4. PCout, MARin
5. MDRout, IRin, PCinc, decode
Microcode
JMP 0123h und erfüllter bed. Sprung Jxx ImmSchritt Aktion
1. PCout, MARin, R
2. MDRout, PCin
3. PCout, MARin
4. MDRout, IRin, PCinc, decode
NOP und unerfüllter bedingter Sprung Jxx RegSchritt Aktion
1. PCout, MARin
2. 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
Definitionen (TASM Syntax)
Assemblercode
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->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
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
n – Anzahl der Tafelnn Sollwerte (Zielpositionen)
n Istwerte – (aktuelle Positionen)n Maxwerte – (maximale Positionen)
n Positionen (Tafelreihenfolge)aktuelle Tafel
Alle Tafeln nach unten fahrenund Istwerte auf 0 setzen
Alle Tafeln nach oben fahrenDabei Istwerte erhöhen
Maxwerte auf Istwerte setzen
Sollwerte berechnen
Panel-Eingabe abfragenTafeltaste gedrückt?
„Weiter“ gedrückt?
neue aktuelle Tafel
ja nein
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 setzenja nein
ja nein
Löschvorgang für aktuelle Tafel startenja nein
Sollwerte neu berechnen
Rotation am Beispiel einer 3x2-Tafelmatrix
...
2. Kapitel
3. Kapitel
1. Kapitel
4. Kap...
2. Kapitel
3. Kap...
1. Kapitel
1. Kapitel
2. Kap...1. Kap...
Das 7. Kapitel überschreibt das 1. Kapitel.