Das folgende Bild zeigt die Standardansicht, sobald ein neues textuelles Programm erstellt wurde.
Die rote Box zeigt den Programmnamen, sowie die aktuelle TCP-Position des Roboters an. Zudem gibt es Buttons, �ber die entsprechende Werte (in bestimmtem Format) direkt in den Text-Editor eingef�gt werden k�nnen. Mit einem Klick oben rechts auf den Button i �ffnet sich ein Hilfefenster, in dem alle textuellen Befehle kurz beschrieben sind.
Die letzte Zeile in der roten Box beinhaltet eine schnelle Bearbeitungsm�glichkeit des Programm-Codes. Diese ist jedoch in erster Linie nur vorteilhaft und empfohlen f�r kleine �nderungen, wenn keine (physische) Tastatur vorhanden ist bzw. angeschlossen werden kann.
In der gelben Box sind drei Buttons vorhanden:
- Exportieren (links): Exportieren des aktuellen Programms als ZIP-Datei mitsamt all seinen bestehenden Konfigurationen und daf�r ben�tigten Dateien
- Speichern (mitte): Speichern des aktuellen Programms
- Ausf�hren (rechts): �ffnen des Men�s Programmausf�hrung, um eine Ausf�hrung zu starten
Konfigurations-Block
Jedes horstSCRIPT-Programm besitzt einen Konfigurations-Block, dieser ist in der blauen Box zu sehen. Dieser wird automatisch beim Erstellen eines Programms miterstellt. Normalerweise muss an dem Konfigurations-Block nichts ge�ndert werden. Die beiden geschweiften Klammern '{' und '}' definieren diesen Konfigurations-Block. Alles innerhalb dieser geschweiften Klammern z�hlt somit zur Konfiguration.
Innerhalb der Konfiguration gibt es einzelne 'config(...);'-Zeilen. Diese definieren/konfigurieren verschiedene Attribute eines Programms. Der erste Wert gibt jeweils an was konfiguriert wird (Name/Bezeichnung des Attributs). Der zweite Wert gibt an, welcher Wert dem Attribut zugeordnet wird.
config("robot.horstproto", "Horst900S4Fast");
Beschreibt, f�r welches Robotermodell dieses Programm geschrieben wurde bzw. ausgelegt ist. Da die Kinematik bei den Versionen unterschiedlich ist, kann nicht jeder Roboter jeden Punkt anfahren. Daher wird hier der Robotertyp eingetragen. In diesem Fall Horst900S4Fast.
config("tool", "No Tool");
config("world", "EMPTY_WORLD");
config("scripttype", "textual");
Beschreibt, ob das Programm ein grafisches (visual) oder textuelles (textual) Programm ist.
config("tcp.weight", "2.5")
Beschreibt, wie schwer das Tool inklusive Gegenstand im/am Tool ist. Hier k�nnen beliebige Werte von 0.0 kg bis zu einer bestimmten Obergrenze eingetragen werden, die je nach Robotermodell anders ist. Je gr��er der Wert ist, desto langsamer f�hrt der Roboter, um mit einem hohen Gewicht keine Schrittverluste zu erzeugen.
config("version", "2022.04");
Beschreibt, mit welcher horstFX-Version das Programm erstellt wurde.
config("io.config.file", "standard_name.io");
config("io.config.checksum", "f4779a85");
Aktionen hinzuf�gen
�ber den Button Aktion hinzuf�gen im Aktionsbereich (gr�ne Box) k�nnen verschiedene Aktionen �ber das jeweilige Aktionsfenster hinzugef�gt werden. Dies erfolgt analog wie im grafischen Programmieren, nur dass die hinzugef�gte Aktion in textueller Form dem Text-Editor hinzugef�gt wird.
Definition von Variablen und Funktionen
Um eine Variable zu definieren wird in JavaScript dem Befehl var ein ensprechender Name �bergeben. Im Programmablauf werden Variablen wie folgt deklariert:
var Anfahrhoehe = 0.05;
var Anfahrhoehe = 0.05;
var VersatzX = 0.04;
var VersatzY = 0.06;
Den Variablen kann, wie im obigen Beispiel dargestellt, direkt ein Wert zugewiesen werden. Diese Zuweisung kann auch im sp�teren Ablauf des Programmes erfolgen und ist nicht zwingend bei der Initialisierung notwendig.
Um Funktionen zu definieren wird der Bezeichner function verwendet. Wie im unteren Beispiel dargestellt, wird ein Funktionsname vergeben und im Methodenrumpf die Funktion definiert. Der Methodenrumpf wird durch zwei geschweifte Klammern gekennzeichnet.
function GreiferInit(){
setOutput("TOOL_OUTPUT_1", 0);
}
Den Variablen kann, wie im obigen Beispiel dargestellt, direkt ein Wert zugewiesen werden. Diese Zuweisung kann auch im sp�teren Ablauf des Programmes erfolgen und ist nicht zwingend bei der Initialisierung notwendig.
Um Funktionen zu definieren wird der Bezeichner function verwendet. Wie im unteren Beispiel dargestellt, wird ein Funktionsname vergeben und im Methodenrumpf die Funktion definiert. Der Methodenrumpf wird durch zwei geschweifte Klammern gekennzeichnet.
Beispiel:
////////////////////////////////////functions/////////////////////////////////////////////
function GreiferInit(){
setOutput("TOOL_OUTPUT_1", 1.0);
sleep(100);
setOutput("TOOL_OUTPUT_2", 0.0);
}
Im obigen Beispiel wird die Funktion GreiferInit definiert. Im Methodenrumpf befinden sich Methoden, um die Signale der Tool-Ausg�nge zu setzen und eine Wartefunktion.
IF-Bedingung, For-loop, While-loop, Switch-Case
Um eine WENN-Bedingung im Programm zu implementieren wird ein If-else-Block dem Programm hinzugef�gt. Grunds�tzlich wird dieser Befehl folgenderma�en aufgebaut:
if(BEDINGUNG_1){
Wenn BEDINGUNG 1 erf�llt dann wird dieser Code ausgef�hrt
} else if (BEDINGUNG_2){
Wenn BEDINGUNG_2 erf�llt, wird dieser Code ausgef�hrt
} else {
sonst
}
Beispiel:
var i = 12;
if (i < 0.5) {
moveJoint(0.62100, 0.00000, 0.69726, 0.70711, 0.00000, 0.70711, 0.00000, 0.5);
} else if (i > 10) {
showInfo("i is greater than 10");
} else {
sleep(500);
}
Um eine Wiederholschleife zu implementieren, welche solange durchl�uft bis eine bestimmte Bedingung sich �ndert, kann die While-Schleife herangezogen werden. Solange die Bedingung erf�llt (=true) ist, wird der Methodenrumpf ausgef�hrt.
while(BEDINGUNG){
...CODE...
}
Beispiel:
var speed = 0.50;
while (speed <= 1) {
moveJoint(0.10432, 0.61218, 0.69726, 0.54037, -0.45607, 0.54037, 0.45607,speed);
sleep(500);
moveJoint(0.62100, 0.00000, 0.69726, 0.70711, 0.00000, 0.70711, 0.00000,speed);
speed+=0.050;
}
Um besondere F�lle abzufangen, sprich um anhand eines bestimmten Variablenwertes ein Methode auszuf�hren, kann die Switch-Case Anweisung implementiert werden. Jeder case wird mit einem break-Befehl beendet.
switch(case_variable){
case(1): ....CODE... break;
case(2): ...CODE... break;
case(3): ...CODE... break;
}
Beispiel:
var season = 1;
switch (season) {
case (1):
showInfo("Spring.");
break;
case (2):
showInfo("Summer.");
break;
case (3):
showInfo("Autumn.");
break;
case (4):
showInfo("Winter.");
break;
}
Operatoren JavaScript
Allgemeine Zuweisungsoperatoren
Vergleichsoperatoren
Mit Hilfe von Vergleichsoperatoren k�nnen Vergleiche zweier Variabeln/Werte etc. durchgef�hrt werden. Als Ergebnis wird der Wert TRUE/False geliefert.
Arithmetische Operatoren
Logische Operatoren
Weitere Informationen und Cheat Sheets
F�r weitere Informationen zur Programmierung mit JavaScript soll an dieser Stelle auf unterschiedliche Cheat Sheets verwiesen werden:
https://websitesetup.org/javascript-cheat-sheet/
https://htmlcheatsheet.com/js/
Bei spezifischen Fragen rund um die Implementierung von JavaScript-Code kann dar�ber hinaus auf die Informationen der stackoverflow-Community zur�ckgegriffen werden:
https://stackoverflow.com/questions/tagged/javascript