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}