Moin,
über einen kleinen Umweg kann man bei ABB vorab die Erreichbarkeit eines (Ziel)punktes ermitteln. Falls er nicht erreichbar ist, wird ein abfangbarer Fehler ausgegeben:
FUNC bool IsRobtargetReachable(robtarget pReach, PERS tooldata tReach \PERS wobjdata wReach)
VAR bool bReachable := TRUE;
VAR jointtarget jReach;
jReach := CalcJointT(pReach, tReach \Wobj?wReach);
RETURN bReachable;
ERROR
IF (ERRNO = ERR_ROBLIMIT) OR (ERRNO = ERR_OUTSIDE_REACH) THEN
SkipWarn;
bReachable := FALSE;
TRYNEXT;
ENDIF
ENDFUNC
Alles anzeigen
Gibt es sowas in der Art auch bei fanuc? Von mir aus auch irgendwie als workaround.
Ich frage deshalb, weil mein Programm ab und an mit der Meldung SRVO-115 Limit error stehenbleibt: von einer Startposition soll der Roboter linear eine (von einer Kamera ermittelte) Zielposition anfahren. Wenn aber z.B. Achse 6 an der Startposition bei 182° steht und an der Zielposition einen Winkel von 253° hätte kann das nicht gehen, weil der Achsbereich der Achse von -220° bis 220° geht.
Blöderweise kann diese spezielle Bewegung nicht in joint erfolgen, weil es die Bewegung auf das Bauteil ist. Meine Idee wäre deshalb vorher zu prüfen, ob die Position erreichbar ist, und, falls nicht, eine Zwischenposition über dem Bauteil per joint anzufahren. Immer eine entsprechende Zwischenposition anzufahren soll möglichst vermieden werden, weil es unnötig die Taktzeit verlängern würde.
Gruß
Jörn