Sie sind auf Seite 1von 4

Jonas Pohl

Alle Seitenangaben beziehen sich auf folgendes Dokument:


https://bbs-lingen-tg.eu/iserv/file_pass/Groups/S19%20F2E-1/Robotik/KSS_83_SI_de.pdf

1.) Benennen Sie die vier einfachen Variablentypen in KRC

Antwort zu 1.)
Die vier einfachen Datentypen in KRC sind:
 Integer
 Real
 Boolean
 Character

2.) Notieren Sie für jeden Variablen-Typ Beispiele für verschiedene Berechnungen bzw.
Verknüpfungen, die mit diesem Typ realisierbar sind (inklusive Ergebnisse der Operationen).

Antwort zu 2.)
 Integer
Arithmetische Operatoren:

o Addition mit Integer


Beispiel: A=3+2 ;A=5
o Addition mit Real
Beispiel: A=3+1,5 ;A= 4,5

o Subtraktion mit Real


Beispiel: A=3-1,5 ;A=1,5

o Multiplikation mit Integer


Beispiel: A=3*2 ;A=6
o Multiplikation mit Real
Beispiel: A=3*1,5 ;A=4,5

o Division mit Integer


Beispiel: A=3/2 ;A=1(Nachkommastellen werden bei INT-Division abgeschnitten)
o Division mit Real
Beispiel: A=3/1,5 ;A=2

Vergleichsoperatoren:

o Gleich mit Integer


Beispiel: A= 4==4 ;A=TRUE
o Gleich mit Real
Beispiel: A= 4==4,5 ;A=FALSE (Kombination möglich aber nicht sinnvoll,
zwangsläufig FALSE oder inkorrekt durch Rundungsfehler)
o Gleich mit Char
Beispiel: A= “A“==65 ;A=TRUE
Jonas Pohl

o Gleich mit Integer


Beispiel: A= 4==4 ;A=TRUE
o Gleich mit Real
Beispiel: A= 4==4,5 ;A=FALSE (Kombination möglich aber nicht sinnvoll,
zwangsläufig FALSE oder inkorrekt durch Rundungsfehler)
o Gleich mit Char
Beispiel: A= “A“==65 ;A=TRUE

o Ungleich mit Integer


Beispiel: A= 4<>4 ;A=FALSE
o Ungleich mit Real
Beispiel: A= 4<>4,5 ;A=TRUE (Kombination möglich aber nicht sinnvoll,
zwangsläufig TRUE oder inkorrekt durch Rundungsfehler)
o Ungleich mit Char
Beispiel: A= “A“<>65 ;A=FALSE

 Real
o Alle arithmetischen Operatoren sind auch auf Real anwendbar, es können jedoch
keine natürlichen Zahlen entstehen. Für Beispiele mit Real siehe bitte INT.

 Boolean
o NOT
Beispiel:
A=True;
B=NOT A;
B=FALSE;

o EXOR
Beispiel:
A= TRUE;
B= FALSE;
C=A EXOR B;
C= TRUE;

Logische Operatoren können nur auf den Datentyp Boolean angewendet werden.

 Character
o Ungleich mit Char
Beispiel: A= “A“<>65 ;A=FALSE
o Gleich mit Char
Beispiel: A= “A“==65 ;A=TRUE

3.) Überlegen Sie sich eine Position (E6POS) für den KR6 R900 sixx Roboter aus dem Labor, für
die Sie an mindestens einer Stelle unterschiedliche Werte für Status oder Turn angeben. (Also
zweimal E6POS mit gleichen Koordinaten aber Unterschied bei Status und/oder Turn!)

Antwort zu 3.)

Zur Lösung des Problems muss eine Kombination aus Status- und Turn- Werten gefunden werden,
die sich nicht gegenseitig logisch ausschließen.
Jonas Pohl

Bit 4 von Status enthält keine Informationen zur Achsposition und kann daher immer verändert
werden.
Ausgehend vom Beispiel auf S. 315 (wird als mögliche Kombination angenommen) ergibt sich:

E6POS REAL X 24.2, Y 19.3, Z 36.4, A 48.6, B 52.3, C 19.7, E1 67.5, E2 78.2, E3 69.6, E4 43.5,
E5 77.4, E6 13.2, INT S 6, T 19

E6POS REAL X 24.2, Y 19.3, Z 36.4, A 48.6, B 52.3, C 19.7, E1 67.5, E2 78.2, E3 69.6, E4 43.5,
E5 77.4, E6 13.2, INT S 22, T 19

4.) Wie bemerkt man im Programmablauf, dass ein Bewegungsbefehl über eine Singularität (oder
sehr nahe daran vorbei-) führt? Was können Sie als Programmierer tun, um diesen Effekt zu
vermeiden?

Antwort zu 4.)

In der Praxis sieht man es dem Roboter an, wenn er sich einer Singularität nähert. Besonders in
schnelleren Bewegungen sollte er seine Geschwindigkeit dann deutlich reduzieren.
Falls der Roboter eine Singularität überfährt, kann zusätzlich ggf. einer der auf S.315ff
beschriebenen Bewegungsabläufe beobachtet werden (abhängig davon, um welche Singularität es
sich handelt).

Es soll möglich sein, über einen Interrupt die Variable „$SINGUL_DIST[]“ im Submit-Interpreter
auszulesen. Sie enthält die Entfernung des Roboters von der naheliegendsten Singularität.
Man könnte dann einen Wert bestimmen, der für die vorliegende Anwendung den „minimalen
Sicherheitsabstand“ zu einer Singularität darstellt. Dieser Wert wird anschließend in einer Variable
abgelegt und zyklisch mit „$SINGUL_DIST[]“ verglichen. Wird der sichere Abstand unterschritten,
könnte ein bedingter Stop ausgelöst und ggf. eine anwendungsspezifische Fehlermeldung
ausgegeben werden.
Somit würde der Roboter theoretisch nie in eine Singularität geraten.
Meine Informationen hierzu stammen aus folgenden Quellen:
 https://www.roboterforum.de/roboter-forum/thread/13237-singularit%C3%A4t-im-submit-
erkennen-und-reagieren/
 https://www.robot-forum.com/robotforum/thread/22414-approaching-to-the-singularity-
positions/

Falls diese Lösung nicht umsetzbar ist oder nicht zur Anwendung passt, könnte die Variable
$SINGUL_POS[1…3] der störenden Singularität gesetzt werden. Hierdurch dreht sich die
betroffene Achse nicht auf 0°, sondern behält ihre Ausrichtung zwischen Start- und Zielpunkt bei.
(Siehe S. 315ff)

Bei Problemen mit Handachsen-Singularitäten kann außerdem in der Nähe der Singularität die
Hand PTP – Option des Bewegungsbefehls aktiviert werden. Hierbei ist zu beachten, dass die
Werkzeugausrichtung prinzipiell korrekt bleibt, das Werkzeug aber ggf. unsicher / ruckartig geführt
wird. Präzise Arbeiten, wie Laserschweißen, sollten nicht mit Hand PTP ausgeführt werden. (Siehe
S. 295 und S. 305)

Auch der Befehl „$SPL_ORI_JOINT_AUTO = #ON:“ kann sich positiv auf Handachsen-
Singularitäten auswirken. Er modifiziert alle CP-Spline-Bewegungen im Programm, für die
$ORI_TYPE = #VAR gilt, automatisch. Das Steuergerät kann somit selbst entscheiden, ob es den
gewünschten Punkt über Achs- oder Bahnkoordinaten anfährt und ggf. Probleme mit der
Singularität vermeidet. (Siehe S.306)
Jonas Pohl

Abgesehen von diesen Lösungen ist es auch sinnvoll, das Programm zuerst mit Kuka.Sim zu
simulieren. Es soll möglich sein, den Simulator so einzurichten, dass er beim Überfahren von
Singularitäten eine Warnung ausgibt. Somit ließe sich das Programm gefahrlos testen und
optimieren.

Falls durch kostengünstige Veränderungen am Arbeitsplatz des Roboters Singularitäten vermieden


werden können, ist auch dies eine Überlegung wert.

Das könnte Ihnen auch gefallen