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}