2. Descrizione della Struttura Dati

2.1. Tipo di Valore Restituito dalla Chiamata dell’Interfaccia

1typedef  int errno_t;

2.2. Tipo di Dati della Posizione Articolare

1/**
2* @brief  Tipo di dati della posizione articolare
3*/
4typedef  struct
5{
6    double jPos[6];   /* Posizioni delle sei articolazioni, unità deg */
7}JointPos;

2.3. Tipo di Dati della Posizione nello Spazio Cartesiano

1/**
2* @brief  Tipo di dati della posizione nello spazio cartesiano
3*/
4typedef struct
5{
6    double x;    /* Coordinata dell'asse x, unità mm  */
7    double y;    /* Coordinata dell'asse y, unità mm  */
8    double z;    /* Coordinata dell'asse z, unità mm  */
9} DescTran;

2.4. Tipo di Dati dell’Orientamento in Angoli di Eulero

1/**
2* @brief  Tipo di dati dell'orientamento in angoli di Eulero
3*/
4typedef struct
5{
6    double rx;   /* Angolo di rotazione attorno all'asse fisso X, unità: deg  */
7    double ry;   /* Angolo di rotazione attorno all'asse fisso Y, unità: deg  */
8    double rz;   /* Angolo di rotazione attorno all'asse fisso Z, unità: deg  */
9} Rpy;

2.5. Tipo di Dati della Posa nello Spazio Cartesiano

1/**
2*@brief  Tipo di posa nello spazio cartesiano
3*/
4typedef struct
5{
6    DescTran tran;      /* Posizione nello spazio cartesiano  */
7    Rpy rpy;            /* Orientamento nello spazio cartesiano  */
8} DescPose;

2.6. Tipo di Dati della Posizione dell’Asse Esteso

1/**
2* @brief  Tipo di dati della posizione dell'asse esteso
3*/
4typedef  struct
5{
6    double ePos[4];   /* Posizioni dei quattro assi estesi, unità mm */
7}ExaxisPos;

2.7. Tipo di Dati del Sensore di Coppia/Forza

 1/**
 2* @brief  Componenti di forza e momento del sensore di forza
 3*/
 4typedef struct
 5{
 6    double fx;  /* Componente di forza lungo l'asse x, unità N  */
 7    double fy;  /* Componente di forza lungo l'asse y, unità N  */
 8    double fz;  /* Componente di forza lungo l'asse z, unità N  */
 9    double tx;  /* Componente di momento attorno all'asse x, unità Nm */
10    double ty;  /* Componente di momento attorno all'asse y, unità Nm */
11    double tz;  /* Componente di momento attorno all'asse z, unità Nm */
12} ForceTorque;

2.8. Tipo di Dati dei Parametri a Spirale

 1/**
 2* @brief  Tipo di dati dei parametri a spirale
 3*/
 4typedef  struct
 5{
 6    int    circle_num;           /* Numero di giri della spirale  */
 7    float  circle_angle;         /* Angolo di inclinazione della spirale  */
 8    float  rad_init;             /* Raggio iniziale della spirale, unità mm  */
 9    float  rad_add;              /* Incremento del raggio  */
10    float  rotaxis_add;          /* Incremento della direzione dell'asse di rotazione  */
11    int rot_direction;   /* Direzione di rotazione, 0-orario, 1-antiorario  */
12    int velAccMode;      /* Modalità parametri velocità/accelerazione: 0-velocità angolare costante; 1-velocità lineare costante */
13}SpiralParam;

2.9. Pacchetto Dati di Feedback sullo Stato del Controllore

Cambiato nella versione C++SDK-v2.1.4.0.

  1/**
  2 * @brief  Pacchetto dati di feedback sullo stato del controllore
  3 */
  4typedef struct _ROBOT_STATE_PKG
  5{
  6    uint16_t frame_head;      // Intestazione frame, convenzionalmente 0x5A5A
  7    uint8_t  frame_cnt;       // Contatore frame, conteggio ciclico 0-255
  8    uint16_t data_len;        // Lunghezza del contenuto dei dati
  9    uint8_t  program_state;   // Stato di esecuzione del programma, 1-fermo; 2-in esecuzione; 3-in pausa;
 10    uint8_t  robot_state;     // Stato di movimento del robot, 1-fermo; 2-in esecuzione; 3-in pausa; 4-trainabile
 11    int      main_code;       // Codice guasto principale
 12    int      sub_code;        // Codice guasto secondario
 13    uint8_t  robot_mode;      // Modalità robot, 1-modalità manuale; 0-modalità automatica;
 14    double   jt_cur_pos[6];   // Posizioni articolari correnti dei 6 assi, unità deg
 15    double   tl_cur_pos[6];   // Posizione corrente dell'utensile
 16                              // tl_cur_pos[0], posizione lungo l'asse x, unità mm,
 17                              // tl_cur_pos[1], posizione lungo l'asse y, unità mm,
 18                              // tl_cur_pos[2], posizione lungo l'asse z, unità mm,
 19                              // tl_cur_pos[3], angolo di rotazione attorno all'asse fisso X, unità deg
 20                              // tl_cur_pos[4], angolo di rotazione attorno all'asse fisso y, unità deg
 21                              // tl_cur_pos[5], angolo di rotazione attorno all'asse fisso z, unità deg
 22    double   flange_cur_pos[6]; // Posizione corrente della flangia terminale
 23                                // flange_cur_pos[0], posizione lungo l'asse x, unità mm,
 24                                // flange_cur_pos[1], posizione lungo l'asse y, unità mm,
 25                                // flange_cur_pos[2], posizione lungo l'asse z, unità mm,
 26                              // flange_cur_pos[3], angolo di rotazione attorno all'asse fisso X, unità deg
 27                              // flange_cur_pos[4], angolo di rotazione attorno all'asse fisso y, unità deg
 28                              // flange_cur_pos[5], angolo di rotazione attorno all'asse fisso z, unità deg
 29    double   actual_qd[6];      // Velocità correnti delle 6 articolazioni, unità deg/s
 30    double   actual_qdd[6];     // Accelerazioni correnti delle 6 articolazioni, unità deg/s^2
 31    double   target_TCP_CmpSpeed[2];
 32// target_TCP_CmpSpeed[0], velocità istruzionale sintetica TCP (posizione), unità mm/s
 33                 // target_TCP_CmpSpeed[1], velocità istruzionale sintetica TCP (orientamento), unità deg/s  */
 34    double   target_TCP_Speed[6];    // Velocità istruzionale TCP
 35                     // target_TCP_Speed[0], velocità lungo l'asse x, unità mm/s,
 36                     // target_TCP_Speed[1], velocità lungo l'asse y, unità mm/s,
 37                     // target_TCP_Speed[2], velocità lungo l'asse z, unità mm/s,
 38                     // target_TCP_Speed[3], velocità angolare di rotazione attorno all'asse fisso X, unità deg/s
 39                     // target_TCP_Speed[4], velocità angolare di rotazione attorno all'asse fisso y, unità deg/s
 40                     // target_TCP_Speed[5], velocità angolare di rotazione attorno all'asse fisso z, unità deg/s */
 41    double   actual_TCP_CmpSpeed[2];
 42// actual_TCP_CmpSpeed[0], velocità reale sintetica TCP (posizione), unità mm/s
 43              // actual_TCP_CmpSpeed[1], velocità reale sintetica TCP (orientamento), unità deg/s
 44    double   actual_TCP_Speed[6];    // Velocità reale TCP
 45                    // actual_TCP_Speed[0], velocità lungo l'asse x, unità mm/s,
 46                    // actual_TCP_Speed[1], velocità lungo l'asse y, unità mm/s,
 47                    // actual_TCP_Speed[2], velocità lungo l'asse z, unità mm/s,
 48                    // actual_TCP_Speed[3], velocità angolare di rotazione attorno all'asse fisso X, unità deg/s
 49                    // actual_TCP_Speed[4], velocità angolare di rotazione attorno all'asse fisso y, unità deg/s
 50                    // actual_TCP_Speed[5], velocità angolare di rotazione attorno all'asse fisso z, unità deg/s
 51    double   jt_cur_tor[6];      // Coppia corrente dei 6 assi, unità N·m
 52    int      tool;               // Numero del sistema di coordinate utensile applicato
 53    int      user;               // Numero del sistema di coordinate pezzo applicato
 54    uint8_t  cl_dgt_output_h;    // Uscite digitali IO del cabinet di controllo 15-8
 55    uint8_t  cl_dgt_output_l;    // Uscite digitali IO del cabinet di controllo 7-0
 56    uint8_t  tl_dgt_output_l;    // Uscite digitali IO dell'utensile 7-0, solo bit0-bit1 validi
 57    uint8_t  cl_dgt_input_h;     // Ingressi digitali IO del cabinet di controllo 15-8
 58    uint8_t  cl_dgt_input_l;     // Ingressi digitali IO del cabinet di controllo 7-0
 59    uint8_t  tl_dgt_input_l;     // Ingressi digitali IO dell'utensile 7-0, solo bit0-bit1 validi
 60    uint16_t cl_analog_input[2]; // cl_analog_input[0], ingresso analogico 0 del cabinet di controllo
 61                                 //cl_analog_input[1], ingresso analogico 1 del cabinet di controllo
 62    uint16_t tl_anglog_input;    // Ingresso analogico dell'utensile
 63    double   ft_sensor_raw_data[6]; // Dati grezzi del sensore di forza/coppia
 64                                  // ft_sensor_raw_data[0], forza lungo l'asse x, unità N
 65                                  // ft_sensor_raw_data[1], forza lungo l'asse y, unità N
 66                                  // ft_sensor_raw_data[2], forza lungo l'asse z, unità N
 67                                  // ft_sensor_raw_data[3], momento lungo l'asse x, unità Nm
 68                                  // ft_sensor_raw_data[4], momento lungo l'asse y, unità Nm
 69                                  // ft_sensor_raw_data[5], momento lungo l'asse z, unità Nm
 70    double   ft_sensor_data[6];     // Dati del sensore di forza/coppia,
 71                                    // ft_sensor_data[0], forza lungo l'asse x, unità N
 72                                    // ft_sensor_data[1], forza lungo l'asse y, unità N
 73                                    // ft_sensor_data[2], forza lungo l'asse z, unità N
 74                                    // ft_sensor_data[3], momento lungo l'asse x, unità Nm
 75                                    // ft_sensor_data[4], momento lungo l'asse y, unità Nm
 76                                    // ft_sensor_data[5], momento lungo l'asse z, unità Nm
 77    uint8_t  ft_sensor_active;   // Stato di attivazione del sensore di forza/coppia, 0-reset, 1-attivo
 78    uint8_t  EmergencyStop;      // Indicatore di arresto di emergenza, 0-non premuto, 1-premuto
 79    int      motion_done;        // Segnale di raggiungimento movimento, 1-raggiunto, 0-non raggiunto
 80    uint8_t  gripper_motiondone; // Segnale di completamento movimento della pinza, 1-completato, 0-non completato
 81    int      mc_queue_len;       // Lunghezza della coda dei comandi di movimento
 82    uint8_t  collisionState;     // Rilevamento collisione, 1-collisione, 0-nessuna collisione
 83    int      trajectory_pnum;    // Numero del punto di traiettoria
 84    uint8_t  safety_stop0_state; // Segnale di arresto di sicurezza SI0
 85    uint8_t  safety_stop1_state; // Segnale di arresto di sicurezza SI1
 86    uint8_t  gripper_fault_id;   // Numero pinza in errore
 87    uint16_t gripper_fault;      // Guasto pinza
 88    uint16_t gripper_active;     // Stato di attivazione della pinza
 89    uint8_t  gripper_position;   // Posizione della pinza
 90    int8_t   gripper_speed;      // Velocità della pinza
 91    int8_t   gripper_current;    // Corrente della pinza
 92    int      gripper_temp;       // Temperatura della pinza
 93    int      gripper_voltage;    // Tensione della pinza
 94    robot_aux_state aux_state;   // Stato assi estesi 485
 95    EXT_AXIS_STATUS extAxisStatus[4];  // Stato assi estesi UDP
 96    uint16_t extDIState[8];        // Ingressi DI estesi
 97    uint16_t extDOState[8];        // Uscite DO estese
 98    uint16_t extAIState[4];        // Ingressi AI estesi
 99    uint16_t extAOState[4];        // Uscite AO estese
100    int rbtEnableState;            // Stato di abilitazione del robot
101    double   jointDriverTorque[6];        // Coppia degli azionamenti articolari del robot
102    double   jointDriverTemperature[6];   // Temperatura degli azionamenti articolari del robot
103    RobotTime robotTime;           // Tempo di sistema del robot
104    int softwareUpgradeState;      // Stato aggiornamento software del robot
105    uint16_t endLuaErrCode;        // Stato esecuzione LUA terminale
106    uint16_t cl_analog_output[2];  // Uscite analogiche del cabinet di controllo
107    uint16_t tl_analog_output;     // Uscita analogica dell'utensile
108    float gripperRotNum;           // Numero corrente di giri della pinza rotante
109    uint8_t gripperRotSpeed;       // Velocità corrente di rotazione della pinza rotante (percentuale)
110    uint8_t gripperRotTorque;      // Coppia corrente di rotazione della pinza rotante (percentuale)
111    WELDING_BREAKOFF_STATE weldingBreakOffState;  // Stato interruzione saldatura
112    double jt_tgt_tor[6];                 // Coppia istruzionale articolare
113    int smartToolState;                   // Stato pulsanti del joystick SmartTool
114    float wideVoltageCtrlBoxTemp;         // Temperatura del cabinet di controllo a tensione ampia
115    uint16_t wideVoltageCtrlBoxFanCurrent;// Corrente della ventola del cabinet di controllo a tensione ampia (mA)
116    double toolCoord[6];        // Sistema di coordinate utensile
117    double wobjCoord[6];        // Sistema di coordinate pezzo
118    double extoolCoord[6];      // Sistema di coordinate utensile esterno
119    double exAxisCoord[6];      // Sistema di coordinate assi estesi
120    double load;                // Massa del carico
121    double loadCog[3];          // Centro di gravità del carico
122    double lastServoTarget[6];  // Posizione target dell'ultimo ServoJ nella coda
123    int servoJCmdNum;           // Conteggio comandi servoJ
124    uint16_t check_sum;         // Checksum
125}ROBOT_STATE_PKG;