7. Roboter-Sicherheitseinstellungen

7.1. Kollisionsstufe einstellen

Prototyp

SetAnticollision(mode, level, config)

Beschreibung

Kollisionsstufe einstellen

Erforderliche Parameter

  • mode: 0 = Stufe, 1 = Prozent

  • level = [j1, j2, j3, j4, j5, j6]: Kollisionsschwellwert

  • config: 0 = Konfigurationsdatei nicht aktualisieren, 1 = Konfigurationsdatei aktualisieren

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

7.2. Strategie nach Kollision einstellen

Prototyp

SetCollisionStrategy(strategy, safeTime, safeDistance, safeVel, safetyMargin)

Beschreibung

Strategie nach Kollision einstellen

Erforderliche Parameter

  • strategy: 0 = Fehler melden und pausieren, 1 = Weiterlaufen, 2 = Fehler melden und anhalten, 3 = Schwerkraftmomentmodus, 4 = Schwingungsantwortmodus, 5 = Kollisionsrückprallmodus

Standardparameter

  • safeTime: Sicherheitsstopp-Zeit [1000-2000] ms, Standard = 1000

  • safeDistance: Sicherheitsstopp-Distanz [1-150] mm, Standard = 100

  • safeVel: Sicherheitsstopp-Geschwindigkeit [50-250] mm/s, Standard = 250

  • safetyMargin[6]: Sicherheitsfaktoren [1-10], Standard = [10, 10, 10, 10, 10, 10]

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

7.3. Benutzerdefinierte Kollisionserkennungsschwellwerte starten, Schwellwerte für Gelenk und TCP setzen

Neu in Version Python: SDK-v2.1.0

Prototyp

CustomCollisionDetectionStart(flag, jointDetectionThreshould, tcpDetectionThreshould, block)

Beschreibung

Benutzerdefinierte Kollisionserkennungsschwellwerte starten, Schwellwerte für Gelenk und TCP setzen

Erforderliche Parameter

  • flag: 1 = Nur Gelenkerkennung aktivieren, 2 = Nur TCP-Erkennung aktivieren, 3 = Gelenk- und TCP-Erkennung gleichzeitig aktivieren

  • jointDetectionThreshould: Gelenk-Kollisionserkennungsschwellwerte j1-j6

  • tcpDetectionThreshould: TCP-Kollisionserkennungsschwellwerte, xyzabc

  • block: 0 = nicht blockierend, 1 = blockierend

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

7.4. Benutzerdefinierte Kollisionserkennungsschwellwerte stoppen

Neu in Version Python: SDK-v2.1.0

Prototyp

CustomCollisionDetectionEnd()

Beschreibung

Benutzerdefinierte Kollisionserkennungsschwellwerte stoppen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

7.5. Codebeispiel zum Einstellen der Roboter-Kollisionsstufe

 1from fairino import Robot
 2import time
 3# Verbindung zur Robotersteuerung herstellen, bei Erfolg wird ein Roboterobjekt zurückgegeben
 4robot = Robot.RPC('192.168.58.2')
 5mode = 0
 6config = 1
 7level1 = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
 8level2 = [50.0, 20.0, 30.0, 40.0, 50.0, 60.0]
 9rtn = robot.SetAnticollision(mode, level1, config)
10print(f"SetAnticollision mode 0 rtn is {rtn}")
11mode = 1
12rtn = robot.SetAnticollision(mode, level2, config)
13print(f"SetAnticollision mode 1 rtn is {rtn}")
14p1Joint = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
15p2Joint = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
16p1Desc = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
17p2Desc = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
18exaxisPos = [0.0, 0.0, 0.0, 0.0]
19offdese = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
20robot.MoveL(desc_pos=p2Desc, tool=0, user=0, vel=100, blendR=2)
21robot.ResetAllError()
22safety = [5, 5, 5, 5, 5, 5]
23rtn = robot.SetCollisionStrategy(3, 1000, 150, 250, safety)
24print(f"SetCollisionStrategy rtn is {rtn}")
25jointDetectionThreshould = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
26tcpDetectionThreshould = [60, 60, 60, 60, 60, 60]
27rtn = robot.CustomCollisionDetectionStart(3, jointDetectionThreshould, tcpDetectionThreshould, 0)
28print(f"CustomCollisionDetectionStart rtn is {rtn}")
29robot.MoveL(desc_pos=p1Desc, tool=0, user=0, vel=100)
30robot.MoveL(desc_pos=p2Desc, tool=0, user=0, vel=100)
31rtn = robot.CustomCollisionDetectionEnd()
32print(f"CustomCollisionDetectionEnd rtn is {rtn}")
33robot.CloseRPC()

7.6. Positiven Endanschlag einstellen

Prototyp

SetLimitPositive(p_limit)

Beschreibung

Positiven Endanschlag (weiche Grenze) einstellen

Erforderliche Parameter

  • p_limit = [j1, j2, j3, j4, j5, j6]: Positionen der sechs Gelenke

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

7.7. Negativen Endanschlag einstellen

Prototyp

SetLimitNegative(n_limit)

Beschreibung

Negativen Endanschlag (weiche Grenze) einstellen

Erforderliche Parameter

  • n_limit = [j1, j2, j3, j4, j5, j6]: Positionen der sechs Gelenke

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

7.8. Weiche Gelenk-Endanschläge (Winkel) abrufen

Prototyp

GetJointSoftLimitDeg(flag=1)

Beschreibung

Weiche Gelenk-Endanschläge (Winkel) abrufen

Erforderliche Parameter

Keine

Standardparameter

  • flag: 0 = blockierend, 1 = nicht blockierend, Standard = 1

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • [j1min, j1max, j2min, j2max, j3min, j3max, j4min, j4max, j5min, j5max, j6min, j6max]: Achse 1~6, negative und positive weiche Endanschläge, Einheit [°]

7.9. Codebeispiel zum Einstellen der Roboter-Endanschläge

 1from fairino import Robot
 2import time
 3# Verbindung zur Robotersteuerung herstellen, bei Erfolg wird ein Roboterobjekt zurückgegeben
 4robot = Robot.RPC('192.168.58.2')
 5plimit = [170.0, 80.0, 150.0, 80.0, 170.0, 160.0]
 6robot.SetLimitPositive(plimit)
 7nlimit = [-170.0, -260.0, -150.0, -260.0, -170.0, -160.0]
 8robot.SetLimitNegative(nlimit)
 9error,neg_deg = robot.GetJointSoftLimitDeg(0)
10print(f"pos limit deg: {neg_deg[1]}, {neg_deg[3]}, {neg_deg[5]}, {neg_deg[7]}, {neg_deg[9]}, {neg_deg[11]}")
11print(f"neg limit deg: {neg_deg[0]}, {neg_deg[2]}, {neg_deg[4]}, {neg_deg[6]}, {neg_deg[8]}, {neg_deg[10]}")
12robot.CloseRPC()

7.10. Roboter-Kollisionserkennungsmethode einstellen

Neu in Version Python: SDK-v2.1.2

Prototyp

SetCollisionDetectionMethod(method, thresholdMode)

Beschreibung

Roboter-Kollisionserkennungsmethode einstellen

Erforderliche Parameter

  • method: Kollisionserkennungsmethode: 0 = Strommodus, 1 = Doppel-Encoder, 2 = Strom und Doppel-Encoder gleichzeitig aktiviert

  • thresholdMode: Art des Kollisionsstufen-Schwellwerts: 0 = Fester Schwellwert der Kollisionsstufe, 1 = Benutzerdefinierter Kollisionserkennungsschwellwert

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

7.11. Kollisionserkennung im Stillstand ein-/ausschalten

Neu in Version Python: SDK-v2.0.5

Prototyp

SetStaticCollisionOnOff(status)

Beschreibung

Kollisionserkennung im Stillstand ein-/ausschalten

Erforderliche Parameter

  • status: 0 = aus, 1 = ein

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

7.12. Codebeispiel zum Einstellen der Roboter-Kollisionserkennungsmethode

 1from fairino import Robot
 2import time
 3# Verbindung zur Robotersteuerung herstellen, bei Erfolg wird ein Roboterobjekt zurückgegeben
 4robot = Robot.RPC('192.168.58.2')
 5rtn = robot.SetCollisionDetectionMethod(0,0)
 6rtn = robot.SetStaticCollisionOnOff(1)
 7print(f"SetStaticCollisionOnOff On rtn is {rtn}")
 8time.sleep(5)
 9rtn = robot.SetStaticCollisionOnOff(0)
10print(f"SetStaticCollisionOnOff Aus rtn ist {rtn}")
11robot.CloseRPC()

7.13. Gelenk-Drehmoment-/Leistungsüberwachung

Neu in Version Python: SDK-v2.0.5

Prototyp

SetPowerLimit(status, power)

Beschreibung

Gelenk-Drehmoment-/Leistungsüberwachung

Erforderliche Parameter

  • status: 0 = aus, 1 = ein

  • power: Maximale eingestellte Leistung (W)

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

7.14. Codebeispiel für Gelenk-Drehmoment-/Leistungsüberwachung

 1from fairino import Robot
 2import time
 3# Verbindung zur Robotersteuerung herstellen, bei Erfolg wird ein Roboterobjekt zurückgegeben
 4robot = Robot.RPC('192.168.58.2')
 5robot.DragTeachSwitch(1)
 6robot.SetPowerLimit(1, 200)
 7error,torques = robot.GetJointTorques(1)
 8count = 100
 9robot.ServoJTStart()
10while count > 0:
11    error = robot.ServoJT(torques, 0.001)
12    count -= 1
13    time.sleep(0.001)  # 1ms Verzögerung
14error = robot.ServoJTEnd()
15robot.DragTeachSwitch(0)
16robot.CloseRPC()

7.15. Sicherheitsgeschwindigkeitsparameter einstellen

Prototyp

SetVelReducePara(enable, maxTCPVel, strategy)

Beschreibung

Sicherheitsgeschwindigkeitsparameter einstellen

Erforderliche Parameter

  • enable: 0-aus; 1-im manuellen Modus aktiviert; 2-in allen Modi aktiviert (automatische Geschwindigkeitsbegrenzung nicht unterstützt)

  • maxTCPVel: Maximale TCP-Geschwindigkeitsbegrenzung; [0-1000] mm/s

  • strategy: Strategie nach Überschreitung; 0-Stopp mit Alarm; 1-automatische Geschwindigkeitsbegrenzung; 2-Stopp mit Alarm und Deaktivierung

Standardparameter

Keine

Rückgabewert

  • Fehlercode Erfolg-0 Fehler-errcode

7.16. SDK-Codebeispiel zum Einstellen der Sicherheitsgeschwindigkeitsparameter

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Verbindung mit der Robotersteuerung herstellen
 6robot = Robot.RPC('192.168.58.2')
 7
 8def TestSetVelReducePara(self):
 9    # Gelenkposition, externe Achse und Offset initialisieren
10    j1 = [0, -90, 90, 0, 0, 0]
11    j2 = [90, -90, 90, 0, 0, 0]
12    epos = [0, 0, 0, 0]
13    offset_pos = [0, 0, 0, 0, 0, 0]
14
15    # Basisgeschwindigkeit einstellen
16    robot.SetSpeed(80)
17
18    # Test Parameterfehler (mode=2 ungültig?)
19    rtn = robot.SetVelReducePara(2, 30, 1)
20    print(f"SetVelReducePara param error rtn is {rtn}")
21
22    # Geschwindigkeitsreduzierung deaktivieren (mode=0, action=1 deaktiviert)
23    rtn = robot.SetVelReducePara(0, 30, 1)
24    print(f"SetVelReducePara disable reduce vel rtn is {rtn}")
25    robot.MoveJ(joint_pos=j1, tool=0, user=0, vel=100, acc=100, ovl=100,
26                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
27    robot.MoveJ(joint_pos=j2, tool=0, user=0, vel=100, acc=100, ovl=100,
28                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
29
30    # Geschwindigkeitsreduzierung aktivieren (mode=1, action=1)
31    rtn = robot.SetVelReducePara(1, 30, 1)
32    print(f"SetVelReducePara reduce vel rtn is {rtn}")
33    robot.MoveJ(joint_pos=j1, tool=0, user=0, vel=100, acc=100, ovl=100,
34                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
35    robot.MoveJ(joint_pos=j2, tool=0, user=0, vel=100, acc=100, ovl=100,
36                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
37
38    # Test action=2 (kann Not-Halt oder Deaktivierung bedeuten)
39    rtn = robot.SetVelReducePara(2, 30, 2)
40    print(f"SetVelReducePara disable robot rtn is {rtn}")
41    robot.MoveJ(joint_pos=j1, tool=0, user=0, vel=100, acc=100, ovl=100,
42                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
43    robot.MoveJ(joint_pos=j2, tool=0, user=0, vel=100, acc=100, ovl=100,
44                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
45
46    # Warten, Fehler zurücksetzen und Roboter wieder aktivieren
47    time.sleep(2)
48    robot.ResetAllError()
49    robot.RobotEnable(1)
50    time.sleep(1)
51
52    # Test action=0 (kann nur Fehler melden, keine Aktion bedeuten)
53    rtn = robot.SetVelReducePara(2, 30, 0)
54    print(f"SetVelReducePara report error rtn is {rtn}")
55    robot.MoveJ(joint_pos=j1, tool=0, user=0, vel=100, acc=100, ovl=100,
56                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
57    robot.MoveJ(joint_pos=j2, tool=0, user=0, vel=100, acc=100, ovl=100,
58                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
59
60    # Verbindung schließen
61    robot.CloseRPC()
62
63TestSetVelReducePara(robot)