11. Roboterperipherie

11.1. Greifer konfigurieren

1/**
2* @brief Konfiguriert den Greifer.
3* @param [in] config.company Greiferhersteller, 1-Robotiq, 2-Huiling, 3-Tianji, 4-Dahuan, 5-Zhixing.
4* @param [in] config.device Gerätenummer, Robotiq(0-2F-85 Serie), Huiling(0-NK Serie, 1-Z-EFG-100), Tianji(0-TEG-110), Dahuan(0-PGI-140), Zhixing(0-CTPM2F20).
5* @param [in] config.softvesion Softwareversionsnummer, derzeit nicht verwendet, Standard 0.
6* @param [in] config.bus Position des Geräts am Flanschbus, derzeit nicht verwendet, Standard 0.
7* @return Fehlercode.
8*/
9int SetGripperConfig(DeviceConfig config);

11.2. Greiferkonfiguration abrufen

1/**
2* @brief Gibt die Greiferkonfiguration zurück.
3* @param [out] config.company Greiferhersteller.
4* @param [out] config.device Gerätenummer.
5* @param [out] config.softvesion Softwareversionsnummer.
6* @param [out] config.bus Busposition.
7* @return Fehlercode.
8*/
9int GetGripperConfig(DeviceConfig config);

11.3. Greifer aktivieren

1/**
2* @brief Aktiviert/Deaktiviert den Greifer.
3* @param [in] index Greifernummer.
4* @param [in] act 0-Reset, 1-Aktivieren.
5* @return Fehlercode.
6*/
7int ActGripper(int index, int act);

11.4. Greifer steuern

 1/**
 2* @brief Steuert den Greifer.
 3* @param [in] index Greifernummer.
 4* @param [in] pos Positionsprozentsatz, Bereich [0~100].
 5* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100].
 6* @param [in] force Kraftprozentsatz, Bereich [0~100].
 7* @param [in] max_time Maximale Wartezeit, Bereich [0~30000], Einheit ms.
 8* @param [in] block 0-blockierend, 1-nicht blockierend.
 9* @param [in] type Greifertyp, 0-Parallelgreifer; 1-Drehgreifer.
10* @param [in] rotNum Anzahl der Umdrehungen.
11* @param [in] rotVel Rotationsgeschwindigkeitsprozentsatz [0-100].
12* @param [in] rotTorque Rotationskraftprozentsatz [0-100].
13* @return Fehlercode.
14*/
15int MoveGripper(int index, int pos, int vel, int force, int max_time, int block, int type, double rotNum, int rotVel, int rotTorque);

11.5. Greiferbewegungsstatus abrufen

1/**
2* @brief Gibt den Bewegungsstatus des Greifers zurück.
3* @return List[0]: Fehlercode; List[1]: fault 0-kein Fehler, 1-Fehler; List[2]: status 0-Bewegung nicht abgeschlossen, 1-Bewegung abgeschlossen.
4*/
5List<Integer> GetGripperMotionDone();

11.6. Aktivierungsstatus des Greifers abrufen

1/**
2* @brief Gibt den Aktivierungsstatus des Greifers zurück.
3* @return List[0]: Fehlercode; List[1]: fault 0-kein Fehler, 1-Fehler; List[2]: status Bit0~Bit15 entsprechen Greifernummern 0~15, bit=0 für nicht aktiviert, bit=1 für aktiviert.
4*/
5List<Number> GetGripperActivateStatus();

11.7. Greiferposition abrufen

1/**
2* @brief Gibt die Position des Greifers zurück.
3* @return List[0]: Fehlercode; List[1]: fault 0-kein Fehler, 1-Fehler; List[2]: position Positionsprozentsatz, Bereich 0~100%.
4*/
5List<Number> GetGripperCurPosition();

11.8. Greifergeschwindigkeit abrufen

1/**
2* @brief Gibt die Geschwindigkeit des Greifers zurück.
3* @return List[0]: Fehlercode; List[1]: fault 0-kein Fehler, 1-Fehler; List[2]: speed Geschwindigkeitsprozentsatz, Bereich 0~100%.
4*/
5List<Number> GetGripperCurSpeed();

11.9. Greiferstrom abrufen

1/**
2* @brief Gibt den Strom des Greifers zurück.
3* @return List[0]: Fehlercode; List[1]: fault 0-kein Fehler, 1-Fehler; List[2]: current Stromprozentsatz, Bereich 0~100%.
4*/
5List<Number> GetGripperCurCurrent();

11.10. Greiferspannung abrufen

1/**
2* @brief Gibt die Spannung des Greifers zurück.
3* @return List[0]: Fehlercode; List[1]: fault 0-kein Fehler, 1-Fehler; List[2]: voltage Spannung, Einheit 0.1V.
4*/
5List<Number> GetGripperVoltage();

11.11. Greifertemperatur abrufen

1/**
2* @brief Gibt die Temperatur des Greifers zurück.
3* @return List[0]: Fehlercode; List[1]: fault 0-kein Fehler, 1-Fehler; List[2]: temp Temperatur, Einheit °C.
4*/
5List<Number> GetGripperTemp();

11.12. Vorab-Greifpunkt berechnen (Vision)

1/**
2* @brief Berechnet den Vorab-Greifpunkt (Vision).
3* @param [in] desc_pos Kartesische Pose des Greifpunkts.
4* @param [in] zlength Z-Achsen-Versatz.
5* @param [in] zangle Rotationsversatz um die Z-Achse.
6* @param [out] pre_pos Vorab-Greifpunkt.
7* @return Fehlercode.
8*/
9int ComputePrePick(DescPose desc_pos, double zlength, double zangle, DescPose pre_pos);

11.13. Rückzugspunkt berechnen (Vision)

1/**
2* @brief Berechnet den Rückzugspunkt (Vision).
3* @param [in] desc_pos Kartesische Pose des Greifpunkts.
4* @param [in] zlength Z-Achsen-Versatz.
5* @param [in] zangle Rotationsversatz um die Z-Achse.
6* @param [out] post_pos Rückzugspunkt.
7* @return Fehlercode.
8*/
9int ComputePostPick(DescPose desc_pos, double zlength, double zangle, DescPose post_pos);

11.14. Codebeispiel für Roboter-Greiferoperationen

 1public static int TestGripper(Robot robot)
 2{
 3    int company = 4;
 4    int device = 0;
 5    int softversion = 0;
 6    int bus = 2;
 7    int index = 2;
 8    int act = 0;
 9    int max_time = 30000;
10    int block = 0;
11
12    int current_pos = 0;
13    int current = 0;
14    int voltage = 0;
15    int temp = 0;
16    int speed = 0;
17
18    DeviceConfig cnn=new DeviceConfig(company,device,softversion,bus);
19    robot.SetGripperConfig(cnn);
20    robot.GetGripperConfig(cnn);
21
22    robot.ActGripper(index, act);
23    robot.Sleep(1000);
24    act = 1;
25    robot.ActGripper(index, act);
26    robot.Sleep(1000);
27
28    robot.MoveGripper(index, 100, 50, 50, max_time, block, 0, 0, 0, 0);
29    robot.Sleep(1000);
30    robot.MoveGripper(index, 0, 50, 0, max_time, block, 0, 0, 0, 0);
31
32    List<Integer> stat = new ArrayList<>();
33    stat = robot.GetGripperMotionDone();
34
35    List<Number> list = new ArrayList<>();
36    list = robot.GetGripperActivateStatus();
37
38    list = robot.GetGripperCurPosition();
39
40    list = robot.GetGripperCurCurrent();
41
42    list = robot.GetGripperVoltage();
43
44    list = robot.GetGripperTemp();
45
46    list = robot.GetGripperCurSpeed();
47
48    int retval = 0;
49    DescPose prepick_pose = new DescPose();
50    DescPose postpick_pose = new DescPose();
51
52    DescPose p1Desc = new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
53    DescPose p2Desc = new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
54
55    retval = robot.ComputePrePick(p1Desc, 10, 0, prepick_pose);
56
57    retval = robot.ComputePostPick(p2Desc, -10, 0, postpick_pose);
58    return 0;
59}

11.15. Umdrehungen des Drehgreifers abrufen

1/**
2* @brief Gibt die Anzahl der Umdrehungen des Drehgreifers zurück.
3* @return List[0]: Fehlercode; List[1]: 0-kein Fehler, 1-Fehler; List[2]: Anzahl der Umdrehungen.
4*/
5List<Number> GetGripperRotNum();

11.16. Rotationsgeschwindigkeit des Drehgreifers (Prozent) abrufen

1/**
2* @brief Gibt den Rotationsgeschwindigkeitsprozentsatz des Drehgreifers zurück.
3* @return List[0]: Fehlercode; List[1]: 0-kein Fehler, 1-Fehler; List[2]: Rotationsgeschwindigkeitsprozentsatz.
4*/
5List<Number> GetGripperRotSpeed();

11.17. Rotationskraft des Drehgreifers (Prozent) abrufen

1/**
2* @brief Gibt den Rotationskraftprozentsatz des Drehgreifers zurück.
3* @return List[0]: Fehlercode; List[1]: 0-kein Fehler, 1-Fehler; List[2]: Rotationskraftprozentsatz.
4*/
5List<Number> GetGripperRotTorque();

11.18. Codebeispiel zum Abrufen des Drehgreiferstatus

 1public static int TestRotGripperState(Robot robot)
 2{
 3    int fault = 0;
 4    List<Number> rotNum=new ArrayList<>();
 5    List<Number> rotSpeed=new ArrayList<>();
 6    List<Number> rotTorque=new ArrayList<>();
 7
 8    rotNum=robot.GetGripperRotNum();
 9    rotSpeed=robot.GetGripperRotSpeed();
10    rotTorque=robot.GetGripperRotTorque();
11    System.out.println("gripper rot num :"+rotNum.get(2)+ ", gripper rotSpeed :"+rotSpeed.get(2)+",gripper rotTorque : "+rotTorque.get(2));
12
13    return 0;
14}

11.19. Förderband starten/stoppen

1/**
2* @brief Startet oder stoppt das Förderband.
3* @param [in] status Status, 1-starten, 0-stoppen.
4* @return Fehlercode.
5*/
6int ConveyorStartEnd(int status);

11.20. IO-Erkennungspunkt aufzeichnen

1/**
2* @brief Zeichnet einen IO-Erkennungspunkt auf.
3* @return Fehlercode.
4*/
5int ConveyorPointIORecord();

11.21. Punkt A aufzeichnen

1/**
2* @brief Zeichnet Punkt A auf.
3* @return Fehlercode.
4*/
5int ConveyorPointARecord();

11.22. Referenzpunkt aufzeichnen

1/**
2* @brief Zeichnet einen Referenzpunkt auf.
3* @return Fehlercode.
4*/
5int ConveyorRefPointRecord();

11.23. Punkt B aufzeichnen

1/**
2* @brief Zeichnet Punkt B auf.
3* @return Fehlercode.
4*/
5int ConveyorPointBRecord();

11.24. Werkstückerkennung über IO am Förderband

1/**
2* @brief Werkstückerkennung über IO am Förderband.
3* @param [in] max_t Maximale Erkennungszeit, Einheit ms.
4* @return Fehlercode.
5*/
6int ConveyorIODetect(int max_t);

11.25. Aktuelle Position des Objekts abrufen

1/**
2* @brief Gibt die aktuelle Position des Objekts zurück.
3* @param [in] mode 1-Tracking Greifen, 2-Tracking Bewegung, 3-TPD Tracking.
4* @return Fehlercode.
5*/
6int ConveyorGetTrackData(int mode);

11.26. Förderband-Tracking starten

1/**
2* @brief Startet das Förderband-Tracking.
3* @param [in] status Status, 1-starten, 0-stoppen.
4* @return Fehlercode.
5*/
6int ConveyorTrackStart(int status);

11.27. Förderband-Tracking stoppen

1/**
2* @brief Stoppt das Förderband-Tracking.
3* @return Fehlercode.
4*/
5int ConveyorTrackEnd();

11.28. Förderbandparameter konfigurieren

Geändert in Version Java: SDK-v1.0.4-3.8.1

 1/**
 2* @brief Konfiguriert die Parameter des Förderbands.
 3* @param [in] encChannel Encoderkanal 1~2.
 4* @param [in] resolution Impulse pro Encoderumdrehung.
 5* @param [in] lead Vorschub pro Encoderumdrehung.
 6* @param [in] wpAxis Werkstückkoordinatensystem-Nummer (für Tracking-Bewegung), für Tracking-Greifen und TPD-Tracking auf 0 setzen.
 7* @param [in] vision Vision vorhanden? 0-nein, 1-ja.
 8* @param [in] speedRadio Geschwindigkeitsverhältnis (für Tracking-Greifen 1-100), sonst Standard 1.
 9* @param [in] followType Tracking-Bewegungstyp, 0-Tracking-Bewegung; 1-Nachverfolgungsbewegung.
10* @param [in] startDis Startabstand für Nachverfolgung (mm), -1: automatische Berechnung, Standard 0.
11* @param [in] endDis Endabstand für Nachverfolgung (mm), Standard 100.
12* @return Fehlercode.
13*/
14int ConveyorSetParam(int encChannel, int resolution, double lead, int wpAxis, int vision, double speedRadio, int followType, int startDis, int endDis);

11.29. Greifpunktkompensation für Förderband einstellen

1/**
2* @brief Stellt die Kompensation für den Greifpunkt am Förderband ein.
3* @param [in] cmp Kompensationsposition double[3]{x, y, z}.
4* @return Fehlercode.
5*/
6int ConveyorCatchPointComp(Object[] cmp);

11.30. Linearbewegung mit Förderband-Tracking

 1/**
 2* @brief Linearbewegung mit Förderband-Tracking.
 3* @param [in] name Punktbeschreibung.
 4* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14].
 5* @param [in] wobj 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* @return Fehlercode.
11*/
12int ConveyorTrackMoveL(String name, int tool, int wobj, double vel, double acc, double ovl, double blendR);

11.31. Förderband-Kommunikationseingang prüfen

Neu in Version Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Prüft den Kommunikationseingang des Förderbands.
3* @param [in] timeout Warte-Timeout (ms).
4* @return Fehlercode.
5*/
6int ConveyorComDetect(int timeout);

11.32. Förderband-Kommunikationseingang prüfen (Trigger)

Neu in Version Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Löst die Prüfung des Kommunikationseingangs des Förderbands aus.
3* @param [in] timeout Warte-Timeout (ms).
4* @return Fehlercode.
5*/
6int ConveyorComDetectTrigger();

11.33. Beispielprogramm für Roboter-Förderbandoperationen

 1public static int TestConveyor(Robot robot)
 2{
 3    int retval = 0;
 4
 5    retval = robot.ConveyorStartEnd(1);
 6
 7    retval = robot.ConveyorPointIORecord();
 8
 9    retval = robot.ConveyorPointARecord();
10
11    retval = robot.ConveyorRefPointRecord();
12
13    retval = robot.ConveyorPointBRecord();
14
15    retval = robot.ConveyorStartEnd(0);
16
17    retval = 0;
18
19    retval = robot.ConveyorSetParam(1,10000,200,0,0,20,0,0,100);
20
21    Object[] cmp = new Object[]{ 0.0, 0.0, 0.0 };
22    retval = robot.ConveyorCatchPointComp(cmp);
23
24    int index = 1;
25    int max_time = 30000;
26    int block = 0;
27    retval = 0;
28
29    DescPose p1Desc=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
30    DescPose p2Desc=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
31
32
33    retval = robot.MoveCart(p1Desc, 1, 0, 100.0, 100.0, 100.0, -1.0, -1);
34
35    retval = robot.WaitMs(1);
36
37    retval = robot.ConveyorTrackStart(1);
38
39    retval = robot.ConveyorTrackMoveL("cvrCatchPoint", 1, 0, 100, 100, 100, -1.0);
40
41    retval = robot.MoveGripper(index, 51, 40, 30, max_time, block, 0, 0, 0, 0);
42
43    retval = robot.ConveyorTrackMoveL("cvrRaisePoint", 1, 0, 100, 100, 100, -1.0);
44
45    retval = robot.ConveyorTrackEnd();
46
47    robot.MoveCart(p2Desc, 1, 0, 100.0, 100.0, 100.0, -1.0, -1);
48
49    retval = robot.MoveGripper(index, 100, 40, 10, max_time, block, 0, 0, 0, 0);
50
51    return 0;
52}

11.34. Endeffektor-Sensor konfigurieren

1/**
2* @brief Konfiguriert den Sensor am Endeffektor.
3* @param [in] config.idCompany Hersteller, 18-JUNKONG; 25-HUIDE.
4* @param [in] config.idDevice Typ, 0-JUNKONG/RYR6T.V1.0.
5* @param [in] config.idSoftware Softwareversion, 0-J1.0/HuiDe1.0 (noch nicht verfügbar).
6* @param [in] config.idBus Montageposition, 1-Endeffektor Port 1; 2-Port 2...8-Port 8 (noch nicht verfügbar).
7* @return Fehlercode.
8*/
9int AxleSensorConfig(DeviceConfig config);

11.35. Endeffektor-Sensorkonfiguration abrufen

1/**
2* @brief Gibt die Konfiguration des Endeffektor-Sensors zurück.
3* @param [out] config.idCompany Hersteller.
4* @param [out] config.idDevice Typ.
5* @return Fehlercode.
6*/
7int AxleSensorConfigGet(DeviceConfig config);

11.36. Endeffektor-Sensor aktivieren

1/**
2* @brief Aktiviert/Deaktiviert den Endeffektor-Sensor.
3* @param [in] actFlag 0-Reset; 1-Aktivieren.
4* @return Fehlercode.
5*/
6int AxleSensorActivate(int actFlag);

11.37. In Endeffektor-Sensorregister schreiben

 1/**
 2* @brief Schreibt in die Register des Endeffektor-Sensors.
 3* @param [in] devAddr Geräteadresse 0-255.
 4* @param [in] regHAddr Registeradresse höherwertiges Byte.
 5* @param [in] regLAddr Registeradresse niederwertiges Byte.
 6* @param [in] regNum Anzahl der Register 0-255.
 7* @param [in] data1 Zu schreibender Wert 1.
 8* @param [in] data2 Zu schreibender Wert 2.
 9* @param [in] isNoBlock 0-blockierend; 1-nicht blockierend.
10* @return Fehlercode.
11*/
12int AxleSensorRegWrite(int devAddr, int regHAddr, int regLAddr, int regNum, int data1, int data2, int isNoBlock);

11.38. Codebeispiel für Endeffektor-Sensor

 1public static int TestAxleSensor(Robot robot)
 2{
 3    DeviceConfig con=new DeviceConfig(18,0,0,1);
 4    robot.AxleSensorConfig(con);
 5    int company = -1;
 6    int type = -1;
 7    robot.AxleSensorConfigGet(con);
 8
 9    int rtn = robot.AxleSensorActivate(1);
10
11    robot.Sleep(1000);
12
13    rtn = robot.AxleSensorRegWrite(1, 4, 6, 1, 0, 0, 0);
14    return 0;
15}

11.39. Roboter-Peripherieprotokoll abrufen

1/**
2* @brief Gibt das Roboter-Peripherieprotokoll zurück.
3* @return List[0]: Fehlercode; List[1]: int protocol Robot-Peripherieprotokollnummer 4096-Erweiterungsachsen-Steuerkarte; 4097-ModbusSlave; 4098-ModbusMaster.
4*/
5List<Integer> GetExDevProtocol();

11.40. Roboter-Peripherieprotokoll einstellen

1/**
2* @brief Stellt das Roboter-Peripherieprotokoll ein.
3* @param [in] protocol Robot-Peripherieprotokollnummer 4096-Erweiterungsachsen-Steuerkarte; 4097-ModbusSlave; 4098-ModbusMaster.
4* @return Fehlercode.
5*/
6int SetExDevProtocol(int protocol);

11.41. Beispielprogramm zum Einstellen des Roboter-Peripherieprotokolls

1public static int TestExDevProtocol(Robot robot)
2{
3    int protocol = 4096;
4    int rtn = robot.SetExDevProtocol(protocol);
5    List<Integer> integer=new ArrayList<>();
6    integer = robot.GetExDevProtocol();
7
8    return 0;
9}

11.42. Endeffektor-Kommunikationsparameter abrufen

1/**
2* @brief Gibt die Kommunikationsparameter des Endeffektors zurück.
3* @param [out] param Endeffektor-Kommunikationsparameter.
4* @return Fehlercode.
5*/
6int GetAxleCommunicationParam(AxleComParam param);

11.43. Endeffektor-Kommunikationsparameter einstellen

1/**
2* @brief Stellt die Kommunikationsparameter des Endeffektors ein.
3* @param [in] param Endeffektor-Kommunikationsparameter.
4* @return Fehlercode.
5*/
6int SetAxleCommunicationParam(AxleComParam param);

11.44. Endeffektor-Dateiübertragungstyp einstellen

1/**
2* @brief Stellt den Dateiübertragungstyp für den Endeffektor ein.
3* @param [in] type 1-MCU Upgrade Datei; 2-LUA Datei.
4* @return Fehlercode.
5*/
6public int SetAxleFileType(int type);

11.45. Endeffektor-LUA-Ausführung aktivieren/deaktivieren

1/**
2* @brief Aktiviert/deaktiviert die LUA-Ausführung am Endeffektor.
3* @param [in] enable 0-deaktivieren; 1-aktivieren.
4* @return Fehlercode.
5*/
6public int SetAxleLuaEnable(int enable);

11.46. Fehlerbehebung bei fehlerhafter Endeffektor-LUA-Datei

1/**
2* @brief Fehlerbehebung bei fehlerhafter Endeffektor-LUA-Datei.
3* @param [in] status 0-nicht beheben; 1-beheben.
4* @return Fehlercode.
5*/
6public int SetRecoverAxleLuaErr(int status);

11.47. Aktivierungsstatus der Endeffektor-LUA-Ausführung abrufen

1/**
2* @brief Gibt den Aktivierungsstatus der Endeffektor-LUA-Ausführung zurück.
3* @param [out] status[0]: 0-nicht aktiviert; 1-aktiviert.
4* @return Fehlercode.
5*/
6int GetAxleLuaEnableStatus(int[] status);

11.48. Aktivierungstypen für Endeffektor-LUA-Geräte einstellen

1/**
2* @brief Stellt die Aktivierungstypen für Endeffektor-LUA-Geräte ein.
3* @param forceSensorEnable Aktivierungsstatus Kraftsensor, 0-deaktivieren; 1-aktivieren.
4* @param gripperEnable Aktivierungsstatus Greifer, 0-deaktivieren; 1-aktivieren.
5* @param IOEnable Aktivierungsstatus IO-Gerät, 0-deaktivieren; 1-aktivieren.
6* @return Fehlercode.
7*/
8public int SetAxleLuaEnableDeviceType(int forceSensorEnable, int gripperEnable, int IOEnable);

11.49. Aktivierungstypen für Endeffektor-LUA-Geräte abrufen

1/**
2 * @brief Gibt die Aktivierungstypen für Endeffektor-LUA-Geräte zurück.
3 * @param enable enable[0]: forceSensorEnable Aktivierungsstatus Kraftsensor, 0-deaktivieren; 1-aktivieren.
4 * @param enable enable[1]: gripperEnable Aktivierungsstatus Greifer, 0-deaktivieren; 1-aktivieren.
5 * @param enable enable[2]: IOEnable Aktivierungsstatus IO-Gerät, 0-deaktivieren; 1-aktivieren.
6 * @return Fehlercode.
7 */
8public int GetAxleLuaEnableDeviceType(int[] enable);

11.50. Aktuell konfigurierte Endeffektor-Geräte abrufen

1/**
2 * @brief Gibt die aktuell konfigurierten Endeffektor-Geräte zurück.
3 * @param forceSensorEnable Aktivierte Kraftsensor-Gerätenummern (Array).
4 * @param gripperEnable Aktivierte Greifer-Gerätenummern (Array).
5 * @param IODeviceEnable Aktivierte IO-Gerätenummern (Array).
6 * @return Fehlercode.
7 */
8public int GetAxleLuaEnableDevice(int[] forceSensorEnable, int[] gripperEnable, int[] IODeviceEnable);

11.51. Greifer-Aktionssteuerungsfunktionen aktivieren

1/**
2 * @brief Aktiviert die Greifer-Aktionssteuerungsfunktionen für LUA.
3 * @param id Greifer-Gerätenummer.
4 * @param func func[0]-Greifer aktivieren; func[1]-Greifer initialisieren; 2-Position setzen; 3-Geschwindigkeit setzen; 4-Kraft setzen; 6-Greiferstatus lesen; 7-Initialisierungsstatus lesen; 8-Fehlercode lesen; 9-Position lesen; 10-Geschwindigkeit lesen; 11-Kraft lesen.
5 * @return Fehlercode.
6 */
7public int SetAxleLuaGripperFunc(int id, int[] func);

11.52. Aktivierte Greifer-Aktionssteuerungsfunktionen abrufen

1/**
2 * @brief Gibt die aktivierten Greifer-Aktionssteuerungsfunktionen für LUA zurück.
3 * @param id Greifer-Gerätenummer.
4 * @param func func[0]-Greifer aktivieren; func[1]-Greifer initialisieren; 2-Position setzen; 3-Geschwindigkeit setzen; 4-Kraft setzen; 6-Greiferstatus lesen; 7-Initialisierungsstatus lesen; 8-Fehlercode lesen; 9-Position lesen; 10-Geschwindigkeit lesen; 11-Kraft lesen.
5 * @return Fehlercode.
6 */
7public int GetAxleLuaGripperFunc(int id, int[] func);

11.53. Roboter-Ethercat-Slave-Datei schreiben

1/**
2 * @brief Schreibt eine Datei in einen Roboter-Ethercat-Slave.
3 * @param type Slave-Dateityp, 1-Slave-Upgrade-Datei; 2-Slave-Konfigurationsdatei-Upgrade.
4 * @param slaveID Slave-Nummer.
5 * @param fileName Name der hochzuladenden Datei.
6 * @return Fehlercode.
7 */
8public int SlaveFileWrite(int type, int slaveID, String fileName);

11.54. Endeffektor-Lua-Open-Protocol-Datei hochladen

1/**
2 * @brief Lädt eine Endeffektor-Lua-Open-Protocol-Datei hoch.
3 * @param filePath Lokaler Pfad der Lua-Datei ".../AXLE_LUA_End_DaHuan.lua".
4 * @return Fehlercode.
5 */
6public int AxleLuaUpload(String filePath);

11.55. Roboter-Ethercat-Slave in den Boot-Modus versetzen

1/**
2 * @brief Versetzt den Roboter-Ethercat-Slave in den Boot-Modus.
3 * @return Fehlercode.
4 */
5public int SetSysServoBootMode();

11.56. Codebeispiel für Roboter-Endeffektor-LUA-Dateioperationen

 1public static int TestAxleLua(Robot robot)
 2{
 3    robot.AxleLuaUpload("D://zUP/AXLE_LUA_End_DaHuan.lua");
 4
 5    AxleComParam param=new AxleComParam(7, 8, 1, 0, 5, 3, 1);
 6    robot.SetAxleCommunicationParam(param);
 7
 8    robot.GetAxleCommunicationParam(param);
 9
10    robot.SetAxleLuaEnable(1);
11    int[] luaEnableStatus = new int[]{0};
12    robot.GetAxleLuaEnableStatus(luaEnableStatus);
13    robot.SetAxleLuaEnableDeviceType(0, 1, 0);
14
15    int forceEnable = 0;
16    int gripperEnable = 0;
17    int ioEnable = 0;
18    int [] enable=new int[]{0,0,0};
19    robot.GetAxleLuaEnableDeviceType(enable);
20
21    int[] func = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
22    robot.SetAxleLuaGripperFunc(1, func);
23    int[] getFunc = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
24    robot.GetAxleLuaGripperFunc(1, getFunc);
25    int[] getforceEnable = { 0,0,0,0,0,0,0,0};
26    int[] getgripperEnable = { 0,0,0,0,0,0,0,0};
27    int[] getioEnable = { 0,0,0,0,0,0,0,0};
28    robot.GetAxleLuaEnableDevice(getforceEnable, getgripperEnable, getioEnable);
29    for (int i = 0; i < 8; i++)
30    {
31        System.out.println(getforceEnable[i]);
32    }
33    System.out.println("getgripperEnable status : ");
34    for (int i = 0; i < 8; i++)
35    {
36        System.out.println(getgripperEnable[i]);
37    }
38    System.out.println("getioEnable status : ");
39    for (int i = 0; i < 8; i++)
40    {
41        System.out.println(getioEnable[i]);
42    }
43    robot.ActGripper(1, 0);
44    robot.Sleep(2000);
45    robot.ActGripper(1, 1);
46    robot.Sleep(2000);
47    robot.MoveGripper(1, 90, 10, 100, 50000, 0, 0, 0, 0, 0);
48    int pos = 0;
49    while (true)
50    {
51        ROBOT_STATE_PKG pkg=new ROBOT_STATE_PKG();
52        pkg=robot.GetRobotRealTimeState();
53        System.out.println("gripper pos is:"+pkg.gripper_position);
54        robot.Sleep(100);
55    }
56
57}

11.57. SmartTool-Tastenstatus abrufen

Neu in Version Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Gibt den Status der SmartTool-Tasten zurück.
3* @param [out] state SmartTool-Griff-Tastenstatus; (bit0:0-Kommunikation normal; 1-Kommunikation unterbrochen; bit1-Widerrufen; bit2-Programm löschen; bit3-Taste A; bit4-Taste B; bit5-Taste C; bit6-Taste D; bit7-Taste E; bit8-IO-Taste; bit9-Hand/Auto; bit10-Start).
4* @return Fehlercode.
5*/
6int GetSmarttoolBtnState(int[] state);

11.58. Codebeispiel für SmartTool-Tasten

 1public static void main(String[] args)
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true, 100, 500);
 5    robot.LoggerInit(FrLogType.DIRECT, FrLogLevel.INFO, "D://log", 10, 10);
 6    int rtn = robot.RPC("192.168.58.2");
 7    if (rtn == 0) {
 8        System.out.println("rpc Verbindung erfolgreich");
 9    } else {
10        System.out.println("rpc Verbindung fehlgeschlagen");
11        return;
12    }
13
14    int[] state = {0};
15    while (true)
16    {
17        robot.GetSmarttoolBtnState(state);
18
19        String binaryString = String.format("%32s", Integer.toBinaryString(state[0])).replace(' ', '0');
20        System.out.println("GetSmarttoolBtnState:"+binaryString);
21        robot.Sleep(100);
22    }
23}

11.59. Open-Protocol-Lua-Datei hochladen

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Lädt eine Open-Protocol-Lua-Datei hoch.
3* @param filePath Lokaler Pfad der Open-Protocol-Lua-Datei.
4* @return Fehlercode.
5*/
6public int OpenLuaUpload(String filePath);

11.60. Feldbus-Slave-Kartenparameter abrufen

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Gibt die Parameter der Feldbus-Slave-Karte zurück.
3* @param type 0-Ethercat, 1-CClink, 3-Ethercat, 4-EIP.
4* @param version Protokollversion.
5* @param connState 0-nicht verbunden, 1-verbunden.
6* @return Fehlercode.
7*/
8public int GetFieldBusConfig(int[] type, int[] version, int[] connState);

11.61. In Slave-DO schreiben

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Schreibt in die digitalen Ausgänge des Slaves.
3* @param DOIndex DO-Index.
4* @param writeNum Anzahl der zu schreibenden Werte.
5* @param status Array der zu schreibenden Werte (max. 8).
6* @return Fehlercode.
7*/
8public int FieldBusSlaveWriteDO(int DOIndex, int writeNum, int[] status);

11.62. In Slave-AO schreiben

Neu in Version Java: SDK-v1.0.8-3.8.5

1/*
2* @brief  In Slave-AO schreiben
3* @param  AOIndex AO-Nummer
4* @param  writeNum Anzahl der zu schreibenden Werte
5* @param  status Array der zu schreibenden Werte (maximal 8), AO0~AO15 sind ganzzahlig, AO16~AO31 sind Gleitkommawerte
6* @return  Fehlercode
7*/
8public int FieldBusSlaveWriteAO(int AOIndex, int writeNum, double[] status)

11.63. Slave-DI lesen

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Liest die digitalen Eingänge des Slaves.
3* @param DOIndex DI-Index.
4* @param readNum Anzahl der zu lesenden Werte.
5* @param status Array zum Speichern der gelesenen Werte (max. 8).
6* @return Fehlercode.
7*/
8public int FieldBusSlaveReadDI(int DOIndex, int readNum, int[] status);

11.64. Slave-AI lesen

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Liest die analogen Eingänge des Slaves.
3* @param AIIndex AI-Index.
4* @param readNum Anzahl der zu lesenden Werte.
5* @param status Array zum Speichern der gelesenen Werte (max. 8).
6* @return Fehlercode.
7*/
8public int FieldBusSlaveReadAI(int AIIndex, int readNum, double[] status);

11.65. Auf Slave-DI warten

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Wartet auf einen digitalen Eingang des Slaves.
3* @param DIIndex DI-Index.
4* @param status 0-niedriger Pegel; 1-hoher Pegel.
5* @param waitMs Maximale Wartezeit (ms).
6* @return Fehlercode.
7*/
8public int FieldBusSlaveWaitDI(int DIIndex, int status, int waitMs);

11.66. Auf Slave-AI warten

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Wartet auf einen analogen Eingang des Slaves.
3* @param AIIndex AI-Index.
4* @param waitType 0-größer als; 1-kleiner als.
5* @param value AI-Wert.
6* @param waitMs Maximale Wartezeit (ms).
7* @return Fehlercode.
8*/
9public int FieldBusSlaveWaitAI(int AIIndex, int waitType, double value, int waitMs);

11.67. Codebeispiel für Feldbus-Slave-Kartenoperationen

 1public static void testFieldBusBoard(Robot robot)
 2{
 3    // Open-Protocol-Datei hochladen und laden
 4    robot.OpenLuaUpload("D://zUP/1111/CtrlDev_field.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(3, "CtrlDev_field.lua");
 7    robot.UnloadCtrlOpenLUA(3);
 8    robot.LoadCtrlOpenLUA(3);
 9    robot.Sleep(8000);
10    int[] type = new int[1];
11    int[] version = new int[1];
12    int[] connState = new int[1];
13    // Protokolltyp, Softwareversion und Verbindungsstatus der Slave-Karte abrufen
14    robot.GetFieldBusConfig(type, version, connState);
15    System.out.println("type is: "+type[0]+", version is : "+version[0]+", connState is : "+connState[0]);
16    //DO0 = 1、DO1 = 0、DO2 = 1
17    int[] ctrl =new int[8];
18    ctrl[0] = 1;
19    ctrl[1] = 0;
20    ctrl[2] = 1;
21    robot.FieldBusSlaveWriteDO(0, 3, ctrl);
22    //AO2 = 0x1000
23    int[] ctrlAO =new int[8];
24    ctrlAO[0] = 0x1000;
25    robot.FieldBusSlaveWriteAO(2, 1, ctrlAO);
26    int[] DI = new int[4];
27    double[] AI = new double[3];
28    // DI0~DI3 und AI0~AI2 zyklisch überwachen
29    for (int i = 0; i < 100; i++)
30    {
31        robot.FieldBusSlaveReadDI(0, 4, DI);
32        System.out.println("DI0 is: "+DI[0]+", DI1 is: "+DI[1]+",DI2 is: "+DI[2]+",DI3 is: "+DI[3]);
33        robot.FieldBusSlaveReadAI(0, 3, AI);
34        System.out.println("AI0 is: "+AI[0]+ ",AI1 is: "+AI[1]+",AI2 is: "+AI[2]);
35        robot.Sleep(10);
36    }
37    // Auf DI0 = 1 warten, maximal 100 ms warten, Ergebnis ausgeben
38    int ret = robot.FieldBusSlaveWaitDI(0, 1, 100);
39    System.out.println("FieldBusSlaveWaitDI result is: " + ret);
40    // Auf AI0 > 400 warten, maximal 100 ms warten, Ergebnis ausgeben
41    ret = robot.FieldBusSlaveWaitAI(0, 0, 400.00, 100);
42    System.out.println("FieldBusSlaveWaitAI result is: " + ret);
43    robot.CloseRPC();
44}

11.68. Array-Saugnapf steuern

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Steuert einen Array-Saugnapf.
3* @param slaveID Slave-Adresse.
4* @param len Länge des Steuerarrays.
5* @param ctrlValue Steuerwerte: 1-Saugen mit maximalem Vakuum; 2-Saugen mit eingestelltem Vakuum; 3-Saugen stoppen.
6* @return Fehlercode.
7*/
8public int SetSuckerCtrl(int slaveID, int len, int[] ctrlValue);

11.69. Array-Saugnapfstatus abrufen

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Gibt den Status eines Array-Saugnapfs zurück.
3* @param slaveID Slave-Adresse.
4* @param state [out] Saugstatus: 0-Objekt losgelassen; 1-Werkstück erkannt, angesaugt; 2-kein Objekt angesaugt; 3-Objekt abgelöst.
5* @param pressValue [out] Aktuelles Vakuum (kPa).
6* @param error [out] Fehlercode des Saugnapfs.
7* @return Fehlercode.
8*/
9public int GetSuckerState(int slaveID, int[] state, int[] pressValue, int[] error);

11.70. Auf Saugnapfstatus warten

Neu in Version Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Wartet auf einen bestimmten Saugnapfstatus.
3* @param slaveID Slave-Adresse.
4* @param state Erwarteter Saugstatus.
5* @param ms Maximale Wartezeit (ms).
6* @return Fehlercode.
7*/
8public int WaitSuckerState(int slaveID, int state, int ms);

11.71. Codebeispiel für Array-Saugnapf-Steuerung

 1public static void testSucker(Robot robot)
 2{
 3    // Open-Protocol-Datei hochladen und laden
 4    robot.OpenLuaUpload("C://Projekt/Peripherie-SDK/CtrlDev_sucker.lua");
 5    robot.Sleep(2000);
 6    robot.UnloadCtrlOpenLUA(1);
 7    robot.LoadCtrlOpenLUA(1);
 8    robot.Sleep(1000);
 9    // Alle Saugnäpfe im Broadcast-Modus mit maximaler Kraft saugen lassen
10    int[] ctrl = {1};
11    robot.SetSuckerCtrl(0, 1, ctrl);
12    int[] state = new int[1];
13    int[] pressValue = new int[1];
14    int[] error = new int[1];
15    // Status von Saugnapf 1 und 12 überwachen
16    for (int i = 0; i < 100; i++)
17    {
18        robot.GetSuckerState(1, state,pressVlaue, error);
19        System.out.println("sucker1 state is:"+state[0]+",pressVlaue is:"+pressVlaue[0]+",error num is"+error[0]);
20        robot.GetSuckerState(12, state, pressVlaue, error);
21        System.out.println("sucker12 state is :"+state[0]+", pressVlaue is:"+pressVlaue[0]+",error num is:"+error[0]);
22        robot.Sleep(100);
23    }
24    // Auf Status "angesaugt" (1) von Saugnapf 1 warten, maximal 100 ms
25    int ret = robot.WaitSuckerState(1, 1, 100);
26    System.out.println("WaitSuckerState result is:" + ret);
27    // Saugnäpfe 1 und 12 im Unicast-Modus ausschalten
28    ctrl[0] = 3;
29    robot.SetSuckerCtrl(1, 1, ctrl);
30    robot.SetSuckerCtrl(12, 1, ctrl);
31    robot.CloseRPC();
32}

11.72. Laserperipherie ein-/ausschalten

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Schaltet die Laserperipherie ein oder aus.
3 * @param [in] OnOff 0-ausschalten, 1-einschalten.
4 * @param [in] weldId Schweißnaht-ID, Standard 0.
5 * @return Fehlercode.
6 */
7public int LaserTrackingLaserOnOff(int OnOff, int weldId);

11.73. Laser-Tracking starten/beenden

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Startet oder beendet das Laser-Tracking.
3 * @param [in] OnOff 0-beenden, 1-starten.
4 * @param [in] coordId Werkzeugkoordinaten-Nummer der Laserperipherie.
5 * @return Fehlercode.
6 */
7public int LaserTrackingTrackOnOff(int OnOff, int coordId);

11.74. Laser-Positionssuche - feste Richtung

Neu in Version Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Laser-Positionssuche in einer festen Richtung.
 3 * @param [in] direction 0-x+, 1-x-, 2-y+, 3-y-, 4-z+, 5-z-.
 4 * @param [in] vel Geschwindigkeit (%).
 5 * @param [in] distance Maximale Suchstrecke (mm).
 6 * @param [in] timeout Such-Timeout (ms).
 7 * @param [in] posSensorNum Nummer des kalibrierten Lasersensor-Werkzeugs.
 8 * @return Fehlercode.
 9 */
10public int LaserTrackingSearchStart_xyz(int direction, int vel, int distance, int timeout, int posSensorNum);

11.75. Laser-Positionssuche - beliebige Richtung

Neu in Version Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Laser-Positionssuche in einer beliebigen Richtung.
 3 * @param [in] directionPoint XYZ-Koordinaten des Richtungspunkts.
 4 * @param [in] vel Geschwindigkeit (%).
 5 * @param [in] distance Maximale Suchstrecke (mm).
 6 * @param [in] timeout Such-Timeout (ms).
 7 * @param [in] posSensorNum Nummer des kalibrierten Lasersensor-Werkzeugs.
 8 * @return Fehlercode.
 9 */
10public int LaserTrackingSearchStart_point(DescTran directionPoint, int vel, int distance, int timeout, int posSensorNum);

11.76. Laser-Positionssuche beenden

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Beendet die Laser-Positionssuche.
3 * @return Fehlercode.
4 */
5 public int LaserTrackingSearchStop();

11.77. Laser-IP konfigurieren

Neu in Version Java: SDK-v1.0.9-3.8.6

1 /**
2  * @brief Konfiguriert die IP-Adresse des Lasersensors.
3  * @param [in] ip IP-Adresse des Lasersensors.
4  * @param [in] port Portnummer des Lasersensors.
5  * @return Fehlercode.
6  */
7 public int LaserTrackingSensorConfig(String ip, int port);

11.78. Abtastperiode des Lasersensors konfigurieren

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Konfiguriert die Abtastperiode des Lasersensors.
3 * @param [in] period Abtastperiode (ms).
4 * @return Fehlercode.
5 */
6public int LaserTrackingSensorSamplePeriod(int period);

11.79. Lasersensor-Treiber laden

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Lädt den Treiber für den Lasersensor.
3 * @param [in] type Protokolltyp des Treibers: 101-Ruiniu, 102-Chuangxiang, 103-Quanshi, 104-Tongzhou, 105-Aotai.
4 * @return Fehlercode.
5 */
6public int LoadPosSensorDriver(int type);

11.80. Lasersensor-Treiber entladen

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Entlädt den Treiber für den Lasersensor.
3 * @return Fehlercode.
4 */
5public int UnLoadPosSensorDriver();

11.81. Laser-Schweißnaht-Trajektorie aufzeichnen

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Zeichnet die Laser-Schweißnaht-Trajektorie auf.
3 * @param [in] status 0-Aufzeichnung stoppen, 1-Echtzeit-Tracking, 2-Aufzeichnung starten.
4 * @param [in] delayTime Verzögerungszeit (ms).
5 * @return Fehlercode.
6 */
7public int LaserSensorRecord1(int status, int delayTime);

11.82. Laser-Schweißnaht-Trajektorie wiedergeben

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Gibt die aufgezeichnete Laser-Schweißnaht-Trajektorie wieder.
3 * @param [in] delayTime Verzögerungszeit (ms).
4 * @param [in] speed Geschwindigkeit (%).
5 * @return Fehlercode.
6 */
7public int LaserSensorReplay(int delayTime, double speed);

11.83. Laser-Tracking-Wiedergabe (MoveLTR)

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Führt die Laser-Tracking-Wiedergabe aus.
3 * @return Fehlercode.
4 */
5public int MoveLTR();

11.84. Laser-Schweißnaht-Trajektorie aufzeichnen und wiedergeben (erweitert)

Neu in Version Java: SDK-v1.0.9-3.8.6

 1/**
 2* @brief Zeichnet eine Laser-Schweißnaht-Trajektorie auf und gibt sie wieder (erweiterte Parameter).
 3* @param delayMode Modus 0-Verzögerungszeit, 1-Verzögerungsstrecke.
 4* @param delayTime Verzögerungszeit (ms).
 5* @param delayDisExAxisNum Nummer der Erweiterungsachse für Verzögerungsstrecke.
 6* @param delayDis Verzögerungsstrecke (mm).
 7* @param sensitivePara Empfindlichkeitskoeffizient für Kompensation.
 8* @param trackMode Tracking-Typ. 0-Asynchrone Bewegung der Erweiterungsachse; 1-Roboter.
 9* @param triggerMode Auslösemodus für Tracking. 0-Tracking-Dauer; 1-IO.
10* @param runTime Dauer des Robotertrackings (s).
11* @param speed Geschwindigkeit (%).
12* @return Fehlercode.
13*/
14public int LaserSensorRecordandReplay(int delayMode, int delayTime, int delayDisExAxisNum, double delayDis, double sensitivePara, int trackMode, int triggerMode, double runTime, double speed);

11.85. Zum Startpunkt der aufgezeichneten Laser-Schweißnaht bewegen

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Bewegt den Roboter zum Startpunkt der aufgezeichneten Laser-Schweißnaht.
3 * @param [in] moveType 0-PTP, 1-LIN.
4 * @param [in] ovl Geschwindigkeit (%).
5 * @return Fehlercode.
6 */
7public int MoveToLaserRecordStart(int moveType, double ovl);

11.86. Zum Endpunkt der aufgezeichneten Laser-Schweißnaht bewegen

Neu in Version Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Bewegt den Roboter zum Endpunkt der aufgezeichneten Laser-Schweißnaht.
3 * @param [in] moveType 0-PTP, 1-LIN.
4 * @param [in] ovl Geschwindigkeit (%).
5 * @return Fehlercode.
6 */
7public int MoveToLaserRecordEnd(int moveType, double ovl);

11.87. Zum Laser-Suchpunkt (SeamPos) bewegen

Neu in Version Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Bewegt den Roboter zum vom Laser gefundenen Schweißnahtpunkt (SeamPos).
 3 * @param [in] moveFlag Bewegungstyp: 0-PTP; 1-LIN.
 4 * @param [in] ovl Geschwindigkeitsskalierungsfaktor (0-100).
 5 * @param [in] dataFlag Auswahl der Schweißnaht-Cachedaten: 0-Planungsdaten; 1-Aufzeichnungsdaten.
 6 * @param [in] plateType Plattentyp: 0-Wellblech; 1-Trapezblech; 2-Zaunblech; 3-Ölfass; 4-Wellpappenstahl.
 7 * @param [in] trackOffectType Versatztyp für Lasersensor: 0-kein Versatz; 1-Basiskoordinaten-Versatz; 2-Werkzeugkoordinaten-Versatz; 3-Versatz basierend auf Laserrohdaten.
 8 * @param [in] offset Versatzwert.
 9 * @return Fehlercode.
10 */
11public int MoveToLaserSeamPos(int moveFlag, double ovl, int dataFlag, int plateType, int trackOffectType, DescPose offset);

11.88. Koordinaten des Laser-Suchpunkts (SeamPos) abrufen

Neu in Version Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Gibt die Koordinaten des vom Laser gefundenen Schweißnahtpunkts (SeamPos) zurück.
 3 * @param [in] trackOffectType Versatztyp für Lasersensor: 0-kein Versatz; 1-Basiskoordinaten-Versatz; 2-Werkzeugkoordinaten-Versatz; 3-Versatz basierend auf Laserrohdaten.
 4 * @param [in] offset Versatzwert.
 5 * @param [out] jPos Gelenkposition [°].
 6 * @param [out] descPos Kartesische Position [mm].
 7 * @param [out] tool Werkzeugkoordinatensystem-Nummer.
 8 * @param [out] user Werkstückkoordinatensystem-Nummer.
 9 * @param [out] exaxis Position der Erweiterungsachse [mm].
10 * @return Fehlercode.
11 */
12public int GetLaserSeamPos(int trackOffectType, DescPose offset, JointPos jPos, DescPose descPos, int[] tool, int[] user, ExaxisPos exaxis);

11.89. Codebeispiel für Lasersensor-Konfiguration und -Test

 1public static void testLaserConfig(Robot robot)
 2{
 3    robot.LaserTrackingSensorConfig("192.168.58.20", 5020);
 4
 5    robot.LaserTrackingSensorSamplePeriod(20);
 6
 7    robot.LoadPosSensorDriver(101);
 8    robot.LaserTrackingLaserOnOff(0,0);
 9
10    robot.Sleep(3000);
11
12    robot.LaserTrackingLaserOnOff(1, 0);
13
14    robot.CloseRPC();
15}

11.90. Codebeispiel für Laser-Trajektorienaufzeichnung und -wiedergabe

 1public static void testLaserRecordAndReplay(Robot robot)
 2{
 3    // Open-Protocol-Datei hochladen und laden
 4    robot.OpenLuaUpload("D://zUP/CtrlDev_laser_ruiniu-0117.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(0, "CtrlDev_laser_ruiniu-0117.lua");
 7    robot.UnloadCtrlOpenLUA(0);
 8    robot.LoadCtrlOpenLUA(0);
 9    robot.Sleep(8000);
10
11    for (int i=0;i<10;++i){
12        JointPos startjointPos=new JointPos(56.205, -117.951, 141.872, -118.149, -94.217, -122.176);
13        DescPose startdescPose=new DescPose(-97.552, -282.855, 26.675, 174.182, -1.338, -91.707);
14        ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
15        DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
16        robot.MoveL(startjointPos, startdescPose, 1, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
17
18        robot.LaserSensorRecord1(2, 10);
19
20        JointPos endjointPos=new JointPos(68.809, -87.100, 121.120, -127.233, -95.038, -109.555);
21        DescPose enddescPose=new DescPose(-103.555, -464.234, 13.076, 174.179, -1.344, -91.709);
22        robot.MoveL(endjointPos, enddescPose, 1, 0, 50, 100, 100, -1,0, exaxisPos, 0, 0, offdese, 0,1, 1);
23
24        robot.LaserSensorRecord1(0, 10);
25
26        robot.MoveToLaserRecordStart(1, 30);
27
28        robot.LaserSensorReplay(10, 100);
29
30        robot.MoveLTR();
31
32        robot.LaserSensorRecord1(0, 10);
33    }
34
35    robot.CloseRPC();
36}

11.91. Codebeispiel für Laser-Positionssuche und Echtzeit-Tracking

 1public static void testLasertrack(Robot robot)
 2{
 3    // Open-Protocol-Datei hochladen und laden
 4    robot.OpenLuaUpload("D://zUP/CtrlDev_laser_ruiniu-0117.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(0, "CtrlDev_laser_ruiniu-0117.lua");
 7    robot.UnloadCtrlOpenLUA(0);
 8    robot.LoadCtrlOpenLUA(0);
 9    robot.Sleep(8000);
10    for(int i=0;i<10;++i){
11        JointPos startjointPos=new JointPos(56.205, -117.951, 141.872, -118.149, -94.217, -122.176);
12        DescPose startdescPose=new DescPose(-97.552, -282.855, 26.675, 174.182, -1.338, -91.707);
13        ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
14        DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
15        DescTran directionPoint=new DescTran();
16        robot.MoveL(startjointPos, startdescPose, 1, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
17
18        robot.LaserTrackingSearchStart_xyz(3, 100, 300, 1000, 3);
19        robot.LaserTrackingSearchStop();
20
21        robot.MoveToLaserSeamPos(1, 30, 0, 0, 0, offdese);
22
23        robot.LaserTrackingTrackOnOff(1, 3);
24        JointPos endjointPos = new JointPos(68.809, -87.100, 121.120, -127.233, -95.038, -109.555);
25        DescPose enddescPose = new DescPose(-103.555, -464.234, 13.076, 174.179, -1.344, -91.709);
26        robot.MoveL(endjointPos, enddescPose, 1, 0, 20, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 1, 1);
27
28        robot.LaserTrackingTrackOnOff(0, 3);
29        System.out.println("Durchlauf: " + (i + 1));
30    }
31    robot.CloseRPC();
32}

11.92. Codebeispiel für Laser-Tracking mit synchronisierter Erweiterungsachse

 1public static void testLasertrackandExitAxis(Robot robot)
 2{
 3    ExaxisPos startexaxisPos = new ExaxisPos(0, 0, 0, 0);
 4    ExaxisPos seamexaxisPos = new ExaxisPos(-10, 0, 0, 0);
 5    ExaxisPos endexaxisPos = new ExaxisPos(-30, 0, 0, 0);
 6    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
 7    JointPos seamjointPos = new JointPos(0, 0, 0, 0, 0, 0);
 8    DescPose seamdescPose = new DescPose(0, 0, 0, 0, 0, 0);
 9
10    for (int i = 0; i < 10; ++i) {
11        // Bewegung zum Startpunkt der Positionssuche
12        JointPos startjointPos = new JointPos(58.337, -119.628, 146.037, -116.358, -92.224, -117.654);
13        DescPose startdescPose = new DescPose(-53.375, -255.363, 0.919, 178.054, 1.077, -94.026);
14        robot.ExtAxisSyncMoveJ(startjointPos, startdescPose, 1, 0, 100, 100, 100, startexaxisPos, -1, 0, offdese);
15
16        System.out.println("11111");
17        // Positionssuche in -y Richtung starten
18        int ret = robot.LaserTrackingSearchStart_xyz(3, 100, 300, 1000, 2);
19        robot.LaserTrackingSearchStop();
20        System.out.println("2222");
21        int[] tool = new int[1];
22        int[] user = new int[1];
23        robot.GetLaserSeamPos(0, offdese, seamjointPos, seamdescPose, tool, user, startexaxisPos);
24        System.out.println(seamjointPos.J1 + ", " + seamjointPos.J2 + ", " +
25                seamjointPos.J3 + ", " + seamjointPos.J4 + ", " +
26                seamjointPos.J5 + ", " + seamjointPos.J6 + ", " +
27                seamdescPose.tran.x + ", " + seamdescPose.tran.y + ", " +
28                seamdescPose.tran.z + ", " + seamdescPose.rpy.rx + ", " +
29                seamdescPose.rpy.ry + ", " + seamdescPose.rpy.rz);
30        // Wenn die Positionssuche erfolgreich war
31        if (ret == 0) {
32            // Roboter und Erweiterungsachse synchron zum Suchpunkt bewegen
33            robot.ExtAxisSyncMoveJ(seamjointPos, seamdescPose, 1, 0, 100, 100, 100, seamexaxisPos, -1, 0, offdese);
34
35            // Laser-Tracking starten und synchron mit Erweiterungsachse bewegen
36            System.out.println("3333");
37            robot.LaserTrackingTrackOnOff(1, 2);
38            JointPos endjointPos = new JointPos(70.580, -90.918, 126.593, -125.154, -92.162, -105.403);
39            DescPose enddescPose = new DescPose(-53.375, -419.020, 0.920, 178.054, 1.076, -94.026);
40            robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 0, 20, 100, 100, -1, endexaxisPos, 0, offdese);
41
42            // Tracking stoppen
43            robot.LaserTrackingTrackOnOff(0, 2);
44            System.out.println("44444");
45        }
46        System.out.println("Durchlauf: " + i);
47    }
48    robot.CloseRPC();
49}

11.93. Endeffektor-Transparentübertragungsfunktion ein-/ausschalten SDK-Schnittstelle

1/**
2* @brief Aktiviert die allgemeine Transparentübertragungsfunktion des Endeffektors
3* @param Aktivierung, 0-deaktiviert, 1-aktiviert
4* @return Fehlercode
5*/
6public int SetAxleGenComEnable(int mode)

11.94. Endeffektor-Transparentübertragungsfunktion für azyklische Datenübertragung und -empfang SDK-Schnittstelle

1/**
2* @brief Endeffektor sendet azyklische Daten und wartet auf Antwort
3* @param lenSnd Länge der zu sendenden Daten
4* @param sndBuff Zu sendende Daten
5* @param lenRcv Länge der zu empfangenden Daten
6* @param [out] rcvData Antwortdaten
7* @return Fehlercode
8*/
9public int SndRcvAxleGenComCmdData(int lenSnd, int[] sndBuff, int lenRcv, int[] rcvData)

11.95. Codebeispiel für azyklische Datenkommunikation des DIO Health Care Moxibustion-Kopfs basierend auf der Endeffektor-Transparentübertragungsfunktion

 1public static void testAxleGenCom(Robot robot) {
 2int[] led_on = {0xAB, 0xBA, 0x12, 0x01, 0x01, 0x79};
 3int[] led_off = {0xAB, 0xBA, 0x12, 0x01, 0x00, 0x78};
 4int[] version = {0xAB, 0xBA, 0x11, 0x00, 0x76};
 5int[] state = {0xAB, 0xBA, 0x1B, 0x01, 0xAA, 0x2B};
 6
 7int[] rcvdata = new int[16];
 8int ret = 0;
 9int cnt = 1;
10
11JointPos p1Joint = new JointPos(88.708, -86.178, 140.989, -141.825, -89.162, -49.879);
12DescPose p1Desc = new DescPose(188.007, -377.850, 260.207, 178.715, 2.823, -131.466);
13
14JointPos p2Joint = new JointPos(112.131, -75.554, 126.989, -139.027, -88.044, -26.477);
15DescPose p2Desc = new DescPose(368.003, -377.848, 260.211, 178.715, 2.823, -131.465);
16
17ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
18DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
19
20// Endeffektor-Transparentübertragungsfunktion aktivieren
21robot.SetAxleGenComEnable(1);
22robot.SetAxleLuaEnable(1);
23
24while (cnt <= 10000) {
25    // Versionsnummer auslesen
26    ret = robot.SndRcvAxleGenComCmdData(5, version, 10, rcvdata);
27    if (ret == 0) {
28        System.out.printf(" hard version : %d,hard code:%d, soft version:%d %d, soft code:%d \n",
29                rcvdata[4], rcvdata[5], rcvdata[6], rcvdata[7], rcvdata[8]);
30    } else {
31        System.out.println("SndRcvAxleGenComCmdData version fail: " + ret);
32        break;
33    }
34    robot.Sleep(1000);
35
36    // Präsenzstatus des Moxibustion-Kopfs auslesen
37    ret = robot.SndRcvAxleGenComCmdData(6, state, 6, rcvdata);
38    if (ret == 0) {
39        System.out.printf(" state : %d \n", rcvdata[4]);
40    }
41    robot.Sleep(1000);
42
43    // Laser des Moxibustion-Kopfs einschalten
44    ret = robot.SndRcvAxleGenComCmdData(6, led_on, 6, rcvdata);
45    if (ret == 0) {
46        System.out.printf("led on rcv data is: %d, %d, %d, %d, %d, %d\n",
47                rcvdata[0], rcvdata[1], rcvdata[2], rcvdata[3], rcvdata[4], rcvdata[5]);
48    }
49    robot.MoveJ(p1Joint, p1Desc, 0, 0, 100.0, 100.0, 100.0, exaxisPos, -1.0, 0, offdese);
50    robot.Sleep(4000);
51
52    // Laser des Moxibustion-Kopfs ausschalten
53    ret = robot.SndRcvAxleGenComCmdData(6, led_off, 6, rcvdata);
54    if (ret == 0) {
55        System.out.printf("led off rcv data is: %d, %d, %d, %d, %d, %d \n",
56                rcvdata[0], rcvdata[1], rcvdata[2], rcvdata[3], rcvdata[4], rcvdata[5]);
57    }
58    robot.MoveJ(p2Joint, p2Desc, 0, 0, 100.0, 100.0, 100.0, exaxisPos, -1.0, 0, offdese);
59    robot.Sleep(1000);
60
61    System.out.println("***********************complete No. " + cnt + " SDK test*****************************");
62    cnt++;
63}
64}

11.96. Open-Protocol-Lua-Datei herunterladen

1/**
2* @brief Open-Protocol-Lua-Datei herunterladen
3* @param fileName Name der Open-Protocol-Datei "CtrlDev_XXX.lua"
4* @param savePath Pfad zum Speichern der Open-Protocol-Datei
5* @return Fehlercode
6*/
7public int OpenLuaDownload(string fileName, string savePath)

11.97. Open-Protocol-Lua-Datei löschen

1/**
2* @brief Open-Protocol-Lua-Datei löschen
3* @param [in] fileName Name der zu löschenden Open-Protocol-Lua-Datei "CtrlDev_XXX.lua"
4* @return Fehlercode
5*/
6public int OpenLuaDelete(string fileName)

11.98. Alle Open-Protocol-Lua-Dateien löschen

1/**
2* @brief Alle Open-Protocol-Lua-Dateien löschen
3* @return Fehlercode
4*/
5public int AllOpenLuaDelete()

11.99. Codebeispiel für Open-Protocol-Upload, -Download und -Löschen von Controller-Peripheriegeräten

 1public static int TestCtrlOpenLuaOperate(Robot robot) {
 2    int rtn;
 3    rtn = robot.OpenLuaUpload("D://zUP/openlua/CtrlDev_WELDING_A.lua");
 4    System.out.println("OpenLuaUpload rtn is " + rtn);
 5    rtn = robot.OpenLuaUpload("D://zUP/openlua/CtrlDev_SWDPOLISH.lua");
 6    System.out.println("OpenLuaUpload rtn is " + rtn);
 7    rtn = robot.OpenLuaDownload("CtrlDev_WELDING_A.lua", "D://zDOWN/");
 8    System.out.println("OpenLuaDownload rtn is " + rtn);
 9    rtn = robot.OpenLuaDownload("CtrlDev_SWDPOLISH.lua", "D://zDOWN/");
10    System.out.println("OpenLuaDownload rtn is " + rtn);
11
12    rtn = robot.SetCtrlOpenLUAName(0, "CtrlDev_WELDING_A.lua");
13    System.out.println("SetCtrlOpenLUAName rtn is " + rtn);
14    rtn = robot.SetCtrlOpenLUAName(1, "CtrlDev_SWDPOLISH.lua");
15    System.out.println("SetCtrlOpenLUAName rtn is " + rtn);
16
17    String[] names = new String[4];
18    rtn = robot.GetCtrlOpenLUAName(names);
19    System.out.println("GetCtrlOpenLUAName rtn is " + rtn + ", names: " +
20            names[0] + ", " + names[1] + ", " + names[2] + ", " + names[3]);
21
22    rtn = robot.LoadCtrlOpenLUA(1);
23    System.out.println("LoadCtrlOpenLUA rtn is " + rtn);
24    robot.Sleep(2000);
25    rtn = robot.UnloadCtrlOpenLUA(1);
26    System.out.println("UnloadCtrlOpenLUA rtn is " + rtn);
27
28    rtn = robot.OpenLuaDelete("CtrlDev_WELDING_A.lua");
29    System.out.println("OpenLuaDelete rtn is " + rtn);
30    rtn = robot.AllOpenLuaDelete();
31    System.out.println("AllOpenLuaDelete rtn is " + rtn);
32
33    robot.Sleep(1000);
34    return 0;
35}