Skip to Content
Python APIRückrufeDynamische GrenzwertePrüfeDynamischeGrenzwerteDerGelenke

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.

Dynamic Limits Script Path class diagram

  • 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 REACHABLE

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