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  writeNum Numero di valori da scrivere
5* @param  status Array di valori da scrivere (massimo 8), AO0~AO15 sono di tipo intero, AO16~AO31 sono in virgola mobile
6* @return  Codice di errore
7*/
8public int FieldBusSlaveWriteAO(int AOIndex, int writeNum, double[] 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 di Saldatura Laser
 3* @param delayMode Modalità 0-Tempo Ritardo 1-Distanza Ritardo
 4* @param delayTime Tempo di ritardo in millisecondi (ms)
 5* @param delayDisExAxisNum Numero Asse Esteso
 6* @param delayDis Distanza di ritardo in millimetri (mm)
 7* @param sensitivePara Coefficiente di Sensibilità della Compensazione
 8* @param trackMode Tipo Tracciamento a Punto Fisso. 0-Movimento Asincrono Asse Esteso; 1-Robot
 9* @param triggerMode Metodo di Attivazione Tracciamento a Punto Fisso. 0-Durata Tracciamento; 1-IO
10* @param runTime Durata Tracciamento a Punto Fisso del Robot in secondi (s)
11* @param speed Velocità in percentuale (%)
12* @return Codice Errore
13*/
14public int LaserSensorRecordandReplay(int delayMode, int delayTime, int delayDisExAxisNum, double delayDis, double sensitivePara, int trackMode, int triggerMode, double runTime, 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}

11.93. Abilita/Disabilita Funzione di Trasmissione Trasparente dell’End-Effector SDK Interface

1/**
2* @brief Abilita la funzione di trasmissione trasparente generale dell'end-effector
3* @param abilitazione, 0-disabilita, 1-abilita
4* @return Codice di errore
5*/
6public int SetAxleGenComEnable(int mode)

11.94. Trasmissione e Ricezione Dati Non Periodici della Funzione di Trasmissione Trasparente dell’End-Effector SDK Interface

1/**
2* @brief L'end-effector invia dati non periodici e attende risposta
3* @param lenSnd Lunghezza dei dati da inviare
4* @param sndBuff Dati da inviare
5* @param lenRcv Lunghezza dei dati da ricevere
6* @param [out] rcvData Dati di risposta
7* @return Codice di errore
8*/
9public int SndRcvAxleGenComCmdData(int lenSnd, int[] sndBuff, int lenRcv, int[] rcvData)

11.95. Esempio di Codice per Comunicazione Dati Non Periodici del DIO Health Care Moxibustion Head basato sulla Funzione di Trasmissione Trasparente dell’End-Effector

 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// Abilita la funzione di trasmissione trasparente dell'end-effector
21robot.SetAxleGenComEnable(1);
22robot.SetAxleLuaEnable(1);
23
24while (cnt <= 10000) {
25    // Legge il numero di versione
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    // Legge lo stato di presenza della testa di moxibustione
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    // Accende il laser della testa di moxibustione
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    // Spegne il laser della testa di moxibustione
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. Scarica File Lua di Protocollo Aperto

1/**
2* @brief Scarica file Lua di protocollo aperto
3* @param fileName Nome del file di protocollo aperto "CtrlDev_XXX.lua"
4* @param savePath Percorso di salvataggio del file di protocollo aperto
5* @return Codice di errore
6*/
7public int OpenLuaDownload(string fileName, string savePath)

11.97. Elimina File Lua di Protocollo Aperto

1/**
2* @brief Elimina file Lua di protocollo aperto
3* @param [in] fileName Nome del file Lua di protocollo aperto da eliminare "CtrlDev_XXX.lua"
4* @return Codice di errore
5*/
6public int OpenLuaDelete(string fileName)

11.98. Elimina Tutti i File Lua di Protocollo Aperto

1/**
2* @brief Elimina tutti i file Lua di protocollo aperto
3* @return Codice di errore
4*/
5public int AllOpenLuaDelete()

11.99. Esempio di Codice per Caricamento, Download ed Eliminazione di Protocollo Aperto per Periferiche del Controller

 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}