2. Descrição das Estruturas de Dados
2.1. Tipo de Dados para Posição das Juntas
1/**
2* @brief Tipo de dados para posição das juntas
3*/
4struct JointPos
5{
6 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
7 public double[] jPos; /* Posições das seis juntas, unidade deg */
8}
2.2. Tipo de Dados para Posição no Espaço Cartesiano
1/**
2* @brief Tipo de dados para posição no espaço cartesiano
3*/
4struct DescTran
5{
6 public double x; /* Coordenada do eixo X, unidade mm */
7 public double y; /* Coordenada do eixo Y, unidade mm */
8 public double z; /* Coordenada do eixo Z, unidade mm */
9}
2.3. Tipo de Dados para Postura em Ângulos de Euler
1/**
2* @brief Tipo de dados para postura em ângulos de Euler
3*/
4struct Rpy
5{
6public double rx; /* Ângulo de rotação em torno do eixo X fixo, unidade: deg */
7public double ry; /* Ângulo de rotação em torno do eixo Y fixo, unidade: deg */
8public double rz; /* Ângulo de rotação em torno do eixo Z fixo, unidade: deg */
9}
2.4. Tipo de Dados para Pose no Espaço Cartesiano
1/**
2*@brief Tipo de dados para pose no espaço cartesiano
3*/
4struct DescPose
5{
6 public DescTran tran; /* Posição no espaço cartesiano */
7 public Rpy rpy; /* Postura no espaço cartesiano */
8}
2.5. Tipo de Dados para Posição dos Eixos Extensores
1/**
2* @brief Tipo de dados para posição dos eixos extensores
3*/
4struct ExaxisPos
5{
6 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
7 public double[] ePos; /* Posições dos quatro eixos extensores, unidade mm */
8}
2.6. Tipo de Dados para o Sensor de Força/Torque
1/**
2* @brief Componentes de força e torque do sensor de força
3*/
4struct ForceTorque
5{
6 public double fx; /* Componente de força ao longo do eixo X, unidade N */
7 public double fy; /* Componente de força ao longo do eixo Y, unidade N */
8 public double fz; /* Componente de força ao longo do eixo Z, unidade N */
9 public double tx; /* Componente de torque em torno do eixo X, unidade Nm */
10 public double ty; /* Componente de torque em torno do eixo Y, unidade Nm */
11 public double tz; /* Componente de torque em torno do eixo Z, unidade Nm */
12}
2.7. Tipo de Dados para Parâmetros da Espiral
1public struct SpiralParam
2{
3 public int circle_num; /* Número de voltas da espiral */
4 public float circle_angle; /* Ângulo de inclinação da espiral */
5 public float rad_init; /* Raio inicial da espiral, unidade mm */
6 public float rad_add; /* Incremento do raio */
7 public float rotaxis_add; /* Incremento na direção do eixo de rotação */
8 public uint rot_direction; /* Direção de rotação, 0-horário, 1-anti-horário */
9 public int velAccMode; // Modo do parâmetro de velocidade/aceleração: 0-velocidade angular constante; 1-velocidade linear constante
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 de Dados para Estado do Eixo Extensor
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Tipo de dados para estado do eixo extensor
3*/
4[StructLayout(LayoutKind.Sequential, Pack = 1)]
5public struct ROBOT_AUX_STATE
6{
7 public byte servoId; // Número de ID do servo driver
8 public int servoErrCode; // Código de falha do servo driver
9 public int servoState; // Estado do servo driver
10 public double servoPos; // Posição atual do servo
11 public float servoVel; // Velocidade atual do servo
12 public float servoTorque; // Torque atual do servo
13}
2.9. Estado de Interrupção da Soldagem
1[StructLayout(LayoutKind.Sequential, Pack = 1)]
2public struct WELDING_BREAKOFF_STATE
3{
4 public byte breakOffState; // Estado de interrupção da soldagem
5 public byte weldArcState; // Estado de interrupção do arco de soldagem
6}
2.10. Tipo de Estrutura de Feedback de Estado do Robô
Novo na versão C#SDK-V1.1.4: Web-3.8.3
1/**
2* @brief Tipo de estrutura de feedback de estado do robô
3*/
4[StructLayout(LayoutKind.Sequential, Pack = 1)]
5public struct ROBOT_STATE_PKG
6{
7 public UInt16 frame_head; // Cabeçalho do quadro 0x5A5A
8 public byte frame_cnt; // Contagem do quadro
9 public UInt16 data_len; // Comprimento dos dados 5
10 public byte program_state; // Estado de execução do programa, 1-parado; 2-executando; 3-pausado
11 public byte robot_state; // Estado de movimento do robô, 1-parado; 2-executando; 3-pausado; 4-arrastando 7
12 public int main_code; // Código de falha principal
13 public int sub_code; // Código de falha secundário
14 public byte robot_mode; // Modo do robô, 0-modo automático; 1-modo manual 16
15
16 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
17 public double[] jt_cur_pos; // Posição atual das juntas
18 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
19 public double[] tl_cur_pos; // Pose atual da ferramenta
20 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
21 public double[] flange_cur_pos; // Pose atual da flange da extremidade
22 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
23 public double[] actual_qd; // Velocidade atual das juntas do robô
24 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
25 public double[] actual_qdd; // Aceleração atual das juntas do robô 16 + 8 * 6 * 5 = 256
26 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
27 public double[] target_TCP_CmpSpeed; // Velocidade linear combinada do TCP do robô (comando)
28 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
29 public double[] target_TCP_Speed; // Velocidade do TCP do robô (comando)
30 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
31 public double[] actual_TCP_CmpSpeed; // Velocidade linear combinada real do TCP do robô
32 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
33 public double[] actual_TCP_Speed; // Velocidade real do TCP do robô
34 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
35 public double[] jt_cur_tor; // Torque atual
36 public int tool; // Número da ferramenta
37 public int user; // Número da peça
38 public byte cl_dgt_output_h; // Saída digital 15-8
39 public byte cl_dgt_output_l; // Saída digital 7-0
40 public byte tl_dgt_output_l; // Saída digital da ferramenta 7-0 (apenas bits 0-1 são válidos)
41 public byte cl_dgt_input_h; // Entrada digital 15-8
42 public byte cl_dgt_input_l; // Entrada digital 7-0
43 public byte tl_dgt_input_l; // Entrada digital da ferramenta 7-0 (apenas bits 0-1 são válidos)
44 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
45 public UInt16[] cl_analog_input; // Entrada analógica do painel de controle
46 public UInt16 tl_anglog_input; // Entrada analógica da ferramenta
47 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
48 public double[] ft_sensor_raw_data; // Dados brutos do sensor de força/torque
49 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
50 public double[] ft_sensor_data; // Dados do sensor de força/torque
51 public byte ft_sensor_active; // Estado de ativação do sensor de força/torque, 0-reset, 1-ativado
52 public byte EmergencyStop; // Flag de parada de emergência
53 public int motion_done; // Sinal de movimento concluído
54 public byte gripper_motiondone; // Sinal de movimento da garra concluído
55 public int mc_queue_len; // Comprimento da fila de movimento
56 public byte collisionState; // Detecção de colisão, 1-colisão; 0-sem colisão
57 public int trajectory_pnum; // Número do ponto da trajetória
58 public byte safety_stop0_state; /* Sinal de parada de segurança SI0 */
59 public byte safety_stop1_state; /* Sinal de parada de segurança SI1 */
60 public byte gripper_fault_id; /* Número da garra com falha */
61 public UInt16 gripper_fault; /* Falha da garra */
62 public UInt16 gripper_active; /* Estado de ativação da garra */
63 public byte gripper_position; /* Posição da garra */
64 public byte gripper_speed; /* Velocidade da garra */
65 public byte gripper_current; /* Corrente da garra */
66 public int gripper_tmp; /* Temperatura da garra */
67 public int gripper_voltage; /* Tensão da garra */
68 public ROBOT_AUX_STATE auxState; /* Estado do eixo extensor 485 */
69 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
70 public EXT_AXIS_STATUS[] extAxisStatus; /* Estado do eixo extensor UDP */
71 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
72 public UInt16[] extDIState; // Entrada DI de extensão
73 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
74 public UInt16[] extDOState; // Saída DO de extensão
75 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
76 public UInt16[] extAIState; // Entrada AI de extensão
77 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
78 public UInt16[] extAOState; // Saída AO de extensão
79 public int rbtEnableState; // Estado de habilitação do robô
80 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
81 public double[] jointDriverTorque; // Torque do driver da junta
82 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
83 public double[] jointDriverTemperature; // Temperatura do driver da junta
84 public ROBOT_TIME robotTime; // Tempo do sistema do robô
85 public int softwareUpgradeState; // Estado da atualização de software 0-ocioso ou enviando pacote de atualização; 1~100: porcentagem de conclusão da atualização; -1: falha na atualização do software; -2: falha na verificação; -3: falha na verificação de versão; -4: falha na descompactação; -5: falha na atualização da configuração do usuário; -6: falha na atualização da configuração do periférico; -7: falha na atualização da configuração do eixo extensor; -8: falha na atualização da configuração do robô; -9: falha na atualização da configuração dos parâmetros DH
86 public UInt16 endLuaErrCode; // Estado de execução do LUA da extremidade
87 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
88 public UInt16[] cl_analog_output; // Saída analógica do painel de controle
89 public UInt16 tl_analog_output; // Saída analógica da ferramenta
90 public float gripperRotNum; // Número atual de rotações da garra rotativa
91 public byte gripperRotSpeed; // Percentual atual da velocidade de rotação da garra rotativa
92 public byte gripperRotTorque; // Percentual atual do torque de rotação da garra rotativa
93 public WELDING_BREAKOFF_STATE weldingBreakOffState;// Estado de interrupção da soldagem
94
95 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
96 public double[] jt_tgt_tor;// Torque de comando da junta
97 public int smartToolState; // Estado do botão da SmartTool
98 public float wideVoltageCtrlBoxTemp; // Temperatura do painel de controle de tensão ampla
99 public UInt16 wideVoltageCtrlBoxFanVel; // Corrente do ventilador do painel de controle de tensão ampla (mA)
100
101 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
102 public double[] toolCoord; // Sistema de coordenadas da ferramenta
103 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
104 public double[] wobjCoord; // Sistema de coordenadas da peça
105 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
106 public double[] extoolCoord; // Sistema de coordenadas da ferramenta externa
107 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
108 public double[] exAxisCoord; // Sistema de coordenadas do eixo extensor
109 public double load; // Massa da carga
110
111 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
112 public double[] loadCog; // Centro de massa da carga
113 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
114 public double[] lastServoTarget;// Última posição alvo do servoJ na fila
115
116 public int servoJCmdNum;// Contagem de comandos servoJ
117 public UInt16 check_sum; /* Checksum */
118}