'************************************* ' Beschreibung: ' Voice-Coil hin und her fahren. Feedback ist ein digitaler Encoder (Inkrementalgeber) ' DMC-30012, Firmware rev.1.3b ' VCA '************************************* ' Allgemeine Konfiguration '************************************* #AUTO;' Mit dieser Sprungmarke startet das Programm bereits beim Einschalten MG "Allgemeine Konfiguration" ST ;' Alle Achsen stoppen, falls noch etwas laufen sollte WT 1000 ;' 1 Sekunde warten MO ;' Bei allen Achsen die Regelung abschalten, sie sind nun frei beweglich IA 192,168,9,106 ;' IP-Adresse definieren TM 125 ;' Hier definieren wir die Sample-Rate '************************************* ' Achs-Konfiguration '************************************* MT 1 ;' Motortyp ist ein Servo, mit -1 kann man die Richtung wechseln 'CE 0 ;' oder auch mit dem CE Befehl BR 1 ;' Achse A ist ein Voice-Coil, also vergleichbar mit einem brushed DC OF 0.0 ;' Der VCA hat keine Feder, deren Kraft kann man mit einem Offset kompensieren AG 0 ;' Die Stromverstärkung im Regler einstellen, je nach Antrieb u. Regler verschieden AU 0 ;' Im Handbuch hinten im Anhang sind die jeweiligen Regler mit AU u. AG erläutert TL 2 ;' Die Strom/Torque-Begrenzung für den Dauerwert einstellen TK 3.975 ;' Die Strom/Torque-Begrenzung für den Spitzenwert einstellen KD 10 ;' PID-Werte für Achse A definieren KP 1 ;' KI 0.001 ;' IT=1 ;' Falls dieser Filter aktiv war, erstmal zurück auf default AC 1073740800 ;' Beschleunigung DC 1073740800 ;' Abbremsen SP 100000 ;' Anfangsgeschwindigkeit DP0 ;' Null-Position definieren #LOOP ;' Hauptschleife PA2000 ;' Absolute Position 2000 Inkremente anfahren BG ;' Bewegung beginnen AM ;' Warten bis Bewegung beendet WT500 ;' 500 ms warten PA0 ;' Absolute Position 0 Inkr. anfahren BG ;' Bewegung beginnen AM ;' Warten bis Bewegung beendet JP #LOOP ;' Zum Label #LOOP springen EN ;' Ende vom Listing
'************************************* ' Beschreibung: ' Voice-Coil in Sinusform schwingen lassen. Feedback ist ein analoger Sensor am ADC ' DMC-30012, Firmware rev.1.3b ' VCA LAS13-18-000A-P01-DASH '************************************* ' Allgemeine Konfiguration '************************************* #AUTO ;' Mit dieser Sprungmarke startet das Programm bereits beim Einschalten MG "Allgemeine Konfiguration" ST ;' Alle Achsen stoppen, falls noch etwas laufen sollte WT 1000 ;' 1 Sekunde warten MO ;' Bei allen Achsen die Regelung abschalten, sie sind nun frei beweglich IA 192,168,9,106 ;' IP-Adresse definieren TM 125 ;' Hier definieren wir die Sample-Rate '************************************* ' Achs-Konfiguration '************************************* MT 1 ;' Motortyp ist ein Servo, mit -1 kann man die Richtung wechseln 'CE 0 ;' oder auch mit dem CE Befehl BR 1 ;' Achse A ist ein Voice-Coil, also vergleichbar mit einem brushed DC AQ 1,3 ;' Achse A soll mit analogen Feedback arbeiten, AQ definiert den Spannungsbereich AFA=1 ;' Analogen Feedback für Regelung mit Achse A aktivieren OF -0.1 ;' Der VCA hat eine Feder, deren Kraft kann man mit einem Offset kompensieren AG 0 ;' Die Stromverstärkung im Regler einstellen, je nach Antrieb verschieden AU 0 ;' Im Handbuch hinten im Anhang sind die jeweiligen Regler mit AU u. AG erläutert TL 2 ;' Die Strom/Torque-Begrenzung für den Dauerwert einstellen TK 3.975 ;' Die Strom/Torque-Begrenzung für den Spitzenwert einstellen KD 0.25 ;' PID-Werte für Achse A definieren KP 0.25 ;' KI 0.001 ;' IT=1 ;' Falls dieser Filter aktiv war, erstmal zurück auf default AC 1073740800 ;' Beschleunigung DC 1073740800 ;' Abbremsen SP 100000 ;' Anfangsgeschwindigkeit 'Ausgangsposition anfahren SHA ;' Achse A den Regelkreis/Servoregler einschalten PAA=34000 ;' Absoluter Fahrbefehl Position 34.000 ink anfahren BGA ;' Fahrbefehl starten AMA ;' Warten bis Fahrbefehl fertig MG "Pos. ist: ",TP, " ink" MG "Konfiguration fertig" WT 1000 '************************************* ' Variablen und Konstanten '************************************* amp = 13000 ;' Amplitude in ink freq = 10 ;' Frequenz in Hz rate= freq*amp*6.2832 ;' Geschwindigkeit berechnen '************************************* ' Hauptprogramm '************************************* VS rate ;' Vektorgeschwindigkeit definieren VAA=1073740800 ;' Vektorbeschleunigung definieren VDA=1073740800 ;' Vektorabbremsen definieren #init go= 1 ' sine wave on "A" axis VM AN ;' Vektormode mit Ebene von Achse A und N fuer virtuell erzeugen CR amp,0,360 ;' Zum Start einen Sinus generieren BG S ;' Bewegung starten #l CR amp,0,360 ;' Immer 1 Sinuswelle hinzufügen #wait ;' Sprungmarke JP #l,_LM>1 ;' _LM zeigt die Anzahl der Segmente im Puffer JP #wait,go=1 ;' immer neue Sinuswellen erzeugen bis go=0 z.B. im Terminal eingegeben wird #stop ST ;' Bewegung beenden AM S ;' Warten bis Bewegung fertig VE ;' Vektormode beenden CS S ;' Vektorpuffer löschen MO ;' Achsen bzw. deren Regler ausschalten MG "Ende" EN
'*************************************************************************** 'Beschreibung: 'Beispiel Pick and Place (Aufnahme und Ablage eines Bauteils) '*************************************************************************** #initial ;'Sprungmarke MG "Index-Positionen finden" FI AB ;'Mit Achse A und B Homeindex finden BG AB ;'Bewegung starten AM AB ;'Warten bis Bewegung beendet MG "Variable definieren" x0 = _RPA ;'Startposition definieren y0 = _RPB x1 = 10000 ;'Erste Aufnahmeposition definieren y1 = 10000 x2 = 20000 ;'Erste Ablageposition definieren y2 = 20000 #pick ;'Sprungmarke für Schleife MG "Fahre zur Aufnahmeposition" dx = x1 - x0 ;'Delta dx berechnen dY = y1 - y0 ;'Delta dy berechnen VP dx, dy ;'Zielposition definieren VS 40000 ;'Vektorgeschwindigkeit VA 200000 ;'Vektorbeschleunigung VD 200000 ;'Vektorabbremsen VE ;'Ende der Vektorbewegung definieren BG S ;'XY-Bewegung starten AM S ;'Warten bis Bewegung fertig MG "Bauteil aufnehmen" PR ,,-50000 ;'Greifer runterfahren (Z-Achse) SP ,,20000 ;'Geschwindigkeit von Z AC ,,80000 ;'Beschleunigung von Z DC ,,80000 ;'Abbremsen von Z BG C ;'Bewegung von Achse Z starten AM C ;'Warten bis Bewegung fertig SB 1 ;'Ausgang 1 setzen: z.B. Bauteil halten aktivieren PR ,,50000 ;'Greifer hochfahren BG C ;'Bewegung Z starten AM C ;'Warten bis Bewegung fertig MG "Ablage-Position anfahren" dx = x2 - x1 ;'Delta dx berechnen dY = y2 - y1 ;'Delta dy berechnen VP dx, dy ;'Fahrbefehl definieren VE ;'Ende der Vektorbewegung BG S ;'Fahrbefehl beginnen AM S ;'Warten bis Fahrbefehl fertig MG "Bauteil ablegen" PR ,,-50000 ;'Fahrbefehl Greifer absenken BG C ;'Fahrbefehl ausführen AM C ;'Warten bis Fahrbefehl Z-Achse ausgeführt CB 1 ;'Ausgang 1 löschen: hier Greifer lässt Bauteil los PR ,,50000 ;'Fahrbefehl Greifer hochfahren BG C ;'Fahrbefehl starten AM C ;'Warten bis Fahrbefehl fertig ist MG "Neue Positionen berechnen" x0 = x2 ;'Neue Startposition ist wo wir zuletzt abgelegt haben y0 = y2 x1 = x1 + 20000 ;'Neue Aufnahmeposition berechnen y1 = y1 + 20000 x2 = x2 + 20000 ;'Berechne neue Ablageposition y2 = y2 + 20000 JP #pick ;'Endlosschleife durch Sprungbefehl MG "END" EN ;'Programmende