Programm
Laufzeit nach Programmstart
Der Befehl getRuntime() gibt die Laufzeit seit Programmstart in Sekunden an.
getRuntime();
Exit
Die Methode exit() beendet das Programm und wechselt zus�tzlich zur�ck ins Hauptmen�. Im Hauptmen� halten die Bremsen den Roboter in seiner aktuellen Position, wodurch er weniger Strom verbraucht.
joints(-20.00, 0.00, -23, 90.00, -92, 15.72, 0.5);
exit();
jointsLinear(20.00, 0.00, -23, 90.00, -92, 15.72, 0.5);
Tool, Werkzeug, TCP & Gewicht
�ffnen/Schlie�en
Die Funktion openGripper() / closeGripper() �ffnet/schlie�t den Greifer. Es m�ssen weder Parameter �bergeben werden, noch wird ein Ergebnis zur�ckgeliefert.
Mit dieser Funktion k�nnen manche Greifer ge�ffnet werden. Dies h�ngt nat�rlich vom Hersteller des Greifers ab, funktioniert also nicht mit jedem Greifer.
TCP - Offset ermitteln
Es ist m�glich, den Versatz des Werkzeugmittelpunkts (TCP) aus vier vorgegebenen Roboterposen mithilfe des Befehls calculateTCPOffset() zu bestimmen. Um den TCP zu ermitteln, wird ein fester Punkt aus verschiedenen Richtungen mit dem zu kalibrierenden Werkzeug angefahren. Die Positionen der Flansche sollten m�glichst weit voneinander entfernt sein. Im besten Fall bilden sie einen Tetraeder um den Mittelpunkt.
Aus den vier Roboterposen (Gelenkkonfigurationen) werden die jeweiligen Positionen des Flansches berechnet. Im Folgenden werden diese Punkte, die auf einer Kugelschale liegen, zur Bestimmung des Kugelmittelpunktes verwendet. Der Versatz des TCP ergibt sich aus den Vektoren zwischen dem Zentrum und den Flanschpositionen.
Je genauer der Fixpunkt im Zentrum bei der Kalibrierung anvisiert wird, desto genauer ist das Ergebnis. Dar�ber hinaus ist es m�glich, f�nf statt vier Roboterkonfigurationen zu verwenden. Die besten vier Konfigurationen werden dann automatisch ausgew�hlt.
Wenn die Abst�nde zwischen den Flanschpositionen zu klein sind oder die Punkte in einer gemeinsamen Ebene liegen, ist die Kalibrierung nicht m�glich und es wird ein Fehler ausgegeben.
Verwendung des Befehls in horstFX
Die vier/f�nf Gelenkkonfigurationen werden an die Funktion 'calculateTCPOffset()' �bergeben. Diese k�nnen von der aktuellen Roboterposition �ber die Schaltfl�che 'Achswerte' �bernommen werden.
Beispielhaft ist hier die Verwendung der Funktion programmiert f�r den H1000:
// H1000
calculateTCPOffset ({
"calibrationJoints": [
{"joints": [ -1.528, 25.627, 22.704, 23.386, 6.472, -71.733]},
{"joints": [ 4.927, 53.429, -24.310, -20.278, 90.981, 103.912]},
{"joints": [ -8.614, 48.885, -16.167, 28.605, 81.420, -181.406]},
{"joints": [ -0.448, 37.943, -3.433, -1.424, 56.950, -42.952]},
]});
Anzeige Berechnungsergebnis
Als Ergebnis erh�lt man den Offset des TCP und die Standardabweichung in Millimetern als Info-Meldung angezeigt. Die Werte k�nnen anschlie�end als TCP-Werte beim Anlegen eines Tools verwendet werden (vgl. Tools importieren und erstellen).
Warten auf / Pausieren
Pausieren
Der Befehl sleep(timeMillis) hat nur einen Parameter, dieser gibt an wie lange das Programm an dieser Stelle pausieren soll. Die Zeit wird in Millisekunden angegeben. Der Codeausschnitt in dem Beispiel w�rde das Programm also 1 Sekunde schlafen lassen (1000 Millisekunden).
sleep(1000);
Warten auf
Die Funktion waitfor(inputName, value) wartet solange auf den �bergebenen Eingang bis dieser den �bergebenen Wert erreicht.
- 1 Parameter: Name des Eingangs (z.B. "INPUT_1")
- 2 Parameter: Wert auf den gewartet wird (0 oder 1)
waitfor("INPUT_1", 0);
Koordinatensystem
Standardm��ig ist bei jedem Programm das Basis-Koordinatensystem hinterlegt. �ber die Konfigurationen k�nnen weitere selbst definierte Koordinatensysteme hinzugef�gt werden. Diese m�ssen hierf�r bereits eingelernt sein. M�chte man das Koordinatensystem w�hrend des Programms �ndern, ist dies durch den Befehl setCoordSystem() m�glich. Dieser findet vor allem im Zusammenhang mit Wegpunkten mit variablem Koordinatensystem Anwendung.
setCoordSystem("Example_CoordSystem");
Meldungen und Pop-ups
Meldungen
Hinweis auf dem Bedienpanel anzeigen, der das Programm nicht blockiert:
showHint("");
Text in einem Pop-up-Fenster anzeigen, das das Programm blockiert:
showInfo(""), showWarning("") und showError("") unterscheiden sich nur im Layout. Dem Namen entsprechend werden Warn- bzw. Fehlersymbole angezeigt.
Pop-Up mit Eingabe
Es ist m�glich einen Wert �ber ein Pop-up-Fenster einzugeben:
var user_input = getUserInput("Pop-up title", "Insert Text:", "Enter a number...");
Es existieren die folgenden Variationen:
Einige Eingabeger�te, z.B. Messuhren, geben Werte aus, indem sie eine Tasteneingabe simulieren, die mit Enter beendet wird. Da in diesem Fall keine Person die Eingabe vornimmt, ist es nicht n�tig ein Pop-up anzuzeigen. Sobald die Methode activateReadFromKeyboard() aufgerufen wird, zeichnet HorstFX alle Tasteneingaben auf. Die Methode readFromKeyboard() blockiert das Programm, bis es ein Enter registriert und gibt dann die gesamte Eingabe als String zur�ck.
activateReadFromKeyboard();
showInfo(readFromKeyboard());
Bereich pr�fen
Die Funktion checkPoseConditions() �berpr�ft, ob sich der Roboter gerade im angegebenen Bereich befindet und gibt true/false zur�ck. Der zu �berpr�fende Bereich kann �ber eine Map in drei Formaten angegeben werden:
1. "conditionType": "CUBOID_CORNERS"
Es werden die Koordinaten von 4 Eckpunkten des Quaders angegeben. Ihre Anordnung ist in der grafischen Bedienoberfl�che nach Aufruf des Blocks "Bereich pr�fen" visualisiert.checkPoseConditions({
"conditionType": "CUBOID_CORNERS",
"tool": "No Tool",
"C1": [0.0, 0.0, 0.0],
"C2": [0.2, 0.0, 0.0],
"C3": [0.0, 0.2, 0.0],
"C4": [0.0, 0.0, 0.2]
}, "ex 1");
2. "conditionType": "CUBOID_XYZ"
Es werden die Koordinaten von einem Eckpunkt angegeben, gefolgt von den Abst�nden in x-, y- und z-Richtung zu den drei Nachbarecken.
checkPoseConditions({
"conditionType": "CUBOID_XYZ",
"tool": "No Tool",
"C1": [0.1, 0.2, 0.3],
"x": 0.05,
"y": 0.1,
"z": 0.2
}, "ex 2");
3. "conditionType": "JOINTS"
F�r jede Achse wird ein Bereich in Grad angegeben.
checkPoseConditions({
"conditionType": "JOINTS",
"tool": "No Tool",
"J1": [-50.0, 20.0],
"J2": [-5.0, 54.0],
"J3": [0.0, 30.0],
"J4": [12.0, 56.0],
"J5": [-56.0, 19.0],
"J6": [8.0, 148.0]
}, "ex 3");
Der letzte Parameter ist ein Name, der dem gerade angegebenen Bereich gegeben werden kann.