2. Descrizione delle strutture dati

2.1. Tipo di dati della posizione dei giunti

1/**
2* @brief Tipo di dati della posizione dei giunti
3*/
4struct JointPos
5{
6    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
7    public double[] jPos;   /* Posizioni dei sei giunti, unità deg */
8}

2.2. Tipo di dati della posizione nello spazio cartesiano

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

2.3. Tipo di dati dell’orientamento degli angoli di Eulero

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

2.4. Tipo di dati della posa nello spazio cartesiano

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

2.5. Tipo di dati della posizione dell’asse esteso

1/**
2* @brief Tipo di dati della posizione dell'asse esteso
3*/
4struct ExaxisPos
5{
6    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
7    public double[] ePos;   /* Posizioni dei quattro assi estesi, unità mm */
8}

2.6. Tipo di dati del sensore di coppia

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

2.7. Tipo di dati dei parametri a spirale

 1public struct SpiralParam
 2{
 3    public int circle_num;           /* Numero di spire  */
 4    public float circle_angle;         /* Angolo di inclinazione della spirale  */
 5    public float rad_init;             /* Raggio iniziale della spirale, unità mm  */
 6    public float rad_add;              /* Incremento del raggio  */
 7    public float rotaxis_add;          /* Incremento della direzione dell'asse di rotazione  */
 8    public uint rot_direction;  /* Direzione di rotazione, 0-senso orario, 1-senso antiorario  */
 9    public int velAccMode;      // Modalità parametri velocità/accelerazione: 0-velocità angolare costante; 1-velocità lineare costante
10    public SpiralParam(int num, float angle, float initRad, float addRad, float axisAdd, uint direction, int mode)
11    {
12        circle_num = num;
13        circle_angle = angle;
14        rad_init = initRad;
15        rad_add = addRad;
16        rotaxis_add = axisAdd;
17        rot_direction = direction;
18        velAccMode = mode;
19    }
20}

2.8. Tipo di stato dell’asse esteso

Nuovo nella versione C#SDK-v1.0.6.

 1/**
 2* @brief  Tipo di stato dell'asse esteso
 3*/
 4[StructLayout(LayoutKind.Sequential, Pack = 1)]
 5public struct ROBOT_AUX_STATE
 6{
 7    public byte servoId;           // ID driver servo
 8    public int servoErrCode;       // Codice errore driver servo
 9    public int servoState;         // Stato driver servo
10    public double servoPos;        // Posizione corrente servo
11    public float servoVel;         // Velocità corrente servo
12    public float servoTorque;      // Coppia corrente servo
13}

2.9. Stato di interruzione della saldatura

1[StructLayout(LayoutKind.Sequential, Pack = 1)]
2public struct WELDING_BREAKOFF_STATE
3{
4    public byte breakOffState;  // Stato di interruzione della saldatura
5    public byte weldArcState;   // Stato di interruzione dell'arco di saldatura
6}

2.10. Tipo di struttura di feedback dello stato del robot

Nuovo nella versione C#SDK-V1.1.4: Web-3.8.3

  1/**
  2* @brief  Tipo di struttura di feedback dello stato del robot
  3*/
  4[StructLayout(LayoutKind.Sequential, Pack = 1)]
  5public struct ROBOT_STATE_PKG
  6{
  7    public UInt16 frame_head;           // Intestazione del frame 0x5A5A
  8    public byte frame_cnt;              // Contatore frame
  9    public UInt16 data_len;             // Lunghezza dati  5
 10    public byte program_state;          // Stato di esecuzione del programma, 1-arrestato; 2-in esecuzione; 3-in pausa
 11    public byte robot_state;            // Stato di movimento del robot, 1-arrestato; 2-in esecuzione; 3-in pausa; 4-in trascinamento  7
 12    public int main_code;               // Codice guasto principale
 13    public int sub_code;                // Codice guasto secondario
 14    public byte robot_mode;             // Modalità robot, 0-modalità automatica; 1-modalità manuale 16
 15
 16    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 17    public double[] jt_cur_pos;                             // Posizione corrente dei giunti
 18    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 19    public double[] tl_cur_pos;                             // Posa corrente dell'utensile
 20    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 21    public double[] flange_cur_pos;                         // Posa corrente della flangia finale
 22    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 23    public double[] actual_qd;                              // Velocità corrente dei giunti del robot
 24    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 25    public double[] actual_qdd;                             // Accelerazione corrente dei giunti del robot  16 + 8 * 6 * 5 = 256
 26    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
 27    public double[] target_TCP_CmpSpeed;                    // Velocità di comando sintetica TCP del robot
 28    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 29    public double[] target_TCP_Speed;                       // Velocità di comando TCP del robot
 30    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
 31    public double[] actual_TCP_CmpSpeed;                    // Velocità effettiva sintetica TCP del robot
 32    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 33    public double[] actual_TCP_Speed;                       // Velocità effettiva TCP del robot
 34    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 35    public double[] jt_cur_tor;                             // Coppia corrente
 36    public int tool;                        // Numero utensile
 37    public int user;                        // Numero pezzo
 38    public byte cl_dgt_output_h;            // Uscita digitale 15-8
 39    public byte cl_dgt_output_l;            // Uscita digitale 7-0
 40    public byte tl_dgt_output_l;            // Uscita digitale utensile 7-0 (solo bit0-bit1 validi)
 41    public byte cl_dgt_input_h;             // Ingresso digitale 15-8
 42    public byte cl_dgt_input_l;             // Ingresso digitale 7-0
 43    public byte tl_dgt_input_l;             // Ingresso digitale utensile 7-0 (solo bit0-bit1 validi)
 44    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
 45    public UInt16[] cl_analog_input;        // Ingresso analogico del quadro di controllo
 46    public UInt16 tl_anglog_input;          // Ingresso analogico dell'utensile
 47    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 48    public double[] ft_sensor_raw_data;     // Dati grezzi del sensore di forza/coppia
 49    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 50    public double[] ft_sensor_data;         // Dati del sensore di forza/coppia
 51    public byte ft_sensor_active;           // Stato di attivazione del sensore di forza/coppia, 0-ripristinato, 1-attivato
 52    public byte EmergencyStop;              // Segnale arresto di emergenza
 53    public int motion_done;                 // Segnale di posizione raggiunta
 54    public byte gripper_motiondone;         // Segnale di completamento movimento pinza
 55    public int mc_queue_len;                // Lunghezza coda movimento
 56    public byte collisionState;             // Rilevamento collisione, 1-collisione; 0-nessuna collisione
 57    public int trajectory_pnum;             // Numero punto traiettoria
 58    public byte safety_stop0_state;  /* Segnale arresto sicurezza SI0 */
 59    public byte safety_stop1_state;  /* Segnale arresto sicurezza SI1 */
 60    public byte gripper_fault_id;    /* Numero pinza in errore */
 61    public UInt16 gripper_fault;     /* Guasto pinza */
 62    public UInt16 gripper_active;    /* Stato di attivazione pinza */
 63    public byte gripper_position;    /* Posizione pinza */
 64    public byte gripper_speed;       /* Velocità pinza */
 65    public byte gripper_current;     /* Corrente pinza */
 66    public int gripper_tmp;          /* Temperatura pinza */
 67    public int gripper_voltage;      /* Tensione pinza */
 68    public ROBOT_AUX_STATE auxState; /* Stato asse esteso 485 */
 69    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
 70    public EXT_AXIS_STATUS[] extAxisStatus;  /* Stato asse esteso UDP */
 71    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
 72    public UInt16[] extDIState;        // Ingresso DI esteso
 73    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
 74    public UInt16[] extDOState;        // Uscita DO estesa
 75    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
 76    public UInt16[] extAIState;        // Ingresso AI esteso
 77    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
 78    public UInt16[] extAOState;        // Uscita AO estesa
 79    public int rbtEnableState;       // Stato di abilitazione del robot -- robot enable state
 80    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 81    public double[] jointDriverTorque;               // Coppia del driver del giunto
 82    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 83    public double[] jointDriverTemperature;          // Temperatura del driver del giunto
 84    public ROBOT_TIME robotTime;     // Ora di sistema del robot
 85    public int softwareUpgradeState; // Stato aggiornamento software  0-inattivo o caricamento pacchetto aggiornamento in corso; 1~100: percentuale completamento aggiornamento; -1: aggiornamento software fallito; -2: verifica fallita; -3: verifica versione fallita; -4: decompressione fallita; -5: aggiornamento configurazione utente fallito; -6: aggiornamento configurazione periferiche fallito; -7: aggiornamento configurazione asse esteso fallito; -8: aggiornamento configurazione robot fallito; -9: aggiornamento parametri DH fallito
 86    public UInt16 endLuaErrCode;    // Stato di esecuzione LUA finale
 87    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
 88    public  UInt16[] cl_analog_output;  // Uscita analogica del quadro di controllo                           Control box analog output
 89    public UInt16 tl_analog_output;     // Uscita analogica dell'utensile                             Tool analog output
 90    public float gripperRotNum;           // Numero di giri corrente della pinza rotante                      The current number of turns of the rotating clamp
 91    public byte gripperRotSpeed;       // Percentuale velocità di rotazione corrente della pinza rotante      Percentage of the current rotation speed of the rotary clamp
 92    public byte gripperRotTorque;      // Percentuale coppia di rotazione corrente della pinza rotante        Percentage of the current rotating torque of the rotating clamp
 93    public WELDING_BREAKOFF_STATE weldingBreakOffState;// Stato di interruzione della saldatura
 94
 95    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
 96    public double[] jt_tgt_tor;// Coppia di comando dei giunti
 97    public int smartToolState; // Stato pulsanti della maniglia SmartTool
 98    public float wideVoltageCtrlBoxTemp;        // Temperatura del quadro di controllo a tensione ampia
 99    public UInt16 wideVoltageCtrlBoxFanVel;   // Corrente ventola del quadro di controllo a tensione ampia (mA)
100
101    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
102    public double[] toolCoord;         // Sistema di coordinate dell'utensile
103    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
104    public double[] wobjCoord;         // Sistema di coordinate del pezzo
105    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
106    public double[] extoolCoord;        // Sistema di coordinate dell'utensile esterno
107    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
108    public double[] exAxisCoord;          // Sistema di coordinate dell'asse esteso
109    public double load;                   // Massa del carico
110
111    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
112    public double[] loadCog;           // Centro di gravità del carico
113    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
114    public double[] lastServoTarget;// Posizione target servoJ ultima nella coda
115
116    public int servoJCmdNum;// Conteggio comandi servoJ
117    public UInt16 check_sum;         /* Checksum di somma */
118}