Skip to Content
FASTSUITE E2API ReferenzPython APIRückrufeDynamische GrenzenCheckJointsDynamicLimits

CheckJointsDynamicLimits

Der CheckJointsDynamicLimits-Callback wird automatisch aufgerufen, wenn die gemeinsamen Grenzen überprüft werden müssen, entweder während gemeinsamer Interaktion und Unterricht oder auch während der Simulation und automatischen Berechnung der Werkzeugwegoptimierung.

Die Rückrufvorlage ist in einer cenpyDefResource.py-Datei definiert. Der CheckJointsDynamicLimits-Callback erhält als Eingabe eine Liste von Haupt- und externen Joint-Werten, geordnet wie in der Maschinenressource. So gehen zuerst die Hauptverbindungen und dann die äußeren. Wenn die Ressource beispielsweise 5 Haupt- und 2 externe Joints hat, erhält CheckJointsDynamicLimits eine Liste mit 7 Joint-Werten.

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 eigenes Skript haben.

Der Skriptpfad sollte in den benutzerdefinierten Attributen der Hauptressource definiert sein. Der Attributname hat einen vordefinierten Namen: DynamicLimitsScriptPath. Ein Attribut kann entweder einen absoluten oder einen relativen Pfad haben.

Wenn der relative Pfad verwendet werden soll, platziere das Skript mit der Definition der dynamischen Grenzen in das interne E2Plugin. Die empfohlene Ordnerstruktur ist: .. \E2InstallationFolder\E2Plugin\DynamicLimits\RobotManufacturer\ScriptName.py

Daher sollte der relative Pfad im DynamicLimits-Ordner starten: DynamicLimits\RobotManufacturer\ScriptName.py. Der erste Teil des Pfades wird automatisch mit dem internen E2Plugin-Standort abgeschlossen.

! Klassendiagramm des dynamischen Limits Skriptpfads

  • CheckJointsDynamicLimits(list: jointValues**):** DynamicLimitsReachabilityStatus

  • jointValues — Gekoppelte Haupt- und externe gemeinsame Werte zur Überprüfung

  • zurück — Erreichbarkeitsstatus: ERREICHBAR oder UNERREICHBAR

Überprüfe, 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 REACHABLE

Eine interne Bibliothek

Cenpylib

hat einige Utility-Funktionen, die verwendet werden, um die Überprüfung der dynamischen Grenzwerte zu vereinfachen. Zum Beispiel die Rampenfunktion:

[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
Was this page helpful?