Hallo Maddin,
ich hab dir mal die aktuelle Version zur V8.3 (V8.3.1.1) in den Anhang gepackt. Bei meinem Win 7 Rechner hat die tadellos funktioniert.
Gruß
Fubini
Hallo Maddin,
ich hab dir mal die aktuelle Version zur V8.3 (V8.3.1.1) in den Anhang gepackt. Bei meinem Win 7 Rechner hat die tadellos funktioniert.
Gruß
Fubini
Hallo,
ZitatIch kann dem sicherheitsbewussten Kollegen versichern, dass ich mich damit selbst nicht erlege, da wir eine Behausung um den KUKA konstruiert haben
Und der Roboter kommt aus der Behausung nicht raus? Gewöhnlich dient ja die Behausung dazu dem Bediener den direkten Zugang zum Roboter zu verwehren. Den Schutzzaun der stark genug ist den Roboter aufzuhalten habe ich leider noch nicht geshen.
Fubini
Hallo,
[list type=decimal]
Fubini
Nur mal so für den Laien: Was ist denn eine IF Schleife
Also ich kenne IF Anweisungen und Schleifen wie z.B. FOR ... ENDFOR, REPEAT ... UNTIL o.ä. Aber was ist dann eine IF-Schleife?
Hallo,
ich glaube im Vergleich zwischen V8.2 und V8.3 hat sich nichts geändert. Allerdings im Vergleich zur V5.6:
$WORKSPACE[1..8].MODE = #OFF, #INSIDE, #OUTSIDE, #INSIDE_STOP, #OUTSIDE_STOP
#OFF: Arbeitsbereich ist abgeschaltet
#INSIDE: Ausgang wird gesetzt, wenn TCP oder Flanschmittelpunkt innerhalb des Arbeitsbereiches ist
#OUTSIDE: Ausgang wird gesetzt, wenn TCP oder Flanschmittelpunkt außerhalb des Arbeitsbereiches ist
#INSIDE_STOP: Ausgang wird gesetzt, wenn TCP oder Flanschmittelpunkt oder Handwurzelpunkt innerhalb des Arbeitsbereiches ist, eine Meldung wird
ausgegeben und der Roboter wird gestoppt
#OUTSIDE_STOP: Ausgang wird gesetzt, wenn TCP oder Flanschmittelpunkt außerhalb des Arbeitsbereiches ist, eine Meldung wird ausgegeben und der
Roboter wird gestoppt
Bis einschließlich Release V5.6 wurde immer nur der TCP - und im Falle von INSIDE_STOP zusätzlich der HWP - überwacht.
Ist kein Tool gültig, so wird der TCP nicht mehr betrachtet, sondern nur der Flanschmittelpunkt und ggf. der Handwurzelpunkt.
Fubini
Hallo,
DECL DATE $DATE
mit
STRUC DATE INT CSEC, SEC, MIN, HOUR, DAY, MONTH, YEAR
Fubini
Hallo,
$DISTANCE: zurückgelegter Weg [mm] seit letztem Genauhaltpunkt. Nur für CP-Bewegungen!)
$DIST_LAST (Bahnabstand [mm] bis zum Startpunkt der aktuellen Bewegung):
Diese Systemvariable gibt die Entfernung vom letzten geteachten Punkt an (bei Spline-Blöcken ist das der Startpunkt des Segmentes, in dem wir uns gerade befinden). Ihr Wert ist im Allgemeinen nicht-negativ, im Überschleifbereich kann er aber durchaus negativ sein. Sie ist als Programmierhilfe für Trigger mit ONSTART-Option zu verstehen und steht deshalb nur für CP-Bewegungen zur Verfügung. Bei CP-Splines kann ihr Wert als Weg in [mm] verstanden werden, für PTP-Splines ist der Wert nicht im Sinne einer SI-Einheit interpretierbar.
$DIST_NEXT (Bahnabstand [mm] bis zum Zielpunkt der aktuellen Bewegung):
Diese Systemvariable gibt die Entfernung vom nächsten geteachten Punkt an (bei Spline-Blöcken ist das der Zielpunkt des Segmentes, in dem wir uns gerade befinden). Ihr Wert ist im Allgemeinen nicht-negativ, im Überschleifbereich kann er aber durchaus negativ sein. Sie ist als Programmierhilfe für Trigger mit ONSTART-Option zu verstehen und steht deshalb nur für CP-Bewegungen zur Verfügung. Bei CP-Splines kann ihr Wert als Weg in [mm] verstanden werden, für PTP-Splines ist der Wert nicht im Sinne einer SI-Einheit interpretierbar.
Fubini
Falls du die Level aus der Authentication.config meinst, dann stehen die direkt drin (einfach mal nach unten scrollen):
<Name>AutoKrcProgrammer</Name> => Level 10 Defaultanwender
<UserLevel>10</UserLevel>
<Name>KrcExpertProgrammer</Name> => Level 20 Experte
<UserLevel>20</UserLevel>
....
Fubini
Hallo,
Zitat"Positionsabweichung (Bewegungssteuerung <-> Sicherheitssteuerung)"???
Mach einfach mal mit aktiver Nutzergruppe "Sicherheitsinbetriebnehmer" das Menü Konfiguration -> Sicherheitssteuerung auf. Dann sollte er eine Abweichung erkennen und die neuen Daten in die Sicherheitsstuerung übernehmen lassen.
Sollte das direkt auf der Steuerung nicht klappen, musst die RobRoot-Drehung unter WorkVisual konfigurieren und das geänderte Projekt deployen.
Fubini
Hallo,
wenn ich dich richtig verstanden habe ist dein Roboter in $WORLD jetzt um 90° in Achse 1 verdreht montiert. Eine Drehung um die Welt z-Achse kannst du über $ROBROOT.A in der R1/$machine.dat erreichen.
Fubini
$MOVE_STATE:
DECL MOVE_STATE $MOVE_STATE
mit den Werten (bei aktueller V8.3, bei älteren Releases fehlen vielleicht ein paar Zustände):
ENUM MOVE_STATE PTP_SINGLE, PTP_AP01, PTP_AP02, LIN_SINGLE, LIN_AP01,LIN_AP02, CIRC_SINGLE, CIRC_AP01, CIRC_AP02, MOVE_EMI_SINGLE, SPLINE_SPL, SPLINE_LIN, SPLINE_CIRC, SPLINE_PTP, SPLINE_UES, SPLINE_UES_PTP, NONE
Die *_AP01 und *_AP02 geben an ob man vor oder nach Überschleifmitte ist.
Fubini
Hallo,
"Arbeitsraumfehler" hat nicht mit Bereichen a la $WORKSPACE[] zu tun! Arbeitsraumfehler kommt immer dann wenn ein kartesischer Punkt vom Roboter nicht
angefahren werden kann. D.h. es gibt keine Achswinkel, so dass der Roboter die vorgegebene kart. Position erreichen kann (z.B. weil sie 100 m vom Roboter weg läge). "Arbeitsraumfehler" heißt also die Rücktrafro findet keine Lösung.
Ich vermute die Programme waren noch inklusive der Zusatzachsen (z.B. einer $ROBROOT-Kinematik, d.h. Roboter steht auf der Zusatzachse, geteacht). Nimmt man dem Roboter dann die Zusatzachse kann er nicht mehr an die Zielposition kommen. Als Abhilfe könntet ihr neue Programme teachen.
Wie habt ihr die Zusatzachsen deaktiviert? Eigentlich sollte reichen $EX_AX_NUM in der R1/$machine.dat auf Null zu setzen.
Ich würde mir auch mal die $config.dat anschauen. Eventuell sind hier die Bases als Bases für mathematisch gekoppelte Zusatzachsen, also Bases auf der externen Zusatzachse, hinterlegt. Dann führt jedes Inlineformular im bas.src eine Zuweisung $BASE = EK(...) aus (siehe MACHINE_DEF in $config.dat). Hier mangelt es dann bei der Zuweisung auch wieder der notwendigen Zusatzachse.
Als Abhilfe könntet ihr dazu die Bases neu anlegen.
Fubini
Hallo,
Teils, Teils:
KRC2: gibt es keine mir bekannte Methode
KRC4: Man kann das bis zu einem gewissen Grad über CWRITE realisieren:
http://www.robot-forum.com/rob…d-hour/msg55503/#msg55503
Fubini
Hallo Martin,
mal wieder die Euler-Singularität (Gimbal-Lock) bei B=+-90 Grad. Wurde hier schon oft diskutiert. Kurz gesagt bei B=+-90° sind A und C nicht mehr eindeutig:
http://www.roboterforum.de/rob…r-robi/msg17427/#msg17427
Gruß
Fubini
Hallo,
VARSTATE heißt die Funktion die du suchst. Einfach mal die Suchfunktion bemühen, dann findest du viele Beispiele wie
If (VARSTATE("MyVar")==#INITIALIZED) Then
doSomething
Else
doSomthingElse
Endif
Fubini
Hallo,
danke für den Hinweis, dass unsere Steuerung hochentwickelt ist, aber ich bin mir sicher, dass es nicht Sinoid ist, da ein Sinus ja unendlich oft stetig differenzierbar wäre und man sich dann, dass ganze gefiltere ja sparen könnte. Die Ruckbegrenzung wird ja gerade durch die Filterung auf Achsebene erreicht.
Selbst wenn man das mit heutigen Techniken und mehr Rechenpower auch besser kann (Hier ist übrigens ein Unterschied zum Spline, der nichtmehr so "veraltet" mit Trapezprofilen arbeitet) darf man leider so etwas im Nachinein leider nie wieder ändern, da uns sonst die BMWs, VWs und Daimlers dieser Welt immer lynchen, dass wir uns jetzt anders verhalten als früher. Was übrigens gerade immer wieder beim Spline passiert: Aus der Beobachtung, dass Splinebewegungen sich anders verhalten als der alte Bereich wird immer daraus geschlossen, dass der Spline sich falsch verhält und nicht, dass manche Lösungen von früher äusserst suboptimal waren. Man gewöhnt sich halt schnell an Sachen die eigentlich Mist waren und will die dann bis in alle Ewigkeit so beibehalten.
Gruß
Fubini
Hallo,
wir sollten hier ein Rampenprofil (genauer ein 3 phasiges-trapezförmiges: konstant Beschleunigen, konstante Geschwindigkeit, konstant Verzögern) haben. Trägt man die Geschwindigkeit über den Weg an entsteht so ein Trapez:
_______________
/ \
/ \
/ \
Fubini
Hallo,
ZitatSelbst wenn sie nicht berechnet wird und durch Anderes als eine Variable begrenzt wird, muss es möglich sein, mit 2,3 m/s² zu beschleunigen wenn 2,3m/s² vorgegeben sind.
Oder irre ich mich hier?
Leider ist die Realität nie so einfach wie sie in akademischen Uni-Beispielen vorgegaukelt wird:
Du vergisst z.B. den Filter. Ohne den Filter würdest du Knicke im Geschwindigkeitsprofil haben, was eine reale Mechanik nicht verträgt (unendlicher Beschleunigungssprung beim Übergang aus konstanter Beschleunigung in konstante Geschwindigkeit oder konstante Verzögerung, fehlende Ruckbegrenzung). Du hast aufgrund der Trapezprofilplanung über s=0.5*a*t^2 ja nur ein einmal stetig differenzierbares Geschwindigkeitsprofil. Man muss aber mindestens C2 sein. Daher werden bei KUKA die Sollachspositionen noch bevor sie an die Antriebe kommandiert werden durch einen Mittelwertfilter der Länge $Filter modifiziert. So ein Filter wirkt quadratisch auf die Beschleunigung. Also vor Filterung hat die Steuerung tatsächlich ein Trapezprofil, dass über s=0.5*a*t^2 definiert ist, geplant. Nach Filter kommt aber ein Profil mit weniger Beschleunigung raus.
Ferner müssen die Profile für kartesische Geschwindigkeit und Orientierung noch synchronisiert werden. Hier gilt es zwei Arten zu Unterscheiden:
1) zeitsynchron: alle Komponenten starten gleichzeitig und Beenden ihre Bewegung auch wieder gleichzeitig
2) phasensynchron: alle Beschleunigungs- und Verzögerungsphasen über alle Komponenten starten zu den gleichen Zeitpunkten
Erst wenn diese beiden Arten der Synchronität für ein Geschwindigkeitsprofil erfüllt sind, wird die gefahrenen Bahn unabhängig von den programmierten Profildaten.
Ferner hat die KUKA-Steuerung noch Mechanismen die z.B. Anregungen von Schwingungen des Roboters in dessen Eigenfrequeenzbereich verhindern sollen. Hier werden die Vorschübe an die Antriebstechnik noch nachträglich in Abhängigkeit von Lastdaten über das Dynamikmodell modifiziert.
Ferner: Ist man in der Nähe von Singularitäten würde auch langsamere Beschleunigungen rauskommen, da die Steuerung dann zusätzlich auf maximale Achsgeschwindigkeiten begrenzen muss um ein Durchfahren von Singularitäten zu ermögliche (siehe $CP_VEL_TYPE)
....
ICh könnte jetzt hier noch viele andere Fälle aufzählen die Einfluss haben auf das beobachtete Ergebnis, aber ich glaube es wird klar, dass die Welt manchmal nicht so einfach ist.
Als Einführungsbuch in alle diese Thematiken könnte ich John J.Craigs: Introduction to Robotics: Mechanics and Control (3rd Edition) empfehlen. Es gibt aber sicher noch viele anderer Einsteigerbücher.
Fubini
Gott sei Dank sitz ich im Süden und bin daher nicht so Faschingsaffin:
Einfach das Programm mit dem Notepad++ (C:\KRC\ROBOTER\UTIL\OFFLINETRACETOOL\Notepad++\) öffnen und im Menü unter Einstellungen->Optionen im Reiter Drucken den Haken bei Zeilennummer setzen.
Fubini
Hallo Roland,
die Lastdaten gehen indirekt als Parameter ins Dynamikmodell des Roboters ein, daher ist ja eventuell hier
http://www.roboterforum.de/rob…profil/msg27596/#msg27596 oder
http://www.roboterforum.de/rob…igkeit/msg33405/#msg33405 oder
http://www.robot-forum.com/robotforum/kuka-robot-forum/$acc_axis%28%29/msg36340/#msg36340
was für dich dabei.
Fubini