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}