13. Erweiterungsachsen

13.1. Parameter für 485-Erweiterungsachse einstellen

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoSetParam(servoId, servoCompany, servoModel, servoSoftVersion, servoResolution, axisMechTransRatio)

Beschreibung

Parameter für 485-Erweiterungsachse einstellen

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

  • servoCompany: Hersteller des Servoantriebs, 1-Dynatec

  • servoModel: Modell des Servoantriebs, 1-FD100-750C

  • servoSoftVersion: Softwareversion des Servoantriebs, 1-V1.0

  • servoResolution: Encoderauflösung

  • axisMechTransRatio: Mechanisches Übersetzungsverhältnis

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.2. Konfigurationsparameter für 485-Erweiterungsachse abrufen

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoGetParam(servoId)

Beschreibung

Konfigurationsparameter für 485-Erweiterungsachse abrufen

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • servoCompany: Hersteller des Servoantriebs, 1-Dynatec

  • servoModel: Modell des Servoantriebs, 1-FD100-750C

  • servoSoftVersion: Softwareversion des Servoantriebs, 1-V1.0

  • servoResolution: Encoderauflösung

  • axisMechTransRatio: Mechanisches Übersetzungsverhältnis

13.3. 485-Erweiterungsachse aktivieren/deaktivieren

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoEnable(servoId, status)

Beschreibung

485-Erweiterungsachse aktivieren/deaktivieren

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

  • status: Aktivierungsstatus, 0 = deaktivieren, 1 = aktivieren

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.4. Steuerungsmodus für 485-Erweiterungsachse einstellen

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoSetControlMode(servoId, mode)

Beschreibung

Steuerungsmodus für 485-Erweiterungsachse einstellen

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

  • mode: Steuerungsmodus, 0 = Positionsmodus, 1 = Geschwindigkeitsmodus

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.5. Zielposition für 485-Erweiterungsachse einstellen (Positionsmodus)

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoSetTargetPos(servoId, pos, speed)

Beschreibung

Zielposition für 485-Erweiterungsachse einstellen (Positionsmodus)

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

  • pos: Zielposition, mm oder °

  • speed: Zielgeschwindigkeit, mm/s oder °/s

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.6. Zieldrehmoment für 485-Erweiterungsachse einstellen (Drehmomentmodus) - vorübergehend nicht freigegeben

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoSetTargetTorque(servoId, torque)

Beschreibung

Zieldrehmoment für 485-Erweiterungsachse einstellen (Drehmomentmodus)

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

  • torque: Zieldrehmoment, Nm

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.7. 485-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoHoming(servoId, mode, searchVel, latchVel)

Beschreibung

485-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

  • mode: Referenzfahrmodus, 1 = aktuelle Position als Nullpunkt, 2 = Referenzfahrt zum negativen Endschalter, 3 = Referenzfahrt zum positiven Endschalter

  • searchVel: Suchgeschwindigkeit, mm/s oder °/s

  • latchVel: Einrastgeschwindigkeit, mm/s oder °/s

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.8. Fehlerinformationen der 485-Erweiterungsachse löschen

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoClearError(servoId)

Beschreibung

Fehlerinformationen der 485-Erweiterungsachse löschen

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.9. Servostatus der 485-Erweiterungsachse abrufen

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoGetStatus(servoId)

Beschreibung

Servostatus der 485-Erweiterungsachse abrufen

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • servoErrCode: Fehlercode des Servoantriebs

  • servoState: Status des Servoantriebs. Bit0: 0 = nicht aktiviert, 1 = aktiviert; Bit1: 0 = nicht in Bewegung, 1 = in Bewegung; Bit2: 0 = positiver Endschalter nicht ausgelöst, 1 = ausgelöst; Bit3: 0 = negativer Endschalter nicht ausgelöst, 1 = ausgelöst; Bit4: 0 = Positionierung nicht abgeschlossen, 1 = abgeschlossen; Bit5: 0 = Referenzfahrt nicht durchgeführt, 1 = abgeschlossen

  • servoPos: Aktuelle Servoposition, mm oder °

  • servoSpeed: Aktuelle Servogeschwindigkeit, mm/s oder °/s

  • servoTorque: Aktuelles Servodrehmoment, Nm

13.10. Zielgeschwindigkeit für 485-Erweiterungsachse einstellen (Geschwindigkeitsmodus)

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServoSetTargetSpeed(servoId, speed)

Beschreibung

Zielgeschwindigkeit für 485-Erweiterungsachse einstellen (Geschwindigkeitsmodus)

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

  • speed: Zielgeschwindigkeit, mm/s oder °/s

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.11. Datenachsnummer für 485-Erweiterungsachse in Statusrückmeldung einstellen

Neu in Version Python: SDK-v2.0.3

Prototyp

AuxServosetStatusID(servoId)

Beschreibung

Datenachsnummer für 485-Erweiterungsachse in Statusrückmeldung einstellen

Erforderliche Parameter

  • servoId: Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.12. Bewegungsbeschleunigung und -verzögerung für 485-Erweiterungsachse einstellen

Neu in Version Python: SDK-v2.0.5

Prototyp

AuxServoSetAcc(acc, dec)

Beschreibung

Bewegungsbeschleunigung und -verzögerung für 485-Erweiterungsachse einstellen

Erforderliche Parameter

  • acc: Bewegungsbeschleunigung der 485-Erweiterungsachse

  • dec: Bewegungsverzögerung der 485-Erweiterungsachse

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.13. Not-Halt-Beschleunigung und -Verzögerung für 485-Erweiterungsachse einstellen

Neu in Version Python: SDK-v2.0.5

Prototyp

AuxServoSetEmergencyStopAcc(acc, dec)

Beschreibung

Not-Halt-Beschleunigung und -Verzögerung für 485-Erweiterungsachse einstellen

Erforderliche Parameter

  • acc: Not-Halt-Beschleunigung der 485-Erweiterungsachse

  • dec: Not-Halt-Verzögerung der 485-Erweiterungsachse

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.14. Bewegungsbeschleunigung und -verzögerung für 485-Erweiterungsachse abrufen

Neu in Version Python: SDK-v2.0.5

Prototyp

AuxServoGetAcc()

Beschreibung

Bewegungsbeschleunigung und -verzögerung für 485-Erweiterungsachse abrufen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • acc: Bewegungsbeschleunigung der 485-Erweiterungsachse

  • dec: Bewegungsverzögerung der 485-Erweiterungsachse

13.15. Not-Halt-Beschleunigung und -Verzögerung für 485-Erweiterungsachse abrufen

Neu in Version Python: SDK-v2.0.5

Prototyp

AuxServoGetEmergencyStopAcc()

Beschreibung

Not-Halt-Beschleunigung und -Verzögerung für 485-Erweiterungsachse abrufen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • acc: Not-Halt-Beschleunigung der 485-Erweiterungsachse

  • dec: Not-Halt-Verzögerung der 485-Erweiterungsachse

13.16. Codebeispiel für die Steuerung von Erweiterungsachsen

 1from fairino import Robot
 2import time
 3import threading
 4# Verbindung zur Robotersteuerung herstellen, bei Erfolg wird ein Roboterobjekt zurückgegeben
 5robot = Robot.RPC('192.168.58.2')
 6retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45)
 7print(f"AuxServoSetParam is: {retval}")
 8servoCompany = 0
 9servoModel = 0
10servoSoftVersion = 0
11servoResolution = 0
12axisMechTransRatio = 0.0
13retval, servoCompany, servoModel, servoSoftVersion, servoResolution, axisMechTransRatio = robot.AuxServoGetParam(1)
14print(f"servoCompany {servoCompany}\n"
15      f"servoModel {servoModel}\n"
16      f"servoSoftVersion {servoSoftVersion}\n"
17      f"servoResolution {servoResolution}\n"
18      f"axisMechTransRatio {axisMechTransRatio}\n")
19retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14)
20print(f"AuxServoSetParam is: {retval}")
21retval, servoCompany, servoModel, servoSoftVersion, servoResolution, axisMechTransRatio = robot.AuxServoGetParam(1)
22print(f"servoCompany {servoCompany}\n"
23      f"servoModel {servoModel}\n"
24      f"servoSoftVersion {servoSoftVersion}\n"
25      f"servoResolution {servoResolution}\n"
26      f"axisMechTransRatio {axisMechTransRatio}\n")
27retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36)
28print(f"AuxServoSetParam is: {retval}")
29time.sleep(3)
30robot.AuxServoSetAcc(3000, 3000)
31robot.AuxServoSetEmergencyStopAcc(5000, 5000)
32time.sleep(1)
33emagacc = 0.0
34emagdec = 0.0
35acc = 0.0
36dec = 0.0
37error,emagacc, emagdec = robot.AuxServoGetEmergencyStopAcc()
38print(f"emergency acc is {emagacc}  dec is {emagdec}")
39error,acc, dec = robot.AuxServoGetAcc()
40print(f"acc is {acc}  dec is {dec}")
41robot.AuxServoSetControlMode(1, 0)
42time.sleep(2)
43retval = robot.AuxServoEnable(1, 0)
44print(f"AuxServoEnable disenable {retval}")
45time.sleep(1)
46servoErrCode = 0
47servoState = 0
48servoPos = 0.0
49servoSpeed = 0.0
50servoTorque = 0.0
51retval, servoErrCode, servoState, servoPos, servoSpeed, servoTorque = robot.AuxServoGetStatus(1)
52print(f"AuxServoGetStatus servoState {servoState}")
53time.sleep(1)
54retval = robot.AuxServoEnable(1, 1)
55print(f"AuxServoEnable enable {retval}")
56time.sleep(1)
57retval, servoErrCode, servoState, servoPos, servoSpeed, servoTorque = robot.AuxServoGetStatus(1)
58print(f"AuxServoGetStatus servoState {servoState}")
59time.sleep(1)
60retval = robot.AuxServoHoming(1, 1, 5, 1,100)
61print(f"AuxServoHoming {retval}")
62time.sleep(3)
63retval = robot.AuxServoSetTargetPos(1, 200, 30,100)
64print(f"AuxServoSetTargetPos {retval}")
65time.sleep(1)
66retval, servoErrCode, servoState, servoPos, servoSpeed, servoTorque = robot.AuxServoGetStatus(1)
67print(f"AuxServoGetStatus servoSpeed {servoSpeed}")
68time.sleep(8)
69robot.AuxServoSetControlMode(1, 1)
70time.sleep(2)
71robot.AuxServoEnable(1, 0)
72time.sleep(1)
73robot.AuxServoEnable(1, 1)
74time.sleep(1)
75robot.AuxServoSetTargetSpeed(1, 100, 80)
76time.sleep(5)
77robot.AuxServoSetTargetSpeed(1, 0, 80)
78robot.CloseRPC()

13.17. Konfiguration der UDP-Kommunikationsparameter für Erweiterungsachsen

Neu in Version Python: SDK-v2.1.2

Prototyp

ExtDevSetUDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum, selfConnect)

Beschreibung

Konfiguration der UDP-Kommunikationsparameter für Erweiterungsachsen

Erforderliche Parameter

  • ip: IP-Adresse der SPS

  • port: Portnummer

  • period: Kommunikationszyklus (ms, vorübergehend nicht freigegeben)

  • lossPkgTime: Paketverlust-Erkennungszeit (ms)

  • lossPkgNum: Anzahl der Paketverluste

  • disconnectTime: Zeitdauer zur Bestätigung einer Kommunikationsunterbrechung

  • reconnectEnable: Automatische Wiederverbindung bei Kommunikationsunterbrechung aktivieren: 0 = deaktivieren, 1 = aktivieren

  • reconnectPeriod: Intervall für Wiederverbindungsversuche (ms)

  • reconnectNum: Anzahl der Wiederverbindungsversuche

  • selfConnect: Automatische Verbindungsherstellung nach Stromausfall/Neustart: 0 = keine Verbindung herstellen, 1 = Verbindung herstellen

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.18. UDP-Kommunikationsparameter für Erweiterungsachsen abrufen

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtDevGetUDPComParam()

Beschreibung

UDP-Kommunikationsparameter für Erweiterungsachsen abrufen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • ip: IP-Adresse der SPS

  • port: Portnummer

  • period: Kommunikationszyklus (ms)

  • lossPkgTime: Paketverlust-Erkennungszeit (ms)

  • lossPkgNum: Anzahl der Paketverluste

  • disconnectTime: Zeitdauer zur Bestätigung einer Kommunikationsunterbrechung

  • reconnectEnable: Automatische Wiederverbindung aktiviert; 0 = nein, 1 = ja

  • reconnectPeriod: Intervall für Wiederverbindungsversuche (ms)

  • reconnectNum: Anzahl der Wiederverbindungsversuche

  • selfConnect: Automatische Wiederverbindung nach Neustart des Steuerkastens; 0-keine Wiederverbindung; 1-Wiederverbindung

13.19. UDP-Kommunikation laden

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtDevLoadUDPDriver()

Beschreibung

UDP-Kommunikation laden

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.20. UDP-Kommunikation entladen

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtDevUnloadUDPDriver()

Beschreibung

UDP-Kommunikation entladen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.21. Verbindung nach UDP-Kommunikationsabbruch für Erweiterungsachsen wiederherstellen

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtDevUDPClientComReset()

Beschreibung

Verbindung nach UDP-Kommunikationsabbruch für Erweiterungsachsen wiederherstellen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.22. Kommunikation nach UDP-Kommunikationsabbruch für Erweiterungsachsen schließen

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtDevUDPClientComClose()

Beschreibung

Kommunikation nach UDP-Kommunikationsabbruch für Erweiterungsachsen schließen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.23. Parameterkonfiguration für UDP-Erweiterungsachsen

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisParamConfig(axisId, axisType, axisDirection, axisMax, axisMin, axisVel, axisAcc, axisLead, encResolution, axisOffect, axisCompany, axisModel, axisEncType)

Beschreibung

Parameterkonfiguration für UDP-Erweiterungsachsen

Erforderliche Parameter

  • axisId: Achsnummer [1-4]

  • axisType: Erweiterungsachstyp: 0 = translatorisch, 1 = rotatorisch

  • axisDirection: Richtung der Erweiterungsachse: 0 = positive Richtung, 1 = negative Richtung

  • axisMax: Maximale Position der Achse (mm)

  • axisMin: Minimale Position der Achse (mm)

  • axisVel: Geschwindigkeit (mm/s)

  • axisAcc: Beschleunigung (mm/s²)

  • axisLead: Spindelsteigung (mm)

  • encResolution: Encoderauflösung

  • axisOffect: Versatz der Erweiterungsachse am Schweißstartpunkt

  • axisCompany: Hersteller des Antriebs: 1 = Hechuan, 2 = Huichuan, 3 = Panasonic

  • axisModel: Modell des Antriebs: 1-Hechuan-SV-XD3EA040L-E, 2-Hechuan-SV-X2EA150A-A, 1-Huichuan-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG

  • axisEncType: Encodertyp: 0 = inkrementell, 1 = absolut

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.24. UDP-Erweiterte Achsenparameterabfrage

Prototyp

ExtAxisGetParamConfig(self, axisID)

Beschreibung

UDP-erweiterte Achsenparameterabfrage

Erforderliche Parameter

  • axisID:Erweiterte Achsennummer [1-4]

  • axisType:Erweiterter Achsentyp 0-linear; 1-drehend

  • axisDirection:Erweiterte Achsenrichtung 0-positiv; 1-negativ

  • axisMax:Maximale Position der erweiterten Achse mm

  • axisMin:Minimale Position der erweiterten Achse mm

  • axisVel:Geschwindigkeit mm/s

  • axisAcc:Beschleunigung mm/s²

  • axisLead:Spindelsteigung mm

  • encResolution:Encoder-Auflösung

  • axisOffekt:Schweißstartpunkt-Versatz der erweiterten Achse

  • axisCompany:Antriebshersteller 1-Hechen; 2-Inovance; 3-Panasonic

  • axisModel:Antriebsmodell 1-Hechen-SV-XD3EA040L-E, 2-Hechen-SV-X2EA150A-A, 1-Inovance-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG

  • axisEncType:Encodertyp 0-inkrementell; 1-absolut

Standardparameter

Keine

Rückgabewert

Fehlercode Erfolg-0 Fehler- errcode

13.25. Position des Roboters relativ zur Erweiterungsachse einstellen

Neu in Version Python: SDK-v2.0.4

Prototyp

SetRobotPosToAxis(installType)

Beschreibung

Position des Roboters relativ zur Erweiterungsachse einstellen

Erforderliche Parameter

  • installType: 0 = Roboter ist auf der externen Achse montiert, 1 = Roboter ist außerhalb der externen Achse montiert

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.26. DH-Parameterkonfiguration für Erweiterungsachssystem einstellen

Neu in Version Python: SDK-v2.0.4

Prototyp

SetAxisDHParaConfig(axisConfig, axisDHd1, axisDHd2, axisDHd3, axisDHd4, axisDHa1, axisDHa2, axisDHa3, axisDHa4)

Beschreibung

DH-Parameterkonfiguration für Erweiterungsachssystem einstellen

Erforderliche Parameter

  • axisConfig: Konfiguration der externen Achse: 0 = Ein-Freiheitsgrad-Linearschiene, 1 = Zwei-Freiheitsgrad-L-Positionierer, 2 = Drei-Freiheitsgrade, 3 = Vier-Freiheitsgrade, 4 = Ein-Freiheitsgrad-Positionierer

  • axisDHd1: DH-Parameter d1 (mm)

  • axisDHd2: DH-Parameter d2 (mm)

  • axisDHd3: DH-Parameter d3 (mm)

  • axisDHd4: DH-Parameter d4 (mm)

  • axisDHa1: DH-Parameter a1 (mm)

  • axisDHa2: DH-Parameter a2 (mm)

  • axisDHa3: DH-Parameter a3 (mm)

  • axisDHa4: DH-Parameter a4 (mm)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.27. UDP-Erweiterungsachse aktivieren

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisServoOn(axisID, status)

Beschreibung

UDP-Erweiterungsachse aktivieren

Erforderliche Parameter

  • axisID: Achsnummer [1-4]

  • status: 0 = deaktivieren, 1 = aktivieren

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.28. UDP-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisSetHoming(axisID, mode, searchVel, latchVel)

Beschreibung

UDP-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)

Erforderliche Parameter

  • axisID: Achsnummer [1-4]

  • mode: Referenzfahrmodus: 0 = aktuelle Position als Nullpunkt, 1 = Referenzfahrt zum negativen Endschalter, 2 = Referenzfahrt zum positiven Endschalter

  • searchVel: Suchgeschwindigkeit (mm/s)

  • latchVel: Einrastgeschwindigkeit (mm/s)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.29. UDP-Erweiterungsachse Tippbetrieb starten

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisStartJog(axisID, direction, vel, acc, maxDistance)

Beschreibung

UDP-Erweiterungsachse Tippbetrieb starten

Erforderliche Parameter

  • axisID: Achsnummer [1-4]

  • direction: Drehrichtung: 0 = negativ, 1 = positiv

  • vel: Geschwindigkeit (mm/s)

  • acc: Beschleunigung (mm/s²)

  • maxDistance: Maximale Tippdistanz

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.30. UDP-Erweiterungsachse Tippbetrieb stoppen

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisStopJog(axisID)

Beschreibung

UDP-Erweiterungsachse Tippbetrieb stoppen

Erforderliche Parameter

  • axisID: Achsnummer [1-4]

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.31. Codebeispiel für Konfiguration und Tippbetrieb von UDP-Erweiterungsachsen

 1from fairino import Robot
 2from fairino.Robot import RobotState
 3import time
 4
 5def main():
 6    # Hinzufügen von Echtzeitstatusdaten, die abgerufen werden sollen (falls erforderlich)
 7    # rtn = AddRobotRealtimeState([RobotState.ExaxisCoordID])
 8    # if rtn != 0:
 9    #     print(f"✗ Feld hinzufügen fehlgeschlagen, Fehlercode: {rtn}")
10    #     return None
11    # print("✓ Feld erfolgreich hinzugefügt")
12
13    # Verbindung mit der Robotersteuerung herstellen
14    robot = Robot.RPC('192.168.58.2')
15    time.sleep(0.5)  # Auf Verbindung und Datenempfang warten
16
17    # UDP-Kommunikationsparameter konfigurieren
18    rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1)
19    print(f"ExtDevSetUDPComParam rtn is {rtn}")
20
21    # UDP-Kommunikationsparameter abrufen
22    error, param = robot.ExtDevGetUDPComParam()
23    print("ExtDevGetUDPComParam return ", error)
24    print("UDP-erweiterte Achsen-Kommunikationsparameter: ", param)
25
26    # UDP-Treiber laden
27    robot.ExtDevLoadUDPDriver()
28
29    # Erweiterte Achsen-Befehlsabschlusszeit einstellen
30    rtn = robot.SetExAxisCmdDoneTime(5000.0)
31    print(f"SetExAxisCmdDoneTime rtn is {rtn}")
32
33    # Erweiterte Achsen-Servo-Freigabe
34    rtn = robot.ExtAxisServoOn(1, 1)
35    print(f"ExtAxisServoOn axis id 1 rtn is {rtn}")
36    rtn = robot.ExtAxisServoOn(2, 1)
37    print(f"ExtAxisServoOn axis id 2 rtn is {rtn}")
38    time.sleep(2)
39
40    # Erweiterte Achsen-Referenzfahrt
41    robot.ExtAxisSetHoming(1, 0, 10, 2)
42    time.sleep(2)
43    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2)
44    print(f"ExtAxisSetHoming rtn is {rtn}")
45
46    time.sleep(4)
47
48    # Roboter-Relativposition zur erweiterten Achse einstellen
49    rtn = robot.SetRobotPosToAxis(1)
50    print(f"SetRobotPosToAxis rtn is {rtn}")
51
52    # Erweiterte Achsen-DH-Parameterkonfiguration einstellen
53    rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0)
54    print(f"SetAxisDHParaConfig rtn is {rtn}")
55
56    # Parameter für erweiterte Achse 1 konfigurieren
57    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0)
58    print(f"ExtAxisParamConfig axis 1 rtn is {rtn}")
59
60    # Parameterkonfiguration für erweiterte Achse 1 abrufen
61    rtn, axisType, axisDirection, axisMax, axisMin, axisVel, axisAcc, axisLead, encResolution, axisOffect, axisCompany, axisModel, axisEncType = robot.ExtAxisGetParamConfig(1)
62    print(f"axis id 1 ExtAxisGetParamConfig : axisType {axisType}, axisDirection {axisDirection}, axisMax {axisMax}, axisMin {axisMin}, axisVel {axisVel}, axisAcc {axisAcc}, axisLead {axisLead}, encResolution {encResolution}, axisOffect {axisOffect}, axisCompany {axisCompany}, axisModel {axisModel}, axisEncType {axisEncType}")
63
64    # Parameter für erweiterte Achse 2 konfigurieren
65    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0)
66    print(f"ExtAxisParamConfig axis 2 rtn is {rtn}")
67
68    # Parameterkonfiguration für erweiterte Achse 2 abrufen
69    rtn, axisType, axisDirection, axisMax, axisMin, axisVel, axisAcc, axisLead, encResolution, axisOffect, axisCompany, axisModel, axisEncType = robot.ExtAxisGetParamConfig(2)
70    print(f"axis id 2 ExtAxisGetParamConfig : axisType {axisType}, axisDirection {axisDirection}, axisMax {axisMax}, axisMin {axisMin}, axisVel {axisVel}, axisAcc {axisAcc}, axisLead {axisLead}, encResolution {encResolution}, axisOffect {axisOffect}, axisCompany {axisCompany}, axisModel {axisModel}, axisEncType {axisEncType}")
71
72    time.sleep(3)
73
74    # Tipptest für erweiterte Achse 1
75    robot.ExtAxisStartJog(1, 0, 10, 10, 30)
76    time.sleep(1)
77    robot.ExtAxisStopJog(1)
78    time.sleep(3)
79    robot.ExtAxisServoOn(1, 0)
80
81    time.sleep(3)
82
83    # Tipptest für erweiterte Achse 2
84    robot.ExtAxisStartJog(2, 0, 10, 10, 30)
85    time.sleep(1)
86    robot.ExtAxisStopJog(2)
87    time.sleep(3)
88    robot.ExtAxisServoOn(2, 0)
89
90    # UDP-Treiber entladen
91    robot.ExtDevUnloadUDPDriver()
92
93    # Verbindung schließen
94    robot.CloseRPC()
95
96
97# Testfunktion aufrufen
98main()

13.32. Referenzpunkt für Koordinatensystem der Erweiterungsachse einstellen - Vier-Punkt-Methode

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisSetRefPoint(pointNum)

Beschreibung

Referenzpunkt für Koordinatensystem der Erweiterungsachse einstellen - Vier-Punkt-Methode

Erforderliche Parameter

  • pointNum: Punktnummer [1-4]

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.33. Koordinatensystem der Erweiterungsachse berechnen - Vier-Punkt-Methode

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisComputeECoordSys()

Beschreibung

Koordinatensystem der Erweiterungsachse berechnen - Vier-Punkt-Methode

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • coord: Werte des Erweiterungsachsen-Koordinatensystems [x, y, z, rx, ry, rz]

13.34. Referenzpunkt für Positionierer-Koordinatensystem einstellen - Vier-Punkt-Methode

Neu in Version Python: SDK-v2.0.4

Prototyp

PositionorSetRefPoint(pointNum)

Beschreibung

Referenzpunkt für Positionierer-Koordinatensystem einstellen - Vier-Punkt-Methode

Erforderliche Parameter

  • pointNum: Punktnummer [1-4]

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.35. Koordinatensystem des Positionierers berechnen - Vier-Punkt-Methode

Neu in Version Python: SDK-v2.0.4

Prototyp

PositionorComputeECoordSys()

Beschreibung

Koordinatensystem des Positionierers berechnen - Vier-Punkt-Methode

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • coord: Werte des Positionierer-Koordinatensystems [x, y, z, rx, ry, rz]

13.36. Pose des Kalibrierungsreferenzpunkts im Endeffektor-Koordinatensystem des Positionierers einstellen

Neu in Version Python: SDK-v2.0.4

Prototyp

SetRefPointInExAxisEnd(pos)

Beschreibung

Pose des Kalibrierungsreferenzpunkts im Endeffektor-Koordinatensystem des Positionierers einstellen

Erforderliche Parameter

  • pos: Posenwerte [x, y, z, rx, ry, rz]

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.37. Koordinatensystem der Erweiterungsachse anwenden

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisActiveECoordSys(applyAxisId, axisCoordNum, coord, calibFlag)

Beschreibung

Koordinatensystem der Erweiterungsachse anwenden

Erforderliche Parameter

  • applyAxisId: Erweiterungsachsennummer. Bit0-Bit3 entsprechen den Achsnummern 1-4, z.B. für Achse 1 und 3: 0b00000101 = 5

  • axisCoordNum: Nummer des Erweiterungsachsen-Koordinatensystems

  • coord: Werte des Koordinatensystems [x, y, z, rx, ry, rz]

  • calibFlag: Kalibrierungsflag: 0 = nein, 1 = ja

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.38. Koordinatensystem der Erweiterungsachse abrufen

Neu in Version Python: SDK-v2.1.2

Prototyp

ExtAxisGetCoord()

Beschreibung

Koordinatensystem der Erweiterungsachse abrufen

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • coord: Werte des Erweiterungsachsen-Koordinatensystems [x, y, z, rx, ry, rz]

13.39. Codebeispiel für die Kalibrierung des Erweiterungsachsen-Koordinatensystems

 1from fairino import Robot
 2import time
 3import threading
 4# Verbindung zur Robotersteuerung herstellen, bei Erfolg wird ein Roboterobjekt zurückgegeben
 5robot = Robot.RPC('192.168.58.2')
 6rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1)
 7print(f"ExtDevSetUDPComParam rtn is {rtn}")
 8rtn,udp_params = robot.ExtDevGetUDPComParam()
 9ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum = udp_params
10patam = (
11    f"\nip {ip}\nport {port}\nperiod {period}\nlossPkgTime {lossPkgTime}\n"
12    f"lossPkgNum {lossPkgNum}\ndisConntime {disconnectTime}\nreconnecable {reconnectEnable}\n"
13    f"reconnperiod {reconnectPeriod}\nreconnnun {reconnectNum}"
14)
15print(f"ExtDevGetUDPComParam rtn is {rtn}{patam}")
16robot.ExtDevLoadUDPDriver()
17rtn = robot.ExtAxisServoOn(1, 1)
18print(f"ExtAxisServoOn Achse 1 rtn ist {rtn}")
19rtn = robot.ExtAxisServoOn(2, 1)
20print(f"ExtAxisServoOn axis id 2 rtn is {rtn}")
21time.sleep(2)
22robot.ExtAxisSetHoming(1, 0, 10, 2)
23time.sleep(2)
24rtn = robot.ExtAxisSetHoming(2, 0, 10, 2)
25print(f"ExtAxisSetHoming rtn is {rtn}")
26time.sleep(4)
27rtn = robot.SetRobotPosToAxis(1)
28print(f"SetRobotPosToAxis rtn is {rtn}")
29rtn = robot.SetAxisDHParaConfig(1, 128.5, 206.4, 0, 0, 0, 0, 0, 0)
30print(f"SetAxisDHParaConfig rtn is {rtn}")
31rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0)
32print(f"ExtAxisParamConfig axis 1 rtn is {rtn}")
33rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0)
34print(f"ExtAxisParamConfig axis 2 rtn is {rtn}")
35toolCoord = [0, 0, 210, 0, 0, 0]
36robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0)
37jSafe = [115.193, -96.149, 92.489, -87.068, -89.15, -83.488]
38j1 = [117.559, -92.624, 100.329, -96.909, -94.057, -83.488]
39j2 = [112.239, -90.096, 99.282, -95.909, -89.824, -83.488]
40j3 = [110.839, -83.473, 93.166, -89.22, -90.499, -83.487]
41j4 = [107.935, -83.572, 95.424, -92.873, -87.933, -83.488]
42descSafe = [0.0,0.0,0.0,0.0,0.0,0.0]
43desc1 = [0.0,0.0,0.0,0.0,0.0,0.0]
44desc2 = [0.0,0.0,0.0,0.0,0.0,0.0]
45desc3 = [0.0,0.0,0.0,0.0,0.0,0.0]
46desc4 = [0.0,0.0,0.0,0.0,0.0,0.0]
47exaxisPos = [0.0,0.0,0.0,0.0]
48offdese = [0.0,0.0,0.0,0.0,0.0,0.0]
49error, descSafe = robot.GetForwardKin(jSafe)
50robot.MoveJ(joint_pos=jSafe,tool= 1,user= 0,vel= 100)
51time.sleep(2)
52error, desc1 = robot.GetForwardKin(j1)
53robot.MoveJ(joint_pos=j1,tool= 1,user= 0,vel= 100)
54time.sleep(2)
55actualTCPPos = [0.0,0.0,0.0,0.0,0.0,0.0]
56error, actualTCPPos = robot.GetActualTCPPose(0)
57robot.SetRefPointInExAxisEnd(actualTCPPos)
58rtn = robot.PositionorSetRefPoint(1)
59print(f"PositionorSetRefPoint 1 rtn is {rtn}")
60time.sleep(2)
61robot.MoveJ(joint_pos=jSafe,tool= 1,user= 0,vel= 100)
62robot.ExtAxisStartJog(1, 0, 50, 50, 10)
63time.sleep(1)
64robot.ExtAxisStartJog(2, 0, 50, 50, 10)
65time.sleep(1)
66error, desc2 = robot.GetForwardKin(j2)
67rtn = robot.MoveJ(joint_pos=j2,tool= 1,user= 0,vel= 100)
68rtn = robot.PositionorSetRefPoint(2)
69print(f"PositionorSetRefPoint 2 rtn is {rtn}")
70time.sleep(2)
71robot.MoveJ(joint_pos=jSafe,tool= 1,user= 0,vel= 100)
72robot.ExtAxisStartJog(1, 0, 50, 50, 10)
73time.sleep(1)
74robot.ExtAxisStartJog(2, 0, 50, 50, 10)
75time.sleep(1)
76error, desc3 = robot.GetForwardKin(j3)
77robot.MoveJ(joint_pos=j3,tool= 1,user= 0,vel= 100)
78rtn = robot.PositionorSetRefPoint(3)
79print(f"PositionorSetRefPoint 3 rtn is {rtn}")
80time.sleep(2)
81robot.MoveJ(joint_pos=jSafe,tool= 1,user= 0,vel= 100)
82robot.ExtAxisStartJog(1, 0, 50, 50, 10)
83time.sleep(1)
84robot.ExtAxisStartJog(2, 0, 50, 50, 10)
85time.sleep(1)
86error, desc4 = robot.GetForwardKin(j4)
87robot.MoveJ(joint_pos=j4,tool= 1,user= 0,vel= 100)
88rtn = robot.PositionorSetRefPoint(4)
89print(f"PositionorSetRefPoint 4 rtn is {rtn}")
90time.sleep(2)
91axisCoord = [0.0,0.0,0.0,0.0,0.0,0.0]
92error,axisCoord = robot.PositionorComputeECoordSys()
93robot.MoveJ(joint_pos=jSafe,tool= 1,user= 0,vel= 100)
94print(f"PositionorComputeECoordSys rtn is {axisCoord[0]} {axisCoord[1]} {axisCoord[2]} {axisCoord[3]} {axisCoord[4]} {axisCoord[5]}")
95rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1)
96print(f"ExtAxisActiveECoordSys rtn is {rtn}")
97robot.CloseRPC()

13.40. UDP-Erweiterungsachse bewegen

Neu in Version Python: SDK-v2.1.4

Prototyp

ExtAxisMove(pos, ovl, blend=-1)

Beschreibung

UDP-Erweiterungsachse bewegen

Erforderliche Parameter

  • pos = [exaxis[0], exaxis[1], exaxis[2], exaxis[3]]: Zielpositionen der Achsen 1 bis 4

  • ovl: Geschwindigkeitsprozentsatz

Standardparameter

  • blend: Glättungsparameter (mm oder ms), -1 = auf Bewegungsende warten (blockierend), Standard = -1

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.41. Codebeispiel für die Bewegung von UDP-Erweiterungsachsen

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')
5axisPos = [20,0,0,0]
6robot.ExtAxisMove(axisPos, 50, -1)
7robot.CloseRPC()

13.42. Synchronbewegung von UDP-Erweiterungsachse und Roboter-Gelenkbewegung

Neu in Version Python: SDK-v2.0.4

Prototyp

ExtAxisSyncMoveJ(joint_pos, tool, user, exaxis_pos, desc_pos=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], vel=20.0, acc=0.0, ovl=100.0, blendT=-1.0, offset_flag=0, offset_pos=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0])

Beschreibung

Synchronbewegung von UDP-Erweiterungsachse und Roboter-Gelenkbewegung

Erforderliche Parameter

  • joint_pos: Ziel-Gelenkposition [°]

  • desc_pos: Ziel-Kartesische Pose [mm, °]

  • tool: Werkzeugnummer [0~14]

  • user: Werkstücknummer [0~14]

  • exaxis_pos: Position der externen Achsen 1 bis 4

Standardparameter

  • desc_pos: Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] (bei Standardwert wird die Vorwärtskinematik verwendet)

  • vel: Geschwindigkeitsprozentsatz [0~100], Standard = 20.0

  • acc: Beschleunigungsprozentsatz [0~100] (vorübergehend nicht freigegeben), Standard = 0.0

  • ovl: Geschwindigkeitsskalierungsfaktor [0~100], Standard = 100.0

  • blendT: [-1.0] = Bewegung abschließen (blockierend), [0~500.0] = Glättungszeit (nicht blockierend) [ms], Standard = -1.0

  • offset_flag: [0] = kein Versatz, [1] = Versatz im Basis-/Werkstückkoordinatensystem, [2] = Versatz im Werkzeugkoordinatensystem, Standard = 0

  • offset_pos: Posenversatz [mm, °], Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.43. Codebeispiel für synchronen Gelenkbewegung mit Erweiterungsachse

 1from fairino import Robot
 2# Verbindung zur Robotersteuerung herstellen
 3robot = Robot.RPC('192.168.58.2')
 4# UDP-Kommunikationsparameter einstellen und laden
 5robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10)
 6robot.ExtDevLoadUDPDriver()
 7# Parameter für Erweiterungsachsen einstellen
 8robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0)
 9robot.SetRobotPosToAxis(1)
10robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0)
11# Erweiterungsachse aktivieren und Referenzfahrt durchführen
12robot.ExtAxisServoOn(1, 0)
13robot.ExtAxisSetHoming(1, 0, 20, 3)
14# Koordinatensystem der Erweiterungsachse kalibrieren
15pos = []  # Bitte hier die Kalibrierungspunktkoordinaten eintragen
16robot.SetRefPointInExAxisEnd(pos)
17robot.PositionorSetRefPoint(1)  # Dieser Vorgang muss 4 Mal (mit 4 Punkten) wiederholt werden
18error, coord = robot.PositionorComputeECoordSys()
19robot.ExtAxisActiveECoordSys(1, 1, coord, 1)
20# Start- und Endpunkt der Synchronbewegung
21startdescPose = []  # Bitte hier die Koordinaten eintragen
22startjointPos = []  # Bitte hier die Koordinaten eintragen
23startexaxisPos = []  # Bitte hier die Koordinaten eintragen
24enddescPose = []  # Bitte hier die Koordinaten eintragen
25endjointPos = []  # Bitte hier die Koordinaten eintragen
26endexaxisPos = []  # Bitte hier die Koordinaten eintragen
27# Zum Startpunkt bewegen
28robot.ExtAxisMove(startexaxisPos, 20, -1)
29offdese = [0, 0, 0, 0, 0, 0]
30robot.MoveJ(joint_pos=startjointPos,tool= 1,user= 1,vel= 100,acc= 100,ovl= 100,exaxis_pos= startexaxisPos,blendT= 0,offset_flag= 0,offset_pos= offdese)
31robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, endexaxisPos, 100, 100, 100, -1, 0, offdese)
32robot.CloseRPC()

13.44. Synchronbewegung von UDP-Erweiterungsachse und Roboter-Linearbewegung

Neu in Version Python: SDK-v2.1.5

Prototyp

ExtAxisSyncMoveL(desc_pos, tool, user, exaxis_pos, joint_pos=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], vel=20.0, acc=0.0, ovl=100.0, blendR=-1.0, search=0, offset_flag=0, offset_pos=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], config=-1)

Beschreibung

Synchronbewegung von UDP-Erweiterungsachse und Roboter-Linearbewegung

Erforderliche Parameter

  • desc_pos: Ziel-Kartesische Pose [mm, °]

  • tool: Werkzeugnummer [0~14]

  • user: Werkstücknummer [0~14]

  • exaxis_pos: Position der externen Achsen 1 bis 4

Standardparameter

  • joint_pos: Ziel-Gelenkposition [°], Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] (bei Standardwert wird die inverse Kinematik verwendet)

  • vel: Geschwindigkeitsprozentsatz [0~100], Standard = 20.0

  • acc: Beschleunigungsprozentsatz [0~100] (vorübergehend nicht freigegeben), Standard = 0.0

  • ovl: Geschwindigkeitsskalierungsfaktor [0~100], Standard = 100.0

  • blendR: [-1.0] = Bewegung abschließen (blockierend), [0~500.0] = Glättungszeit (nicht blockierend) [ms], Standard = -1.0

  • search: [0] = keine Schweißdrahtsuche, [1] = Schweißdrahtsuche

  • offset_flag: [0] = kein Versatz, [1] = Versatz im Basis-/Werkstückkoordinatensystem, [2] = Versatz im Werkzeugkoordinatensystem, Standard = 0

  • offset_pos: Posenversatz [mm, °], Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

  • config: Konfiguration des Gelenkraums für inverse Kinematik, [-1] = Berechnung basierend auf aktueller Gelenkposition, [0~7] = Berechnung basierend auf spezifischer Gelenkraumkonfiguration, Standard = -1

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.45. Codebeispiel für synchronen Linearbewegung mit Erweiterungsachse

 1from fairino import Robot
 2# Verbindung zur Robotersteuerung herstellen
 3robot = Robot.RPC('192.168.58.2')
 4# UDP-Kommunikationsparameter einstellen und laden
 5robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10)
 6robot.ExtDevLoadUDPDriver()
 7# Parameter für Erweiterungsachsen einstellen
 8robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0)
 9robot.SetRobotPosToAxis(1)
10robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0)
11# Erweiterungsachse aktivieren und Referenzfahrt durchführen
12robot.ExtAxisServoOn(1, 0)
13robot.ExtAxisSetHoming(1, 0, 20, 3)
14# Koordinatensystem der Erweiterungsachse kalibrieren
15pos = []  # Bitte hier die Kalibrierungspunktkoordinaten eintragen
16robot.SetRefPointInExAxisEnd(pos)
17robot.PositionorSetRefPoint(1)  # Muss 4 Mal aufgerufen werden
18error, coord = robot.PositionorComputeECoordSys()
19robot.ExtAxisActiveECoordSys(1, 1, coord, 1)
20# Start- und Endpunkt der Synchronbewegung
21startdescPose = []  # Bitte Koordinaten eintragen
22startjointPos = []  # Bitte Koordinaten eintragen
23startexaxisPos = []  # Bitte Koordinaten eintragen
24enddescPose = []  # Bitte Koordinaten eintragen
25endjointPos = []  # Bitte Koordinaten eintragen
26endexaxisPos = []  # Bitte Koordinaten eintragen
27# Zum Startpunkt bewegen
28robot.ExtAxisMove(startexaxisPos, 20, -1)
29offdese = [0, 0, 0, 0, 0, 0]
30robot.MoveJ(joint_pos=startjointPos, tool=1, user=1, vel=100, acc=100, ovl=100, exaxis_pos=startexaxisPos, blendT=0)
31# Synchron-Linearbewegung ausführen
32robot.ExtAxisSyncMoveL(desc_pos=enddescPose, tool=1, user=1, exaxis_pos=endexaxisPos, vel=100, acc=100, ovl=100, blendR=0, offset_flag=0, offset_pos=offdese)
33robot.CloseRPC()

13.46. Synchronbewegung von UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung

Neu in Version Python: SDK-v2.1.5

Prototyp

ExtAxisSyncMoveC(desc_pos_p, tool_p, user_p, exaxis_pos_p, desc_pos_t, tool_t, user_t, exaxis_pos_t, joint_pos_p=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], joint_pos_t=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], vel_p=20.0, acc_p=100.0, offset_flag_p=0, offset_pos_p=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], vel_t=20.0, acc_t=100.0, offset_flag_t=0, offset_pos_t=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], ovl=100.0, blendR=-1.0, config=-1)

Beschreibung

Synchronbewegung von UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung

Erforderliche Parameter

  • desc_pos_p: Kartesische Pose des Zwischenpunkts [mm, °]

  • tool_p: Werkzeugnummer für Zwischenpunkt [0~14]

  • user_p: Werkstücknummer für Zwischenpunkt [0~14]

  • exaxis_pos_p: Position der externen Achsen am Zwischenpunkt

  • desc_pos_t: Kartesische Pose des Zielpunkts [mm, °]

  • tool_t: Werkzeugnummer für Zielpunkt [0~14]

  • user_t: Werkstücknummer für Zielpunkt [0~14]

  • exaxis_pos_t: Position der externen Achsen am Zielpunkt

Standardparameter

  • joint_pos_p: Gelenkposition des Zwischenpunkts [°], Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] (inverse Kinematik wird verwendet)

  • joint_pos_t: Gelenkposition des Zielpunkts [°], Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] (inverse Kinematik wird verwendet)

  • vel_p: Geschwindigkeitsprozentsatz für Zwischenpunkt [0~100], Standard = 20.0

  • acc_p: Beschleunigungsprozentsatz für Zwischenpunkt [0~100] (vorübergehend nicht freigegeben), Standard = 100.0

  • offset_flag_p: Versatz für Zwischenpunkt: [0] = kein Versatz, [1] = Versatz im Basis-/Werkstückkoordinatensystem, [2] = Versatz im Werkzeugkoordinatensystem, Standard = 0

  • offset_pos_p: Posenversatz für Zwischenpunkt [mm, °], Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

  • vel_t: Geschwindigkeitsprozentsatz für Zielpunkt [0~100], Standard = 20.0

  • acc_t: Beschleunigungsprozentsatz für Zielpunkt [0~100] (vorübergehend nicht freigegeben), Standard = 100.0

  • offset_flag_t: Versatz für Zielpunkt: [0] = kein Versatz, [1] = Versatz im Basis-/Werkstückkoordinatensystem, [2] = Versatz im Werkzeugkoordinatensystem, Standard = 0

  • offset_pos_t: Posenversatz für Zielpunkt [mm, °], Standard = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

  • ovl: Geschwindigkeitsskalierungsfaktor [0~100], Standard = 100.0

  • blendR: [-1.0] = Bewegung abschließen (blockierend), [0~1000] = Glättungsradius (nicht blockierend) [mm], Standard = -1.0

  • config: Konfiguration des Gelenkraums für inverse Kinematik, [-1] = Berechnung basierend auf aktueller Gelenkposition, [0~7] = Berechnung basierend auf spezifischer Gelenkraumkonfiguration, Standard = -1

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.47. Codebeispiel für synchronen Kreisbogenbewegung mit Erweiterungsachse

 1from fairino import Robot
 2# Verbindung zur Robotersteuerung herstellen
 3robot = Robot.RPC('192.168.58.2')
 4# UDP-Kommunikationsparameter einstellen und laden
 5robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10)
 6robot.ExtDevLoadUDPDriver()
 7# Parameter für Erweiterungsachsen einstellen
 8robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0)
 9robot.SetRobotPosToAxis(1)
10robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0)
11# Erweiterungsachse aktivieren und Referenzfahrt durchführen
12robot.ExtAxisServoOn(1, 0)
13robot.ExtAxisSetHoming(1, 0, 20, 3)
14# Koordinatensystem der Erweiterungsachse kalibrieren
15pos = []  # Bitte hier die Kalibrierungspunktkoordinaten eintragen
16robot.SetRefPointInExAxisEnd(pos)
17robot.PositionorSetRefPoint(1)  # Muss 4 Mal aufgerufen werden
18error, coord = robot.PositionorComputeECoordSys()
19robot.ExtAxisActiveECoordSys(1, 1, coord, 1)
20# Start-, Zwischen- und Endpunkt der Synchronbewegung
21startdescPose = []  # Bitte Koordinaten eintragen
22startjointPos = []  # Bitte Koordinaten eintragen
23startexaxisPos = []
24middescPose = []
25midjointPos = []
26midexaxisPos = []
27enddescPose = []
28endjointPos = []
29endexaxisPos = []
30# Zum Startpunkt bewegen
31robot.ExtAxisMove(startexaxisPos, 20, -1)
32offdese = [0, 0, 0, 0, 0, 0]
33robot.MoveJ(joint_pos=startjointPos, tool=1, user=1, vel=100, acc=100, ovl=100, exaxis_pos=startexaxisPos, blendT=0, offset_flag=0, offset_pos=offdese)
34# Synchron-Kreisbogenbewegung starten
35robot.ExtAxisSyncMoveC(desc_pos_p=middescPose, tool_p=1, user_p=1, exaxis_pos_p=midexaxisPos,
36                       desc_pos_t=enddescPose, tool_t=1, user_t=1, exaxis_pos_t=endexaxisPos,
37                       vel_p=100, acc_p=100, offset_flag_p=0, offset_pos_p=offdese,
38                       vel_t=100, acc_t=100, offset_flag_t=0, offset_pos_t=offdese,
39                       ovl=100, blendR=0)
40robot.CloseRPC()

13.48. Erweiterten Digitalausgang (DO) setzen

Neu in Version Python: SDK-v2.0.4

Prototyp

SetAuxDO(DONum, bOpen, smooth, block)

Beschreibung

Erweiterten Digitalausgang (DO) setzen

Erforderliche Parameter

  • DONum: DO-Nummer

  • bOpen: Schaltzustand: True = ein, False = aus

  • smooth: Glättung aktivieren: True = ja, False = nein

  • block: Blockierend ausführen: True = ja, False = nein

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.49. Erweiterten Analogausgang (AO) setzen

Neu in Version Python: SDK-v2.0.4

Prototyp

SetAuxAO(AONum, value, block)

Beschreibung

Erweiterten Analogausgang (AO) setzen

Erforderliche Parameter

  • AONum: AO-Nummer

  • value: Analogwert [0-4095]

  • block: Blockierend ausführen: True = ja, False = nein

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.50. Eingangsfilterzeit für erweiterten Digitaleingang (DI) einstellen

Neu in Version Python: SDK-v2.0.4

Prototyp

SetAuxDIFilterTime(filterTime)

Beschreibung

Eingangsfilterzeit für erweiterten Digitaleingang (DI) einstellen

Erforderliche Parameter

  • filterTime: Filterzeit (ms)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.51. Eingangsfilterzeit für erweiterten Analogeingang (AI) einstellen

Neu in Version Python: SDK-v2.0.4

Prototyp

SetAuxAIFilterTime(AINum, filterTime)

Beschreibung

Eingangsfilterzeit für erweiterten Analogeingang (AI) einstellen

Erforderliche Parameter

  • AINum: AI-Nummer

  • filterTime: Filterzeit (ms)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.52. Auf erweiterten Digitaleingang (DI) warten

Neu in Version Python: SDK-v2.0.4

Prototyp

WaitAuxDI(DINum, bOpen, time, errorAlarm)

Beschreibung

Auf erweiterten Digitaleingang (DI) warten

Erforderliche Parameter

  • DINum: DI-Nummer

  • bOpen: Erwarteter Zustand: True = ein, False = aus

  • time: Maximale Wartezeit (ms)

  • errorAlarm: Bewegung bei Timeout fortsetzen: True = ja, False = nein (Fehler auslösen)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.53. Auf erweiterten Analogeingang (AI) warten

Neu in Version Python: SDK-v2.0.4

Prototyp

WaitAuxAI(AINum, sign, value, time, errorAlarm)

Beschreibung

Auf erweiterten Analogeingang (AI) warten

Erforderliche Parameter

  • AINum: AI-Nummer

  • sign: Bedingung: 0 = größer als, 1 = kleiner als

  • value: Vergleichswert

  • time: Maximale Wartezeit (ms)

  • errorAlarm: Bewegung bei Timeout fortsetzen: True = ja, False = nein (Fehler auslösen)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.54. Wert des erweiterten Digitaleingangs (DI) abrufen

Neu in Version Python: SDK-v2.0.4

Prototyp

GetAuxDI(DINum, isNoBlock)

Beschreibung

Wert des erweiterten Digitaleingangs (DI) abrufen

Erforderliche Parameter

  • DINum: DI-Nummer

  • isNoBlock: Nicht-blockierend: True = ja, False = blockierend

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • isOpen: 0 = aus, 1 = ein

13.55. Wert des erweiterten Analogeingangs (AI) abrufen

Neu in Version Python: SDK-v2.0.4

Prototyp

GetAuxAI(AINum, isNoBlock)

Beschreibung

Wert des erweiterten Analogeingangs (AI) abrufen

Erforderliche Parameter

  • AINum: AI-Nummer

  • isNoBlock: Nicht-blockierend: True = ja, False = blockierend

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • value: Eingangswert

13.56. Codebeispiel für erweiterten I/O

 1from fairino import Robot
 2import time
 3import threading
 4# Verbindung zur Robotersteuerung herstellen
 5robot = Robot.RPC('192.168.58.2')
 6for i in range(128):
 7    robot.SetAuxDO(i, True, False, True)
 8    time.sleep(0.1)
 9for i in range(128):
10    robot.SetAuxDO(i, False, False, True)
11    time.sleep(0.1)
12for i in range(409):
13    value1 = i * 10
14    value2 = 4095 - i * 10
15    robot.SetAuxAO(0, value1, True)
16    robot.SetAuxAO(1, value2, True)
17    robot.SetAuxAO(2, value1, True)
18    robot.SetAuxAO(3, value2, True)
19    time.sleep(0.01)
20robot.SetAuxDIFilterTime(10)
21robot.SetAuxAIFilterTime(0, 10)
22for i in range(20):
23    curValue = False
24    error, curValue = robot.GetAuxDI(i, False)  # Hinweis: Referenzübergabe je nach Bibliotheksimplementierung anpassen
25    print(f"DI{i}   {curValue}")
26curValue = -1
27for i in range(4):
28    error, curValue = robot.GetAuxAI(i, True)  # Hinweis: Referenzübergabe je nach Bibliotheksimplementierung anpassen
29    print(f"AI{i}   {curValue}")
30robot.WaitAuxDI(1, False, 1000, False)
31robot.WaitAuxAI(1, 1, 132, 1000, False)
32robot.CloseRPC()

13.57. Mobile Basis aktivieren (z.B. fahrerloses Transportfahrzeug)

Neu in Version Python: SDK-v2.0.5

Prototyp

TractorEnable(enable)

Beschreibung

Mobile Basis aktivieren

Erforderliche Parameter

  • enable: Aktivierungsstatus: 0 = deaktivieren, 1 = aktivieren

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.58. Mobile Basis auf Nullpunkt fahren (Referenzfahrt)

Neu in Version Python: SDK-v2.0.5

Prototyp

TractorHoming()

Beschreibung

Mobile Basis auf Nullpunkt fahren (Referenzfahrt)

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.59. Linearbewegung der mobilen Basis

Neu in Version Python: SDK-v2.0.5

Prototyp

TractorMoveL(distance, vel)

Beschreibung

Linearbewegung der mobilen Basis

Erforderliche Parameter

  • distance: Lineare Bewegungsdistanz (mm)

  • vel: Geschwindigkeitsprozentsatz für Linearbewegung (0-100)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.60. Kreisbogenbewegung der mobilen Basis

Neu in Version Python: SDK-v2.0.5

Prototyp

TractorMoveC(radius, angle, vel)

Beschreibung

Kreisbogenbewegung der mobilen Basis

Erforderliche Parameter

  • radius: Radius der Kreisbogenbewegung (mm)

  • angle: Winkel der Kreisbogenbewegung (°)

  • vel: Geschwindigkeitsprozentsatz für Kreisbogenbewegung (0-100)

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.61. Mobile Basis anhalten

Neu in Version Python: SDK-v2.0.5

Prototyp

ProgramStop()

Beschreibung

Mobile Basis anhalten

Erforderliche Parameter

Keine

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.62. Codebeispiel für mobile Basis

 1from fairino import Robot
 2# Verbindung zur Robotersteuerung herstellen
 3robot = Robot.RPC('192.168.58.2')
 4robot.ExtDevSetUDPComParam("192.168.58.2", 2021, 2, 50, 5, 50, 1, 50, 10, 1)
 5robot.ExtDevLoadUDPDriver()
 6rtn = robot.ExtAxisServoOn(1, 1)
 7rtn = robot.ExtAxisServoOn(2, 1)
 8time.sleep(2)
 9robot.ExtAxisSetHoming(1, 0, 10, 2)
10time.sleep(2)
11rtn = robot.ExtAxisSetHoming(2, 0, 10, 2)
12time.sleep(4)
13robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0)
14robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0)
15robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0)
16robot.TractorEnable(False)
17time.sleep(2)
18robot.TractorEnable(True)
19time.sleep(2)
20robot.TractorHoming()
21time.sleep(2)
22robot.TractorMoveL(100, 2)
23time.sleep(5)
24robot.TractorStop()
25robot.TractorMoveL(-100, 20)
26time.sleep(5)
27robot.TractorMoveC(300, 90, 20)
28time.sleep(10)
29robot.TractorMoveC(300, -90, 20)
30time.sleep(1)
31robot.CloseRPC()

13.63. Punkt des Lasersensors aufzeichnen

Neu in Version Python: SDK-v2.1.4

Prototyp

LaserRecordPoint(coordID)

Beschreibung

Punkt des Lasersensors aufzeichnen (nach erfolgreicher Suche)

Erforderliche Parameter

  • coordID: Koordinatensystem des Lasersensors

Standardparameter

Keine

Rückgabewert

  • Fehlercode: 0 = Erfolg, sonst Fehlercode

  • joint: Gelenkposition des erkannten Punktes [°]

  • desc: Kartesische Position des erkannten Punktes [mm, °]

  • exaxis: Position der Erweiterungsachse am erkannten Punkt [mm]

13.64. Codebeispiel zum Aufzeichnen eines Laserpunkts

Neu in Version Python: SDK-v2.1.4

 1from fairino import Robot
 2# Verbindung zur Robotersteuerung herstellen
 3robot = Robot.RPC('192.168.58.2')
 4direction_point = [0, 0, 0]
 5rtn = robot.LaserTrackingSearchStart(2, direction_point, 10, 100, 10000, 2)
 6print(f"LaserTrackingSearchStart rtn ist {rtn}")
 7robot.LaserTrackingSearchStop()
 8coord_id = 2
 9rtn, joint, desc, exaxis = robot.LaserRecordPoint(coord_id)
10print(f"rtn is {rtn}")
11print(f"desc_pos:{desc[0]},{desc[1]},{desc[2]},"
12      f"{desc[3]},{desc[4]},{desc[5]}")
13print(f"joint_pos:{joint[0]},{joint[1]},{joint[2]},{joint[3]},{joint[4]},{joint[5]}")
14print(f"exaxis pos is {exaxis[0]} {exaxis[1]} {exaxis[2]} {exaxis[3]}")
15off = [0] * 6
16robot.MoveJ(joint,tool=1,user=0,vel=100,acc=100,ovl=50,exaxis_pos=exaxis,blendT=-1,offset_flag=0,offset_pos=off)
17robot.CloseRPC()

13.65. Strategie für die Synchronbewegung von Erweiterungsachse und Roboter einstellen

Neu in Version Python: SDK-v2.1.5

Prototyp

SetExAxisRobotPlan(strategy)

Beschreibung

Strategie für die Synchronbewegung von Erweiterungsachse und Roboter einstellen

Erforderliche Parameter

  • strategy: Strategie: 0 = Roboter ist führend, 1 = Erweiterungsachse und Roboter synchron

Standardparameter

Keine

Rückgabewert

Fehlercode: 0 = Erfolg, sonst Fehlercode

13.66. Codebeispiel für die Synchronbewegungsstrategie

Neu in Version Python: SDK-v2.1.5

 1from fairino import Robot
 2# Verbindung zur Robotersteuerung herstellen
 3robot = Robot.RPC('192.168.58.2')
 4joint_pos1 = [-22.016, -49.217, 124.714, -161.100, -85.108, -0.333]
 5joint_pos2 = [-21.083, -46.613, 110.079, -147.796, -80.757, -0.330]
 6joint_pos3 = [-25.572, -60.090, 135.397, -163.889, -82.489, -0.345]
 7desc_pos1 = [2.637, -0.001, 30.673, 178.786, -4.134, 68.326]
 8desc_pos2 = [213.812, -1.440, 47.311, 177.410, 0.166, 68.946]
 9desc_pos3 = [444.342, -12.723, 82.470, -177.701, -1.325, 65.151]
10epos1 = [0.001, 0.000, 0.000, 0.000]
11epos2 = [299.977, 0.000, 0.000, 0.000]
12epos3 = [399.969, 0.000, 0.000, 0.000]
13offset_pos = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
14rtn = robot.SetExAxisRobotPlan(0)
15print(f"SetExAxisRobotPlan rtn is {rtn}")
16time.sleep(1)
17rtn = robot.ExtAxisSyncMoveL(desc_pos=desc_pos1,tool=1,user=0,vel=100,acc=100,ovl=100,blendR=-1,exaxis_pos=epos1,offset_flag=0,offset_pos=offset_pos)
18print(f"ExtAxisSyncMoveL 1 rtn is {rtn}")
19rtn = robot.ExtAxisSyncMoveL(desc_pos=desc_pos2,tool=1,user=0,vel=100,acc=100,ovl=100,blendR=-1,exaxis_pos=epos2,offset_flag=0,offset_pos=offset_pos)
20print(f"ExtAxisSyncMoveL 2 rtn is {rtn}")
21rtn = robot.ExtAxisSyncMoveL(desc_pos=desc_pos3,tool=1,user=0,vel=100,acc=100,ovl=100,blendR=-1,exaxis_pos=epos3,offset_flag=0,offset_pos=offset_pos)
22print(f"ExtAxisSyncMoveL 3 rtn is {rtn}")
23time.sleep(8)
24robot.CloseRPC()