13. Externe Achsen

13.1. Parameter für 485-Erweiterungsachsen einstellen

Neu in Version C#SDK-v1.0.6.

 1/**
 2* @brief Parameter für 485-Erweiterungsachsen einstellen
 3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
 4* @param [in] servoCompany Hersteller des Servoantriebs, 1-Dynatec
 5* @param [in] servoModel Modell des Servoantriebs, 1-FD100-750C
 6* @param [in] servoSoftVersion Softwareversion des Servoantriebs, 1-V1.0
 7* @param [in] servoResolution Auflösung des Encoders
 8* @param [in] axisMechTransRatio Mechanisches Übersetzungsverhältnis
 9* @return Fehlercode
10*/
11int AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);

13.2. Konfigurationsparameter für 485-Erweiterungsachsen abrufen

Neu in Version C#SDK-v1.0.6.

 1/**
 2* @brief Konfigurationsparameter für 485-Erweiterungsachsen abrufen
 3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
 4* @param [out] servoCompany Hersteller des Servoantriebs, 1-Dynatec
 5* @param [out] servoModel Modell des Servoantriebs, 1-FD100-750C
 6* @param [out] servoSoftVersion Softwareversion des Servoantriebs, 1-V1.0
 7* @param [out] servoResolution Auflösung des Encoders
 8* @param [out] axisMechTransRatio Mechanisches Übersetzungsverhältnis
 9* @return Fehlercode
10*/
11int AuxServoGetParam(int servoId, ref int servoCompany, ref int servoModel, ref int servoSoftVersion, ref int servoResolution, ref double axisMechTransRatio);

13.3. 485-Erweiterungsachse aktivieren/deaktivieren

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief 485-Erweiterungsachse aktivieren/deaktivieren
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] status Aktivierungsstatus, 0-deaktivieren, 1-aktivieren
5* @return Fehlercode
6*/
7int AuxServoEnable(int servoId, int status);

13.4. Steuerungsmodus für 485-Erweiterungsachse einstellen

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief Steuerungsmodus für 485-Erweiterungsachse einstellen
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] mode Steuerungsmodus, 0-Positionsmodus, 1-Geschwindigkeitsmodus
5* @return Fehlercode
6*/
7int AuxServoSetControlMode(int servoId, int mode);

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

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief Zielposition für 485-Erweiterungsachse einstellen (Positionsmodus)
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] pos Zielposition, mm oder °
5* @param [in] speed Zielgeschwindigkeit, mm/s oder °/s
6* @return Fehlercode
7*/
8int AuxServoSetTargetPos(int servoId, double pos, double speed);

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

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief Zielgeschwindigkeit für 485-Erweiterungsachse einstellen (Geschwindigkeitsmodus)
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] speed Zielgeschwindigkeit, mm/s oder °/s
5* @return Fehlercode
6*/
7int AuxServoSetTargetSpeed(int servoId, double speed);

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

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief Zieldrehmoment für 485-Erweiterungsachse einstellen (Drehmomentmodus) -- vorübergehend nicht freigegeben
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] torque Zieldrehmoment, Nm
5* @return Fehlercode
6*/
7int AuxServoSetTargetTorque(int servoId, double torque);

13.8. 485-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief 485-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] mode Referenzfahrmodus, 1- Aktuelle Position als Nullpunkt; 2- Referenzfahrt zum negativen Endschalter; 3- Referenzfahrt zum positiven Endschalter
5* @param [in] searchVel Suchgeschwindigkeit, mm/s oder °/s
6* @param [in] latchVel Einrastgeschwindigkeit, mm/s oder °/s
7* @return Fehlercode
8*/
9int AuxServoHoming(int servoId, int mode, double searchVel, double latchVel);

13.9. Fehlerinformationen der 485-Erweiterungsachse löschen

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief Fehlerinformationen der 485-Erweiterungsachse löschen
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @return Fehlercode
5*/
6int AuxServoClearError(int servoId);

13.10. Servostatus der 485-Erweiterungsachse abrufen

Neu in Version C#SDK-v1.0.6.

 1/**
 2* @brief Servostatus der 485-Erweiterungsachse abrufen
 3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
 4* @param [out] servoErrCode Fehlercode des Servoantriebs
 5* @param [out] 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-positiver Endschalter ausgelöst; Bit3: 0-negativer Endschalter nicht ausgelöst; 1-negativer Endschalter ausgelöst; Bit4: 0-Positionierung nicht abgeschlossen; 1-Positionierung abgeschlossen; Bit5: 0-Referenzfahrt nicht durchgeführt; 1-Referenzfahrt abgeschlossen
 6* @param [out] servoPos Aktuelle Servoposition, mm oder °
 7* @param [out] servoSpeed Aktuelle Servogeschwindigkeit, mm/s oder °/s
 8* @param [out] servoTorque Aktuelles Servodrehmoment, Nm
 9* @return Fehlercode
10*/
11int AuxServoGetStatus(int servoId, ref int servoErrCode, ref int servoState, ref double servoPos, ref double servoSpeed, ref double servoTorque);

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

Neu in Version C#SDK-v1.0.6.

1/**
2* @brief Datenachsnummer für 485-Erweiterungsachse in Statusrückmeldung einstellen
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @return Fehlercode
5*/
6int AuxServosetStatusID(int servoId);

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

1/**
2* @brief Bewegungsbeschleunigung und -verzögerung für 485-Erweiterungsachse einstellen
3* @param [in] acc Bewegungsbeschleunigung der 485-Erweiterungsachse
4* @param [in] dec Bewegungsverzögerung der 485-Erweiterungsachse
5* @return Fehlercode
6*/
7int AuxServoSetAcc(double acc, double dec);

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

1/**
2* @brief Not-Halt-Beschleunigung und -Verzögerung für 485-Erweiterungsachse einstellen
3* @param [in] acc Not-Halt-Beschleunigung der 485-Erweiterungsachse
4* @param [in] dec Not-Halt-Verzögerung der 485-Erweiterungsachse
5* @return Fehlercode
6*/
7int AuxServoSetEmergencyStopAcc(double acc, double dec);

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

1/**
2* @brief Bewegungsbeschleunigung und -verzögerung für 485-Erweiterungsachse abrufen
3* @param [out] acc Bewegungsbeschleunigung der 485-Erweiterungsachse
4* @param [out] dec Bewegungsverzögerung der 485-Erweiterungsachse
5* @return Fehlercode
6*/
7int AuxServoGetAcc(ref double acc, ref double dec);

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

1/**
2* @brief Not-Halt-Beschleunigung und -Verzögerung für 485-Erweiterungsachse abrufen
3* @param [out] acc Not-Halt-Beschleunigung der 485-Erweiterungsachse
4* @param [out] dec Not-Halt-Verzögerung der 485-Erweiterungsachse
5* @return Fehlercode
6*/
7int AuxServoGetEmergencyStopAcc(ref double acc, ref double dec);

13.16. Codebeispiel für die Steuerung von Erweiterungsachsen

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1private void button64_Click(object sender, EventArgs e)
 2{
 3    int retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45);
 4    Console.WriteLine($"AuxServoSetParam is: {retval}");
 5
 6    int servoCompany = 0;
 7    int servoModel = 0;
 8    int servoSoftVersion = 0;
 9    int servoResolution = 0;
10    double axisMechTransRatio = 0;
11    retval = robot.AuxServoGetParam(1, ref servoCompany, ref servoModel, ref servoSoftVersion, ref servoResolution, ref axisMechTransRatio);
12    Console.WriteLine($"servoCompany {servoCompany}\n" +
13        $"servoModel {servoModel}\n" +
14        $"servoSoftVersion {servoSoftVersion}\n" +
15        $"servoResolution {servoResolution}\n" +
16        $"axisMechTransRatio {axisMechTransRatio}\n");
17
18    retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14);
19    Console.WriteLine($"AuxServoSetParam is: {retval}");
20
21    retval = robot.AuxServoGetParam(1, ref servoCompany, ref servoModel, ref servoSoftVersion, ref servoResolution, ref axisMechTransRatio);
22    Console.WriteLine($"servoCompany {servoCompany}\n" +
23        $"servoModel {servoModel}\n" +
24        $"servoSoftVersion {servoSoftVersion}\n" +
25        $"servoResolution {servoResolution}\n" +
26        $"axisMechTransRatio {axisMechTransRatio}\n");
27
28    retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);
29    Console.WriteLine($"AuxServoSetParam is: {retval}");
30    Thread.Sleep(3000);
31
32    robot.AuxServoSetAcc(3000, 3000);
33    robot.AuxServoSetEmergencyStopAcc(5000, 5000);
34    Thread.Sleep(1000);
35    double emagacc = 0, acc = 0;
36    double emagdec = 0, dec = 0;
37    robot.AuxServoGetEmergencyStopAcc(ref emagacc, ref emagdec);
38    Console.WriteLine($"emergency acc is {emagacc}  dec is {emagdec}");
39    robot.AuxServoGetAcc(ref acc, ref dec);
40    Console.WriteLine($"acc is {acc}  dec is {dec}");
41
42    robot.AuxServoSetControlMode(1, 0);
43    Thread.Sleep(2000);
44
45    retval = robot.AuxServoEnable(1, 0);
46    Console.WriteLine($"AuxServoEnable disenable {retval}");
47    Thread.Sleep(1000);
48    int servoerrcode = 0;
49    int servoErrCode = 0;
50    int servoState = 0;
51    double servoPos = 0;
52    double servoSpeed = 0;
53    double servoTorque = 0;
54    retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
55    Console.WriteLine($"AuxServoGetStatus servoState {servoState}");
56    Thread.Sleep(1000);
57
58    retval = robot.AuxServoEnable(1, 1);
59    Console.WriteLine($"AuxServoEnable enable {retval}");
60    Thread.Sleep(1000);
61    retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
62    Console.WriteLine($"AuxServoGetStatus servoState {servoState}");
63    Thread.Sleep(1000);
64
65    retval = robot.AuxServoHoming(1, 1, 5, 1);
66    Console.WriteLine($"AuxServoHoming {retval}");
67    Thread.Sleep(3000);
68
69    retval = robot.AuxServoSetTargetPos(1, 200, 30);
70    Console.WriteLine($"AuxServoSetTargetPos {retval}");
71    Thread.Sleep(1000);
72    retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
73    Console.WriteLine($"AuxServoGetStatus servoSpeed {servoSpeed}");
74    Thread.Sleep(8000);
75
76    robot.AuxServoSetControlMode(1, 1);
77    Thread.Sleep(2000);
78
79    robot.AuxServoEnable(1, 0);
80    Thread.Sleep(1000);
81    robot.AuxServoEnable(1, 1);
82    Thread.Sleep(1000);
83    robot.AuxServoSetTargetSpeed(1, 100, 80);
84
85    Thread.Sleep(5000);
86    robot.AuxServoSetTargetSpeed(1, 0, 80);
87}

13.17. Konfiguration der UDP-Kommunikationsparameter für Erweiterungsachsen

Neu in Version C#SDK-V1.1.3: Web-3.8.2

 1/**
 2* @brief Konfiguration der UDP-Kommunikationsparameter für Erweiterungsachsen
 3* @param [in] ip IP-Adresse der SPS
 4* @param [in] port Portnummer
 5* @param [in] period Kommunikationszyklus (ms, Standard ist 2, diesen Parameter nicht ändern)
 6* @param [in] lossPkgTime Paketverlust-Erkennungszeit (ms)
 7* @param [in] lossPkgNum Anzahl der Paketverluste
 8* @param [in] disconnectTime Zeitdauer zur Bestätigung einer Kommunikationsunterbrechung
 9* @param [in] reconnectEnable Automatische Wiederverbindung bei Kommunikationsunterbrechung aktivieren (0-deaktivieren, 1-aktivieren)
10* @param [in] reconnectPeriod Intervall für Wiederverbindungsversuche (ms)
11* @param [in] reconnectNum Anzahl der Wiederverbindungsversuche
12* @param [in] selfConnect Automatische Verbindungsherstellung nach Stromausfall/Neustart (0-keine Verbindung herstellen, 1-Verbindung herstellen)
13* @return Fehlercode
14*/
15int ExtDevSetUDPComParam(std::string ip, int port, int period, int lossPkgTime, int lossPkgNum, int disconnectTime, int reconnectEnable, int reconnectPeriod, int reconnectNum, int selfConnect);

13.18. Abrufen der UDP-Kommunikationsparameterkonfiguration für Erweiterungsachsen

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief Abrufen der UDP-Kommunikationsparameter für Erweiterungsachsen
 3* @param [out] ip PLC-IP-Adresse
 4* @param [out] port Portnummer
 5* @param [out] period       Kommunikationszyklus (ms, Standard ist 2, diesen Parameter nicht ändern)
 6* @param [out] lossPkgTime  Paketverlust-Erkennungszeit (ms)
 7* @param [out] lossPkgNum   Anzahl der Paketverluste
 8* @param [out] disconnectTime       Bestätigungsdauer für Kommunikationsunterbrechung
 9* @param [out] reconnectEnable      Automatische Wiederverbindung bei Kommunikationsunterbrechung aktivieren 0-deaktiviert 1-aktiviert
10* @param [out] reconnectPeriod      Wiederverbindungsintervall (ms)
11* @param [out] reconnectNum Anzahl der Wiederverbindungsversuche
12* @param [out] selfConnect  Automatische Wiederverbindung nach Neustart des Steuerkastens; 0-keine Wiederverbindung; 1-Wiederverbindung
13* @return Fehlercode
14*/
15public int ExtDevGetUDPComParam(ref string ip, ref int port, ref int period, ref int lossPkgTime, ref int lossPkgNum, ref int disconnectTime, ref int reconnectEnable, ref int reconnectPeriod, ref int reconnectNum, ref int selfConnect)

13.19. UDP-Kommunikation laden

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief UDP-Kommunikation laden
3* @return Fehlercode
4*/
5int ExtDevLoadUDPDriver();

13.20. UDP-Kommunikation entladen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief UDP-Kommunikation entladen
3* @return Fehlercode
4*/
5int ExtDevUnloadUDPDriver();

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Verbindung nach UDP-Kommunikationsabbruch für Erweiterungsachsen wiederherstellen
3* @return Fehlercode
4*/
5int ExtDevUDPClientComReset();

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Kommunikation nach UDP-Kommunikationsabbruch für Erweiterungsachsen schließen
3* @return Fehlercode
4*/
5int ExtDevUDPClientComClose();

13.23. Parameterkonfiguration für UDP-Erweiterungsachsen

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief Parameterkonfiguration für UDP-Erweiterungsachsen
 3* @param [in] axisID Achsnummer
 4* @param [in] axisType Erweiterungsachstyp 0-Translatorisch; 1-Rotatorisch
 5* @param [in] axisDirection Richtung der Erweiterungsachse 0-positive Richtung; 1-negative Richtung
 6* @param [in] axisMax Maximale Position der Achse (mm)
 7* @param [in] axisMin Minimale Position der Achse (mm)
 8* @param [in] axisVel Geschwindigkeit (mm/s)
 9* @param [in] axisAcc Beschleunigung (mm/s²)
10* @param [in] axisLead Spindelsteigung (mm)
11* @param [in] encResolution Encoderauflösung
12* @param [in] axisOffect Versatz der Erweiterungsachse am Schweißstartpunkt
13* @param [in] axisCompany Hersteller des Antriebs 1-Hechuan; 2-Huichuan; 3-Panasonic
14* @param [in] 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
15* @param [in] axisEncType Encodertyp 0-inkrementell; 1-absolut
16* @return Fehlercode
17*/
18int ExtAxisParamConfig(int axisID, int axisType, int axisDirection, double axisMax, double axisMin, double axisVel, double axisAcc, double axisLead, long encResolution, double axisOffect, int axisCompany, int axisModel, int axisEncType);

13.24. Installationsposition der Erweiterungsachse einstellen

 1/**
 2* @brief UDP-Erweiterungsachsenparameter abrufen
 3* @param [in] axisID Erweiterungsachsennummer [1-4]
 4* @param [out] axisType Erweiterungsachsentyp 0-linear; 1-rotierend
 5* @param [out] axisDirection Erweiterungsachsenrichtung 0-positive; 1-negative
 6* @param [out] axisMax Maximale Position der Erweiterungsachse mm
 7* @param [out] axisMin Minimale Position der Erweiterungsachse mm
 8* @param [out] axisVel Geschwindigkeit mm/s
 9* @param [out] axisAcc Beschleunigung mm/s²
10* @param [out] axisLead Gewindesteigung mm
11* @param [out] encResolution Encoder-Auflösung
12* @param [out] axisOffect Schweißnahtstartpunkt-Erweiterungsachsenversatz
13* @param [out] axisCompany Antriebshersteller 1-Hecuan; 2-Inovance; 3-Panasonic
14* @param [out] axisModel Antriebsmodell 1-Hecuan-SV-XD3EA040L-E, 2-Hecuan-SV-X2EA150A-A, 1-Inovance-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG
15* @param [out] axisEncType Encodertyp 0-inkrementell; 1-absolut
16* @return Fehlercode
17*/
18public int ExtAxisGetParamConfig(int axisID, ref int axisType, ref int axisDirection, ref double axisMax, ref double axisMin, ref double axisVel, ref double axisAcc, ref double axisLead, ref int encResolution, ref double axisOffect, ref int axisCompany, ref int axisModel, ref int axisEncType)

13.25. Einbauposition der Erweiterungsachse einstellen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Einbauposition der Erweiterungsachse einstellen
3* @param [in] installType 0-Roboter ist auf der externen Achse montiert, 1-Roboter ist außerhalb der externen Achse montiert
4* @return Fehlercode
5*/
6int SetRobotPosToAxis(int installType);

13.26. DH-Parameterkonfiguration für Erweiterungsachssystem einstellen

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief DH-Parameterkonfiguration für Erweiterungsachssystem einstellen
 3* @param [in] axisConfig Konfiguration der externen Achse, 0-Ein-Freiheitsgrad-Linearschiene, 1-Zwei-Freiheitsgrad-L-Positionierer, 2-Drei-Freiheitsgrade, 3-Vier-Freiheitsgrade, 4-Ein-Freiheitsgrad-Positionierer
 4* @param [in] axisDHd1 DH-Parameter d1 (mm)
 5* @param [in] axisDHd2 DH-Parameter d2 (mm)
 6* @param [in] axisDHd3 DH-Parameter d3 (mm)
 7* @param [in] axisDHd4 DH-Parameter d4 (mm)
 8* @param [in] axisDHa1 DH-Parameter a1 (mm)
 9* @param [in] axisDHa2 DH-Parameter a2 (mm)
10* @param [in] axisDHa3 DH-Parameter a3 (mm)
11* @param [in] axisDHa4 DH-Parameter a4 (mm)
12* @return Fehlercode
13*/
14int SetAxisDHParaConfig(int axisConfig, double axisDHd1, double axisDHd2, double axisDHd3, double axisDHd4, double axisDHa1, double axisDHa2, double axisDHa3, double axisDHa4);

13.27. UDP-Erweiterungsachse aktivieren

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief UDP-Erweiterungsachse aktivieren
3* @param [in] axisID Achsnummer [1-4]
4* @param [in] status 0-deaktivieren; 1-aktivieren
5* @return Fehlercode
6*/
7int ExtAxisServoOn(int axisID, int status);

13.28. UDP-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief UDP-Erweiterungsachse auf Nullpunkt fahren (Referenzfahrt)
3* @param [in] axisID Achsnummer [1-4]
4* @param [in] mode Referenzfahrmodus 0-aktuelle Position als Nullpunkt, 1-Referenzfahrt zum negativen Endschalter, 2-Referenzfahrt zum positiven Endschalter
5* @param [in] searchVel Suchgeschwindigkeit (mm/s)
6* @param [in] latchVel Einrastgeschwindigkeit (mm/s)
7* @return Fehlercode
8*/
9int ExtAxisSetHoming(int axisID, int mode, double searchVel, double latchVel);

13.29. UDP-Erweiterungsachse Tippbetrieb starten

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief UDP-Erweiterungsachse Tippbetrieb starten
 3* @param [in] axisID Achsnummer [1-4]
 4* @param [in] direction Drehrichtung 0-negativ; 1-positiv
 5* @param [in] vel Geschwindigkeit (mm/s)
 6* @param [in] acc Beschleunigung (mm/s²)
 7* @param [in] maxDistance Maximale Tippdistanz
 8* @return Fehlercode
 9*/
10int ExtAxisStartJog(int axisID, int direction, double vel, double acc, double maxDistance);

13.30. UDP-Erweiterungsachse Tippbetrieb stoppen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief UDP-Erweiterungsachse Tippbetrieb stoppen
3* @param [in] axisID Achsnummer [1-4]
4* @return Fehlercode
5*/
6int ExtAxisStopJog(int axisID);

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

 1private void button65_Click(object sender, EventArgs e)
 2{
 3    int rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
 4    Console.WriteLine("ExtDevSetUDPComParam rtn is " + rtn);
 5    string ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0; int selfConnect = 0;
 6    rtn = robot.ExtDevGetUDPComParam(ref ip, ref port, ref period, ref lossPkgTime, ref lossPkgNum, ref disconnectTime, ref reconnectEnable, ref reconnectPeriod, ref reconnectNum, ref selfConnect);
 7    string param = "\nip " + ip + "\nport " + port.ToString() + "\nperiod  " + period.ToString() + "\nlossPkgTime " + lossPkgTime.ToString() + "\nlossPkgNum  " + lossPkgNum.ToString() + "\ndisConntime  " + disconnectTime.ToString() + "\nreconnecable  " + reconnectEnable.ToString() + "\nreconnperiod  " + reconnectPeriod.ToString() + "\nreconnnun  " + reconnectNum.ToString() + "\nselfConnect  " + selfConnect.ToString();
 8    Console.WriteLine("ExtDevGetUDPComParam rtn is " + rtn + param);
 9
10    robot.ExtDevLoadUDPDriver();
11
12    rtn = robot.ExtAxisServoOn(1, 1);
13    Console.WriteLine("ExtAxisServoOn axis id 1 rtn is " + rtn);
14    rtn = robot.ExtAxisServoOn(2, 1);
15    Console.WriteLine("ExtAxisServoOn axis id 2 rtn is " + rtn);
16    Thread.Sleep(2000);
17
18    rtn = robot.ExtAxisSetHoming(1, 0, 10, 2);
19    Console.WriteLine("ExtAxisSetHoming 1 rtnn is  " + rtn);
20    Thread.Sleep(2000);
21    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
22    Console.WriteLine("ExtAxisSetHoming 2 rtnn is  " + rtn);
23
24    Thread.Sleep(4000);
25
26    rtn = robot.SetRobotPosToAxis(1);
27    Console.WriteLine("SetRobotPosToAxis rtn is " + rtn);
28    rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
29    Console.WriteLine("SetAxisDHParaConfig rtn is " + rtn);
30
31
32    int axisType = -1;
33    int axisDirection = -1;
34    double axisMax = -1;
35    double axisMin = -1;
36    double axisVel = -1;
37    double axisAcc = -1;
38    double axisLead = -1;
39    int encResolution = -1;
40    double axisOffect = -1;
41    int axisCompany = -1;
42    int axisModel = -1;
43    int axisEncType = -1;
44
45    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
46    Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
47    rtn = robot.ExtAxisGetParamConfig(1, ref axisType, ref axisDirection, ref axisMax, ref axisMin, ref axisVel, ref axisAcc, ref axisLead, ref encResolution, ref axisOffect, ref axisCompany, ref axisModel, ref axisEncType);
48    Console.WriteLine($"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}\n");
49
50
51    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
52    Console.WriteLine("ExtAxisParamConfig axis 2 rtn is " + rtn);
53    rtn = robot.ExtAxisGetParamConfig(2, ref axisType, ref axisDirection, ref axisMax,  ref axisMin, ref axisVel, ref axisAcc, ref axisLead, ref encResolution, ref axisOffect, ref axisCompany, ref axisModel, ref axisEncType);
54    Console.WriteLine($"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}\n");
55
56
57    Thread.Sleep(3000);
58    robot.ExtAxisStartJog(1, 0, 10, 10, 30);
59    Thread.Sleep(1000);
60    robot.ExtAxisStopJog(1);
61    Thread.Sleep(3000);
62    robot.ExtAxisServoOn(1, 0);
63
64    Thread.Sleep(3000);
65    robot.ExtAxisStartJog(2, 0, 10, 10, 30);
66    Thread.Sleep(1000);
67    robot.ExtAxisStopJog(2);
68    Thread.Sleep(3000);
69    robot.ExtAxisServoOn(2, 0);
70    Thread.Sleep(3000);
71    robot.ExtDevUnloadUDPDriver();
72}

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Referenzpunkt für Koordinatensystem der Erweiterungsachse einstellen - Vier-Punkt-Methode
3* @param [in] pointNum Punktnummer [1-4]
4* @return Fehlercode
5*/
6int ExtAxisSetRefPoint(int pointNum);

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Koordinatensystem der Erweiterungsachse berechnen - Vier-Punkt-Methode
3* @param [out] coord Koordinatenwerte des Systems
4* @return Fehlercode
5*/
6int ExtAxisComputeECoordSys(DescPose& coord);

13.34. Koordinatensystem der Erweiterungsachse anwenden

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Koordinatensystem der Erweiterungsachse anwenden
3* @param [in] applyAxisId Erweiterungsachsennummer Bit0-Bit3 entsprechen den Achsnummern 1-4, z.B. für Achse 1 und 3: 0b00000101 = 5
4* @param [in] axisCoordNum Nummer des Erweiterungsachsen-Koordinatensystems
5* @param [in] coord Koordinatenwerte des Systems
6* @param [in] calibFlag Kalibrierungsflag 0-nein, 1-ja
7* @return Fehlercode
8*/
9int ExtAxisActiveECoordSys(int applyAxisId, int axisCoordNum, DescPose coord, int calibFlag);

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Pose des Kalibrierungsreferenzpunkts im Endeffektor-Koordinatensystem des Positionierers einstellen
3* @param [in] pos Posenwerte
4* @return Fehlercode
5*/
6int SetRefPointInExAxisEnd(DescPose pos);

13.36. Referenzpunkt für Positionierer-Koordinatensystem einstellen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Referenzpunkt für Positionierer-Koordinatensystem einstellen
3* @param [in] pointNum Punktnummer [1-4]
4* @return Fehlercode
5*/
6int PositionorSetRefPoint(int pointNum);

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Koordinatensystem des Positionierers berechnen - Vier-Punkt-Methode
3* @param [out] coord Koordinatenwerte des Systems
4* @return Fehlercode
5*/
6int PositionorComputeECoordSys(DescPose& coord);

13.38. Koordinatensystem der Erweiterungsachse abrufen

Neu in Version C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Koordinatensystem der Erweiterungsachse abrufen
3* @param [out] coord Koordinatensystem der Erweiterungsachse
4* @return Fehlercode
5*/
6int ExtAxisGetCoord(ref DescPose coord);

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

Neu in Version C#SDK-V1.1.3: Web-3.8.2

  1private void button66_Click(object sender, EventArgs e)
  2{
  3    int rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5,1);
  4    Console.WriteLine("ExtDevSetUDPComParam rtn is " + rtn);
  5    string ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0;
  6    rtn = robot.ExtDevGetUDPComParam(ref ip, ref port, ref period, ref lossPkgTime, ref lossPkgNum, ref disconnectTime, ref reconnectEnable, ref reconnectPeriod, ref reconnectNum);
  7    string param = "\nip " + ip + "\nport " + port.ToString() + "\nperiod  " + period.ToString() + "\nlossPkgTime " + lossPkgTime.ToString() + "\nlossPkgNum  " + lossPkgNum.ToString() + "\ndisConntime  " + disconnectTime.ToString() + "\nreconnecable  " + reconnectEnable.ToString() + "\nreconnperiod  " + reconnectPeriod.ToString() + "\nreconnnun  " + reconnectNum.ToString();
  8    Console.WriteLine("ExtDevGetUDPComParam rtn is " + rtn + param);
  9
 10    robot.ExtDevLoadUDPDriver();
 11
 12    rtn = robot.ExtAxisServoOn(1, 1);
 13    Console.WriteLine("ExtAxisServoOn axis id 1 rtn is " + rtn);
 14    rtn = robot.ExtAxisServoOn(2, 1);
 15    Console.WriteLine("ExtAxisServoOn axis id 2 rtn is " + rtn);
 16    Thread.Sleep(2000);
 17
 18    robot.ExtAxisSetHoming(1, 0, 10, 2);
 19    Thread.Sleep(2000);
 20    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
 21    Console.WriteLine("ExtAxisSetHoming rtnn is  " + rtn);
 22
 23    Thread.Sleep(4000);
 24
 25    rtn = robot.SetRobotPosToAxis(1);
 26    Console.WriteLine("SetRobotPosToAxis rtn is " + rtn);
 27    rtn = robot.SetAxisDHParaConfig(1, 128.5f, 206.4f, 0, 0, 0, 0, 0, 0);
 28    Console.WriteLine("SetAxisDHParaConfig rtn is " + rtn);
 29    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
 30    Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
 31    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
 32    Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
 33
 34    DescPose toolCoord = new DescPose(0, 0, 210, 0, 0, 0);
 35    robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
 36
 37    JointPos jSafe = new JointPos(115.193f, -96.149f, 92.489f, -87.068f, -89.15f, -83.488f);
 38    JointPos j1 = new JointPos(117.559f, -92.624f, 100.329f, -96.909f, -94.057f, -83.488f);
 39    JointPos j2 = new JointPos(112.239f, -90.096f, 99.282f, -95.909f, -89.824f, -83.488f);
 40    JointPos j3 = new JointPos(110.839f, -83.473f, 93.166f, -89.22f, -90.499f, -83.487f);
 41    JointPos j4 = new JointPos(107.935f, -83.572f, 95.424f, -92.873f, -87.933f, -83.488f);
 42
 43    DescPose descSafe = new DescPose();
 44    DescPose desc1 = new DescPose();
 45    DescPose desc2 = new DescPose();
 46    DescPose desc3 = new DescPose();
 47    DescPose desc4 = new DescPose();
 48    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
 49    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
 50
 51    robot.GetForwardKin( jSafe,  ref descSafe);
 52    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 53    Thread.Sleep(2000);
 54
 55    robot.GetForwardKin( j1, ref desc1);
 56    robot.MoveJ( j1,  desc1, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 57    Thread.Sleep(2000);
 58
 59    DescPose actualTCPPos = new DescPose();
 60    robot.GetActualTCPPose(0, ref actualTCPPos);
 61    robot.SetRefPointInExAxisEnd(actualTCPPos);
 62    rtn = robot.PositionorSetRefPoint(1);
 63    Console.WriteLine("PositionorSetRefPoint 1 rtn is " + rtn);
 64    Thread.Sleep(2000);
 65
 66    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 67    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 68    Thread.Sleep(1000);
 69    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 70    Thread.Sleep(1000);
 71    robot.GetForwardKin( j2, ref desc2);
 72    rtn = robot.MoveJ( j2,  desc2, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 73    rtn = robot.PositionorSetRefPoint(2);
 74    Console.WriteLine("PositionorSetRefPoint 2 rtn is " + rtn);
 75    Thread.Sleep(2000);
 76
 77    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 78    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 79    Thread.Sleep(1000);
 80    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 81    Thread.Sleep(1000);
 82    robot.GetForwardKin( j3, ref desc3);
 83    robot.MoveJ( j3,  desc3, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 84    rtn = robot.PositionorSetRefPoint(3);
 85    Console.WriteLine("PositionorSetRefPoint 3 rtn is " + rtn);
 86    Thread.Sleep(2000);
 87
 88    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 89    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 90    Thread.Sleep(1000);
 91    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 92    Thread.Sleep(1000);
 93    robot.GetForwardKin(j4, ref desc4);
 94    robot.MoveJ(j4, desc4, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
 95    rtn = robot.PositionorSetRefPoint(4);
 96    Console.WriteLine("PositionorSetRefPoint 4 rtn is " + rtn);
 97    Thread.Sleep(2000);
 98
 99    DescPose axisCoord = new DescPose();
100    robot.PositionorComputeECoordSys(ref axisCoord);
101    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
102    Console.WriteLine("PositionorComputeECoordSys rtn is {0} {1} {2} {3} {4} {5}", axisCoord.tran.x, axisCoord.tran.y, axisCoord.tran.z, axisCoord.rpy.rx, axisCoord.rpy.ry, axisCoord.rpy.rz);
103    rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
104    Console.WriteLine("ExtAxisActiveECoordSys rtn is " + rtn);
105}

13.40. UDP-Erweiterungsachse bewegen

Neu in Version C#SDK-V1.1.5: Web-3.8.4

1/**
2* @brief UDP-Erweiterungsachse bewegen
3* @param [in] pos Zielposition
4* @param [in] ovl Geschwindigkeitsprozentsatz
5* @param [in] blend Glättungsparameter (mm oder ms)
6* @return Fehlercode
7*/
8int ExtAxisMove(ExaxisPos pos, double ovl, double blend=-1);

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

1private void button66_Click(object sender, EventArgs e)
2{
3    ExaxisPos axisPos;
4    axisPos.ePos[0] = 20;
5    axisPos.ePos[1] = 0;
6    axisPos.ePos[2] = 0;
7    axisPos.ePos[3] = 0;
8    robot.ExtAxisMove(axisPos, 50);
9}

13.42. Synchronbewegung von UDP-Erweiterungsachse und Roboter-Gelenkbewegung

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief Synchronbewegung von UDP-Erweiterungsachse und Roboter-Gelenkbewegung
 3* @param [in] joint_pos Ziel-Gelenkposition (Grad)
 4* @param [in] desc_pos Ziel-Kartesische Pose
 5* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14]
 6* @param [in] user Werkstückkoordinatennummer, Bereich [0~14]
 7* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100]
 8* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100], vorübergehend nicht freigegeben
 9* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100]
10* @param [in] epos Position der Erweiterungsachse (mm)
11* @param [in] blendT [-1.0]-Bewegung abschließen (blockierend), [0~500.0]-Glättungszeit (nicht blockierend) (ms)
12* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem
13* @param [in] offset_pos Posenversatz
14* @return Fehlercode
15*/
16int ExtAxisSyncMoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, byte offset_flag, DescPose offset_pos);

13.43. Codebeispiel

 1private void btnSyncMoveJ_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6    //1. Kalibrieren und Anwenden des Roboter-Werkzeugkoordinatensystems. Sie können die Vier-Punkt- oder Sechs-Punkt-Methode verwenden. Die relevanten Schnittstellen sind:
 7    //    int SetToolPoint(int point_num);  // Werkzeugreferenzpunkt einstellen - Sechs-Punkt-Methode
 8    //    int ComputeTool(ref DescPose tcp_pose);  // Werkzeugkoordinatensystem berechnen
 9    //    int SetTcp4RefPoint(int point_num);    // Werkzeugreferenzpunkt einstellen - Vier-Punkt-Methode
10    //    int ComputeTcp4(ref DescPose tcp_pose);   // Werkzeugkoordinatensystem berechnen - Vier-Punkt-Methode
11    //    int SetToolCoord(int id, DescPose coord, int type, int install);  // Werkzeugkoordinatensystem einstellen und anwenden
12    //    int SetToolList(int id, DescPose coord, int type, int install);   // Werkzeugkoordinatensystem in Liste einstellen und anwenden
13
14    //2. UDP-Kommunikationsparameter einstellen und UDP-Kommunikation laden
15    robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16    robot.ExtDevLoadUDPDriver();
17
18    //3. Parameter für Erweiterungsachsen einstellen, einschließlich Typ, Antriebsparameter, DH-Parameter
19    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); // Einachs-Positionierer und DH-Parameter
20    robot.SetRobotPosToAxis(1);  // Einbauposition der Erweiterungsachse
21    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); // Servoantriebsparameter, hier für Einachs-Positionierer. Bei mehreren Achsen müssen für jede Achse Parameter gesetzt werden.
22
23    //4. Ausgewählte Achse aktivieren und Referenzfahrt durchführen
24    robot.ExtAxisServoOn(1, 0);
25    robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27    //5. Kalibrierung und Anwendung des Erweiterungsachsen-Koordinatensystems (Hinweis: Positionierer und Linearschiene haben unterschiedliche Schnittstellen. Hier folgen die des Positionierers)
28    DescPose pos = new DescPose(/* Geben Sie hier Ihre Kalibrierungspunktkoordinaten ein */);
29    robot.SetRefPointInExAxisEnd(pos);
30    robot.PositionorSetRefPoint(1); /* Sie müssen diese Schnittstelle 4 Mal mit verschiedenen Punkten aufrufen, um die Achse zu kalibrieren */
31    DescPose coord = new DescPose( );
32    robot.PositionorComputeECoordSys(ref coord); // Kalibrierungsergebnis berechnen
33    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);  // Kalibrierungsergebnis auf das Erweiterungsachsen-Koordinatensystem anwenden
34
35    //6. Werkstückkoordinatensystem auf der Erweiterungsachse kalibrieren. Sie benötigen folgende Schnittstellen:
36    //int SetWObjCoordPoint(int point_num);
37    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38    //int SetWObjCoord(int id, DescPose coord);
39    //int SetWObjList(int id, DescPose coord);
40
41    //7. Startpunkt der synchronen Gelenkbewegung erfassen
42    DescPose startdescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
43    JointPos startjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
44    ExaxisPos startexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Startkoordinaten für die Erweiterungsachse ein */);
45
46    //8. Endpunkt der synchronen Gelenkbewegung erfassen
47    DescPose enddescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
48    JointPos endjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
49    ExaxisPos endexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Endkoordinaten für die Erweiterungsachse ein */);
50
51    //9. Synchronbewegungsprogramm erstellen
52    // Zum Startpunkt bewegen, angenommen Werkzeug- und Werkstückkoordinatensystem sind beide 1
53    robot.ExtAxisMove(startexaxisPos, 20);
54    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
55    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
56
57    // Synchronbewegung starten
58    robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
59}

13.44. Synchronbewegung von UDP-Erweiterungsachse und Roboter-Linearbewegung

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief Synchronbewegung von UDP-Erweiterungsachse und Roboter-Linearbewegung
 3* @param [in] joint_pos Ziel-Gelenkposition (Grad)
 4* @param [in] desc_pos Ziel-Kartesische Pose
 5* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14]
 6* @param [in] user Werkstückkoordinatennummer, Bereich [0~14]
 7* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100]
 8* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100], vorübergehend nicht freigegeben
 9* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100]
10* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend) (mm)
11* @param [in] epos Position der Erweiterungsachse (mm)
12* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem
13* @param [in] offset_pos Posenversatz
14* @return Fehlercode
15*/
16int ExtAxisSyncMoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos epos, int offset_flag, DescPose offset_pos);

13.45. Codebeispiel

 1private void btnSyncMoveL_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6//1. Kalibrieren und Anwenden des Roboter-Werkzeugkoordinatensystems. Sie können die Vier-Punkt- oder Sechs-Punkt-Methode verwenden. Die relevanten Schnittstellen sind:
 7    //    int SetToolPoint(int point_num);  // Werkzeugreferenzpunkt einstellen - Sechs-Punkt-Methode
 8    //    int ComputeTool(ref DescPose tcp_pose);  // Werkzeugkoordinatensystem berechnen
 9    //    int SetTcp4RefPoint(int point_num);    // Werkzeugreferenzpunkt einstellen - Vier-Punkt-Methode
10    //    int ComputeTcp4(ref DescPose tcp_pose);   // Werkzeugkoordinatensystem berechnen - Vier-Punkt-Methode
11    //    int SetToolCoord(int id, DescPose coord, int type, int install);  // Werkzeugkoordinatensystem einstellen und anwenden
12    //    int SetToolList(int id, DescPose coord, int type, int install);   // Werkzeugkoordinatensystem in Liste einstellen und anwenden
13
14    //2. UDP-Kommunikationsparameter einstellen und UDP-Kommunikation laden
15    robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16    robot.ExtDevLoadUDPDriver();
17
18    //3. Parameter für Erweiterungsachsen einstellen, einschließlich Typ, Antriebsparameter, DH-Parameter
19    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); // Einachs-Positionierer und DH-Parameter
20    robot.SetRobotPosToAxis(1);  // Einbauposition der Erweiterungsachse
21    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); // Servoantriebsparameter, hier für Einachs-Positionierer. Bei mehreren Achsen müssen für jede Achse Parameter gesetzt werden.
22
23    //4. Ausgewählte Achse aktivieren und Referenzfahrt durchführen
24    robot.ExtAxisServoOn(1, 0);
25    robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27    //5. Kalibrierung und Anwendung des Erweiterungsachsen-Koordinatensystems (Hinweis: Positionierer und Linearschiene haben unterschiedliche Schnittstellen. Hier folgen die des Positionierers)
28    DescPose pos = new DescPose(/* Geben Sie hier Ihre Kalibrierungspunktkoordinaten ein */);
29    robot.SetRefPointInExAxisEnd(pos);
30    robot.PositionorSetRefPoint(1); /* Sie müssen diese Schnittstelle 4 Mal mit verschiedenen Punkten aufrufen, um die Achse zu kalibrieren */
31    DescPose coord = new DescPose();
32    robot.PositionorComputeECoordSys(ref coord); // Kalibrierungsergebnis berechnen
33    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);  // Kalibrierungsergebnis auf das Erweiterungsachsen-Koordinatensystem anwenden
34
35    //6. Werkstückkoordinatensystem auf der Erweiterungsachse kalibrieren. Sie benötigen folgende Schnittstellen:
36    //int SetWObjCoordPoint(int point_num);
37    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38    //int SetWObjCoord(int id, DescPose coord);
39    //int SetWObjList(int id, DescPose coord);
40
41    //7. Startpunkt der synchronen Linearbewegung erfassen
42    DescPose startdescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
43    JointPos startjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
44    ExaxisPos startexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Startkoordinaten für die Erweiterungsachse ein */);
45
46    //8. Endpunkt der synchronen Linearbewegung erfassen
47    DescPose enddescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
48    JointPos endjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
49    ExaxisPos endexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Endkoordinaten für die Erweiterungsachse ein */);
50
51    //9. Synchronbewegungsprogramm erstellen
52    // Zum Startpunkt bewegen, angenommen Werkzeug- und Werkstückkoordinatensystem sind beide 1
53    robot.ExtAxisMove(startexaxisPos, 20);
54    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
55    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
56
57    // Synchronbewegung starten
58    robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
59}

13.46. Synchronbewegung von UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief Synchronbewegung von UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung
 3* @param [in] joint_pos_p Gelenkposition des Zwischenpunkts (Grad)
 4* @param [in] desc_pos_p Kartesische Pose des Zwischenpunkts
 5* @param [in] ptool Werkzeugkoordinatennummer für Zwischenpunkt, Bereich [0~14]
 6* @param [in] puser Werkstückkoordinatennummer für Zwischenpunkt, Bereich [0~14]
 7* @param [in] pvel Geschwindigkeitsprozentsatz für Zwischenpunkt, Bereich [0~100]
 8* @param [in] pacc Beschleunigungsprozentsatz für Zwischenpunkt, Bereich [0~100], vorübergehend nicht freigegeben
 9* @param [in] epos_p Position der Erweiterungsachse am Zwischenpunkt (mm)
10* @param [in] poffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem (für Zwischenpunkt)
11* @param [in] offset_pos_p Posenversatz für Zwischenpunkt
12* @param [in] joint_pos_t Gelenkposition des Zielpunkts (Grad)
13* @param [in] desc_pos_t Kartesische Pose des Zielpunkts
14* @param [in] ttool Werkzeugkoordinatennummer für Zielpunkt, Bereich [0~14]
15* @param [in] tuser Werkstückkoordinatennummer für Zielpunkt, Bereich [0~14]
16* @param [in] tvel Geschwindigkeitsprozentsatz für Zielpunkt, Bereich [0~100]
17* @param [in] tacc Beschleunigungsprozentsatz für Zielpunkt, Bereich [0~100], vorübergehend nicht freigegeben
18* @param [in] epos_t Position der Erweiterungsachse am Zielpunkt (mm)
19* @param [in] toffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem (für Zielpunkt)
20* @param [in] offset_pos_t Posenversatz für Zielpunkt
21* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100]
22* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend) (mm)
23* @return Fehlercode
24*/
25int ExtAxisSyncMoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, float tvel, float tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, float ovl, float blendR);

13.47. Codebeispiel

 1private void btnSyncMoveC_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6//1. Kalibrieren und Anwenden des Roboter-Werkzeugkoordinatensystems. Sie können die Vier-Punkt- oder Sechs-Punkt-Methode verwenden. Die relevanten Schnittstellen sind:
 7    //    int SetToolPoint(int point_num);  // Werkzeugreferenzpunkt einstellen - Sechs-Punkt-Methode
 8    //    int ComputeTool(ref DescPose tcp_pose);  // Werkzeugkoordinatensystem berechnen
 9    //    int SetTcp4RefPoint(int point_num);    // Werkzeugreferenzpunkt einstellen - Vier-Punkt-Methode
10    //    int ComputeTcp4(ref DescPose tcp_pose);   // Werkzeugkoordinatensystem berechnen - Vier-Punkt-Methode
11    //    int SetToolCoord(int id, DescPose coord, int type, int install);  // Werkzeugkoordinatensystem einstellen und anwenden
12    //    int SetToolList(int id, DescPose coord, int type, int install);   // Werkzeugkoordinatensystem in Liste einstellen und anwenden
13
14    //2. UDP-Kommunikationsparameter einstellen und UDP-Kommunikation laden
15    robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16    robot.ExtDevLoadUDPDriver();
17
18    //3. Parameter für Erweiterungsachsen einstellen, einschließlich Typ, Antriebsparameter, DH-Parameter
19    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); // Einachs-Positionierer und DH-Parameter
20    robot.SetRobotPosToAxis(1);  // Einbauposition der Erweiterungsachse
21    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); // Servoantriebsparameter, hier für Einachs-Positionierer. Bei mehreren Achsen müssen für jede Achse Parameter gesetzt werden.
22
23    //4. Ausgewählte Achse aktivieren und Referenzfahrt durchführen
24    robot.ExtAxisServoOn(1, 0);
25    robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27    //5. Kalibrierung und Anwendung des Erweiterungsachsen-Koordinatensystems (Hinweis: Positionierer und Linearschiene haben unterschiedliche Schnittstellen. Hier folgen die des Positionierers)
28    DescPose pos = new DescPose(/* Geben Sie hier Ihre Kalibrierungspunktkoordinaten ein */);
29    robot.SetRefPointInExAxisEnd(pos);
30    robot.PositionorSetRefPoint(1); /* Sie müssen diese Schnittstelle 4 Mal mit verschiedenen Punkten aufrufen, um die Achse zu kalibrieren */
31    DescPose coord = new DescPose();
32    robot.PositionorComputeECoordSys(ref coord); // Kalibrierungsergebnis berechnen
33    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);  // Kalibrierungsergebnis auf das Erweiterungsachsen-Koordinatensystem anwenden
34
35    //6. Werkstückkoordinatensystem auf der Erweiterungsachse kalibrieren. Sie benötigen folgende Schnittstellen:
36    //int SetWObjCoordPoint(int point_num);
37    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38    //int SetWObjCoord(int id, DescPose coord);
39    //int SetWObjList(int id, DescPose coord);
40
41    //7. Startpunkt der synchronen Kreisbogenbewegung erfassen
42    DescPose startdescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
43    JointPos startjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
44    ExaxisPos startexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Startkoordinaten für die Erweiterungsachse ein */);
45
46    //8. Endpunkt der synchronen Kreisbogenbewegung erfassen
47    DescPose enddescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
48    JointPos endjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
49    ExaxisPos endexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Endkoordinaten für die Erweiterungsachse ein */);
50
51    //9. Zwischenpunkt der synchronen Kreisbogenbewegung erfassen
52    DescPose middescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
53    JointPos midjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
54    ExaxisPos midexaxisPos = new ExaxisPos(/* Geben Sie hier die Koordinaten der Erweiterungsachse am Kreisbogen-Zwischenpunkt ein */);
55
56    //10. Synchronbewegungsprogramm erstellen
57    // Zum Startpunkt bewegen, angenommen Werkzeug- und Werkstückkoordinatensystem sind beide 1
58    robot.ExtAxisMove(startexaxisPos, 20);
59    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
60    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
61
62    // Synchronbewegung starten
63    robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
64}

13.48. Erweiterten Digitalausgang (DO) setzen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Erweiterten Digitalausgang (DO) setzen
3* @param [in] DONum DO-Nummer
4* @param [in] bOpen Schaltzustand true-ein; false-aus
5* @param [in] smooth Glättung aktivieren
6* @param [in] block Blockierend ausführen
7* @return Fehlercode
8*/
9int SetAuxDO(int DONum, bool bOpen, bool smooth, bool block);

13.49. Erweiterten Analogausgang (AO) setzen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Erweiterten Analogausgang (AO) setzen
3* @param [in] AONum AO-Nummer
4* @param [in] value Analogwert [0-4095]
5* @param [in] block Blockierend ausführen
6* @return Fehlercode
7*/
8int SetAuxAO(int AONum, double value, bool block);

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Eingangsfilterzeit für erweiterten Digitaleingang (DI) einstellen
3* @param [in] filterTime Filterzeit (ms)
4* @return Fehlercode
5*/
6int SetAuxDIFilterTime(int filterTime);

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

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Eingangsfilterzeit für erweiterten Analogeingang (AI) einstellen
3* @param [in] filterTime Filterzeit (ms)
4* @return Fehlercode
5*/
6int SetAuxAIFilterTime(int filterTime);

13.52. Auf erweiterten Digitaleingang (DI) warten

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Auf erweiterten Digitaleingang (DI) warten
3* @param [in] DINum DI-Nummer
4* @param [in] bOpen Erwarteter Zustand 0-aus; 1-ein
5* @param [in] time Maximale Wartezeit (ms)
6* @param [in] errorAlarm Bewegung bei Timeout fortsetzen (false) oder anhalten (true)
7* @return Fehlercode
8*/
9int WaitAuxDI(int DINum, bool bOpen, int time, bool errorAlarm);

13.53. Auf erweiterten Analogeingang (AI) warten

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief Auf erweiterten Analogeingang (AI) warten
 3* @param [in] AINum AI-Nummer
 4* @param [in] sign Bedingung 0-größer als; 1-kleiner als
 5* @param [in] value Vergleichswert
 6* @param [in] time Maximale Wartezeit (ms)
 7* @param [in] errorAlarm Bewegung bei Timeout fortsetzen (false) oder anhalten (true)
 8* @return Fehlercode
 9*/
10int WaitAuxAI(int AINum, int sign, int value, int time, bool errorAlarm);

13.54. Wert des erweiterten Digitaleingangs (DI) abrufen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Wert des erweiterten Digitaleingangs (DI) abrufen
3* @param [in] DINum DI-Nummer
4* @param [in] isNoBlock Nicht-blockierend (true) / blockierend (false)
5* @param [out] isOpen 0-aus; 1-ein
6* @return Fehlercode
7*/
8int GetAuxDI(int DINum, bool isNoBlock, bool& isOpen);

13.55. Wert des erweiterten Analogeingangs (AI) abrufen

Neu in Version C#SDK-v1.0.7.

1/**
2* @brief Wert des erweiterten Analogeingangs (AI) abrufen
3* @param [in] AINum AI-Nummer
4* @param [in] isNoBlock Nicht-blockierend (true) / blockierend (false)
5* @param [out] value Eingangswert
6* @return Fehlercode
7*/
8int GetAuxAI(int AINum, bool isNoBlock, int& value);

13.56. Codebeispiel für erweiterten I/O

 1private void btnAODO_Click(object sender, EventArgs e)
 2{
 3    int rtn;
 4    for (int i = 0; i < 128; i++)
 5    {
 6        robot.SetAuxDO(i, true, false, true);
 7        Thread.Sleep(100);
 8    }
 9    for (int i = 0; i < 128; i++)
10    {
11        robot.SetAuxDO(i, false, false, true);
12        Thread.Sleep(100);
13    }
14
15    for (int i = 0; i < 409; i++)
16    {
17        robot.SetAuxAO(0, i * 10, true);
18        robot.SetAuxAO(1, 4095 - i * 10, true);
19        robot.SetAuxAO(2, i * 10, true);
20        robot.SetAuxAO(3, 4095 - i * 10, true);
21        Thread.Sleep(10);
22    }
23
24    robot.SetAuxDIFilterTime(10);
25    robot.SetAuxAIFilterTime(0, 10);
26
27    for (int i = 0; i < 20; i++)
28    {
29        bool curValue = false;
30        rtn = robot.GetAuxDI(i, false, ref curValue);
31        Console.WriteLine("DI" + i + "   " + curValue);
32    }
33    int curValueAI = -1;
34    for (int i = 0; i < 4; i++)
35    {
36        rtn = robot.GetAuxAI(i, true, ref curValueAI);
37    }
38
39    robot.WaitAuxDI(1, false, 1000, false);
40    robot.WaitAuxAI(1, 1, 132, 1000, false);
41}

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

Neu in Version C#SDK-v1.0.9.

1/**
2* @brief Mobile Basis aktivieren
3* @param enable false-deaktivieren; true-aktivieren
4* @return Fehlercode
5*/
6int TractorEnable(bool enable);

13.58. Mobile Basis anhalten

Neu in Version C#SDK-v1.0.9.

1/**
2* @brief Mobile Basis anhalten
3* @return Fehlercode
4*/
5int TractorStop();

13.59. Mobile Basis auf Nullpunkt fahren (Referenzfahrt)

Neu in Version C#SDK-v1.0.9.

1/**
2* @brief Mobile Basis auf Nullpunkt fahren (Referenzfahrt)
3* @return Fehlercode
4*/
5int TractorHoming();

13.60. Linearbewegung der mobilen Basis

Neu in Version C#SDK-v1.0.9.

1/**
2* @brief Linearbewegung der mobilen Basis
3* @param distance Lineare Bewegungsdistanz (mm)
4* @param vel Geschwindigkeitsprozentsatz für Linearbewegung (0-100)
5* @return Fehlercode
6*/
7int TractorMoveL(double distance, double vel);

13.61. Kreisbogenbewegung der mobilen Basis

Neu in Version C#SDK-v1.0.9.

1/**
2* @brief Kreisbogenbewegung der mobilen Basis
3* @param radius Radius der Kreisbogenbewegung (mm)
4* @param angle Winkel der Kreisbogenbewegung (°)
5* @param vel Geschwindigkeitsprozentsatz für Linearbewegung (0-100)
6* @return Fehlercode
7*/
8int TractorMoveC(double radius, double angle, double vel);

13.62. Codebeispiel

 1private void button6_Click(object sender, EventArgs e)
 2{
 3    int rtn;
 4    robot.ExtDevSetUDPComParam("192.168.58.2", 2021, 2, 50, 5, 50, 1, 50, 10,1);
 5    robot.ExtDevLoadUDPDriver();
 6    rtn = robot.ExtAxisServoOn(1, 1);
 7    rtn = robot.ExtAxisServoOn(2, 1);
 8    Thread.Sleep(2000);
 9    robot.ExtAxisSetHoming(1, 0, 10, 2);
10    Thread.Sleep(2000);
11    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
12    Thread.Sleep(4000);
13    robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280f, 16384, 200, 0, 0, 0);
14    robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280f, 16384, 200, 0, 0, 0);
15    robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0);
16    robot.TractorEnable(false);
17    Thread.Sleep(2000);
18    robot.TractorEnable(true);
19    Thread.Sleep(2000);
20    robot.TractorHoming();
21    Thread.Sleep(2000);
22    robot.TractorMoveL(100, 2);
23    Thread.Sleep(5000);
24    robot.TractorStop();
25    robot.TractorMoveL(-100, 20);
26    Thread.Sleep(5000);
27    robot.TractorMoveC(300, 90, 20);
28    Thread.Sleep(10000);
29    robot.TractorMoveC(300, -90, 20);
30    Thread.Sleep(1000);
31    robot.TractorStop();
32}

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

Neu in Version C#SDK-V1.1.7: Web-3.8.5

1/**
2* @brief Strategie für die Synchronbewegung von Erweiterungsachse und Roboter einstellen
3* @param strategy Strategie; 0-Roboter ist führend; 1-Erweiterungsachse und Roboter synchron
4* @return Fehlercode
5*/
6int SetExAxisRobotPlan(int strategy)

13.64. Codebeispiel für das Einstellen der Synchronbewegungsstrategie von Erweiterungsachse und Roboter

Neu in Version C#SDK-V1.1.7: Web-3.8.5

 1private void button94_Click(object sender, EventArgs e)
 2{
 3    JointPos joint_pos1 = new JointPos(-22.016, -49.217, 124.714, -161.100, -85.108, -0.333);
 4    JointPos joint_pos2 = new JointPos(-21.083, -46.613, 110.079, -147.796, -80.757, -0.330);
 5    JointPos joint_pos3 = new JointPos(-25.572, -60.090, 135.397, -163.889, -82.489, -0.345);
 6    DescPose desc_pos1 = new DescPose(2.637, -0.001, 30.673, 178.786, -4.134, 68.326);
 7    DescPose desc_pos2 = new DescPose(213.812, -1.440, 47.311, 177.410, 0.166, 68.946);
 8    DescPose desc_pos3 = new DescPose(444.342, -12.723, 82.470, -177.701, -1.325, 65.151);
 9    ExaxisPos epos1 = new ExaxisPos(0.001, 0.000, 0.000, 0.000);
10    ExaxisPos epos2 = new ExaxisPos(299.977, 0.000, 0.000, 0.000);
11    ExaxisPos epos3 = new ExaxisPos(399.969, 0.000, 0.000, 0.000);
12    DescPose offset_pos = new DescPose(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
13    int rtn = robot.SetExAxisRobotPlan(0);
14    Console.WriteLine($"SetExAxisRobotPlan rtn is {rtn}");
15    Thread.Sleep(1000);
16    rtn = robot.ExtAxisSyncMoveL(joint_pos1, desc_pos1, 1, 0, 100, 100, 100, -1, epos1, 0, offset_pos);
17    Console.WriteLine($"ExtAxisSyncMoveL 1 rtn is {rtn}");
18
19    rtn = robot.ExtAxisSyncMoveL(joint_pos2, desc_pos2, 1, 0, 100, 100, 100, -1, epos2, 0, offset_pos);
20    Console.WriteLine($"ExtAxisSyncMoveL 2 rtn is {rtn}");
21    rtn = robot.ExtAxisSyncMoveL(joint_pos3, desc_pos3, 1, 0, 100, 100, 100, -1, epos3, 0, offset_pos);
22    Console.WriteLine($"ExtAxisSyncMoveL 3 rtn is {rtn}");
23    Thread.Sleep(8000);
24}

13.65. Einstellung der Positionierungsabschlusszeit für UDP-Erweiterungsachsen

1/**
2* @brief Einstellung der Positionierungsabschlusszeit für UDP-Erweiterungsachsen
3* @param [in] time Positionierungsabschlusszeit [ms]
4* @return Fehlercode
5*/
6public int SetExAxisCmdDoneTime(double time)