Galil Design Kit (GDK)

Anwendungsbeispiele für Motion Controller

Voice-Coil hin und her fahren lassen (digitaler Encoder)

'*************************************
' 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

Voice-Coil sinusförmig schwingen lassen (analoges Feedback)

'*************************************
' 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

Pick and Place

'***************************************************************************
'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


Nach oben