11. Periferiche del Robot

11.1. Configurare la pinza

1/**
2* @brief  Configurare la pinza
3* @param  [in] config .company  produttore della pinza, 1-Robotiq, 2-Huiling, 3-Tianji, 4-Dahuan, 5-Zhixing
4* @param  [in] config .device  numero dispositivo, Robotiq(0-serie 2F-85), Huiling(0-serie NK,1-Z-EFG-100), Tianji(0-TEG-110), Dahuan(0-PGI-140), Zhixing(0-CTPM2F20)
5* @param  [in] config .softvesion  numero versione software, non utilizzato attualmente, default 0
6* @param  [in] config .bus posizione bus terminale del dispositivo, non utilizzato attualmente, default 0
7* @return  Codice errore
8*/
9int SetGripperConfig(DeviceConfig config);

11.2. Ottenere la configurazione della pinza

1/**
2* @brief  Ottenere la configurazione della pinza
3* @param  [out] config .company  produttore della pinza, 1-Robotiq, 2-Huiling, 3-Tianji, 4-Dahuan, 5-Zhixing
4* @param  [out] config .device  numero dispositivo, Robotiq(0-serie 2F-85), Huiling(0-serie NK,1-Z-EFG-100), Tianji(0-TEG-110), Dahuan(0-PGI-140), Zhixing(0-CTPM2F20)
5* @param  [out] config .softvesion  numero versione software, non utilizzato attualmente, default 0
6* @param  [out] config .bus posizione bus terminale del dispositivo, non utilizzato attualmente, default 0
7* @return  Codice errore
8*/
9int GetGripperConfig(DeviceConfig config);

11.3. Attivare la pinza

1/**
2* @brief  Attivare la pinza
3* @param  [in] index  numero pinza
4* @param  [in] act  0-reset, 1-attiva
5* @return  Codice errore
6*/
7int ActGripper(int index, int act);

11.4. Controllare la pinza

 1/**
 2* @brief  Controllare la pinza
 3* @param  [in] index  numero pinza
 4* @param  [in] pos  percentuale posizione, range [0~100]
 5* @param  [in] vel  percentuale velocità, range [0~100]
 6* @param  [in] force  percentuale coppia, range [0~100]
 7* @param  [in] max_time  tempo attesa massimo, range [0~30000], unità ms
 8* @param  [in] block  0-bloccante, 1-non bloccante
 9* @param  [in] type tipo pinza, 0-pinza parallela; 1-pinza rotante
10* @param  [in] rotNum numero giri rotazione
11* @param  [in] rotVel percentuale velocità rotazione [0-100]
12* @param  [in] rotTorque percentuale coppia rotazione [0-100]
13* @return Codice errore
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. Ottenere lo stato di movimento della pinza

1/**
2* @brief  Ottenere lo stato di movimento della pinza
3* @return List[0]: codice errore; List[1] : fault  0-nessun errore, 1-errore presente; List[2]: staus  0-movimento non completato, 1-movimento completato
4*/
5List<Integer> GetGripperMotionDone();

11.6. Ottenere lo stato di attivazione della pinza

1/**
2* @brief  Ottenere lo stato di attivazione della pinza
3* @return  List[0]: codice errore; List[1] : fault  0-nessun errore, 1-errore presente; List[2]: status  bit0~bit15 corrispondono numeri pinza 0~15, bit=0 non attivato, bit=1 attivato
4*/
5List<Number> GetGripperActivateStatus()

11.7. Ottenere la posizione della pinza

1/**
2* @brief  Ottenere la posizione della pinza
3* @return  List[0]: codice errore; List[1] : fault  0-nessun errore, 1-errore presente; List[2]: position  percentuale posizione, range 0~100%
4*/
5List<Number> GetGripperCurPosition()

11.8. Ottenere la velocità della pinza

1/**
2* @brief  Ottenere la velocità della pinza
3* @return  List[0]: codice errore; List[1] : fault  0-nessun errore, 1-errore presente; List[2]: speed  percentuale velocità, range 0~100%
4*/
5List<Number> GetGripperCurSpeed()

11.9. Ottenere la corrente della pinza

1/**
2* @brief  Ottenere la corrente della pinza
3* @return  List[0]: codice errore; List[1] : fault  0-nessun errore, 1-errore presente; List[2]: current  percentuale corrente, range 0~100%
4*/
5List<Number> GetGripperCurCurrent()

11.10. Ottenere la tensione della pinza

1/**
2* @brief  Ottenere la tensione della pinza
3* @return List[0]: codice errore; List[1] : fault  0-nessun errore, 1-errore presente; List[2]:voltage  tensione, unità 0.1V
4*/
5List<Number> GetGripperVoltage()

11.11. Ottenere la temperatura della pinza

1/**
2* @brief  Ottenere la temperatura della pinza
3* @return List[0]: codice errore; List[1] : fault  0-nessun errore, 1-errore presente; List[2]:temp  temperatura, unità ℃
4*/
5List<Number> GetGripperTemp()

11.12. Calcolare punto di pre-presa - visione

1/**
2* @brief Calcolare punto di pre-presa - visione
3* @param [in] desc_pos  posa cartesiana punto presa
4* @param [in] zlength   offset asse z
5* @param [in] zangle    offset rotazione asse z
6* @param [out] pre_pos  punto ottenuto
7* @return Codice errore
8*/
9int ComputePrePick(DescPose desc_pos, double zlength, double zangle, DescPose pre_pos);

11.13. Calcolare punto di ritiro - visione

1/**
2* @brief Calcolare punto di ritiro - visione
3* @param [in] desc_pos  posa cartesiana punto presa
4* @param [in] zlength   offset asse z
5* @param [in] zangle    offset rotazione asse z
6* @param [out] post_poss punto ritiro
7* @return Codice errore
8*/
9int ComputePostPick(DescPose desc_pos, double zlength, double zangle, DescPose post_pos);

11.14. Esempio di codice operazione pinza robot

 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. Ottenere numero giri pinza rotante

1/**
2* @brief  Ottenere numero giri pinza rotante
3* @return List[0]: codice errore List[1]: 0-nessun errore, 1-errore presente List[2]: numero giri rotazione
4*/
5List<Number> GetGripperRotNum();

11.16. Ottenere percentuale velocità rotazione pinza rotante

1/**
2* @brief  Ottenere percentuale velocità rotazione pinza rotante
3* @return List[0]: codice errore List[1]: 0-nessun errore, 1-errore presente List[2]: percentuale velocità rotazione
4*/
5List<Number> GetGripperRotSpeed();

11.17. Ottenere percentuale coppia rotazione pinza rotante

1/**
2* @brief  Ottenere percentuale coppia rotazione pinza rotante
3* @return List[0]: codice errore List[1]: 0-nessun errore, 1-errore presente List[2]: percentuale coppia rotazione
4*/
5List<Number> GetGripperRotTorque();

11.18. Esempio di codice stato pinza rotante

 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. Avvio, arresto nastro trasportatore

1/**
2* @brief  Avvio, arresto nastro trasportatore
3* @param  [in] status stato, 1-avvia, 0-arresta
4* @return  Codice errore
5*/
6int ConveyorStartEnd(int status);

11.20. Registrare punto rilevamento IO

1/**
2* @brief  Registrare punto rilevamento IO
3* @return  Codice errore
4*/
5int ConveyorPointIORecord();

11.21. Registrare punto A

1/**
2* @brief  Registrare punto A
3* @return  Codice errore
4*/
5int ConveyorPointARecord();

11.22. Registrare punto di riferimento

1/**
2* @brief  Registrare punto di riferimento
3* @return  Codice errore
4*/
5int ConveyorRefPointRecord();

11.23. Registrare punto B

1/**
2* @brief  Registrare punto B
3* @return Codice errore
4*/
5int ConveyorPointBRecord();

11.24. Rilevamento IO pezzo nastro trasportatore

1/**
2* @brief Rilevamento IO pezzo nastro trasportatore
3* @param [in] max_t tempo rilevamento massimo, unità ms
4* @return Codice errore
5*/
6int ConveyorIODetect(int max_t);

11.25. Ottenere posizione attuale oggetto

1/**
2* @brief Ottenere posizione attuale oggetto
3* @param [in] mode 1-tracciamento presa, 2-tracciamento movimento, 3-tracciamento TPD
4* @return Codice errore
5*/
6int ConveyorGetTrackData(int mode);

11.26. Avvio tracciamento nastro trasportatore

1/**
2* @brief Avvio tracciamento nastro trasportatore
3* @param [in] status stato, 1-avvia, 0-arresta
4* @return Codice errore
5*/
6int ConveyorTrackStart(int status);

11.27. Arresto tracciamento nastro trasportatore

1/**
2* @brief Arresto tracciamento nastro trasportatore
3* @return Codice errore
4*/
5int ConveyorTrackEnd();

11.28. Configurazione parametri nastro trasportatore

Cambiato nella versione Java: SDK-v1.0.4-3.8.1

 1/**
 2* @brief  Configurazione parametri nastro trasportatore
 3* @param [in] encChannel canale encoder 1~2
 4* @param [in] resolution impulsi per giro encoder
 5* @param [in] lead distanza percorrenza nastro per giro encoder
 6* @param [in] wpAxis numero sistema coordinato pezzo per funzione tracciamento movimento, tracciamento presa/TPD impostare 0
 7* @param [in] vision se dotato visione 0 no 1 si
 8* @param [in] speedRadio rapporto velocità per opzione tracciamento presa (1-100) altre opzioni default 1
 9* @param [in] followType tipo movimento tracciamento, 0-tracciamento movimento; 1-movimento inseguimento ispezione
10* @param [in] startDis necessario per presa inseguimento ispezione, distanza inizio tracciamento, -1: calcolo automatico (inseguimento automatico dopo arrivo pezzo sotto robot), unità mm, default 0
11* @param [in] endDis necessario per presa inseguimento ispezione, distanza fine tracciamento, unità mm, default 100
12* @return Codice errore
13*/
14int ConveyorSetParam(int encChannel, int resolution, double lead, int wpAxis, int vision, double speedRadio, int followType, int startDis, int endDis);

11.29. Impostare compensazione punto presa nastro trasportatore

1/**
2* @brief Impostare compensazione punto presa nastro trasportatore
3* @param [in] cmp posizione compensazione double[3]{x, y, z}
4* @return Codice errore
5*/
6int ConveyorCatchPointComp(Object[] cmp);

11.30. Movimento lineare nastro trasportatore

 1/**
 2* @brief Movimento lineare
 3* @param [in] name descrizione punto movimento
 4* @param [in] tool numero coordinata utensile, range [0~14]
 5* @param [in] wobj numero coordinata pezzo, range [0~14]
 6* @param [in] vel percentuale velocità, range [0~100]
 7* @param [in] acc percentuale accelerazione, range [0~100], non aperto attualmente
 8* @param [in] ovl fattore scala velocità, range [0~100]
 9* @param [in] blendR [-1.0]-movimento a posizione (bloccante), [0~1000.0]-raggio smooth (non bloccante), unità mm
10* @return Codice errore
11*/
12int ConveyorTrackMoveL(String name, int tool, int wobj, double vel, double acc, double ovl, double blendR);

11.31. Rilevamento input comunicazione nastro trasportatore

Nuovo nella versione Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Rilevamento input comunicazione nastro trasportatore
3* @param [in] timeout tempo attesa timeout ms
4* @return Codice errore
5*/
6int ConveyorComDetect(int timeout);

11.32. Trigger rilevamento input comunicazione nastro trasportatore

Nuovo nella versione Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Trigger rilevamento input comunicazione nastro trasportatore
3* @param [in] timeout tempo attesa timeout ms
4* @return Codice errore
5*/
6int ConveyorComDetectTrigger();

11.33. Esempio programma operazione nastro trasportatore robot

 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. Configurazione sensore terminale

1/**
2* @brief Configurazione sensore terminale
3* @param [in] config idCompany produttore, 18-JUNKONG; 25-HUIDE
4* @param [in] config idDevice tipo, 0-JUNKONG/RYR6T.V1.0
5* @param [in] config idSoftware versione software, 0-J1.0/HuiDe1.0 (non aperto attualmente)
6* @param [in] config idBus posizione montaggio, 1-porta terminale 1; 2-porta terminale 2...8-porta terminale 8 (non aperto attualmente)
7* @return Codice errore
8*/
9int AxleSensorConfig(DeviceConfig config);

11.35. Ottenere configurazione sensore terminale

1/**
2* @brief Ottenere configurazione sensore terminale
3* @param [out] config idCompany produttore, 18-JUNKONG; 25-HUIDE
4* @param [out] config idDevice tipo, 0-JUNKONG/RYR6T.V1.0
5* @return Codice errore
6*/
7int AxleSensorConfigGet(DeviceConfig config);

11.36. Attivazione sensore terminale

1/**
2* @brief Attivazione sensore terminale
3* @param [in] actFlag 0-reset; 1-attiva
4* @return Codice errore
5*/
6int AxleSensorActivate(int actFlag);

11.37. Scrittura registro sensore terminale

 1/**
 2* @brief Scrittura registro sensore terminale
 3* @param [in] devAddr  numero indirizzo dispositivo 0-255
 4* @param [in] regHAddr indirizzo registro 8 bit alti
 5* @param [in] regLAddr indirizzo registro 8 bit bassi
 6* @param [in] regNum  numero registri 0-255
 7* @param [in] data1 valore registro scritto 1
 8* @param [in] data2 valore registro scritto 2
 9* @param [in] isNoBlock 0-bloccante; 1-non bloccante
10* @return Codice errore
11*/
12int AxleSensorRegWrite(int devAddr, int regHAddr, int regLAddr, int regNum, int data1, int data2, int isNoBlock);

11.38. Esempio di codice sensore terminale

 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. Ottenere protocollo periferiche robot

1/**
2* @brief Ottenere protocollo periferiche robot
3* @return List[0]: codice errore; List[1] : int protocol numero protocollo periferiche robot 4096-scheda controllo asse estensione; 4097-ModbusSlave; 4098-ModbusMaster
4*/
5List<Integer> GetExDevProtocol();

11.40. Impostare protocollo periferiche robot

1/**
2* @brief Impostare protocollo periferiche robot
3* @param [in] protocol numero protocollo periferiche robot 4096-scheda controllo asse estensione; 4097-ModbusSlave; 4098-ModbusMaster
4* @return Codice errore
5*/
6int SetExDevProtocol(int protocol);

11.41. Esempio programma impostazione protocollo periferiche robot

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. Ottenere parametri comunicazione terminale

1/**
2* @brief Ottenere parametri comunicazione terminale
3* @param [out] param parametri comunicazione terminale
4* @return Codice errore
5*/
6int GetAxleCommunicationParam(AxleComParam param)

11.43. Impostare parametri comunicazione terminale

1/**
2* @brief Impostare parametri comunicazione terminale
3* @param [in] param parametri comunicazione terminale
4* @return Codice errore
5*/
6int SetAxleCommunicationParam(AxleComParam param)

11.44. Impostare tipo trasferimento file terminale

1/**
2* @brief Impostare tipo trasferimento file terminale
3* @param [in] type 1-file aggiornamento MCU; 2-file LUA
4* @return  Codice errore
5*/
6public int SetAxleFileType(int type)

11.45. Impostare abilitazione esecuzione LUA terminale

1/**
2* @brief Impostare abilitazione esecuzione LUA terminale
3* @param [in] enable 0-non abilitare; 1-abilitare
4* @return  Codice errore
5*/
6public int SetAxleLuaEnable(int enable)

11.46. Ripristino errore anomalo file LUA terminale

1/**
2* @brief Ripristino errore anomalo file LUA terminale
3* @param [in] status 0-non ripristinare; 1-ripristinare
4* @return  Codice errore
5*/
6public int SetRecoverAxleLuaErr(int status)

11.47. Ottenere stato abilitazione esecuzione LUA terminale

1/**
2* @brief Ottenere stato abilitazione esecuzione LUA terminale
3* @param [out] status[0]: 0-non abilitato; 1-abilitato
4* @return  Codice errore
5*/
6int GetAxleLuaEnableStatus(int[] status)

11.48. Impostare tipo dispositivo terminale abilitato LUA terminale

1/**
2* @brief Impostare tipo dispositivo terminale abilitato LUA terminale
3* @param forceSensorEnable stato abilitazione sensore forza, 0-non abilitare; 1-abilitare
4* @param gripperEnable stato abilitazione pinza, 0-non abilitare; 1-abilitare
5* @param IOEnable stato abilitazione dispositivo IO, 0-non abilitare; 1-abilitare
6* @return  Codice errore
7*/
8public int SetAxleLuaEnableDeviceType(int forceSensorEnable, int gripperEnable, int IOEnable)

11.49. Ottenere tipo dispositivo terminale abilitato LUA terminale

1/**
2 * @brief Ottenere tipo dispositivo terminale abilitato LUA terminale
3 * @param enable enable[0]:forceSensorEnable stato abilitazione sensore forza, 0-non abilitare; 1-abilitare
4 * @param enable enable[1]:gripperEnable stato abilitazione pinza, 0-non abilitare; 1-abilitare
5 * @param enable enable[2]:IOEnable stato abilitazione dispositivo IO, 0-non abilitare; 1-abilitare
6 * @return  Codice errore
7 */
8public int GetAxleLuaEnableDeviceType(int[] enable)

11.50. Ottenere dispositivo terminale configurato attualmente

1/**
2 * @brief Ottenere dispositivo terminale configurato attualmente
3 * @param forceSensorEnable numero dispositivo abilitazione sensore forza 0-non abilitato; 1-abilitato
4 * @param gripperEnable numero dispositivo abilitazione pinza, 0-non abilitato; 1-abilitato
5 * @param IODeviceEnable numero dispositivo abilitazione IO, 0-non abilitato; 1-abilitato
6 * @return  Codice errore
7 */
8public int GetAxleLuaEnableDevice(int[] forceSensorEnable, int[] gripperEnable, int[] IODeviceEnable)

11.51. Impostare abilitazione funzione controllo azione pinza

1/**
2 * @brief Impostare abilitazione funzione controllo azione pinza
3 * @param id numero dispositivo pinza
4 * @param func func[0]-abilitazione pinza; func[1]-inizializzazione pinza; 2-impostazione posizione; 3-impostazione velocità; 4-impostazione coppia; 6-lettura stato pinza; 7-lettura stato inizializzazione; 8-lettura codice errore; 9-lettura posizione; 10-lettura velocità; 11-lettura coppia
5 * @return  Codice errore
6 */
7public int SetAxleLuaGripperFunc(int id, int[] func)

11.52. Ottenere abilitazione funzione controllo azione pinza

1/**
2 * @brief Ottenere abilitazione funzione controllo azione pinza
3 * @param id numero dispositivo pinza
4 * @param func func[0]-abilitazione pinza; func[1]-inizializzazione pinza; 2-impostazione posizione; 3-impostazione velocità; 4-impostazione coppia; 6-lettura stato pinza; 7-lettura stato inizializzazione; 8-lettura codice errore; 9-lettura posizione; 10-lettura velocità; 11-lettura coppia
5 * @return  Codice errore
6 */
7public int GetAxleLuaGripperFunc(int id, int[] func)

11.53. Scrittura file slave Ethercat robot

1/**
2 * @brief Scrittura file slave Ethercat robot
3 * @param type tipo file slave, 1-file aggiornamento slave; 2-file configurazione slave
4 * @param slaveID numero slave
5 * @param fileName nome file upload
6 * @return  Codice errore
7 */
8public int SlaveFileWrite(int type, int slaveID, String fileName)

11.54. Upload file protocollo aperto LUA terminale

1/**
2 * @brief Upload file protocollo aperto LUA terminale
3 * @param filePath percorso file lua locale ".../AXLE_LUA_End_DaHuan.lua"
4 * @return Codice errore
5 */
6public int AxleLuaUpload(String filePath)

11.55. Ingresso modalità boot slave Ethercat robot

1/**
2 * @brief Ingresso modalità boot slave Ethercat robot
3 * @return  Codice errore
4 */
5public int SetSysServoBootMode()

11.56. Esempio codice operazione file LUA terminale robot

 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. Ottenere stato pulsante SmartTool

Nuovo nella versione Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Ottenere stato pulsante SmartTool
3* @param [out] state stato pulsante manopola SmartTool;(bit0:0-comunicazione normale; 1-comunicazione persa; bit1-annulla operazione; bit2-cancella programma; bit3-tasto A; bit4-tasto B; bit5-tasto C; bit6-tasto D; bit7-tasto E; bit8-tasto IO; bit9-manuale/automatico; bit10-inizia)
4* @return Codice errore
5*/
6int GetSmarttoolBtnState(int[] state)

11.58. Esempio codice pulsante SmartTool

 1public static void main(String[] args)
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true, 100, 500);//imposta tentativi riconnessione, intervallo
 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("connessione rpc successo");
 9    } else {
10        System.out.println("connessione rpc fallita");
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. Upload file LUA protocollo aperto

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Upload file LUA protocollo aperto
3* @param  filePath percorso file lua protocollo aperto locale
4* @return Codice errore
5*/
6public int OpenLuaUpload(String filePath)

11.60. Ottenere parametri scheda slave

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Ottenere parametri scheda slave
3* @param  type  0-Ethercat, 1-CClink, 3-Ethercat, 4-EIP
4* @param  version  versione protocollo
5* @param  connState  0-non connesso 1-connesso
6* @return  Codice errore
7*/
8public int GetFieldBusConfig(int[] type, int[] version, int[] connState)

11.61. Scrivere DO slave

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Scrivere DO slave
3* @param   DOIndex  numero DO
4* @param   wirteNum  quantità scritta
5* @param   status valore scritto, massimo 8
6* @return  Codice errore
7*/
8public int FieldBusSlaveWriteDO(int DOIndex, int wirteNum, int[] status)

11.62. Scrivere AO slave

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Scrivere AO slave
3* @param  AOIndex  numero AO
4* @param  wirteNum  quantità scritta
5* @param  status valore scritto, massimo 8
6* @return  Codice errore
7*/
8public int FieldBusSlaveWriteAO(int AOIndex, int wirteNum, int[] status)

11.63. Leggere DI slave

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Leggere DI slave
3* @param  DOIndex  numero DI
4* @param  readNum  quantità letta
5* @param  status valore letto, massimo 8
6* @return  Codice errore
7*/
8public int FieldBusSlaveReadDI(int DOIndex, int readNum, int[] status)

11.64. Leggere AI slave

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Leggere AI slave
3* @param  AIIndex  numero AI
4* @param  readNum  quantità letta
5* @param  status valore letto, massimo 8
6* @return  Codice errore
7*/
8public int FieldBusSlaveReadAI(int AIIndex, int readNum, double[] status)

11.65. Attendere input DI estensione

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Attendere input DI estensione
3* @param  DIIndex numero DI
4* @param  status 0-basso; 1-alto
5* @param  waitMs tempo attesa massimo (ms)
6* @return Codice errore
7*/
8public int FieldBusSlaveWaitDI(int DIIndex, int status, int waitMs)

11.66. Attendere input AI estensione

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Attendere input AI estensione
3* @param  AIIndex numero AI
4* @param  waitType 0-maggiore; 1-minore
5* @param  valore AI
6* @param  waitMs tempo attesa massimo (ms)
7* @return Codice errore
8*/
9public int FieldBusSlaveWaitAI(int AIIndex, int waitType, double value, int waitMs)

11.67. Esempio codice comandi interfaccia modalità slave

 1public static void testFieldBusBoard(Robot robot)
 2{
 3    //Upload e caricamento file protocollo aperto
 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    //Ottenere tipo protocollo, versione software, stato connessione PLC scheda slave
14    robot.GetFieldBusConfig(type, version, connState);
15    System.out.println("type is: "+type[0]+", version is : "+version[0]+", connState is : "+connState[0]);
16    //Scrivere 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    //Scrivere 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    //Monitoraggio ciclico DI0~DI3 AI0~AI2
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    //Attendere se DI0 è 1, tempo attesa 100ms, e stampare risultato
38    int ret = robot.FieldBusSlaveWaitDI(0, 1, 100);
39    System.out.println("FieldBusSlaveWaitDI result is: "+ ret);
40    //Attendere se AI0 è maggiore di 400, tempo attesa 100ms, e stampare risultato
41    ret = robot.FieldBusSlaveWaitAI(0,0,400.00,100);
42    System.out.println("FieldBusSlaveWaitAI result is: "+ ret);
43    robot.CloseRPC();
44}

11.68. Controllare ventosa a matrice

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Controllare ventosa a matrice
3* @param  slaveID numero slave
4* @param  len lunghezza
5* @param  ctrlValue valore controllo 1-aspirazione massima aspirazione 2-aspirazione soglia impostata 3-arresto aspirazione
6* @return Codice errore
7*/
8public int SetSuckerCtrl(int slaveID, int len, int[] ctrlValue)

11.69. Ottenere stato ventosa a matrice

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Ottenere stato ventosa a matrice
3* @param  slaveID numero slave
4* @param  state stato aspirazione 0-rilascio oggetto 1-rilevato pezzo aspirazione riuscita 2-nessun oggetto aspirato 3-oggetto staccato
5* @param  pressValue vuoto corrente unità kpa
6* @param  error codice errore corrente ventosa
7* @return Codice errore
8*/
9public int GetSuckerState(int slaveID, int[] state, int[] pressValue, int[] error)

11.70. Attendere stato ventosa

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Attendere stato ventosa
3* @param  slaveID numero slave
4* @param  state stato aspirazione 0-rilascio oggetto 1-rilevato pezzo aspirazione riuscita 2-nessun oggetto aspirato 3-oggetto staccato
5* @param  ms tempo attesa massimo
6* @return Codice errore
7*/
8public int WaitSuckerState(int slaveID, int state, int ms)

11.71. Esempio codice comandi controllo ventosa a matrice

 1public static void testSucker(Robot robot)
 2{
 3    //Upload e caricamento file protocollo aperto
 4    robot.OpenLuaUpload("C://项目/外设SDK/CtrlDev_sucker.lua");
 5    robot.Sleep(2000);
 6    robot.UnloadCtrlOpenLUA(1);
 7    robot.LoadCtrlOpenLUA(1);
 8    robot.Sleep(1000);
 9    //Controllo ventosa modalità broadcast, aspirazione massima capacità
10    int[] ctrl = {1};
11    robot.SetSuckerCtrl(0, 1, ctrl);
12    int[] state=new int[1];
13    int[] pressVlaue=new int[1];
14    int[] error=new int[1];
15    //Monitoraggio ciclico stato ventosa 1 e ventosa 12
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    //Attendere se ventosa 1 è in stato oggetto aspirato, tempo attesa 100ms
25    int ret = robot.WaitSuckerState(1, 1, 100);
26    System.out.println("WaitSuckerState result is:"+ ret);
27    //Modalità unicast spegnimento ventosa 1 e 12
28    ctrl[0] = 3;
29    robot.SetSuckerCtrl(1, 1, ctrl);
30    robot.SetSuckerCtrl(12, 1, ctrl);
31    robot.CloseRPC();
32}

11.72. Funzione accensione/spegnimento periferica laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Funzione accensione/spegnimento periferica laser
3 * @param [in] OnOff 0-spegni 1-accendi
4 * @param [in] weldId ID cordone saldatura default 0
5 * @return Codice errore
6 */
7public int LaserTrackingLaserOnOff(int OnOff, int weldId)

11.73. Funzione inizio/fine tracciamento laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Funzione inizio/fine tracciamento laser
3 * @param [in] OnOff 0-fine 1-inizio
4 * @param [in] coordId numero sistema coordinato utensile periferica laser
5 * @return Codice errore
6 */
7public int LaserTrackingTrackOnOff(int OnOff, int coordId)

11.74. Ricerca posizione laser - direzione fissa inversa

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Ricerca posizione laser - direzione fissa inversa
 3 * @param [in] direction 0-x+ 1-x- 2-y+ 3-y- 4-z+ 5-z-
 4 * @param [in] vel velocità unità %
 5 * @param [in] distance distanza ricerca massima unità mm
 6 * @param [in] timeout timeout ricerca unità ms
 7 * @param [in] posSensorNum numero coordinata utensile calibrata laser
 8 * @return Codice errore
 9 */
10public int LaserTrackingSearchStart_xyz(int direction, int vel, int distance, int timeout, int posSensorNum)

11.75. Ricerca posizione laser - direzione arbitraria

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Ricerca posizione laser - direzione arbitraria
 3 * @param [in] directionPoint coordinate xyz punto input ricerca
 4 * @param [in] vel velocità unità %
 5 * @param [in] distance distanza ricerca massima unità mm
 6 * @param [in] timeout timeout ricerca unità ms
 7 * @param [in] posSensorNum numero coordinata utensile calibrata laser
 8 * @return Codice errore
 9 */
10public int LaserTrackingSearchStart_point(DescTran directionPoint, int vel, int distance, int timeout, int posSensorNum)

11.76. Fine ricerca posizione laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief  Fine ricerca posizione laser
3 * @return Codice errore
4 */
5 public int LaserTrackingSearchStop()

11.77. Configurazione IP laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1 /**
2  * @brief Configurazione IP laser
3  * @param [in] ip indirizzo IP periferica laser
4  * @param [in] porta numero porta periferica laser
5  * @return Codice errore
6  */
7 public int LaserTrackingSensorConfig(String ip, int port)

11.78. Configurazione periodo campionamento periferica laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Configurazione periodo campionamento periferica laser
3 * @param [in] period periodo campionamento periferica laser unità ms
4 * @return Codice errore
5 */
6public int LaserTrackingSensorSamplePeriod(int period)

11.79. Caricamento driver periferica laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Caricamento driver periferica laser
3 * @param [in] type tipo protocollo driver periferica laser 101-Ruiniu 102-Chuangxiang 103-Quanshi 104-Tongzhou 105-Aotai
4 * @return Codice errore
5 */
6public int LoadPosSensorDriver(int type)

11.80. Scaricamento driver periferica laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Scaricamento driver periferica laser
3 * @return Codice errore
4 */
5public int UnLoadPosSensorDriver()

11.81. Registrazione traiettoria cordone saldatura laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Registrazione traiettoria cordone saldatura laser
3 * @param [in] status 0-arresta registrazione 1-tracciamento tempo reale 2-inizia registrazione
4 * @param [in] delayTime tempo ritardo unità ms
5 * @return Codice errore
6 */
7public int LaserSensorRecord1(int status, int delayTime)

11.82. Riproduzione traiettoria cordone saldatura laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Riproduzione traiettoria cordone saldatura laser
3 * @param [in] delayTime tempo ritardo unità ms
4 * @param [in] speed velocità unità %
5 * @return Codice errore
6 */
7public int LaserSensorReplay(int delayTime, double speed)

11.83. Riproduzione tracciamento laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Riproduzione tracciamento laser
3 * @return Codice errore
4 */
5public int MoveLTR()

11.84. Riproduzione traiettoria cordone saldatura laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Riproduzione traiettoria cordone saldatura laser
 3 * @param [in] delayMode modalità 0-tempo ritardo 1-distanza ritardo
 4 * @param [in] delayTime tempo ritardo unità ms
 5 * @param [in] delayDisExAxisNum numero asse estensione
 6 * @param [in] delayDis distanza ritardo unità mm
 7 * @param [in] sensitivePara coefficiente sensibilità compensazione
 8 * @param [in] speed velocità unità %
 9 * @return Codice errore
10 */
11public int LaserSensorRecordandReplay(int delayMode, int delayTime, int delayDisExAxisNum, double delayDis, double sensitivePara, double speed)

11.85. Movimento punto inizio registrazione cordone laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Movimento punto inizio registrazione cordone laser
3 * @param [in] moveType 0-PTP 1-LIN
4 * @param [in] ovl velocità unità %
5 * @return Codice errore
6 */
7public int MoveToLaserRecordStart(int moveType, double ovl)

11.86. Movimento punto fine registrazione cordone laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Movimento punto fine registrazione cordone laser
3 * @param [in] moveType 0-PTP 1-LIN
4 * @param [in] ovl velocità unità %
5 * @return Codice errore
6 */
7public int MoveToLaserRecordEnd(int moveType, double ovl)

11.87. Movimento punto ricerca sensore laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Movimento punto ricerca sensore laser
 3 * @param [in] moveFlag tipo movimento: 0-PTP; 1-LIN
 4 * @param [in] ovl fattore scala velocità, 0-100
 5 * @param [in] dataFlag selezione dati cache cordone: 0-esegui dati pianificazione; 1-esegui dati registrazione
 6 * @param [in] plateType tipo lamiera: 0-lamiera ondulata; 1-cartone ondulato; 2-pannello recinzione; 3-fusto olio; 4-acciaio ondulato
 7 * @param [in] trackOffectType tipo offset sensore laser: 0-nessun offset; 1-offset sistema base; 2-offset sistema utensile; 3-offset dati originali sensore laser
 8 * @param [in] offset valore offset
 9 * @return Codice errore
10 */
11public int MoveToLaserSeamPos(int moveFlag, double ovl, int dataFlag, int plateType, int trackOffectType, DescPose offset)

11.88. Ottenere informazioni coordinate punto ricerca sensore laser

Nuovo nella versione Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Ottenere informazioni coordinate punto ricerca sensore laser
 3 * @param [in] trackOffectType tipo offset sensore laser: 0-nessun offset; 1-offset sistema base; 2-offset sistema utensile; 3-offset dati originali sensore laser
 4 * @param [in] offset valore offset
 5 * @param [out] jPos posizione giunti [°]
 6 * @param [out] descPos posizione cartesiana [mm]
 7 * @param [out] tool sistema coordinato utensile
 8 * @param [out] user sistema coordinato pezzo
 9 * @param [out] exaxis posizione asse estensione [mm]
10 * @return Codice errore
11 */
12public int GetLaserSeamPos(int trackOffectType, DescPose offset, JointPos jPos, DescPose descPos, int[] tool, int[] user, ExaxisPos exaxis)

11.89. Esempio codice configurazione parametri sensore periferica laser e debug

 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. Esempio codice scansione traiettoria laser e riproduzione traiettoria

 1public static void testLaserRecordAndReplay(Robot robot)
 2{
 3    //Upload e caricamento file protocollo aperto
 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. Esempio codice ricerca posizione laser e tracciamento tempo reale

 1public static void testLasertrack(Robot robot)
 2{
 3    //Upload e caricamento file protocollo aperto
 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.GetRobotTeachingPoint(name, data);
22        robot.MoveToLaserSeamPos(1, 30, 0, 0, 0, offdese);
23        //printf("%f, %f, %f,%f, %f, %f,%f, %f, %f,%f, %f, %f\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10], data[11]);
24
25        robot.LaserTrackingTrackOnOff(1, 3);
26        //robot.LaserTrackingTrackOn(3);
27        JointPos endjointPos=new JointPos(68.809,-87.100,121.120,-127.233,-95.038,-109.555);
28        DescPose enddescPose=new DescPose(-103.555,-464.234,13.076,174.179,-1.344,-91.709);
29        robot.MoveL(endjointPos, enddescPose, 1, 0, 20, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
30
31        robot.LaserTrackingTrackOnOff(0, 3);
32        System.out.println("Attualmente è la "+(i+1)+"° volta");
33    }
34    robot.CloseRPC();
35}

11.92. Esempio codice tracciamento laser sincronizzato asse estensione e robot

 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        //Movimento punto inizio ricerca
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        //Inizio ricerca lungo direzione -y
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        //Se ricerca riuscita
31        if (ret == 0) {
32            //Movimento sincronizzato robot e asse estensione punto ricerca
33            robot.ExtAxisSyncMoveJ(seamjointPos, seamdescPose, 1, 0, 100, 100, 100, seamexaxisPos, -1, 0, offdese);
34
35            //Inizio tracciamento laser punto ricerca con movimento sincronizzato asse estensione
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            //Arresto tracciamento
43            robot.LaserTrackingTrackOnOff(0, 2);
44            System.out.println("44444");
45        }
46        System.out.println("Numero esecuzioni corrente:"+i);
47    }
48    robot.CloseRPC();
49}