PrüfungDerDynamischenGrenzwerteDerGelenke
Der Callback CheckJointsDynamicLimits wird automatisch aufgerufen, wenn die Gelenkgrenzen überprüft werden müssen, sei es während der Gelenkinteraktion und -programmierung oder auch während der Simulation und der automatischen Berechnung der Werkzeugwegoptimierung.
Die Callback-Vorlage ist in der Datei cenpyDefResource.py definiert. Der CheckJointsDynamicLimits-Callback erhält als Eingabe eine Liste von Haupt- und externen Gelenkwerten, die in der gleichen Reihenfolge wie in der Maschinenressource angeordnet sind. Dabei kommen zuerst die Hauptgelenke und danach die externen Gelenke. Wenn die Ressource beispielsweise 5 Haupt- und 2 externe Gelenke hat, erhält CheckJointsDynamicLimits eine Liste mit 7 Gelenkwerten.
Das Skript selbst kann im internen E2Plugin-Ordner oder in einem beliebigen lokalen Repository abgelegt werden. Das Skript wird nur ausgeführt, wenn der Attributname gefunden wird, der Attributwert nicht leer ist und der angegebene Pfad existiert. Ein einzelnes Skript kann für mehrere Ressourcen verwendet werden, oder jede Ressource kann ein separates Skript besitzen.
Der Skriptpfad sollte in den Benutzerdefinierten Attributen der Hauptressource definiert werden. Der Attributname ist vordefiniert: DynamicLimitsScriptPath. Ein Attribut kann entweder einen absoluten oder einen relativen Pfad enthalten.
Wenn der relative Pfad verwendet werden soll, platzieren Sie das Skript mit der Definition der dynamischen Grenzen im internen E2Plugin. Die empfohlene Ordnerstruktur lautet: ..\E2InstallationFolder\E2Plugin\DynamicLimits\RobotManufacturer\ScriptName.py
Der relative Pfad sollte daher im DynamicLimits-Ordner beginnen: DynamicLimits\RobotManufacturer\ScriptName.py. Der erste Teil des Pfades wird automatisch mit dem internen E2Plugin-Standort ergänzt.

-
CheckJointsDynamicLimits(list: jointValues**):** DynamicLimitsReachabilityStatus
-
jointValues — Gekoppelte Haupt- und externe Gelenkwerte zur Überprüfung
-
return — Erreichbarkeitsstatus: ERREICHBAR oder NICHT ERREICHBAR
Überprüfen Sie, ob die gekoppelten Gelenkwerte nicht außerhalb der dynamischen Grenzen liegen.
[Example 1]
# Import libraries
from centypes import *
def CheckJointsDynamicLimits(joints):
# condition 1: J2+J3<-76 && J4<-90
if joints[1] + joints[2] < -76 and joints[3] < -90:
return UNREACHABLE
# condition 2: J2+J3<-73 && J4-5*(J2+J3) > 435
elif joints[1] + joints[2] < -73 and joints[3] - 5 * (joints[1] + joints[2]) > 435:
return UNREACHABLE
# condition 3: J5 < -100 && J6 < 30 && J6 > -60
elif joints[4] < -100 and joints[5] < 30 and joints[5] > -60:
return UNREACHABLE
# condition 4: ((J5 > 100 && (J6 < 120 || J6 < -160)) || (J5 > 110 && (J6 < 100 || J6 < -130) ) )
elif (joints[4] > 100 and (joints[5] < 120 or joints[5] < -160)) or (joints[4] > 110 and (joints[5] < 100 or joints[5] < -130)):
return UNREACHABLE
else:
return REACHABLEAn internal library cenpylib has a few utility functions used to simplify the dynamic limits check. For example, the Ramp function:
[Example 2]
# Import libraries
from centypes import *
from cenpylib import DynamicLimits as DL
def CheckJointsDynamicLimits(joints):
# Min Limit: =ramp(dof(2)*DEG,0,-86,155,-15)*RAD
# Max Limit: =ramp(dof(2)*DEG,-105,115,-90,160)*RAD
j2 = joints[1]
j3 = joints[2]
j3min = DL.Ramp(j2, 0, -86, 155, -15)
j3max = DL.Ramp(j2, -105, 115, -90, 160)
if j3 >= j3min and j3 <= j3max:
return REACHABLE
else:
return UNREACHABLE