bin jetzt so weit das alle funktionene gegeben sind die motoren machen genau das was sie sollen.
hier:
Code:'Schrittmotor-Interface für die C-Control '-----Unipolare-Ansteuerung------ '------Für AEG SO26/48------------ 'Definition der Schrittmotor-Ansteuerung des Fahrwerkes Define Motorport Byteport [1] 'Motor A und B 'Phasen und Portbelegung der Motoren A und B Define MotA1 Port[1] 'Motor A - Phase 1 Define MotA2 Port[2] 'Motor A - Phase 2 Define MotA3 Port[3] 'Motor A - Phase 3 Define MotA4 Port[4] 'Motor A - Phase 4 Define MotB1 Port[5] 'Motor B - Phase 1 Define MotB2 Port[6] 'Motor B - Phase 2 Define MotB3 Port[7] 'Motor B - Phase 3 Define MotB4 Port[8] 'Motor B - Phase 4 'Definition der Variablen für die Schrittmotor-Ansteuerung Define VarMF 2 'Motor Frequenze define schritt word[1] define SolPos word[2] define IstPos word[3] define i byte #Init 'Position der Motoren A und B auf 0 stellen IstPos = 0 SolPos = IstPos #Main Bewegungen goto main #Hauptprogramm Return #Bewegungen 'Bewegungen der Motoren 'VORWÄRTS 'RUECKWÄRTS 'VORWAERTSRECHTS 'VORWAERTSLINKS 'RUECKWÄRTSRECHTS 'RUECKWÄRTSLINKS 'TURNRECHTS 'TURNLINKS '-----------------------SCHRITTMOTOR FUNKTIONEN------------------------------------- #VORWÄRTS for i = 1 to 50 'schritt = schritt - 1 Looktab SchrittVor , i AND 3 , motorport pause VarMF next i end #RUECKWÄRTS for i = 1 to 50 'schritt = schritt + 1 Looktab SchrittRück , i AND 3 , motorport pause VarMF 'goto Main next i end #RUECKWÄRTSRECHTS for i = 1 to 50 'schritt = schritt - 1 Looktab SchrittM2RECHTS , i AND 3 , motorport pause VarMF next i end 'goto Main #VORWAERTSRECHTS for i = 1 to 50 'schritt = schritt + 1 Looktab SchrittM2LINKS , i AND 3 , motorport pause VarMF 'goto Main next i end #VORWAERTSLINKS for i = 1 to 50 'schritt = schritt + 1 Looktab SchrittM1LINKS , i AND 3 , motorport pause VarMF 'goto Main next i end #RUECKWÄRTSLINKS for i = 1 to 50 'schritt = schritt - 1 Looktab SchrittM1RECHTS , i AND 3 , motorport pause VarMF 'goto Main next i end #TURNRECHTS for i = 1 to 50 'schritt = schritt - 1 Looktab SchrittTURNR , i AND 3 , motorport pause VarMF 'goto Main next i end #TURNLINKS for i = 1 to 50 'schritt = schritt + 1 Looktab SchrittTURNL , i AND 3 , motorport pause VarMF 'goto Main next i end '---------------------------------------------------------------------------- '---------------------------------------------------------------------------- 'Schrittmotor-Tabelle für den Vollschritt Table SchrittVOR 'Motor A und Motor B Vorwärts 68 136 17 34 Tabend Table SchrittRück 'Motor A und Motor B Rückwärts 34 17 136 68 Tabend Table SchrittM1RECHTS 'Motor A Vorwärts Motor B Stop 1 2 4 8 'Stopbefehl für Motor B fehlt d.h. bitmuster ändern Tabend Table SchrittM1LINKS 'Motor A Rückwärts Motor B Stop 8 4 2 1 'Stopbefehl für Motor B fehlt d.h. bitmuster ändern Tabend Table SchrittM2LINKS 'Motor A Stop Motor B Vorwärts 32 16 128 64 'Stopbefehl für Motor A fehlt d.h. bitmuster ändern Tabend Table SchrittM2Rechts 'Motor A Stop Motor B Rückwärts 64 128 16 32 'Stopbefehl für Motor A fehlt d.h. bitmuster ändern Tabend Table SchrittTURNR 'Motor A Vorwärts Motor B Rückwärts 66 129 24 36 Tabend Table SchrittTURNL 'Motor B Vorwärts Motor A Rückwärts 36 24 129 66 Tabend '----------------------------------------------------------------------------
jetzt soll das per seriale schnittstelle gesteuert werden.
ist das richtig? jetz allein von der weiterführung der befehle bzw umsetzung.
wenn ich alles soweit fertig hab wollte ich das dann miteinader verschmelzen lassen...
müsste ja dann nur noch z.b. hier :Code:Define WertRS232 Byte[9] 'Empfangenes Zeichen (RS232) Define TmpByte Byte[10] 'Zwischenspeicher (Byte) Define ASCII_F 70 'ASCII-Code "F" Define ASCII_L 76 'ASCII-Code "L" Define ASCII_R 82 'ASCII-Code "R" Define ASCII_T 84 'ASCII-Code "T" define SolPos word[2] define IstPos word[3] #RecRS232 'Kommandos: FL: Vorwärts links über linkes Rad drehen ' FF: Vorwärts fahren gerade ' FR: Vorwärts rechts über rechtes Rad drehen ' RL: Rückwärts links über linkes Rad drehen ' RF: Rückwärts fahren gerade ' RR: Rückwärts rechts über rechtes Rad drehen ' TL: Drehung links über die Mittelachse ' TR: Drehung rechts über die Mittelachse 'Prüfung auf neue Kommandos If Not RxD Then Return 'Annahme erst bei Ist-Position = Soll-Position If IstPos <> SolPos Then Return Get WertRS232 If WertRS232 = ASCII_F Then GoTo RecRS232F If WertRS232 = ASCII_R Then GoTo RecRS232R If WertRS232 = ASCII_T Then GoTo RecRS232T Return #RecRS232F 'Vorwärts-Kommando empfangen Get WertRS232 If WertRS232 = ASCII_L Then GoTo RecRS232FL If WertRS232 = ASCII_F Then GoTo RecRS232FF If WertRS232 = ASCII_R Then GoTo RecRS232FR Return #RecRS232FL 'Vorwärts nach Links Return #RecRS232FF 'Vorwärts gerade Return #RecRS232FR 'Vorwärts nach Rechts Return #RecRS232R 'Rückwärts-Kommando empfangen Get WertRS232 Return #RecRS232RL 'Rückwärts nach Links Return #RecRS232RF 'Rückwärts gerade Return #RecRS232RR 'Rückwärts nach Rechts Return #RecRS232T 'Dreh-Kommando empfangen Get WertRS232 If WertRS232 = ASCII_L Then GoTo RecRS232TL If WertRS232 = ASCII_R Then GoTo RecRS232TR Return #RecRS232TL 'Drehen nach Links Return #RecRS232TR 'Drehen nach Rechts Return
#RecRS232TL
'Drehen nach Links
nurnoch den befehel machen das er zu TURNL geht. seh ich das richtig?
Lesezeichen