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}