13. Erweiterungsachsen
13.1. Parameter für 485-Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt die Parameter für eine 485-Erweiterungsachse ein
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 Encoderauflösung
8* @param [in] axisMechTransRatio Mechanisches Übersetzungsverhältnis
9* @return Fehlercode
10*/
11errno_t AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);
13.2. Konfigurationsparameter der 485-Erweiterungsachse abrufen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Gibt die Konfigurationsparameter einer 485-Erweiterungsachse zurück
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 Encoderauflösung
8* @param [out] axisMechTransRatio Mechanisches Übersetzungsverhältnis
9* @return Fehlercode
10*/
11errno_t AuxServoGetParam(int servoId, int* servoCompany, int* servoModel, int* servoSoftVersion, int* servoResolution, double* axisMechTransRatio);
13.3. Aktivierung/Deaktivierung der 485-Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt die Aktivierung/Deaktivierung der 485-Erweiterungsachse ein
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*/
7errno_t AuxServoEnable(int servoId, int status);
13.4. Steuerungsmodus der 485-Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt den Steuerungsmodus der 485-Erweiterungsachse ein
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*/
7errno_t AuxServoSetControlMode(int servoId, int mode);
13.5. Zielposition der 485-Erweiterungsachse einstellen (Positionsmodus)
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt die Zielposition der 485-Erweiterungsachse ein (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*/
8errno_t AuxServoSetTargetPos(int servoId, double pos, double speed);
13.6. Zieldrehmoment der 485-Erweiterungsachse einstellen (Drehmomentmodus) - noch nicht freigegeben
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt das Zieldrehmoment der 485-Erweiterungsachse ein (Drehmomentmodus)
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] torque Zieldrehmoment, Nm
5* @return Fehlercode
6*/
7errno_t AuxServoSetTargetTorque(int servoId, double torque);
13.7. Referenzpunktfahrt der 485-Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt die Referenzpunktfahrt der 485-Erweiterungsachse ein
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @param [in] mode Referenzpunktfahrt-Modus, 0-aktuelle Position als Nullpunkt; 1-Endlagenschalter als Nullpunkt
5* @param [in] searchVel Suchgeschwindigkeit, mm/s oder °/s
6* @param [in] latchVel Einrastgeschwindigkeit, mm/s oder °/s
7* @return Fehlercode
8*/
9errno_t AuxServoHoming(int servoId, int mode, double searchVel, double latchVel);
13.8. Fehlerinformationen der 485-Erweiterungsachse löschen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Löscht Fehlerinformationen der 485-Erweiterungsachse
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @return Fehlercode
5*/
6errno_t AuxServoClearError(int servoId);
13.9. Servostatus der 485-Erweiterungsachse abrufen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Gibt den Servostatus der 485-Erweiterungsachse zurück
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 [Dezimalzahl in Binär, bit0-bit5: Servo aktiviert - Servo läuft - positive Endlage ausgelöst - negative Endlage ausgelöst - Positionierung abgeschlossen - Referenzpunktfahrt abgeschlossen]
6* @param [out] servoPos Aktuelle Position des Servos mm oder °
7* @param [out] servoSpeed Aktuelle Geschwindigkeit des Servos mm/s oder °/s
8* @param [out] servoTorque Aktuelles Drehmoment des Servos Nm
9* @return Fehlercode
10*/
11errno_t AuxServoGetStatus(int servoId, int* servoErrCode, int* servoState, double* servoPos, double* servoSpeed, double* servoTorque);
13.10. Zielgeschwindigkeit der 485-Erweiterungsachse einstellen (Geschwindigkeitsmodus)
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt die Zielgeschwindigkeit der 485-Erweiterungsachse ein (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*/
7errno_t AuxServoSetTargetSpeed(int servoId, double speed);
13.11. Achsnummer der 485-Erweiterungsachse in der Statusrückmeldung einstellen
Neu in Version C++SDK-v2.1.3.0.
1/**
2* @brief Stellt die Achsnummer der 485-Erweiterungsachse in der Statusrückmeldung ein
3* @param [in] servoId Servoantriebs-ID, Bereich [1-15], entspricht der Slave-ID
4* @return Fehlercode
5*/
6errno_t AuxServosetStatusID(int servoId);
13.12. Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Stellt die Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse ein
3* @param [in] acc Bewegungsbeschleunigung der 485-Erweiterungsachse
4* @param [in] dec Bewegungsverzögerung der 485-Erweiterungsachse
5* @return Fehlercode
6*/
7errno_t AuxServoSetAcc(double acc, double dec);
13.13. Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Stellt die Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse ein
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*/
7errno_t AuxServoSetEmergencyStopAcc(double acc, double dec);
13.14. Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse abrufen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Gibt die Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse zurück
3* @param [out] acc Bewegungsbeschleunigung der 485-Erweiterungsachse
4* @param [out] dec Bewegungsverzögerung der 485-Erweiterungsachse
5* @return Fehlercode
6*/
7errno_t AuxServoGetAcc(double& acc, double& dec);
13.15. Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse abrufen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Gibt die Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse zurück
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*/
7errno_t AuxServoGetEmergencyStopAcc(double& acc, double& dec);
13.16. Codebeispiel zur Steuerung einer Erweiterungsachse
Neu in Version C++SDK-v2.1.5.0.
1int Test485Auxservo(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 int retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45);
14 std::cout << "AuxServoSetParam is: " << retval << std::endl;
15 int servoCompany;
16 int servoModel;
17 int servoSoftVersion;
18 int servoResolution;
19 double axisMechTransRatio;
20 retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
21 std::cout << "servoCompany " << servoCompany << "\n"
22 << "servoModel " << servoModel << "\n"
23 << "servoSoftVersion " << servoSoftVersion << "\n"
24 << "servoResolution " << servoResolution << "\n"
25 << "axisMechTransRatio " << axisMechTransRatio << "\n"
26 << std::endl;
27 retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14);
28 std::cout << "AuxServoSetParam is: " << retval << std::endl;
29 retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
30 std::cout << "servoCompany " << servoCompany << "\n"
31 << "servoModel " << servoModel << "\n"
32 << "servoSoftVersion " << servoSoftVersion << "\n"
33 << "servoResolution " << servoResolution << "\n"
34 << "axisMechTransRatio " << axisMechTransRatio << "\n"
35 << std::endl;
36 retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);
37 std::cout << "AuxServoSetParam is: " << retval << std::endl;
38 robot.Sleep(3000);
39 robot.AuxServoSetAcc(3000, 3000);
40 robot.AuxServoSetEmergencyStopAcc(5000, 5000);
41 robot.Sleep(1000);
42 double emagacc = 0, acc = 0;
43 double emagdec = 0, dec = 0;
44 robot.AuxServoGetEmergencyStopAcc(emagacc, emagdec);
45 printf("emergency acc is %f dec is %f \n", emagacc, emagdec);
46 robot.AuxServoGetAcc(acc, dec);
47 printf("acc is %f dec is %f \n", acc, dec);
48 robot.AuxServoSetControlMode(1, 0);
49 robot.Sleep(2000);
50 retval = robot.AuxServoEnable(1, 0);
51 std::cout << "AuxServoEnable disenable " << retval << std::endl;
52 robot.Sleep(1000);
53 int servoerrcode = 0;
54 int servoErrCode;
55 int servoState;
56 double servoPos;
57 double servoSpeed;
58 double servoTorque;
59 retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
60 std::cout << "AuxServoGetStatus servoState " << servoState << std::endl;
61 robot.Sleep(1000);;
62 retval = robot.AuxServoEnable(1, 1);
63 std::cout << "AuxServoEnable enable " << retval << std::endl;
64 robot.Sleep(1000);
65 retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
66 std::cout << "AuxServoGetStatus servoState " << servoState << std::endl;
67 robot.Sleep(1000);
68 retval = robot.AuxServoHoming(1, 1, 5, 1);
69 std::cout << "AuxServoHoming " << retval << std::endl;
70 robot.Sleep(3000);
71 retval = robot.AuxServoSetTargetPos(1, 200, 30);
72 std::cout << "AuxServoSetTargetPos " << retval << std::endl;
73 robot.Sleep(1000);
74 retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
75 std::cout << "AuxServoGetStatus servoSpeed " << servoSpeed << std::endl;
76 robot.Sleep(8000);
77 robot.AuxServoSetControlMode(1, 1);
78 robot.Sleep(2000);
79 robot.AuxServoEnable(1, 0);
80 robot.Sleep(1000);
81 robot.AuxServoEnable(1, 1);
82 robot.Sleep(1000);
83 robot.AuxServoSetTargetSpeed(1, 100, 80);
84 robot.Sleep(5000);
85 robot.AuxServoSetTargetSpeed(1, 0, 80);
86 robot.CloseRPC();
87 return 0;
88}
13.17. UDP-Kommunikationsparameter für Erweiterungsachse konfigurieren
1/**
2* @brief Konfiguriert die UDP-Kommunikationsparameter für die Erweiterungsachse
3* @param [in] ip IP-Adresse der SPS
4* @param [in] port Portnummer
5* @param [in] period Kommunikationszyklus (ms, Standard 2, diesen Parameter nicht ändern)
6* @param [in] lossPkgTime Paketverlust-Erkennungszeit (ms)
7* @param [in] lossPkgNum Anzahl der Paketverluste
8* @param [in] disconnectTime Bestätigungsdauer für Kommunikationsunterbrechung
9* @param [in] reconnectEnable Automatische Wiederverbindung bei Kommunikationsunterbrechung aktivieren 0-deaktivieren 1-aktivieren
10* @param [in] reconnectPeriod Wiederverbindungsintervall (ms)
11* @param [in] reconnectNum Anzahl der Wiederverbindungsversuche
12* @param [in] selfConnect Automatische Verbindung nach Neustart? 0-keine Verbindung; 1-Verbindung herstellen
13* @return Fehlercode
14*/
15errno_t ExtDevSetUDPComParam(std::string ip, int port, int period, int lossPkgTime, int lossPkgNum, int disconnectTime, int reconnectEnable, int reconnectPeriod, int reconnectNum, int selfConnect = 1);
13.18. Abrufen der UDP-Kommunikationsparameterkonfiguration für Erweiterungsachsen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Abrufen der UDP-Kommunikationsparameter für Erweiterungsachsen
3* @param [out] ip PLC-IP-Adresse
4* @param [out] port Portnummer
5* @param [out] period Kommunikationszyklus (ms, Standard ist 2, diesen Parameter nicht ändern)
6* @param [out] lossPkgTime Paketverlust-Erkennungszeit (ms)
7* @param [out] lossPkgNum Anzahl der Paketverluste
8* @param [out] disconnectTime Bestätigungsdauer für Kommunikationsunterbrechung
9* @param [out] reconnectEnable Automatische Wiederverbindung bei Kommunikationsunterbrechung aktivieren 0-deaktiviert 1-aktiviert
10* @param [out] reconnectPeriod Wiederverbindungsintervall (ms)
11* @param [out] reconnectNum Anzahl der Wiederverbindungsversuche
12* @param [out] selfStart Automatische Wiederverbindung nach Neustart des Steuerkastens; 0-keine Wiederverbindung; 1-Wiederverbindung
13* @return Fehlercode
14*/
15errno_t ExtDevGetUDPComParam(std::string& ip, int& port, int& period, int& lossPkgTime, int& lossPkgNum, int& disconnectTime, int& reconnectEnable, int& reconnectPeriod, int& reconnectNum, int& selfConnect);
13.19. UDP-Kommunikation laden
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Lädt die UDP-Kommunikation
3* @return Fehlercode
4*/
5errno_t ExtDevLoadUDPDriver();
13.20. UDP-Kommunikation entladen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Entlädt die UDP-Kommunikation
3* @return Fehlercode
4*/
5errno_t ExtDevUnloadUDPDriver();
13.21. Verbindung nach abnormaler UDP-Kommunikationsunterbrechung wiederherstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt die Verbindung nach einer abnormalen UDP-Kommunikationsunterbrechung wieder her
3* @return Fehlercode
4*/
5errno_t ExtDevUDPClientComReset();
13.22. Kommunikation nach abnormaler UDP-Kommunikationsunterbrechung schließen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Schließt die Kommunikation nach einer abnormalen UDP-Kommunikationsunterbrechung
3* @return Fehlercode
4*/
5errno_t ExtDevUDPClientComClose();
13.23. Parameter für UDP-Erweiterungsachse konfigurieren
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Konfiguriert die Parameter einer UDP-Erweiterungsachse
3* @param [in] axisID Achsnummer
4* @param [in] axisType Erweiterungsachsentyp 0-Translation; 1-Rotation
5* @param [in] axisDirection Richtung der Erweiterungsachse 0-positive Richtung; 1-negative Richtung (Achtung: 0-positiv, 1-negativ? Laut Beispiel 1)
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 des Schweißnahtstartpunkts zur Erweiterungsachse
13* @param [in] axisCompany Antriebshersteller 1-Hechuan; 2-Inovance; 3-Panasonic
14* @param [in] axisModel Antriebsmodell 1-Hechuan-SV-XD3EA040L-E, 2-Hechuan-SV-X2EA150A-A, 1-Inovance-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG
15* @param [in] axisEncType Encodertyp 0-inkremental; 1-absolut
16* @return Fehlercode
17*/
18errno_t 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. UDP-Erweiterungsachsenparameter abrufen
1/**
2* @brief UDP-Erweiterungsachsenparameter abrufen
3* @param [in] axisID Erweiterungsachsennummer [1-4]
4* @param [out] axisType Erweiterungsachsentyp 0-linear; 1-rotierend
5* @param [out] axisDirection Erweiterungsachsenrichtung 0-positive; 1-negative
6* @param [out] axisMax Maximale Position der Erweiterungsachse mm
7* @param [out] axisMin Minimale Position der Erweiterungsachse mm
8* @param [out] axisVel Geschwindigkeit mm/s
9* @param [out] axisAcc Beschleunigung mm/s²
10* @param [out] axisLead Gewindesteigung mm
11* @param [out] encResolution Encoder-Auflösung
12* @param [out] axisOffect Schweißnahtstartpunkt-Erweiterungsachsenversatz
13* @param [out] axisCompany Antriebshersteller 1-Hecuan; 2-Inovance; 3-Panasonic
14* @param [out] axisModel Antriebsmodell 1-Hecuan-SV-XD3EA040L-E, 2-Hecuan-SV-X2EA150A-A, 1-Inovance-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG
15* @param [out] axisEncType Encodertyp 0-inkrementell; 1-absolut
16* @return Fehlercode
17*/
18errno_t ExtAxisGetParamConfig(int axisID, int& axisType, int& axisDirection, double& axisMax, double& axisMin, double& axisVel, double& axisAcc, double& axisLead, int& encResolution, double& axisOffect, int& axisCompany, int& axisModel, int& axisEncType);
13.25. Einbauposition der Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt die Einbauposition der Erweiterungsachse ein
3* @param [in] installType 0-Roboter auf der externen Achse montiert, 1-Roboter außerhalb der externen Achse montiert
4* @return Fehlercode
5*/
6errno_t SetRobotPosToAxis(int installType);
13.26. DH-Parameter des Erweiterungsachsensystems einstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt die DH-Parameter des Erweiterungsachsensystems ein
3* @param [in] axisConfig Konfiguration der externen Achse, 0-Linearführung mit einem Freiheitsgrad, 1-L-förmiger Positionierer mit zwei Freiheitsgraden, 2-drei Freiheitsgrade, 3-vier Freiheitsgrade, 4-Positionierer mit einem Freiheitsgrad
4* @param [in] axisDHd1 DH-Parameter d1 der externen Achse mm
5* @param [in] axisDHd2 DH-Parameter d2 der externen Achse mm
6* @param [in] axisDHd3 DH-Parameter d3 der externen Achse mm
7* @param [in] axisDHd4 DH-Parameter d4 der externen Achse mm
8* @param [in] axisDHa1 DH-Parameter a1 der externen Achse mm
9* @param [in] axisDHa2 DH-Parameter a2 der externen Achse mm
10* @param [in] axisDHa3 DH-Parameter a3 der externen Achse mm
11* @param [in] axisDHa4 DH-Parameter a4 der externen Achse mm
12* @return Fehlercode
13*/
14errno_t SetAxisDHParaConfig(int axisConfig, double axisDHd1, double axisDHd2, double axisDHd3, double axisDHd4, double axisDHa1, double axisDHa2, double axisDHa3, double axisDHa4);
13.27. UDP-Erweiterungsachse aktivieren
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Aktiviert/Deaktiviert die UDP-Erweiterungsachse
3* @param [in] axisID Achsnummer [1-4]
4* @param [in] status 0-deaktivieren; 1-aktivieren
5* @return Fehlercode
6*/
7errno_t ExtAxisServoOn(int axisID, int status);
13.28. Referenzpunktfahrt der UDP-Erweiterungsachse einstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt die Referenzpunktfahrt der UDP-Erweiterungsachse ein
3* @param [in] axisID Achsnummer [1-4]
4* @param [in] mode Referenzpunktfahrt-Modus 0-aktuelle Position als Nullpunkt, 1-negative Endlage als Nullpunkt, 2-positive Endlage als Nullpunkt
5* @param [in] searchVel Suchgeschwindigkeit (mm/s)
6* @param [in] latchVel Einrastgeschwindigkeit (mm/s)
7* @return Fehlercode
8*/
9errno_t ExtAxisSetHoming(int axisID, int mode, double searchVel, double latchVel);
13.29. Tippbetrieb (Jog) der UDP-Erweiterungsachse starten
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Startet den Tippbetrieb (Jog) der UDP-Erweiterungsachse
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*/
10errno_t ExtAxisStartJog(int axisID, int direction, double vel, double acc, double maxDistance);
13.30. Tippbetrieb (Jog) der UDP-Erweiterungsachse stoppen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stoppt den Tippbetrieb (Jog) der UDP-Erweiterungsachse
3* @param [in] axisID Achsnummer [1-4]
4* @return Fehlercode
5*/
6errno_t ExtAxisStopJog(int axisID);
13.31. Codebeispiel für Konfiguration und Tippbetrieb einer UDP-Erweiterungsachse
1int TestUDPAxis(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
14 cout << "ExtDevSetUDPComParam rtn is " << rtn << endl;
15 string ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0; int selfConnect = 0;
16 rtn = robot.ExtDevGetUDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum, selfConnect);
17 string patam = "\nip " + ip + "\nport " + to_string(port) + "\nperiod " + to_string(period) + "\nlossPkgTime " + to_string(lossPkgTime) + "\nlossPkgNum " + to_string(lossPkgNum) + "\ndisConntime " +
18 to_string(disconnectTime) + "\nreconnecable " + to_string(reconnectEnable) + "\nreconnperiod " + to_string(reconnectPeriod) + "\nreconnnun " + to_string(reconnectNum) + "\nselfConnect " + to_string(selfConnect);
19 cout << "ExtDevGetUDPComParam rtn is " << rtn << patam << endl;
20 robot.ExtDevLoadUDPDriver();
21 rtn = robot.SetExAxisCmdDoneTime(5000.0);
22 cout << "SetExAxisCmdDoneTime rtn is " << rtn << endl;
23 rtn = robot.ExtAxisServoOn(1, 1);
24 cout << "ExtAxisServoOn axis id 1 rtn is " << rtn << endl;
25 rtn = robot.ExtAxisServoOn(2, 1);
26 cout << "ExtAxisServoOn axis id 2 rtn is " << rtn << endl;
27 robot.Sleep(2000);
28 robot.ExtAxisSetHoming(1, 0, 10, 2);
29 robot.Sleep(2000);
30 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
31 cout << "ExtAxisSetHoming rtnn is " << rtn << endl;
32 robot.Sleep(4000);
33 rtn = robot.SetRobotPosToAxis(1);
34 cout << "SetRobotPosToAxis rtn is " << rtn << endl;
35 rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
36 cout << "SetAxisDHParaConfig rtn is " << rtn << endl;
37 int axisType = -1;
38 int axisDirection = -1;
39 double axisMax = -1;
40 double axisMin = -1;
41 double axisVel = -1;
42 double axisAcc = -1;
43 double axisLead = -1;
44 int encResolution = -1;
45 double axisOffect = -1;
46 int axisCompany = -1;
47 int axisModel = -1;
48 int axisEncType = -1;
49 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
50 cout << "ExtAxisParamConfig axis 1 rtn is " << rtn << endl;
51 rtn = robot.ExtAxisGetParamConfig(1, axisType, axisDirection, axisMax, axisMin, axisVel, axisAcc, axisLead, encResolution, axisOffect, axisCompany, axisModel, axisEncType);
52 printf("axis id 1 ExtAxisGetParamConfig : axisType %d, axisDirection %d, axisMax %lf, axisMin %lf, axisVel %lf, axisAcc %lf, axisLead%lf, encResolution %d, axisOffect %f, axisCompany %d, axisModel %d, axisEncType %d\n",
53 axisType, axisDirection, axisMax, axisMin, axisVel, axisAcc, axisLead, encResolution, axisOffect, axisCompany, axisModel, axisEncType);
54 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
55 cout << "ExtAxisParamConfig axis 2 rtn is " << rtn << endl;
56 rtn = robot.ExtAxisGetParamConfig(2, axisType, axisDirection, axisMax, axisMin, axisVel, axisAcc, axisLead, encResolution, axisOffect, axisCompany, axisModel, axisEncType);
57 printf("axis id 2 ExtAxisGetParamConfig : axisType %d, axisDirection %d, axisMax %lf, axisMin %lf, axisVel %lf, axisAcc %lf, axisLead%lf, encResolution %d, axisOffect %f, axisCompany %d, axisModel %d, axisEncType %d\n",
58 axisType, axisDirection, axisMax, axisMin, axisVel, axisAcc, axisLead, encResolution, axisOffect, axisCompany, axisModel, axisEncType);
59 robot.Sleep(1000 * 3);
60 robot.ExtAxisStartJog(1, 0, 10, 10, 30);
61 robot.Sleep(1000 * 1);
62 robot.ExtAxisStopJog(1);
63 robot.Sleep(1000 * 3);
64 robot.ExtAxisServoOn(1, 0);
65 robot.Sleep(1000 * 3);
66 robot.ExtAxisStartJog(2, 0, 10, 10, 30);
67 robot.Sleep(1000 * 1);
68 robot.ExtAxisStopJog(2);
69 robot.Sleep(1000 * 3);
70 robot.ExtAxisServoOn(2, 0);
71 robot.Sleep(1000 * 1);
72 robot.ExtDevUnloadUDPDriver();
73 robot.CloseRPC();
74 return 0;
75}
13.32. Referenzpunkte für das Erweiterungsachsen-Koordinatensystem einstellen - Vier-Punkt-Methode
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt Referenzpunkte für das Erweiterungsachsen-Koordinatensystem ein - Vier-Punkt-Methode
3* @param [in] pointNum Punktnummer [1-4]
4* @return Fehlercode
5*/
6errno_t ExtAxisSetRefPoint(int pointNum);
13.33. Erweiterungsachsen-Koordinatensystem berechnen - Vier-Punkt-Methode
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Berechnet das Erweiterungsachsen-Koordinatensystem - Vier-Punkt-Methode
3* @param [out] coord Koordinatenwerte
4* @return Fehlercode
5*/
6errno_t ExtAxisComputeECoordSys(DescPose& coord);
13.34. Referenzpunkte für das Positionierer-Koordinatensystem einstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt Referenzpunkte für das Positionierer-Koordinatensystem ein
3* @param [in] pointNum Punktnummer [1-4]
4* @return Fehlercode
5*/
6errno_t PositionorSetRefPoint(int pointNum);
13.35. Positionierer-Koordinatensystem berechnen - Vier-Punkt-Methode
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Berechnet das Positionierer-Koordinatensystem - Vier-Punkt-Methode
3* @param [out] coord Koordinatenwerte
4* @return Fehlercode
5*/
6errno_t PositionorComputeECoordSys(DescPose& coord);
13.36. Pose des Kalibrierreferenzpunkts im Positionierer-Endkoordinatensystem einstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt die Pose des Kalibrierreferenzpunkts im Positionierer-Endkoordinatensystem ein
3* @param [in] pos Posenwert
4* @return Fehlercode
5*/
6errno_t SetRefPointInExAxisEnd(DescPose pos);
13.37. Erweiterungsachsen-Koordinatensystem anwenden
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Wendet das Erweiterungsachsen-Koordinatensystem an
3* @param [in] applyAxisId Erweiterungsachsennummern als Bitmaske, Bit0-Bit3 entsprechen den Achsnummern 1-4. z.B. Achsen 1 und 3 anwenden: 0b 0000 0101 = 5
4* @param [in] axisCoordNum Nummer des Erweiterungsachsen-Koordinatensystems
5* @param [in] coord Koordinatenwerte
6* @param [in] calibFlag Kalibrierungsflag 0-nein, 1-ja
7* @return Fehlercode
8*/
9errno_t ExtAxisActiveECoordSys(int applyAxisId, int axisCoordNum, DescPose coord, int calibFlag);
13.38. Erweiterungsachsen-Koordinatensystem abrufen
1/**
2* @brief Gibt das Erweiterungsachsen-Koordinatensystem zurück
3* @param [out] coord Erweiterungsachsen-Koordinatensystem
4* @return Fehlercode
5*/
6errno_t ExtAxisGetCoord(DescPose& coord);
13.39. Codebeispiel für die Kalibrierung des Erweiterungsachsen-Koordinatensystems
1int TestUDPAxisCalib(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
14 cout << "ExtDevSetUDPComParam rtn is " << rtn << endl;
15 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;
16 rtn = robot.ExtDevGetUDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum);
17 string patam = "\nip " + ip + "\nport " + to_string(port) + "\nperiod " + to_string(period) + "\nlossPkgTime " + to_string(lossPkgTime) + "\nlossPkgNum " + to_string(lossPkgNum) + "\ndisConntime " + to_string(disconnectTime) + "\nreconnecable " + to_string(reconnectEnable) + "\nreconnperiod " + to_string(reconnectPeriod) + "\nreconnnun " + to_string(reconnectNum);
18 cout << "ExtDevGetUDPComParam rtn is " << rtn << patam << endl;
19 robot.ExtDevLoadUDPDriver();
20 rtn = robot.ExtAxisServoOn(1, 1);
21 cout << "ExtAxisServoOn axis id 1 rtn is " << rtn << endl;
22 rtn = robot.ExtAxisServoOn(2, 1);
23 cout << "ExtAxisServoOn axis id 2 rtn is " << rtn << endl;
24 robot.Sleep(2000);
25 robot.ExtAxisSetHoming(1, 0, 10, 2);
26 robot.Sleep(2000);
27 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
28 cout << "ExtAxisSetHoming rtnn is " << rtn << endl;
29 robot.Sleep(4000);
30 rtn = robot.SetRobotPosToAxis(1);
31 cout << "SetRobotPosToAxis rtn is " << rtn << endl;
32 rtn = robot.SetAxisDHParaConfig(1, 128.5, 206.4, 0, 0, 0, 0, 0, 0);
33 cout << "SetAxisDHParaConfig rtn is " << rtn << endl;
34 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
35 cout << "ExtAxisParamConfig axis 1 rtn is " << rtn << endl;
36 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
37 cout << "ExtAxisParamConfig axis 1 rtn is " << rtn << endl;
38 DescPose toolCoord(0, 0, 210, 0, 0, 0);
39 robot.SetToolCoord(1, &toolCoord, 0, 0, 1, 0);
40 JointPos jSafe(115.193, -96.149, 92.489, -87.068, -89.15, -83.488);
41 JointPos j1(117.559, -92.624, 100.329, -96.909, -94.057, -83.488);
42 JointPos j2(112.239, -90.096, 99.282, -95.909, -89.824, -83.488);
43 JointPos j3(110.839, -83.473, 93.166, -89.22, -90.499, -83.487);
44 JointPos j4(107.935, -83.572, 95.424, -92.873, -87.933, -83.488);
45 DescPose descSafe = {};
46 DescPose desc1 = {};
47 DescPose desc2 = {};
48 DescPose desc3 = {};
49 DescPose desc4 = {};
50 ExaxisPos exaxisPos = { 0, 0, 0, 0 };
51 DescPose offdese = { 0, 0, 0, 0, 0, 0 };
52 robot.GetForwardKin(&jSafe, &descSafe);
53 robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
54 robot.Sleep(2000);
55 robot.GetForwardKin(&j1, &desc1);
56 robot.MoveJ(&j1, &desc1, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
57 robot.Sleep(2000);
58 DescPose actualTCPPos = {};
59 robot.GetActualTCPPose(0, &actualTCPPos);
60 robot.SetRefPointInExAxisEnd(actualTCPPos);
61 rtn = robot.PositionorSetRefPoint(1);
62 cout << "PositionorSetRefPoint 1 rtn is " << rtn << endl;
63 robot.Sleep(2000);
64 robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
65 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
66 robot.Sleep(1000);
67 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
68 robot.Sleep(1000);
69 robot.GetForwardKin(&j2, &desc2);
70 rtn = robot.MoveJ(&j2, &desc2, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
71 rtn = robot.PositionorSetRefPoint(2);
72 cout << "PositionorSetRefPoint 2 rtn is " << rtn << endl;
73 robot.Sleep(2000);
74 robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
75 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
76 robot.Sleep(1000);
77 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
78 robot.Sleep(1000);
79 robot.GetForwardKin(&j3, &desc3);
80 robot.MoveJ(&j3, &desc3, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
81 rtn = robot.PositionorSetRefPoint(3);
82 cout << "PositionorSetRefPoint 3 rtn is " << rtn << endl;
83 robot.Sleep(2000);
84 robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
85 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
86 robot.Sleep(1000);
87 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
88 robot.Sleep(1000);
89 robot.GetForwardKin(&j4, &desc4);
90 robot.MoveJ(&j4, &desc4, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
91 rtn = robot.PositionorSetRefPoint(4);
92 cout << "PositionorSetRefPoint 4 rtn is " << rtn << endl;
93 robot.Sleep(2000);
94 DescPose axisCoord = {};
95 robot.PositionorComputeECoordSys(axisCoord);
96 robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
97 printf("PositionorComputeECoordSys rtn is %f %f %f %f %f %f\n", axisCoord.tran.x, axisCoord.tran.y, axisCoord.tran.z, axisCoord.rpy.rx, axisCoord.rpy.ry, axisCoord.rpy.rz);
98 rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
99 cout << "ExtAxisActiveECoordSys rtn is " << rtn << endl;
100 DescPose getCoord(0, 0, 0, 0, 0, 0);
101 rtn = robot.ExtAxisGetCoord(getCoord);
102 printf("ExtAxisGetCoord rtn is %f %f %f %f %f %f\n", getCoord.tran.x, getCoord.tran.y, getCoord.tran.z, getCoord.rpy.rx, getCoord.rpy.ry, getCoord.rpy.rz);
103 robot.CloseRPC();
104 return 0;
105}
13.40. UDP-Erweiterungsachsen-Bewegung
Geändert in Version C++SDK-v2.2.4.0.
1/**
2* @brief Bewegung der UDP-Erweiterungsachse
3* @param [in] pos Zielposition
4* @param [in] ovl Geschwindigkeitsprozentsatz
5* @param [in] blend Glättungsparameter (mm oder ms); -1: auf Bewegungsabschluss warten (blockierend)
6* @return Fehlercode
7*/
8errno_t ExtAxisMove(ExaxisPos pos, double ovl, double blend = -1);
13.41. Codebeispiel für UDP-Erweiterungsachsen-Bewegung
1int TestUDPAxisCalib(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 ExaxisPos axisPos;
13 axisPos.ePos[0] = 20;
14 axisPos.ePos[1] = 0;
15 axisPos.ePos[2] = 0;
16 axisPos.ePos[3] = 0;
17 robot.ExtAxisMove(axisPos, 50);
18 robot.CloseRPC();
19 return 0;
20}
13.42. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung
3* @param [in] joint_pos Ziel-Gelenkposition, Einheit deg
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], vorerst nicht verfügbar
9* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100]
10* @param [in] epos Erweiterachsenposition, Einheit mm
11* @param [in] blendT [-1.0]-Bewegung abschließen (blockierend), [0~500.0]-Glättungszeit (nicht blockierend), Einheit 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*/
16errno_t ExtAxisSyncMoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, byte offset_flag, DescPose offset_pos);
13.43. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung (automatische Vorwärtskinematik)
1/**
2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung (automatische Vorwärtskinematik)
3* @param [in] joint_pos Ziel-Gelenkposition, Einheit deg
4* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14]
5* @param [in] user Werkstückkoordinatennummer, Bereich [0~14]
6* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100]
7* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100], vorerst nicht verfügbar
8* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100]
9* @param [in] epos Erweiterachsenposition, Einheit mm
10* @param [in] blendT [-1.0]-Bewegung abschließen (blockierend), [0~500.0]-Glättungszeit (nicht blockierend), Einheit ms
11* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem
12* @param [in] offset_pos Posenversatz
13* @return Fehlercode
14*/
15errno_t ExtAxisSyncMoveJ(JointPos joint_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, uint8_t offset_flag, DescPose offset_pos);
13.44. Codebeispiel für synchronisierte Gelenkbewegung
1int testSyncMoveJ()
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13
14 //1. Kalibrieren und Anwenden des Roboter-Werkzeugkoordinatensystems. Sie können die Vier-Punkt- oder Sechs-Punkt-Methode verwenden. Die relevanten Schnittstellen sind:
15 // int SetToolPoint(int point_num); // Werkzeug-Referenzpunkt einstellen - Sechs-Punkt-Methode
16 // int ComputeTool(ref DescPose tcp_pose); // Werkzeugkoordinatensystem berechnen
17 // int SetTcp4RefPoint(int point_num); // Werkzeug-Referenzpunkt einstellen - Vier-Punkt-Methode
18 // int ComputeTcp4(ref DescPose tcp_pose); // Werkzeugkoordinatensystem berechnen - Vier-Punkt-Methode
19 // int SetToolCoord(int id, DescPose coord, int type, int install); // Werkzeugkoordinatensystem einstellen und anwenden
20 // int SetToolList(int id, DescPose coord, int type, int install); // Werkzeugkoordinatensystem in Liste einstellen und anwenden
21
22 //2. UDP-Kommunikationsparameter einstellen und UDP-Kommunikation laden
23 robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
24 robot.ExtDevLoadUDPDriver();
25
26 //3. Parameter für Erweiterungsachsen einstellen, einschließlich Typ, Antriebsparameter, DH-Parameter
27 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); // Einachs-Positionierer und DH-Parameter
28 robot.SetRobotPosToAxis(1); // Einbauposition der Erweiterungsachse
29 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.
30
31 //4. Ausgewählte Achse aktivieren und Referenzfahrt durchführen
32 robot.ExtAxisServoOn(1, 0);
33 robot.ExtAxisSetHoming(1, 0, 20, 3);
34
35 //5. Kalibrierung und Anwendung des Erweiterungsachsen-Koordinatensystems
36 DescPose pos = {/* Geben Sie hier Ihre Kalibrierungspunktkoordinaten ein */ };
37 robot.SetRefPointInExAxisEnd(pos);
38 robot.PositionorSetRefPoint(1); /* Sie müssen diese Schnittstelle 4 Mal mit verschiedenen Punkten aufrufen, um die Achse zu kalibrieren */
39 DescPose coord = {};
40 robot.PositionorComputeECoordSys(coord); // Kalibrierungsergebnis berechnen
41 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); // Kalibrierungsergebnis auf das Erweiterungsachsen-Koordinatensystem anwenden
42
43 //6. Werkstückkoordinatensystem auf der Erweiterungsachse kalibrieren. Sie benötigen folgende Schnittstellen:
44 //int SetWObjCoordPoint(int point_num);
45 //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
46 //int SetWObjCoord(int id, DescPose coord);
47 //int SetWObjList(int id, DescPose coord);
48
49 //7. Startpunkt der synchronen Gelenkbewegung erfassen
50 DescPose startdescPose = {/* Geben Sie hier Ihre Koordinaten ein */ };
51 JointPos startjointPos = {/* Geben Sie hier Ihre Koordinaten ein */ };
52 ExaxisPos startexaxisPos = {/* Geben Sie hier Ihre Startkoordinaten für die Erweiterungsachse ein */ };
53
54 //8. Endpunkt der synchronen Gelenkbewegung erfassen
55 DescPose enddescPose = {/* Geben Sie hier Ihre Koordinaten ein */ };
56 JointPos endjointPos = {/* Geben Sie hier Ihre Koordinaten ein */ };
57 ExaxisPos endexaxisPos = {/* Geben Sie hier Ihre Endkoordinaten für die Erweiterungsachse ein */ };
58
59 //9. Synchronbewegungsprogramm erstellen
60 // Zum Startpunkt bewegen, angenommen Werkzeug- und Werkstückkoordinatensystem sind beide 1
61 robot.ExtAxisMove(startexaxisPos, 20);
62 DescPose offdese = { 0, 0, 0, 0, 0, 0 };
63 robot.MoveJ(&startjointPos, &startdescPose, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
64
65 // Synchronbewegung starten
66 robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
67
68 // Zum Startpunkt bewegen (Überladung ohne Zielpose)
69 robot.MoveJ(&startjointPos, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
70
71 // Synchronbewegung starten (Überladung ohne Zielpose)
72 robot.ExtAxisSyncMoveJ(endjointPos, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
73
74 robot.CloseRPC();
75}
13.45. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung
3* @param [in] joint_pos Ziel-Gelenkposition, Einheit deg
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], vorerst nicht verfügbar
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), Einheit mm
11* @param [in] epos Erweiterachsenposition, Einheit 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*/
16errno_t 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.46. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung (automatische inverse Kinematik)
1/**
2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung (automatische inverse Kinematik)
3* @param [in] desc_pos Ziel-Kartesische Pose
4* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14]
5* @param [in] user Werkstückkoordinatennummer, Bereich [0~14]
6* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100]
7* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100], vorerst nicht verfügbar
8* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100]
9* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend), Einheit mm
10* @param [in] epos Erweiterachsenposition, Einheit mm
11* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem
12* @param [in] offset_pos Posenversatz
13* @param [in] config Konfiguration des inversen Gelenkraums, [-1]-basierend auf aktueller Gelenkposition berechnen, [0~7]-basierend auf spezifischer Konfiguration lösen
14* @return Fehlercode
15*/
16errno_t ExtAxisSyncMoveL(DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos epos, uint8_t offset_flag, DescPose offset_pos, int config = -1);
13.47. Codebeispiel für synchronisierte Linearbewegung
1int testSyncMoveL()
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13
14 //1. Kalibrieren und Anwenden des Roboter-Werkzeugkoordinatensystems. Sie können die Vier-Punkt- oder Sechs-Punkt-Methode verwenden. Die relevanten Schnittstellen sind:
15 // int SetToolPoint(int point_num); // Werkzeug-Referenzpunkt einstellen - Sechs-Punkt-Methode
16 // int ComputeTool(ref DescPose tcp_pose); // Werkzeugkoordinatensystem berechnen
17 // int SetTcp4RefPoint(int point_num); // Werkzeug-Referenzpunkt einstellen - Vier-Punkt-Methode
18 // int ComputeTcp4(ref DescPose tcp_pose); // Werkzeugkoordinatensystem berechnen - Vier-Punkt-Methode
19 // int SetToolCoord(int id, DescPose coord, int type, int install); // Werkzeugkoordinatensystem einstellen und anwenden
20 // int SetToolList(int id, DescPose coord, int type, int install); // Werkzeugkoordinatensystem in Liste einstellen und anwenden
21
22 //2. UDP-Kommunikationsparameter einstellen und UDP-Kommunikation laden
23 robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
24 robot.ExtDevLoadUDPDriver();
25
26 //3. Parameter für Erweiterungsachsen einstellen, einschließlich Typ, Antriebsparameter, DH-Parameter
27 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); // Einachs-Positionierer und DH-Parameter
28 robot.SetRobotPosToAxis(1); // Einbauposition der Erweiterungsachse
29 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.
30
31 //4. Ausgewählte Achse aktivieren und Referenzfahrt durchführen
32 robot.ExtAxisServoOn(1, 0);
33 robot.ExtAxisSetHoming(1, 0, 20, 3);
34
35 //5. Kalibrierung und Anwendung des Erweiterungsachsen-Koordinatensystems
36 DescPose pos = {/* Geben Sie hier Ihre Kalibrierungspunktkoordinaten ein */ };
37 robot.SetRefPointInExAxisEnd(pos);
38 robot.PositionorSetRefPoint(1); /* Sie müssen diese Schnittstelle 4 Mal mit verschiedenen Punkten aufrufen, um die Achse zu kalibrieren */
39 DescPose coord = {};
40 robot.PositionorComputeECoordSys(coord); // Kalibrierungsergebnis berechnen
41 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); // Kalibrierungsergebnis auf das Erweiterungsachsen-Koordinatensystem anwenden
42
43 //6. Werkstückkoordinatensystem auf der Erweiterungsachse kalibrieren. Sie benötigen folgende Schnittstellen:
44 //int SetWObjCoordPoint(int point_num);
45 //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
46 //int SetWObjCoord(int id, DescPose coord);
47 //int SetWObjList(int id, DescPose coord);
48
49 //7. Startpunkt der synchronen Linearbewegung erfassen
50 DescPose startdescPose = {/* Geben Sie hier Ihre Koordinaten ein */ };
51 JointPos startjointPos = {/* Geben Sie hier Ihre Koordinaten ein */ };
52 ExaxisPos startexaxisPos = {/* Geben Sie hier Ihre Startkoordinaten für die Erweiterungsachse ein */ };
53
54 //8. Endpunkt der synchronen Linearbewegung erfassen
55 DescPose enddescPose = {/* Geben Sie hier Ihre Koordinaten ein */ };
56 JointPos endjointPos = {/* Geben Sie hier Ihre Koordinaten ein */ };
57 ExaxisPos endexaxisPos = {/* Geben Sie hier Ihre Endkoordinaten für die Erweiterungsachse ein */ };
58
59 //9. Synchronbewegungsprogramm erstellen
60 // Zum Startpunkt bewegen, angenommen Werkzeug- und Werkstückkoordinatensystem sind beide 1
61 robot.ExtAxisMove(startexaxisPos, 20);
62 DescPose offdese = { 0, 0, 0, 0, 0, 0 };
63 robot.MoveJ(&startjointPos, &startdescPose, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
64
65 // Synchronbewegung starten (mit Gelenkposition)
66 robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
67
68 // Zum Startpunkt bewegen (Überladung ohne Zielpose)
69 robot.MoveJ(&startjointPos, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
70
71 // Synchronbewegung starten (Überladung ohne Gelenkposition)
72 robot.ExtAxisSyncMoveL(enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
73
74 robot.CloseRPC();
75}
13.48. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung
3* @param [in] joint_pos_p Gelenkposition des Zwischenpunkts, Einheit deg
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], vorerst nicht verfügbar
9* @param [in] epos_p Erweiterachsenposition am Zwischenpunkt, Einheit 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, Einheit deg
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], vorerst nicht verfügbar
18* @param [in] epos_t Erweiterachsenposition am Zielpunkt, Einheit 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), Einheit mm
23* @return Fehlercode
24*/
25errno_t 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.49. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung (automatische inverse Kinematik)
1/**
2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung (automatische inverse Kinematik)
3* @param [in] desc_pos_p Kartesische Pose des Zwischenpunkts
4* @param [in] ptool Werkzeugkoordinatennummer für Zwischenpunkt, Bereich [0~14]
5* @param [in] puser Werkstückkoordinatennummer für Zwischenpunkt, Bereich [0~14]
6* @param [in] pvel Geschwindigkeitsprozentsatz für Zwischenpunkt, Bereich [0~100]
7* @param [in] pacc Beschleunigungsprozentsatz für Zwischenpunkt, Bereich [0~100], vorerst nicht verfügbar
8* @param [in] epos_p Erweiterachsenposition am Zwischenpunkt, Einheit mm
9* @param [in] poffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem für Zwischenpunkt
10* @param [in] offset_pos_p Posenversatz für Zwischenpunkt
11* @param [in] desc_pos_t Kartesische Pose des Zielpunkts
12* @param [in] ttool Werkzeugkoordinatennummer für Zielpunkt, Bereich [0~14]
13* @param [in] tuser Werkstückkoordinatennummer für Zielpunkt, Bereich [0~14]
14* @param [in] tvel Geschwindigkeitsprozentsatz für Zielpunkt, Bereich [0~100]
15* @param [in] tacc Beschleunigungsprozentsatz für Zielpunkt, Bereich [0~100], vorerst nicht verfügbar
16* @param [in] epos_t Erweiterachsenposition am Zielpunkt, Einheit mm
17* @param [in] toffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem für Zielpunkt
18* @param [in] offset_pos_t Posenversatz für Zielpunkt
19* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100]
20* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend), Einheit mm
21* @param [in] config Konfiguration des inversen Gelenkraums, [-1]-basierend auf aktueller Gelenkposition berechnen, [0~7]-basierend auf spezifischer Konfiguration lösen
22* @return Fehlercode
23*/
24errno_t ExtAxisSyncMoveC(DescPose desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos epos_p, uint8_t poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, float tvel, float tacc, ExaxisPos epos_t, uint8_t toffset_flag, DescPose offset_pos_t, float ovl, float blendR, int config = -1);
13.50. Codebeispiel für synchronisierte Kreisbogenbewegung
1int testSyncMoveC()
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13
14 //1. Kalibrieren und Anwenden des Roboter-Werkzeugkoordinatensystems. Sie können die Vier-Punkt- oder Sechs-Punkt-Methode verwenden. Die relevanten Schnittstellen sind:
15 // int SetToolPoint(int point_num); // Werkzeug-Referenzpunkt einstellen - Sechs-Punkt-Methode
16 // int ComputeTool(ref DescPose tcp_pose); // Werkzeugkoordinatensystem berechnen
17 // int SetTcp4RefPoint(int point_num); // Werkzeug-Referenzpunkt einstellen - Vier-Punkt-Methode
18 // int ComputeTcp4(ref DescPose tcp_pose); // Werkzeugkoordinatensystem berechnen - Vier-Punkt-Methode
19 // int SetToolCoord(int id, DescPose coord, int type, int install); // Werkzeugkoordinatensystem einstellen und anwenden
20 // int SetToolList(int id, DescPose coord, int type, int install); // Werkzeugkoordinatensystem in Liste einstellen und anwenden
21
22 //2. UDP-Kommunikationsparameter einstellen und UDP-Kommunikation laden
23 robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
24 robot.ExtDevLoadUDPDriver();
25
26 //3. Parameter für Erweiterungsachsen einstellen, einschließlich Typ, Antriebsparameter, DH-Parameter
27 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); // Einachs-Positionierer und DH-Parameter
28 robot.SetRobotPosToAxis(1); // Einbauposition der Erweiterungsachse
29 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.
30
31 //4. Ausgewählte Achse aktivieren und Referenzfahrt durchführen
32 robot.ExtAxisServoOn(1, 0);
33 robot.ExtAxisSetHoming(1, 0, 20, 3);
34
35 //5. Kalibrierung und Anwendung des Erweiterungsachsen-Koordinatensystems
36 DescPose pos = {/* Geben Sie hier Ihre Kalibrierungspunktkoordinaten ein */ };
37 robot.SetRefPointInExAxisEnd(pos);
38 robot.PositionorSetRefPoint(1); /* Sie müssen diese Schnittstelle 4 Mal mit verschiedenen Punkten aufrufen, um die Achse zu kalibrieren */
39 DescPose coord = {};
40 robot.PositionorComputeECoordSys(coord); // Kalibrierungsergebnis berechnen
41 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); // Kalibrierungsergebnis auf das Erweiterungsachsen-Koordinatensystem anwenden
42
43 //6. Werkstückkoordinatensystem auf der Erweiterungsachse kalibrieren. Sie benötigen folgende Schnittstellen:
44 //int SetWObjCoordPoint(int point_num);
45 //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
46 //int SetWObjCoord(int id, DescPose coord);
47 //int SetWObjList(int id, DescPose coord);
48
49 //7. Startpunkt der synchronen Kreisbogenbewegung erfassen
50 DescPose startdescPose = {/* Geben Sie hier Ihre Koordinaten ein */ };
51 JointPos startjointPos = {/* Geben Sie hier Ihre Koordinaten ein */ };
52 ExaxisPos startexaxisPos = {/* Geben Sie hier Ihre Startkoordinaten für die Erweiterungsachse ein */ };
53
54 //8. Endpunkt der synchronen Kreisbogenbewegung erfassen
55 DescPose enddescPose = {/* Geben Sie hier Ihre Koordinaten ein */ };
56 JointPos endjointPos = {/* Geben Sie hier Ihre Koordinaten ein */ };
57 ExaxisPos endexaxisPos = {/* Geben Sie hier Ihre Endkoordinaten für die Erweiterungsachse ein */ };
58
59 //9. Zwischenpunkt der synchronen Kreisbogenbewegung erfassen
60 DescPose middescPose = {/* Geben Sie hier Ihre Koordinaten ein */ };
61 JointPos midjointPos = {/* Geben Sie hier Ihre Koordinaten ein */ };
62 ExaxisPos midexaxisPos = {/* Geben Sie hier die Koordinaten der Erweiterungsachse am Kreisbogen-Zwischenpunkt ein */ };
63
64 //10. Synchronbewegungsprogramm erstellen
65 // Zum Startpunkt bewegen, angenommen Werkzeug- und Werkstückkoordinatensystem sind beide 1
66 robot.ExtAxisMove(startexaxisPos, 20);
67 DescPose offdese = { 0, 0, 0, 0, 0, 0 };
68 robot.MoveJ(&startjointPos, &startdescPose, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
69
70 // Synchronbewegung starten (mit Gelenkpositionen für Zwischen- und Endpunkt)
71 robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese,
72 endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
73
74 // Zum Startpunkt bewegen (Überladung ohne Zielpose)
75 robot.MoveJ(&startjointPos, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
76
77 // Synchronbewegung starten (Überladung ohne Gelenkpositionen)
78 robot.ExtAxisSyncMoveC(middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese,
79 enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
80
81 robot.CloseRPC();
82}
13.51. Erweiterungs-DO setzen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Setzt einen erweiterten digitalen Ausgang (AuxDO)
3* @param [in] DONum DO-Nummer
4* @param [in] bOpen Schalter true-ein; false-aus
5* @param [in] smooth Glättung (ob Befehl geglättet wird)
6* @param [in] block Blockierung (ob auf Abschluss gewartet wird)
7* @return Fehlercode
8*/
9errno_t SetAuxDO(int DONum, bool bOpen, bool smooth, bool block);
13.52. Erweiterungs-AO setzen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Setzt einen erweiterten analogen Ausgang (AuxAO)
3* @param [in] AONum AO-Nummer
4* @param [in] value Analogwert [0-4095]
5* @param [in] block Blockierung (ob auf Abschluss gewartet wird)
6* @return Fehlercode
7*/
8errno_t SetAuxAO(int AONum, double value, bool block);
13.53. Filterzeit für erweiterten digitalen Eingang (AuxDI) einstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt die Filterzeit für einen erweiterten digitalen Eingang (AuxDI) ein
3* @param [in] filterTime Filterzeit (ms)
4* @return Fehlercode
5*/
6errno_t SetAuxDIFilterTime(int filterTime);
13.54. Filterzeit für erweiterten analogen Eingang (AuxAI) einstellen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Stellt die Filterzeit für einen erweiterten analogen Eingang (AuxAI) ein
3* @param [in] filterTime Filterzeit (ms)
4* @return Fehlercode
5*/
6errno_t SetAuxAIFilterTime(int filterTime);
13.55. Auf erweiterten digitalen Eingang (AuxDI) warten
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Wartet auf einen erweiterten digitalen Eingang (AuxDI)
3* @param [in] DINum DI-Nummer
4* @param [in] bOpen Schalter 0-aus; 1-ein
5* @param [in] time Maximale Wartezeit (ms)
6* @param [in] errorAlarm Verhalten bei Zeitüberschreitung (false: Fehler, Bewegung stoppen; true: Warnung, Bewegung fortsetzen)
7* @return Fehlercode
8*/
9errno_t WaitAuxDI(int DINum, bool bOpen, int time, bool errorAlarm);
13.56. Auf erweiterten analogen Eingang (AuxAI) warten
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Wartet auf einen erweiterten analogen Eingang (AuxAI)
3* @param [in] AINum AI-Nummer
4* @param [in] sign 0-größer als; 1-kleiner als
5* @param [in] value AI-Wert
6* @param [in] time Maximale Wartezeit (ms)
7* @param [in] errorAlarm Verhalten bei Zeitüberschreitung (false: Fehler, Bewegung stoppen; true: Warnung, Bewegung fortsetzen)
8* @return Fehlercode
9*/
10errno_t WaitAuxAI(int AINum, int sign, int value, int time, bool errorAlarm);
13.57. Wert eines erweiterten digitalen Eingangs (AuxDI) abrufen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Gibt den Wert eines erweiterten digitalen Eingangs (AuxDI) zurück
3* @param [in] DINum DI-Nummer
4* @param [in] isNoBlock Blockierung (false: blockierend; true: nicht blockierend)
5* @param [out] isOpen 0-aus; 1-ein
6* @return Fehlercode
7*/
8errno_t GetAuxDI(int DINum, bool isNoBlock, bool& isOpen);
13.58. Wert eines erweiterten analogen Eingangs (AuxAI) abrufen
Neu in Version C++SDK-v2.1.4.0.
1/**
2* @brief Gibt den Wert eines erweiterten analogen Eingangs (AuxAI) zurück
3* @param [in] AINum AI-Nummer
4* @param [in] isNoBlock Blockierung (false: blockierend; true: nicht blockierend)
5* @param [out] value Eingangswert
6* @return Fehlercode
7*/
8errno_t GetAuxAI(int AINum, bool isNoBlock, int& value);
13.59. Codebeispiel für erweiterte I/Os (AuxIO)
1int TestAuxDOAO(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 for (int i = 0; i < 128; i++)
14 {
15 robot.SetAuxDO(i, true, false, true);
16 Sleep(100);
17 }
18 for (int i = 0; i < 128; i++)
19 {
20 robot.SetAuxDO(i, false, false, true);
21 Sleep(100);
22 }
23 for (int i = 0; i < 409; i++)
24 {
25 robot.SetAuxAO(0, i * 10, true);
26 robot.SetAuxAO(1, 4095 - i * 10, true);
27 robot.SetAuxAO(2, i * 10, true);
28 robot.SetAuxAO(3, 4095 - i * 10, true);
29 Sleep(10);
30 }
31 robot.SetAuxDIFilterTime(10);
32 robot.SetAuxAIFilterTime(0, 10);
33 for (int i = 0; i < 20; i++)
34 {
35 bool curValue = false;
36 int rtn = robot.GetAuxDI(i, false, curValue);
37 cout << "DI" << i << " " << curValue << endl;
38 }
39 int curValue = -1;
40 for (int i = 0; i < 4; i++)
41 {
42 rtn = robot.GetAuxAI(i, true, curValue);
43 }
44 robot.WaitAuxDI(1, false, 1000, false);
45 robot.WaitAuxAI(1, 1, 132, 1000, false);
46 robot.CloseRPC();
47 return 0;
48}
13.60. Fahrbare Einheit aktivieren
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Aktiviert/Deaktiviert die fahrbare Einheit
3* @param enable false-deaktivieren; true-aktivieren
4* @return Fehlercode
5*/
6errno_t TractorEnable(bool enable);
13.61. Referenzpunktfahrt der fahrbaren Einheit
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Führt die Referenzpunktfahrt der fahrbaren Einheit durch
3* @return Fehlercode
4*/
5errno_t TractorHoming();
13.62. Linearbewegung der fahrbaren Einheit
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Linearbewegung der fahrbaren Einheit
3* @param distance Bewegungsstrecke (mm)
4* @param vel Geschwindigkeitsprozentsatz (0-100)
5* @return Fehlercode
6*/
7errno_t TractorMoveL(double distance, double vel);
13.63. Kreisbogenbewegung der fahrbaren Einheit
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Kreisbogenbewegung der fahrbaren Einheit
3* @param radio Radius der Kreisbogenbewegung (mm)
4* @param angle Winkel der Kreisbogenbewegung (°)
5* @param vel Geschwindigkeitsprozentsatz (0-100)
6* @return Fehlercode
7*/
8errno_t TractorMoveC(double radio, double angle, double vel);
13.64. Bewegung der fahrbaren Einheit stoppen
Neu in Version C++SDK-v2.1.5.0.
1/**
2* @brief Stoppt die Bewegung der fahrbaren Einheit
3* @return Fehlercode
4*/
5errno_t TractorStop();
13.65. Codebeispiel für fahrbare Einheit
1int TestTractor(void)
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 robot.ExtDevSetUDPComParam("192.168.58.2", 2021, 2, 50, 5, 50, 1, 50, 10, 1);
14 robot.ExtDevLoadUDPDriver();
15 rtn = robot.ExtAxisServoOn(1, 1);
16 rtn = robot.ExtAxisServoOn(2, 1);
17 robot.Sleep(2000);
18 robot.ExtAxisSetHoming(1, 0, 10, 2);
19 robot.Sleep(2000);
20 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
21 robot.Sleep(4000);
22 robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
23 robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
24 robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0);
25 robot.TractorEnable(false);
26 robot.Sleep(2000);
27 robot.TractorEnable(true);
28 robot.Sleep(2000);
29 robot.TractorHoming();
30 robot.Sleep(2000);
31 robot.TractorMoveL(100, 2);
32 robot.Sleep(5000);
33 robot.TractorStop();
34 robot.TractorMoveL(-100, 20);
35 robot.Sleep(5000);
36 robot.TractorMoveC(300, 90, 20);
37 robot.Sleep(10000);
38 robot.TractorMoveC(300, -90, 20);
39 robot.Sleep(1);
40 robot.CloseRPC();
41 return 0;
42}
13.66. Einstellung der Positionierungsabschlusszeit für UDP-Erweiterungsachsen
1/**
2* @brief Einstellung der Positionierungsabschlusszeit für UDP-Erweiterungsachsen
3* @param [in] time Positionierungsabschlusszeit [ms]
4* @return Fehlercode
5*/
6errno_t SetExAxisCmdDoneTime(double time);