2. Spiegazione della Struttura Dati

2.1. Tipo di Dati Posizione Giunti

 1/**
 2* @brief Tipo di dati posizione giunti
 3*/
 4public class JointPos
 5{
 6  double J1;
 7  double J2;
 8  double J3;
 9  double J4;
10  double J5;
11  double J6;
12
13  public JointPos(double j1, double j2, double j3, double j4, double j5, double j6)
14  {
15    J1 = j1;
16    J2 = j2;
17    J3 = j3;
18    J4 = j4;
19    J5 = j5;
20    J6 = j6;
21  }
22
23  public JointPos()
24  {
25
26  }
27}

2.2. Tipo di Dati Posizione Spazio Cartesiano

 1/**
 2* @brief Tipo di dati posizione spazio cartesiano
 3*/
 4public class DescTran
 5{
 6  public double x = 0.0;    /* Coordinata asse x, unità mm  */
 7  public double y = 0.0;    /* Coordinata asse y, unità mm  */
 8  public double z = 0.0;    /* Coordinata asse z, unità mm  */
 9  public DescTran(double posX, double posY, double posZ)
10  {
11    x = posX;
12    y = posY;
13    z = posZ;
14  }
15
16  public DescTran()
17  {
18
19  }
20
21}

2.3. Tipo di Dati Orientamento Angoli di Eulero

 1/**
 2* @brief Tipo di dati orientamento angoli di Eulero
 3*/
 4public class Rpy
 5{
 6  public double rx = 0.0;   /* Angolo di rotazione attorno all'asse X fisso, unità: deg  */
 7  public double ry = 0.0;   /* Angolo di rotazione attorno all'asse Y fisso, unità: deg  */
 8  public double rz = 0.0;   /* Angolo di rotazione attorno all'asse Z fisso, unità: deg  */
 9  public Rpy(double rotateX, double rotateY, double rotateZ)
10  {
11    rx = rotateX;
12    ry = rotateY;
13    rz = rotateZ;
14  }
15}

2.4. Tipo di Dati Posa Spazio Cartesiano

 1/**
 2* @brief Tipo posa spazio cartesiano
 3*/
 4public class DescPose
 5{
 6  public DescTran tran = new DescTran(0.0, 0.0, 0.0);      /* Posizione spazio cartesiano  */
 7  public Rpy rpy = new Rpy(0.0, 0.0, 0.0);                         /* Orientamento spazio cartesiano  */
 8
 9  public DescPose()
10  {
11
12  }
13
14  public DescPose(DescTran descTran, Rpy rotateRpy)
15  {
16    tran = descTran;
17    rpy = rotateRpy;
18  }
19
20  public DescPose(double tranX, double tranY, double tranZ, double rX, double ry, double rz)
21  {
22    tran.x = tranX;
23    tran.y = tranY;
24    tran.z = tranZ;
25    rpy.rx = rX;
26    rpy.ry = ry;
27    rpy.rz = rz;
28  }
29
30  public String toString()
31  {
32    return String.valueOf(tran.x) + "," +  String.valueOf(tran.y) + "," +String.valueOf(tran.z) + "," +String.valueOf(rpy.rx) + "," +String.valueOf(rpy.ry) + "," +String.valueOf(rpy.rz);
33  }
34}

2.5. Tipo di Dati Posizione Assi Estesi

 1/**
 2* @brief Tipo di dati posizione assi estesi
 3*/
 4public class ExaxisPos
 5{
 6  public double axis1 = 0.0;
 7  public double axis2 = 0.0;
 8  public double axis3 = 0.0;
 9  public double axis4 = 0.0;
10
11  public ExaxisPos()
12  {
13
14  }
15  public ExaxisPos(double[] exaxisPos)
16  {
17    axis1 = exaxisPos[0];
18    axis2 = exaxisPos[1];
19    axis3 = exaxisPos[2];
20    axis4 = exaxisPos[3];
21  }
22
23  public ExaxisPos(double pos1, double pos2, double pos3, double pos4)
24  {
25    axis1 = pos1;
26    axis2 = pos2;
27    axis3 = pos3;
28    axis4 = pos4;
29  }
30}

2.6. Tipo di Dati Sensore di Coppia/Forza

 1/**
 2* @brief Componenti forza e coppia del sensore di forza
 3*/
 4public class ForceTorque
 5{
 6  public double fx;  /* Componente forza lungo l'asse x, unità N  */
 7  public double fy;  /* Componente forza lungo l'asse y, unità N  */
 8  public double fz;  /* Componente forza lungo l'asse z, unità N  */
 9  public double tx;  /* Componente coppia attorno all'asse x, unità Nm */
10  public double ty;  /* Componente coppia attorno all'asse y, unità Nm */
11  public double tz;  /* Componente coppia attorno all'asse z, unità Nm */
12  public ForceTorque(double fX, double fY, double fZ, double tX, double tY, double tZ)
13  {
14    fx = fX;
15    fy = fY;
16    fz = fZ;
17    tx = tX;
18    ty = tY;
19    tz = tZ;
20  }
21}

2.7. Tipo di Dati Parametri Spirale

 1/**
 2* @brief Tipo di dati parametri spirale
 3*/
 4public class SpiralParam
 5{
 6    public int circle_num;           /* Numero di giri della spirale  */
 7    public double circle_angle;         /* Angolo di inclinazione della spirale  */
 8    public double rad_init;             /* Raggio iniziale della spirale, unità mm  */
 9    public double rad_add;              /* Incremento del raggio  */
10    public double rotaxis_add;          /* Incremento direzione asse di rotazione  */
11    public int rot_direction;  /* Direzione di rotazione, 0-orario, 1-antiorario  */
12    public int velAccMode;     /* Modalità parametri velocità/accelerazione: 0-velocità angolare costante; 1-velocità lineare costante */
13    public SpiralParam(int circleNum, double circleAngle, double radInit, double radAdd, double rotaxisAdd, int rotDirection,int vel_AccMode)
14    {
15        circle_num = circleNum;
16        circle_angle = circleAngle;
17        rad_init = radInit;
18        rad_add = radAdd;
19        rotaxis_add = rotaxisAdd;
20        rot_direction = rotDirection;
21        velAccMode=vel_AccMode;
22    }
23}

2.8. Tipo di Stato Assi Estesi

 1/**
 2* @brief Tipo di stato assi estesi
 3*/
 4public class EXT_AXIS_STATUS
 5{
 6 public double pos = 0;        //Posizione asse esteso
 7 public double vel = 0;        //Velocità asse esteso
 8 public int errorCode = 0;     //Codice errore asse esteso
 9 public int ready = 0;        //Servo pronto
10 public int inPos = 0;        //Servo in posizione
11 public int alarm = 0;        //Allarme servo
12 public int flerr = 0;        //Errore di inseguimento
13 public int nlimit = 0;       //Al limite negativo
14 public int pLimit = 0;       //Al limite positivo
15 public int mdbsOffLine = 0;  //Driver bus 485 offline
16 public int mdbsTimeout = 0;  //Timeout comunicazione 485 scheda controllo/box controllo
17 public int homingStatus = 0; //Stato homing asse esteso
18}

2.9. Tipo di Sensore

 1/**
 2* @brief Tipo di sensore
 3*/
 4public class DeviceConfig
 5{
 6  int company = 0;          // Produttore
 7  int device = 0;           // Tipo/Numero dispositivo
 8  int softwareVersion = 0;  // Versione software
 9  int bus = 0;              // Posizione montaggio
10
11  public DeviceConfig()
12  {
13
14  }
15
16  public DeviceConfig(int company, int device, int softwareVersion, int bus)
17  {
18    this.company = company;
19    this.device = device;
20    this.softwareVersion = softwareVersion;
21    this.bus = bus;
22  }
23}

2.10. Configurazione Assi Estesi 485

 1/**
 2* @brief Configurazione assi estesi 485
 3*/
 4public class Axis485Param
 5{
 6  int servoCompany;           // Produttore driver servo, 1-DynaTech
 7  int servoModel;             // Modello driver servo, 1-FD100-750C
 8  int servoSoftVersion;       // Versione software driver servo, 1-V1.0
 9  int servoResolution;        // Risoluzione encoder
10  double axisMechTransRatio;  // Rapporto trasmissione meccanico
11
12  public Axis485Param(int company, int model, int softVersion, int resolution, double mechTransRatio)
13  {
14    servoCompany = company;
15    servoModel = model;
16    servoSoftVersion = softVersion;
17    servoResolution = resolution;
18    axisMechTransRatio = mechTransRatio;
19  }
20
21  public Axis485Param()
22  {
23
24  }
25}

2.11. Stato Controller Servo

 1/**
 2* @brief Stato controller servo
 3*/
 4public class ROBOT_AUX_STATE
 5{
 6  public int servoId = 0;           //ID driver servo
 7  public int servoErrCode = 0;       //Codice errore driver servo
 8  public int servoState = 0;         //Stato driver servo
 9  public double servoPos = 0;        //Posizione corrente servo
10  public float servoVel = 0;         //Velocità corrente servo
11  public float servoTorque = 0;      //Coppia corrente servo    25
12}

2.12. Stato Interruzione Saldatura

1/**
2* @brief Stato interruzione saldatura
3*/
4public class WELDING_BREAKOFF_STATE
5{
6  public int breakOffState = 0;  //Stato interruzione saldatura
7  public int weldArcState = 0;   //Stato interruzione arco saldatura
8}

2.13. Parametri Comunicazione Assi Estesi UDP

 1/**
 2* @brief Parametri comunicazione assi estesi UDP
 3*/
 4public class UDP_EXT_AXIS_PARAM
 5{
 6  public String ip = "192.168.58.88";//Indirizzo IP
 7  public int port = 2021;            //Porta
 8  public int period = 2;             //Periodo comunicazione (ms, default 2, non modificare)
 9  public int lossPkgTime = 50;       //Tempo rilevamento perdita pacchetti (ms)
10  public int lossPkgNum = 2;         //Numero perdite pacchetti
11  public int disconnectTime = 100;   //Durata conferma disconnessione comunicazione
12  public int reconnectEnable = 0;    //Abilita riconnessione automatica 0-disabilitato 1-abilitato
13  public int reconnectPeriod = 100;  //Intervallo periodo riconnessione (ms)
14  public int reconnectNum = 3;       //Numero tentativi riconnessione
15  public int selfConnect =0;         //Connessione automatica dopo riavvio alimentazione; 0-non connettere; 1-connetti
16}

2.14. Tipo Struttura Feedback Stato Robot

 1/**
 2* @brief Tipo struttura feedback stato robot
 3*/
 4public class ROBOT_STATE_PKG
 5{
 6  public short frame_head = 0;            //Intestazione frame 0x5A5A
 7  public byte frame_cnt = 0;              //Contatore frame
 8  public short data_len = 0;              //Lunghezza dati  5
 9  public int program_state = 0;          //Stato esecuzione programma, 1-fermo; 2-in esecuzione; 3-in pausa
10  public int robot_state = 0;            //Stato movimento robot, 1-fermo; 2-in esecuzione; 3-in pausa; 4-trattamento  7
11  public int main_code = 0;               //Codice errore principale
12  public int sub_code = 0;                //Codice errore secondario
13  public int robot_mode = 0;             //Modalità robot, 0-modalità automatica; 1-modalità manuale 16
14  public double[] jt_cur_pos  =new double[6];                  //Posizione corrente giunti
15  public double[] tl_cur_pos = new double[6];                  //Posa corrente utensile
16  public double[] flange_cur_pos = new double[6];              //Posa corrente flangia terminale
17  public double[] actual_qd = new double[6];                   //Velocità corrente giunti robot
18  public double[] actual_qdd = new double[6];                  //Accelerazione corrente giunti robot
19  public double[] target_TCP_CmpSpeed = new double[2];         //Velocità istruzione sintetica TCP robot
20  public double[] target_TCP_Speed = new double[6];            //Velocità istruzione TCP robot
21  public double[] actual_TCP_CmpSpeed = new double[2];         //Velocità reale sintetica TCP robot
22  public double[] actual_TCP_Speed = new double[6];            //Velocità reale TCP robot
23  public double[] jt_cur_tor = new double[6];                             //Coppia corrente
24  public int tool = 0;                        //Numero utensile
25  public int user = 0;                        //Numero pezzo
26  public int cl_dgt_output_h = 0;            //Uscite digitali 15-8
27  public int cl_dgt_output_l = 0;            //Uscite digitali 7-0
28  public int tl_dgt_output_l = 0;            //Uscite digitali utensile 7-0 (solo bit0-bit1 validi)
29  public int cl_dgt_input_h = 0;             //Ingressi digitali 15-8
30  public int cl_dgt_input_l = 0;             //Ingressi digitali 7-0
31  public int tl_dgt_input_l = 0;             //Ingressi digitali utensile 7-0 (solo bit0-bit1 validi)
32  public short[] cl_analog_input = new short[2];          //Ingressi analogici box controllo
33  public short tl_anglog_input = 0;                       //Ingresso analogico utensile
34  public double[] ft_sensor_raw_data = new double[6];     //Dati grezzi sensore forza/coppia
35  public double[] ft_sensor_data = new double[6];         //Dati sensore forza/coppia in sistema di riferimento
36  public int ft_sensor_active = 0;           //Stato attivazione sensore forza/coppia, 0-reset, 1-attivo
37  public int EmergencyStop = 0;              //Segnale emergenza
38  public int motion_done = 0;                 //Segnale in posizione
39  public int gripper_motiondone = 0;         //Segnale completamento movimento pinza
40  public int mc_queue_len = 0;                //Lunghezza coda movimento
41  public int collisionState = 0;             //Rilevamento collisione, 1-collisione; 0-nessuna collisione
42  public int trajectory_pnum = 0;             //Numero punto traiettoria
43  public int safety_stop0_state = 0;  /* Segnale arresto sicurezza SI0 */
44  public int safety_stop1_state = 0;  /* Segnale arresto sicurezza SI1 */
45  public int gripper_fault_id = 0;    /* Numero pinza errore */               // + 19 = 567
46  public short gripper_fault = 0;      /* Guasto pinza */
47  public short gripper_active = 0;     /* Stato attivazione pinza */
48  public int gripper_position = 0;    /* Posizione pinza */
49  public int gripper_speed = 0;       /* Velocità pinza */
50  public int gripper_current = 0;     /* Corrente pinza */
51  public int gripper_tmp = 0;          /* Temperatura pinza */
52  public int gripper_voltage = 0;      /* Tensione pinza */
53  public ROBOT_AUX_STATE auxState = new ROBOT_AUX_STATE(); /* Stato assi estesi 485 */
54  public EXT_AXIS_STATUS extAxisStatus0 = new EXT_AXIS_STATUS();
55  public EXT_AXIS_STATUS extAxisStatus1 = new EXT_AXIS_STATUS();
56  public EXT_AXIS_STATUS extAxisStatus2 = new EXT_AXIS_STATUS();
57  public EXT_AXIS_STATUS extAxisStatus3 = new EXT_AXIS_STATUS();
58  public short[] extDIState = new short[8];        //Ingressi digitali estesi
59  public short[] extDOState = new short[8];        //Uscite digitali estese
60  public short[] extAIState = new short[4];        //Ingressi analogici estesi
61  public short[] extAOState = new short[4];        //Uscite analogiche estese
62  public int rbtEnableState = 0;       //Stato abilitazione robot --robot enable s
63  public double[] jointDriverTorque  =new double[6];       //Coppia corrente driver giunti
64  public double[] jointDriverTemperature = new double[6];  //Temperatura corrente driver giunti
65  public ROBOT_TIME robotTime = new ROBOT_TIME();
66  public int softwareUpgradeState = 0;   //Stato aggiornamento software robot 0-inattivo o caricamento pacchetto; 1~100: percentuale completamento; -1: fallimento aggiornamento; -2: fallimento verifica; -3: fallimento verifica versione; -4: fallimento decompressione; -5: fallimento aggiornamento configurazione utente; -6: fallimento aggiornamento configurazione periferiche; -7: fallimento aggiornamento configurazione assi estesi; -8: fallimento aggiornamento configurazione robot; -9: fallimento aggiornamento parametri DH
67  public int endLuaErrCode;              //Stato esecuzione LUA terminale
68
69  public int[] cl_analog_output = new int[2];  //Uscite analogiche box controllo
70  public int tl_analog_output;              //Uscita analogica utensile
71  public float gripperRotNum;               //Numero giri corrente pinza rotante
72  public int gripperRotSpeed;                //Velocità rotazione percentuale corrente pinza rotante
73  public int gripperRotTorque;                  //Coppia rotazione percentuale corrente pinza rotante
74
75  public  WELDING_BREAKOFF_STATE weldingBreakOffstate=new WELDING_BREAKOFF_STATE();//Stato interruzione saldatura
76
77  public double[] jt_tgt_tor = new double[6];    //Coppia istruzione giunti
78  public int smartToolState;         //Stato pulsanti manopola SmartTool
79
80  public float wideVoltageCtrlBoxTemp;        //Temperatura box controllo tensione ampia
81  public int wideVoltageCtrlBoxFanVel;   //Velocità ventilatore box controllo tensione ampia (mA)
82
83  public double[] toolCoord=new double[6];           //Sistema di coordinate utensile
84  public double[] wobjCoord=new double[6];             //Sistema di coordinate pezzo
85  public double[] extoolCoord=new double[6];                   //Sistema di coordinate utensile esterno
86  public double[] exAxisCoord=new double[6];                   //Sistema di coordinate assi estesi
87  public double load;                   //Massa carico
88  public double[] loadCog=new double[3];             //Baricentro carico
89
90  public double[] lastServoTarget=new double[6];      //Ultima posizione target servo in coda
91  public int servoJCmdNum;                            //Conteggio istruzioni servo
92
93  public short check_sum = 0;          /* Checksum */
94
95  public ROBOT_STATE_PKG()
96  {
97
98  }
99}