2. Descrição das Estruturas de Dados
2.1. Tipo de Dados de Posição Articular
1/**
2* @brief Tipo de dados de posição articular
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 de Dados de Posição no Espaço Cartesiano
1/**
2* @brief Tipo de dados de posição no espaço cartesiano
3*/
4public class DescTran
5{
6 public double x = 0.0; /* Coordenada do eixo X, em mm */
7 public double y = 0.0; /* Coordenada do eixo Y, em mm */
8 public double z = 0.0; /* Coordenada do eixo Z, em 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 de Dados de Atitude de Ângulos de Euler
1/**
2* @brief Tipo de dados de atitude de ângulos de Euler
3*/
4public class Rpy
5{
6 public double rx = 0.0; /* Ângulo de rotação em torno do eixo X fixo, em graus */
7 public double ry = 0.0; /* Ângulo de rotação em torno do eixo Y fixo, em graus */
8 public double rz = 0.0; /* Ângulo de rotação em torno do eixo Z fixo, em graus */
9 public Rpy(double rotateX, double rotateY, double rotateZ)
10 {
11 rx = rotateX;
12 ry = rotateY;
13 rz = rotateZ;
14 }
15}
2.4. Tipo de Dados de Pose no Espaço Cartesiano
1/**
2*@brief Tipo de pose no espaço cartesiano
3*/
4public class DescPose
5{
6 public DescTran tran = new DescTran(0.0, 0.0, 0.0); /* Posição no espaço cartesiano */
7 public Rpy rpy = new Rpy(0.0, 0.0, 0.0); /* Atitude no espaço 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 de Dados de Posição do Eixo Estendido
1/**
2* @brief Tipo de dados de posição do eixo estendido
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 de Dados do Sensor de Torque
1/**
2* @brief Componentes de força e torque do sensor de força
3*/
4public class ForceTorque
5{
6 public double fx; /* Componente de força ao longo do eixo X, em N */
7 public double fy; /* Componente de força ao longo do eixo Y, em N */
8 public double fz; /* Componente de força ao longo do eixo Z, em N */
9 public double tx; /* Componente de torque em torno do eixo X, em Nm */
10 public double ty; /* Componente de torque em torno do eixo Y, em Nm */
11 public double tz; /* Componente de torque em torno do eixo Z, em 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 de Dados de Parâmetros da Espiral
1/**
2* @brief Tipo de dados de parâmetros da espiral
3*/
4public class SpiralParam
5{
6 public int circle_num; /* Número de voltas da espiral */
7 public double circle_angle; /* Ângulo de inclinação da espiral */
8 public double rad_init; /* Raio inicial da espiral, em mm */
9 public double rad_add; /* Incremento do raio */
10 public double rotaxis_add; /* Incremento na direção do eixo de rotação */
11 public int rot_direction; /* Direção de rotação, 0-horário, 1-anti-horário */
12 public int velAccMode; /* Modo de parâmetro de velocidade/aceleração: 0-velocidade angular constante; 1-velocidade linear constante */
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 de Estado do Eixo Estendido
1/**
2* @brief Tipo de estado do eixo estendido
3*/
4public class EXT_AXIS_STATUS
5{
6 public double pos = 0; // Posição do eixo estendido
7 public double vel = 0; // Velocidade do eixo estendido
8 public int errorCode = 0; // Código de falha do eixo estendido
9 public int ready = 0; // Servo pronto
10 public int inPos = 0; // Servo no lugar
11 public int alarm = 0; // Alarme do servo
12 public int flerr = 0; // Erro de seguimento
13 public int nlimit = 0; // Limite negativo atingido
14 public int pLimit = 0; // Limite positivo atingido
15 public int mdbsOffLine = 0; // Driver offline no barramento 485
16 public int mdbsTimeout = 0; // Tempo limite de comunicação 485 entre placa de controle e caixa de controle
17 public int homingStatus = 0; // Status de retorno à origem do eixo estendido
18}
2.9. Tipo de Sensor
1/**
2* @brief Tipo de sensor
3*/
4public class DeviceConfig
5{
6 int company = 0; // Fabricante
7 int device = 0; // Tipo/número do dispositivo
8 int softwareVersion = 0; // Versão do software
9 int bus = 0; // Local de montagem
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. Configuração do Eixo Estendido 485
1/**
2* @brief Configuração do eixo estendido 485
3*/
4public class Axis485Param
5{
6 int servoCompany; // Fabricante do servo driver, 1-Dynatec
7 int servoModel; // Modelo do servo driver, 1-FD100-750C
8 int servoSoftVersion; // Versão do software do servo driver, 1-V1.0
9 int servoResolution; // Resolução do codificador
10 double axisMechTransRatio; // Relação de transmissão mecânica
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. Estado do Controlador Servo
1/**
2* @brief Estado do controlador servo
3*/
4public class ROBOT_AUX_STATE
5{
6 public int servoId = 0; // Número de ID do servo driver
7 public int servoErrCode = 0; // Código de falha do servo driver
8 public int servoState = 0; // Estado do servo driver
9 public double servoPos = 0; // Posição atual do servo
10 public float servoVel = 0; // Velocidade atual do servo
11 public float servoTorque = 0; // Torque atual do servo
12}
2.12. Estado de Interrupção da Soldagem
1/**
2* @brief Estado de interrupção da soldagem
3*/
4public class WELDING_BREAKOFF_STATE
5{
6 public int breakOffState = 0; // Estado de interrupção da soldagem
7 public int weldArcState = 0; // Estado de interrupção do arco de soldagem
8}
2.13. Parâmetros de Comunicação UDP do Eixo Estendido
1/**
2* @brief Parâmetros de comunicação UDP do eixo estendido
3*/
4public class UDPComParam
5{
6 public String ip = "192.168.58.88"; // Endereço IP
7 public int port = 2021; // Número da porta
8 public int period = 2; // Período de comunicação (ms, padrão 2, não modifique este parâmetro)
9 public int lossPkgTime = 50; // Tempo de detecção de perda de pacote (ms)
10 public int lossPkgNum = 2; // Número de perdas de pacote
11 public int disconnectTime = 100; // Duração para confirmação de desconexão da comunicação
12 public int reconnectEnable = 0; // Ativação da reconexão automática em caso de desconexão 0-desativar 1-ativar
13 public int reconnectPeriod = 100; // Intervalo do período de reconexão (ms)
14 public int reconnectNum = 3; // Número de tentativas de reconexão
15 public int selfConnect = 0; // Estabelecer conexão automaticamente após reinicialização com perda de energia; 0-não estabelecer; 1-estabelecer
16}
2.14. Tipo de Estrutura de Retroalimentação de Estado do Robô
1/**
2* @brief Tipo de estrutura de feedback de estado do robô
3*/
4public class ROBOT_STATE_PKG {
5 public int frame_head; // Cabeçalho do quadro
6 public int frame_cnt; // Contagem de quadros
7 public int data_len; // Comprimento dos dados
8 public int program_state; // Estado do programa - 1-parado; 2-em execução; 3-pausado
9 public int robot_state; // Estado de movimento do robô - 1-parado; 2-em movimento; 3-pausado; 4-arrastando
10 public int main_code; // Código de falha principal
11 public int sub_code; // Código de falha secundário
12 public int robot_mode; // Modo do robô - 1-manual; 0-automático
13 public double[] jt_cur_pos = new double[6]; // Posições atuais das juntas de 6 eixos, unidade deg
14 public double[] tl_cur_pos = new double[6]; // Posição atual da ferramenta - [x,y,z,rx,ry,rz]
15 public double[] flange_cur_pos = new double[6]; // Posição atual da flange final - [x,y,z,rx,ry,rz]
16 public double[] actual_qd = new double[6]; // Velocidades atuais de 6 juntas, unidade deg/s
17 public double[] actual_qdd = new double[6]; // Acelerações atuais de 6 juntas, unidade deg/s^2
18 public double[] target_TCP_CmpSpeed = new double[2]; // Velocidade de comando composta TCP - [posição mm/s, orientação deg/s]
19 public double[] target_TCP_Speed = new double[6]; // Velocidade de comando TCP - [vx,vy,vz,wx,wy,wz]
20 public double[] actual_TCP_CmpSpeed = new double[2]; // Velocidade efetiva composta TCP - [posição mm/s, orientação deg/s]
21 public double[] actual_TCP_Speed = new double[6]; // Velocidade efetiva TCP - [vx,vy,vz,wx,wy,wz]
22 public double[] jt_cur_tor = new double[6]; // Torque atual da junta
23 public int tool; // ID da ferramenta
24 public int user; // ID da peça
25 public int cl_dgt_output_h; // Byte alto da saída digital do armário de controle
26 public int cl_dgt_output_l; // Byte baixo da saída digital do armário de controle
27 public int tl_dgt_output_l; // Byte baixo da saída digital da ferramenta
28 public int cl_dgt_input_h; // Byte alto da entrada digital do armário de controle
29 public int cl_dgt_input_l; // Byte baixo da entrada digital do armário de controle
30 public int tl_dgt_input_l; // Byte baixo da entrada digital da ferramenta
31 public int[] cl_analog_input = new int[2]; // Entrada analógica do armário de controle
32 public int tl_anglog_input; // Entrada analógica da ferramenta
33 public double[] ft_sensor_raw_data = new double[6]; // Dados brutos do sensor de força
34 public double[] ft_sensor_data = new double[6]; // Dados do sensor de força
35 public int ft_sensor_active; // Estado de ativação do sensor de força
36 public int EmergencyStop; // Estado de parada de emergência
37 public int motion_done; // Movimento concluído
38 public int gripper_motiondone; // Movimento da garra concluído
39 public int mc_queue_len; // Comprimento da fila de movimentos
40 public int collisionState; // Estado de colisão
41 public int trajectory_pnum; // Número de sequência do ponto de trajetória
42 public int safety_stop0_state; // Estado de parada de segurança 0
43 public int safety_stop1_state; // Estado de parada de segurança 1
44 public int gripper_fault_id; // ID de falha da garra
45 public int gripper_fault; // Falha da garra
46 public int gripper_active; // Ativação da garra
47 public int gripper_position; // Posição da garra
48 public int gripper_speed; // Velocidade da garra
49 public int gripper_current; // Corrente da garra
50 public int gripper_temp; // Temperatura da garra
51 public int gripper_voltage; // Tensão da garra
52 public AuxState aux_state = new AuxState(); // Estado dos eixos auxiliares internos
53 public EXT_AXIS_STATUS[] extAxisStatus = new EXT_AXIS_STATUS[4]; // Matriz de estado dos eixos de extensão
54 public short[] extDIState = new short[8]; // I/O estendidos
55 public short[] extDOState = new short[8]; // I/O estendidos
56 public short[] extAIState = new short[4]; // I/O estendidos
57 public short[] extAOState = new short[4]; // I/O estendidos
58 public int rbtEnableState; // Estado de habilitação do robô
59 public double[] jointDriverTorque = new double[6]; // Torque do driver da junta
60 public double[] jointDriverTemperature = new double[6]; // Temperatura do driver da junta
61 public ROBOT_TIME robotTime = new ROBOT_TIME(); // Objeto de tempo do robô
62 public int softwareUpgradeState; // Estado de atualização do software
63 public int endLuaErrCode; // Código de erro Lua da extremidade
64 public int[] cl_analog_output = new int[2]; // Saída analógica do armário de controle
65 public int tl_analog_output; // Saída analógica da ferramenta
66 public float gripperRotNum; // Número de rotações da garra rotativa
67 public int gripperRotSpeed; // Velocidade da garra rotativa
68 public int gripperRotTorque; // Torque da garra rotativa
69 public WELDING_BREAKOFF_STATE weldingBreakOffState = new WELDING_BREAKOFF_STATE(); // Estado de interrupção da soldagem
70 public double[] jt_tgt_tor = new double[6]; // Torque da junta alvo
71 public int smartToolState; // Estado da ferramenta inteligente
72 public float wideVoltageCtrlBoxTemp; // Temperatura do armário de controle de ampla tensão
73 public int wideVoltageCtrlBoxFanCurrent; // Corrente do ventilador do armário de controle de ampla tensão
74 public double[] toolCoord = new double[6]; // Sistema de coordenadas da ferramenta
75 public double[] wobjCoord = new double[6]; // Sistema de coordenadas da peça
76 public double[] extoolCoord = new double[6]; // Sistema de coordenadas da ferramenta externa
77 public double[] exAxisCoord = new double[6]; // Sistema de coordenadas do eixo de extensão
78 public double load; // Carga
79 public double[] loadCog = new double[3]; // Centro de gravidade da carga
80 public double[] lastServoTarget = new double[6]; // Última posição alvo servo J
81 public int servoJCmdNum; // Número de comandos servo J
82 public double[] targetJointPos = new double[6]; // Posição da junta alvo
83 public double[] targetJointVel = new double[6]; // Velocidade da junta alvo
84 public double[] targetJointAcc = new double[6]; // Aceleração da junta alvo
85 public double[] targetJointCurrent = new double[6]; // Corrente da junta alvo
86 public double[] actualJointCurrent = new double[6]; // Corrente efetiva da junta
87 public double[] actualTCPForce = new double[6]; // Força TCP efetiva
88 public double[] targetTCPPos = new double[6]; // Posição TCP alvo
89 public int[] collisionLevel = new int[6]; // Nível de colisão
90 public double speedScaleManual; // Escala de velocidade manual
91 public double speedScaleAuto; // Escala de velocidade automática
92 public int luaLineNum; // Número da linha Lua
93 public int abnomalStop; // Parada anormal
94 public String currentLuaFileName; // Nome do arquivo Lua atual
95 public int programTotalLine; // Linhas totais do programa
96 public int[] safetyBoxSingal = new int[6]; // Sinal da caixa de segurança
97 public double weldVoltage; // Tensão de soldagem
98 public double weldCurrent; // Corrente de soldagem
99 public double weldTrackVel; // Velocidade de rastreamento de soldagem
100 public int tpdException; // Exceção TPD
101 public int alarmRebootRobot; // Reinicialização do robô por alarme
102 public int modbusMasterConnect; // Conexão master Modbus
103 public int modbusSlaveConnect; // Conexão slave Modbus
104 public int btnBoxStopSignal; // Sinal de parada da caixa de botões
105 public int dragAlarm; // Alarme de arrasto
106 public int safetyDoorAlarm; // Alarme de porta de segurança
107 public int safetyPlaneAlarm; // Alarme de plano de segurança
108 public int motonAlarm; // Alarme de movimento
109 public int interfaceAlarm; // Alarme de interferência
110 public int udpCmdState; // Estado do comando UDP
111 public int weldReadyState; // Estado de prontidão da soldagem
112 public int alarmCheckEmergStopBtn; // Botão de parada de emergência de verificação de alarme
113 public int tsTmCmdComError; // Erro de comunicação de comando
114 public int tsTmStateComError; // Erro de comunicação de estado
115 public int ctrlBoxError; // Erro do armário de controle
116 public int safetyDataState; // Estado dos dados de segurança
117 public int forceSensorErrState; // Estado de erro do sensor de força
118 public int[] ctrlOpenLuaErrCode = new int[4]; // Código de erro Lua de controle aberto
119 public int strangePosFlag; // Flag de posição singular
120 public int alarm; // Alarme
121 public int driverAlarm; // Alarme do driver
122 public int aliveSlaveNumError; // Erro de número de escravos ativos
123 public int[] slaveComError = new int[8]; // Erro de comunicação do escravo
124 public int cmdPointError; // Erro de ponto de comando
125 public int IOError; // Erro de IO
126 public int gripperError; // Erro da garra
127 public int fileError; // Erro de arquivo
128 public int paraError; // Erro de parâmetro
129 public int exaxisOutLimitError; // Erro de limite suave do eixo de extensão excedido
130 public int[] driverComError = new int[6]; // Erro de comunicação do driver
131 public int driverError; // Erro do driver
132 public int outSoftLimitError; // Erro de limite suave excedido
133 public byte[] axleGenComData = new byte[130]; // Dados de comunicação do eixo geral
134 public int check_sum; // Checksum
135 public int socketConnTimeout; // Tempo limite de conexão do socket
136 public int socketReadTimeout; // Tempo limite de leitura do socket
137 public int tsWebStateComErr; // Erro de comunicação de estado TS Web
138}
2.15. Classe de Resultado da Configuração de Feedback de Estado do Robô
1/**
2* Classe de resultado da configuração de feedback de estado do robô, contendo lista de estados e período
3*/
4public static class StateConfigResult {
5 public final List<RobotState> stateList;
6 public final int period;
7}
2.16. Tipo de Enumeração da Configuração de Feedback de Estado do Robô
1/**
2* Tipo de enumeração de estado do robô
3* Usado para configuração de feedback de estado em tempo real
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}