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 di feedback dello stato del robot
3*/
4public class ROBOT_STATE_PKG {
5 public int frame_head; // Intestazione del frame
6 public int frame_cnt; // Conteggio frame
7 public int data_len; // Lunghezza dati
8 public int program_state; // Stato programma - 1-arrestato; 2-in esecuzione; 3-in pausa
9 public int robot_state; // Stato movimento robot - 1-arrestato; 2-in movimento; 3-in pausa; 4-trascinamento
10 public int main_code; // Codice guasto principale
11 public int sub_code; // Codice guasto secondario
12 public int robot_mode; // Modalità robot - 1-manuale; 0-automatica
13 public double[] jt_cur_pos = new double[6]; // Posizioni articolari correnti di 6 assi, unità deg
14 public double[] tl_cur_pos = new double[6]; // Posizione corrente utensile - [x,y,z,rx,ry,rz]
15 public double[] flange_cur_pos = new double[6]; // Posizione corrente flangia terminale - [x,y,z,rx,ry,rz]
16 public double[] actual_qd = new double[6]; // Velocità correnti di 6 giunti, unità deg/s
17 public double[] actual_qdd = new double[6]; // Accelerazioni correnti di 6 giunti, unità deg/s^2
18 public double[] target_TCP_CmpSpeed = new double[2]; // Velocità di comando composita TCP - [posizione mm/s, orientamento deg/s]
19 public double[] target_TCP_Speed = new double[6]; // Velocità di comando TCP - [vx,vy,vz,wx,wy,wz]
20 public double[] actual_TCP_CmpSpeed = new double[2]; // Velocità effettiva composita TCP - [posizione mm/s, orientamento deg/s]
21 public double[] actual_TCP_Speed = new double[6]; // Velocità effettiva TCP - [vx,vy,vz,wx,wy,wz]
22 public double[] jt_cur_tor = new double[6]; // Coppia articolare corrente
23 public int tool; // ID utensile
24 public int user; // ID pezzo
25 public int cl_dgt_output_h; // Byte alto uscita digitale armadio di controllo
26 public int cl_dgt_output_l; // Byte basso uscita digitale armadio di controllo
27 public int tl_dgt_output_l; // Byte basso uscita digitale utensile
28 public int cl_dgt_input_h; // Byte alto ingresso digitale armadio di controllo
29 public int cl_dgt_input_l; // Byte basso ingresso digitale armadio di controllo
30 public int tl_dgt_input_l; // Byte basso ingresso digitale utensile
31 public int[] cl_analog_input = new int[2]; // Ingresso analogico armadio di controllo
32 public int tl_anglog_input; // Ingresso analogico utensile
33 public double[] ft_sensor_raw_data = new double[6]; // Dati grezzi sensore di forza
34 public double[] ft_sensor_data = new double[6]; // Dati sensore di forza
35 public int ft_sensor_active; // Stato attivazione sensore di forza
36 public int EmergencyStop; // Stato arresto di emergenza
37 public int motion_done; // Movimento completato
38 public int gripper_motiondone; // Movimento pinza completato
39 public int mc_queue_len; // Lunghezza coda movimenti
40 public int collisionState; // Stato collisione
41 public int trajectory_pnum; // Numero sequenza punto traiettoria
42 public int safety_stop0_state; // Stato arresto di sicurezza 0
43 public int safety_stop1_state; // Stato arresto di sicurezza 1
44 public int gripper_fault_id; // ID guasto pinza
45 public int gripper_fault; // Guasto pinza
46 public int gripper_active; // Attivazione pinza
47 public int gripper_position; // Posizione pinza
48 public int gripper_speed; // Velocità pinza
49 public int gripper_current; // Corrente pinza
50 public int gripper_temp; // Temperatura pinza
51 public int gripper_voltage; // Tensione pinza
52 public AuxState aux_state = new AuxState(); // Stato assi ausiliari interni
53 public EXT_AXIS_STATUS[] extAxisStatus = new EXT_AXIS_STATUS[4]; // Array stato assi di estensione
54 public short[] extDIState = new short[8]; // I/O estesi
55 public short[] extDOState = new short[8]; // I/O estesi
56 public short[] extAIState = new short[4]; // I/O estesi
57 public short[] extAOState = new short[4]; // I/O estesi
58 public int rbtEnableState; // Stato abilitazione robot
59 public double[] jointDriverTorque = new double[6]; // Coppia driver giunti
60 public double[] jointDriverTemperature = new double[6]; // Temperatura driver giunti
61 public ROBOT_TIME robotTime = new ROBOT_TIME(); // Oggetto tempo robot
62 public int softwareUpgradeState; // Stato aggiornamento software
63 public int endLuaErrCode; // Codice errore Lua terminale
64 public int[] cl_analog_output = new int[2]; // Uscita analogica armadio di controllo
65 public int tl_analog_output; // Uscita analogica utensile
66 public float gripperRotNum; // Numero di giri pinza rotante
67 public int gripperRotSpeed; // Velocità pinza rotante
68 public int gripperRotTorque; // Coppia pinza rotante
69 public WELDING_BREAKOFF_STATE weldingBreakOffState = new WELDING_BREAKOFF_STATE(); // Stato interruzione saldatura
70 public double[] jt_tgt_tor = new double[6]; // Coppia articolare target
71 public int smartToolState; // Stato utensile intelligente
72 public float wideVoltageCtrlBoxTemp; // Temperatura armadio di controllo wide voltage
73 public int wideVoltageCtrlBoxFanCurrent; // Corrente ventola armadio di controllo wide voltage
74 public double[] toolCoord = new double[6]; // Sistema di coordinate utensile
75 public double[] wobjCoord = new double[6]; // Sistema di coordinate pezzo
76 public double[] extoolCoord = new double[6]; // Sistema di coordinate utensile esterno
77 public double[] exAxisCoord = new double[6]; // Sistema di coordinate assi di estensione
78 public double load; // Carico
79 public double[] loadCog = new double[3]; // Centro di gravità del carico
80 public double[] lastServoTarget = new double[6]; // Ultima posizione target servo J
81 public int servoJCmdNum; // Numero comandi servo J
82 public double[] targetJointPos = new double[6]; // Posizione articolare target
83 public double[] targetJointVel = new double[6]; // Velocità articolare target
84 public double[] targetJointAcc = new double[6]; // Accelerazione articolare target
85 public double[] targetJointCurrent = new double[6]; // Corrente articolare target
86 public double[] actualJointCurrent = new double[6]; // Corrente articolare effettiva
87 public double[] actualTCPForce = new double[6]; // Forza TCP effettiva
88 public double[] targetTCPPos = new double[6]; // Posizione TCP target
89 public int[] collisionLevel = new int[6]; // Livello collisione
90 public double speedScaleManual; // Scala velocità manuale
91 public double speedScaleAuto; // Scala velocità automatica
92 public int luaLineNum; // Numero riga Lua
93 public int abnomalStop; // Arresto anomalo
94 public String currentLuaFileName; // Nome file Lua corrente
95 public int programTotalLine; // Righe totali programma
96 public int[] safetyBoxSingal = new int[6]; // Segnale scatola di sicurezza
97 public double weldVoltage; // Tensione saldatura
98 public double weldCurrent; // Corrente saldatura
99 public double weldTrackVel; // Velocità tracciamento saldatura
100 public int tpdException; // Eccezione TPD
101 public int alarmRebootRobot; // Riavvio robot allarme
102 public int modbusMasterConnect; // Connessione master Modbus
103 public int modbusSlaveConnect; // Connessione slave Modbus
104 public int btnBoxStopSignal; // Segnale stop scatola pulsanti
105 public int dragAlarm; // Allarme trascinamento
106 public int safetyDoorAlarm; // Allarme porta sicurezza
107 public int safetyPlaneAlarm; // Allarme piano sicurezza
108 public int motonAlarm; // Allarme movimento
109 public int interfaceAlarm; // Allarme interferenza
110 public int udpCmdState; // Stato comando UDP
111 public int weldReadyState; // Stato pronto saldatura
112 public int alarmCheckEmergStopBtn; // Pulsante arresto emergenza controllo allarme
113 public int tsTmCmdComError; // Errore comunicazione comando
114 public int tsTmStateComError; // Errore comunicazione stato
115 public int ctrlBoxError; // Errore armadio di controllo
116 public int safetyDataState; // Stato dati sicurezza
117 public int forceSensorErrState; // Stato errore sensore di forza
118 public int[] ctrlOpenLuaErrCode = new int[4]; // Codice errore Lua open controllo
119 public int strangePosFlag; // Flag posizione singolare
120 public int alarm; // Allarme
121 public int driverAlarm; // Allarme driver
122 public int aliveSlaveNumError; // Errore numero slave attivi
123 public int[] slaveComError = new int[8]; // Errore comunicazione slave
124 public int cmdPointError; // Errore punto comando
125 public int IOError; // Errore IO
126 public int gripperError; // Errore pinza
127 public int fileError; // Errore file
128 public int paraError; // Errore parametro
129 public int exaxisOutLimitError; // Errore superamento limite morbido asse estensione
130 public int[] driverComError = new int[6]; // Errore comunicazione driver
131 public int driverError; // Errore driver
132 public int outSoftLimitError; // Errore superamento limite morbido
133 public byte[] axleGenComData = new byte[130]; // Dati comunicazione assi generali
134 public int check_sum; // Checksum
135 public int socketConnTimeout; // Timeout connessione socket
136 public int socketReadTimeout; // Timeout lettura socket
137 public int tsWebStateComErr; // Errore comunicazione stato TS Web
138}
2.15. Classe Risultato Configurazione Feedback Stato Robot
1/**
2* Classe risultato configurazione feedback stato robot, contiene lista stati e periodo
3*/
4public static class StateConfigResult {
5 public final List<RobotState> stateList;
6 public final int period;
7}
2.16. Tipo Enumerato Configurazione Feedback Stato Robot
1/**
2* Tipo enumerato stato robot
3* Utilizzato per la configurazione del feedback di stato in tempo reale
4*/
5public enum RobotState {
6 ProgramState,
7 RobotState,
8 MainCode,
9 SubCode,
10 RobotMode,
11 JointCurPos,
12 ToolCurPos,
13 FlangeCurPos,
14 ActualJointVel,
15 ActualJointAcc,
16 TargetTCPCmpSpeed,
17 TargetTCPSpeed,
18 ActualTCPCmpSpeed,
19 ActualTCPSpeed,
20 ActualJointTorque,
21 Tool,
22 User,
23 ClDgtOutputH,
24 ClDgtOutputL,
25 TlDgtOutputL,
26 ClDgtInputH,
27 ClDgtInputL,
28 TlDgtInputL,
29 ClAnalogInput,
30 TlAnglogInput,
31 FtSensorRawData,
32 FtSensorData,
33 FtSensorActive,
34 EmergencyStop,
35 MotionDone,
36 GripperMotiondone,
37 McQueueLen,
38 CollisionState,
39 TrajectoryPnum,
40 SafetyStop0State,
41 SafetyStop1State,
42 GripperFaultId,
43 GripperFault,
44 GripperActive,
45 GripperPosition,
46 GripperSpeed,
47 GripperCurrent,
48 GripperTemp,
49 GripperVoltage,
50 AuxState,
51 ExtAxisStatus,
52 ExtDIState,
53 ExtDOState,
54 ExtAIState,
55 ExtAOState,
56 RbtEnableState,
57 JointDriverTorque,
58 JointDriverTemperature,
59 RobotTime,
60 SoftwareUpgradeState,
61 EndLuaErrCode,
62 ClAnalogOutput,
63 TlAnalogOutput,
64 GripperRotNum,
65 GripperRotSpeed,
66 GripperRotTorque,
67 WeldingBreakOffState,
68 TargetJointTorque,
69 SmartToolState,
70 WideVoltageCtrlBoxTemp,
71 WideVoltageCtrlBoxFanCurrent,
72 ToolCoord,
73 WobjCoord,
74 ExtoolCoord,
75 ExAxisCoord,
76 Load,
77 LoadCog,
78 LastServoTarget,
79 ServoJCmdNum,
80 TargetJointPos,
81 TargetJointVel,
82 TargetJointAcc,
83 TargetJointCurrent,
84 ActualJointCurrent,
85 ActualTCPForce,
86 TargetTCPPos,
87 CollisionLevel,
88 SpeedScaleManual,
89 SpeedScaleAuto,
90 LuaLineNum,
91 AbnomalStop,
92 CurrentLuaFileName,
93 ProgramTotalLine,
94 SafetyBoxSingal,
95 WeldVoltage,
96 WeldCurrent,
97 WeldTrackVel,
98 TpdException,
99 AlarmRebootRobot,
100 ModbusMasterConnect,
101 ModbusSlaveConnect,
102 BtnBoxStopSignal,
103 DragAlarm,
104 SafetyDoorAlarm,
105 SafetyPlaneAlarm,
106 MotonAlarm,
107 InterfaceAlarm,
108 UdpCmdState,
109 WeldReadyState,
110 AlarmCheckEmergStopBtn,
111 TsTmCmdComError,
112 TsTmStateComError,
113 SocketConnTimeout,
114 SocketReadTimeout,
115 TsWebStateComErr,
116 CtrlBoxError,
117 SafetyDataState,
118 ForceSensorErrState,
119 CtrlOpenLuaErrCode,
120 StrangePosFlag,
121 Alarm,
122 DriverAlarm,
123 AliveSlaveNumError,
124 SlaveComError,
125 CmdPointError,
126 IOError,
127 GripperError,
128 FileError,
129 ParaError,
130 ExaxisOutLimitError,
131 DriverComError,
132 DriverError,
133 OutSoftLimitError,
134 AxleGenComData;
135}