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}