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. Konfiguration der UDP-Kommunikationsparameter für Erweiterungsachsen abrufen

Neu in Version C#SDK-v1.0.7.

 1/**
 2* @brief Konfiguration der UDP-Kommunikationsparameter für Erweiterungsachsen abrufen
 3* @param [out] ip IP-Adresse der SPS
 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 Zeitdauer zur Bestätigung einer Kommunikationsunterbrechung
 9* @param [out] reconnectEnable Automatische Wiederverbindung bei Kommunikationsunterbrechung aktivieren (0-deaktivieren, 1-aktivieren)
10* @param [out] reconnectPeriod Intervall für Wiederverbindungsversuche (ms)
11* @param [out] reconnectNum Anzahl der Wiederverbindungsversuche
12* @return Fehlercode
13*/
14int ExtDevGetUDPComParam(std::string& ip, int& port, int& period, int& lossPkgTime, int& lossPkgNum, int& disconnectTime, int& reconnectEnable, int& reconnectPeriod, int& reconnectNum);

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. 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.25. 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.26. 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.27. 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.28. 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.29. 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.30. Codebeispiel für Konfiguration und Tippbetrieb von UDP-Erweiterungsachsen

 1private void btnJog_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    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    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
31    Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
32    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
33    Console.WriteLine("ExtAxisParamConfig axis 2 rtn is " + rtn);
34
35    Thread.Sleep(3000);
36    robot.ExtAxisStartJog(1, 0, 10, 10, 30);
37    Thread.Sleep(1000);
38    robot.ExtAxisStopJog(1);
39    Thread.Sleep(3000);
40    robot.ExtAxisServoOn(1, 0);
41
42    Thread.Sleep(3000);
43    robot.ExtAxisStartJog(2, 0, 10, 10, 30);
44    Thread.Sleep(1000);
45    robot.ExtAxisStopJog(2);
46    Thread.Sleep(3000);
47    robot.ExtAxisServoOn(2, 0);
48    Thread.Sleep(3000);
49    robot.ExtDevUnloadUDPDriver();
50}

13.31. 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.32. 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.33. 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.34. 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.35. 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.36. 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.37. 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.38. 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.39. 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.40. 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.41. 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.42. 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.43. 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.44. 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.45. 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.46. 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.47. 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.48. 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.49. 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.50. 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.51. 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.52. 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.53. 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.54. 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.55. 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.56. 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.57. Mobile Basis anhalten

Neu in Version C#SDK-v1.0.9.

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

13.58. 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.59. 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.60. 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.61. 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.62. 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.63. 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}