2. Beschreibung der Datenstrukturen

2.1. Rückgabewerttyp von Schnittstellenaufrufen

1typedef int errno_t;

2.2. Datentyp für Gelenkpositionen

1/**
2* @brief Datentyp für Gelenkpositionen.
3*/
4typedef struct
5{
6    double jPos[6];   /* Sechs Gelenkpositionen, Einheit deg */
7} JointPos;

2.3. Datentyp für Positionen im kartesischen Raum

1/**
2* @brief Datentyp für Positionen im kartesischen Raum.
3*/
4typedef struct
5{
6    double x;    /* x-Achsen-Koordinate, Einheit mm  */
7    double y;    /* y-Achsen-Koordinate, Einheit mm  */
8    double z;    /* z-Achsen-Koordinate, Einheit mm  */
9} DescTran;

2.4. Datentyp für Euler-Winkel-Ausrichtung

1/**
2* @brief Datentyp für Euler-Winkel-Ausrichtung.
3*/
4typedef struct
5{
6    double rx;   /* Rotationswinkel um die feste X-Achse, Einheit: deg  */
7    double ry;   /* Rotationswinkel um die feste Y-Achse, Einheit: deg  */
8    double rz;   /* Rotationswinkel um die feste Z-Achse, Einheit: deg  */
9} Rpy;

2.5. Datentyp für Posen im kartesischen Raum

1/**
2* @brief Datentyp für Posen im kartesischen Raum.
3*/
4typedef struct
5{
6    DescTran tran;      /* Position im kartesischen Raum  */
7    Rpy rpy;            /* Ausrichtung im kartesischen Raum  */
8} DescPose;

2.6. Datentyp für Positionen der Erweiterungsachse

1/**
2* @brief Datentyp für Positionen der Erweiterungsachse.
3*/
4typedef struct
5{
6    double ePos[4];   /* Positionen der vier Erweiterungsachsen, Einheit mm */
7} ExaxisPos;

2.7. Datentyp für Kraft-/Drehmomentsensor

 1/**
 2* @brief Kraftkomponenten und Drehmomentkomponenten des Kraftsensors.
 3*/
 4typedef struct
 5{
 6    double fx;  /* Kraftkomponente entlang der x-Achse, Einheit N  */
 7    double fy;  /* Kraftkomponente entlang der y-Achse, Einheit N  */
 8    double fz;  /* Kraftkomponente entlang der z-Achse, Einheit N  */
 9    double tx;  /* Drehmomentkomponente um die x-Achse, Einheit Nm */
10    double ty;  /* Drehmomentkomponente um die y-Achse, Einheit Nm */
11    double tz;  /* Drehmomentkomponente um die z-Achse, Einheit Nm */
12} ForceTorque;

2.8. Datentyp für Spiralparameter

 1/**
 2* @brief Datentyp für Spiralparameter.
 3*/
 4typedef struct
 5{
 6    int    circle_num;           /* Anzahl der Windungen  */
 7    float  circle_angle;         /* Neigungswinkel der Spirale  */
 8    float  rad_init;             /* Anfangsradius der Spirale, Einheit mm  */
 9    float  rad_add;              /* Radiusinkrement  */
10    float  rotaxis_add;          /* Inkrement in Richtung der Drehachse  */
11    int    rot_direction;        /* Drehrichtung, 0-im Uhrzeigersinn, 1-gegen Uhrzeigersinn  */
12    int    velAccMode;            /* Modus für Geschwindigkeit/Beschleunigung: 0-Winkelgeschwindigkeit konstant; 1-Lineargeschwindigkeit konstant */
13} SpiralParam;

2.9. Status-Rückmeldungspaket der Steuerung

Geändert in Version C++SDK-v2.1.4.0.

  1/**
  2 * @brief Status-Rückmeldungspaket der Steuerung.
  3 */
  4typedef struct _ROBOT_STATE_PKG
  5{
  6    uint16_t frame_head;      // Frame-Header, vereinbart als 0x5A5A
  7    uint8_t  frame_cnt;       // Frame-Zähler, zyklisch 0-255
  8    uint16_t data_len;        // Länge des Dateninhalts
  9    uint8_t  program_state;   // Programmausführungsstatus, 1-gestoppt; 2-läuft; 3-pausiert;
 10    uint8_t  robot_state;     // Roboterbewegungsstatus, 1-gestoppt; 2-läuft; 3-pausiert; 4-Ziehemodus (Drag)
 11    int      main_code;       // Hauptfehlercode
 12    int      sub_code;        // Unterfehlercode
 13    uint8_t  robot_mode;      // Robotermodus, 1-Handmodus; 0-Automatikmodus;
 14    double   jt_cur_pos[6];   // Aktuelle Gelenkpositionen der 6 Achsen, Einheit deg
 15    double   tl_cur_pos[6];   // Aktuelle Werkzeugpose
 16                              // tl_cur_pos[0], Position entlang x-Achse, Einheit mm,
 17                              // tl_cur_pos[1], Position entlang y-Achse, Einheit mm,
 18                              // tl_cur_pos[2], Position entlang z-Achse, Einheit mm,
 19                              // tl_cur_pos[3], Rotationswinkel um die feste X-Achse, Einheit deg
 20                              // tl_cur_pos[4], Rotationswinkel um die feste Y-Achse, Einheit deg
 21                              // tl_cur_pos[5], Rotationswinkel um die feste Z-Achse, Einheit deg
 22    double   flange_cur_pos[6]; // Aktuelle Pose des Endflansches
 23                                // flange_cur_pos[0], Position entlang x-Achse, Einheit mm,
 24                                // flange_cur_pos[1], Position entlang y-Achse, Einheit mm,
 25                                // flange_cur_pos[2], Position entlang z-Achse, Einheit mm,
 26                                // flange_cur_pos[3], Rotationswinkel um die feste X-Achse, Einheit deg
 27                                // flange_cur_pos[4], Rotationswinkel um die feste Y-Achse, Einheit deg
 28                                // flange_cur_pos[5], Rotationswinkel um die feste Z-Achse, Einheit deg
 29    double   actual_qd[6];      // Aktuelle Geschwindigkeiten der 6 Gelenke, Einheit deg/s
 30    double   actual_qdd[6];     // Aktuelle Beschleunigungen der 6 Gelenke, Einheit deg/s^2
 31    double   target_TCP_CmpSpeed[2];
 32                                // target_TCP_CmpSpeed[0], TCP-resultierende Sollgeschwindigkeit (Position), Einheit mm/s
 33                                // target_TCP_CmpSpeed[1], TCP-resultierende Sollgeschwindigkeit (Ausrichtung), Einheit deg/s
 34    double   target_TCP_Speed[6];    // TCP-Sollgeschwindigkeit (Komponenten)
 35                                     // target_TCP_Speed[0], Geschwindigkeit entlang x-Achse, Einheit mm/s,
 36                                     // target_TCP_Speed[1], Geschwindigkeit entlang y-Achse, Einheit mm/s,
 37                                     // target_TCP_Speed[2], Geschwindigkeit entlang z-Achse, Einheit mm/s,
 38                                     // target_TCP_Speed[3], Rotationsgeschwindigkeit um die feste X-Achse, Einheit deg/s
 39                                     // target_TCP_Speed[4], Rotationsgeschwindigkeit um die feste Y-Achse, Einheit deg/s
 40                                     // target_TCP_Speed[5], Rotationsgeschwindigkeit um die feste Z-Achse, Einheit deg/s
 41    double   actual_TCP_CmpSpeed[2];
 42                                // actual_TCP_CmpSpeed[0], TCP-resultierende Istgeschwindigkeit (Position), Einheit mm/s
 43                                // actual_TCP_CmpSpeed[1], TCP-resultierende Istgeschwindigkeit (Ausrichtung), Einheit deg/s
 44    double   actual_TCP_Speed[6];    // TCP-Istgeschwindigkeit (Komponenten)
 45                                     // actual_TCP_Speed[0], Geschwindigkeit entlang x-Achse, Einheit mm/s,
 46                                     // actual_TCP_Speed[1], Geschwindigkeit entlang y-Achse, Einheit mm/s,
 47                                     // actual_TCP_Speed[2], Geschwindigkeit entlang z-Achse, Einheit mm/s,
 48                                     // actual_TCP_Speed[3], Rotationsgeschwindigkeit um die feste X-Achse, Einheit deg/s
 49                                     // actual_TCP_Speed[4], Rotationsgeschwindigkeit um die feste Y-Achse, Einheit deg/s
 50                                     // actual_TCP_Speed[5], Rotationsgeschwindigkeit um die feste Z-Achse, Einheit deg/s
 51    double   jt_cur_tor[6];      // Aktuelle Drehmomente der 6 Achsen, Einheit N·m
 52    int      tool;               // Nummer des angewendeten Werkzeugkoordinatensystems
 53    int      user;               // Nummer des angewendeten Werkstückkoordinatensystems
 54    uint8_t  cl_dgt_output_h;    // Digitale IO-Ausgänge des Steuerschranks 15-8
 55    uint8_t  cl_dgt_output_l;    // Digitale IO-Ausgänge des Steuerschranks 7-0
 56    uint8_t  tl_dgt_output_l;    // Digitale IO-Ausgänge des Werkzeugs 7-0, nur bit0-bit1 gültig
 57    uint8_t  cl_dgt_input_h;     // Digitale IO-Eingänge des Steuerschranks 15-8
 58    uint8_t  cl_dgt_input_l;     // Digitale IO-Eingänge des Steuerschranks 7-0
 59    uint8_t  tl_dgt_input_l;     // Digitale IO-Eingänge des Werkzeugs 7-0, nur bit0-bit1 gültig
 60    uint16_t cl_analog_input[2]; // cl_analog_input[0], Analogeingang 0 des Steuerschranks
 61                                 // cl_analog_input[1], Analogeingang 1 des Steuerschranks
 62    uint16_t tl_anglog_input;    // Analogeingang des Werkzeugs
 63    double   ft_sensor_raw_data[6]; // Rohdaten des Kraft-/Drehmomentsensors
 64                                  // ft_sensor_raw_data[0], Kraft entlang x-Achse, Einheit N
 65                                  // ft_sensor_raw_data[1], Kraft entlang y-Achse, Einheit N
 66                                  // ft_sensor_raw_data[2], Kraft entlang z-Achse, Einheit N
 67                                  // ft_sensor_raw_data[3], Drehmoment um x-Achse, Einheit Nm
 68                                  // ft_sensor_raw_data[4], Drehmoment um y-Achse, Einheit Nm
 69                                  // ft_sensor_raw_data[5], Drehmoment um z-Achse, Einheit Nm
 70    double   ft_sensor_data[6];     // Verarbeitete Daten des Kraft-/Drehmomentsensors
 71                                    // ft_sensor_data[0], Kraft entlang x-Achse, Einheit N
 72                                    // ft_sensor_data[1], Kraft entlang y-Achse, Einheit N
 73                                    // ft_sensor_data[2], Kraft entlang z-Achse, Einheit N
 74                                    // ft_sensor_data[3], Drehmoment um x-Achse, Einheit Nm
 75                                    // ft_sensor_data[4], Drehmoment um y-Achse, Einheit Nm
 76                                    // ft_sensor_data[5], Drehmoment um z-Achse, Einheit Nm
 77    uint8_t  ft_sensor_active;   // Aktivierungsstatus des Kraft-/Drehmomentsensors, 0-Reset, 1-aktiviert
 78    uint8_t  EmergencyStop;      // Not-Halt-Flag, 0-Not-Halt nicht gedrückt, 1-Not-Halt gedrückt
 79    int      motion_done;        // In-Position-Signal, 1-in Position, 0-nicht in Position
 80    uint8_t  gripper_motiondone; // Greifer-Bewegungsabschluss-Signal, 1-abgeschlossen, 0-nicht abgeschlossen
 81    int      mc_queue_len;       // Länge der Bewegungswarteschlange
 82    uint8_t  collisionState;     // Kollisionserkennung, 1-Kollision, 0-keine Kollision
 83    int      trajectory_pnum;    // Trajektorienpunktnummer
 84    uint8_t  safety_stop0_state; // Sicherheitsstopp-Signal SI0
 85    uint8_t  safety_stop1_state; // Sicherheitsstopp-Signal SI1
 86    uint8_t  gripper_fault_id;   // Fehlerhafte Greifernummer
 87    uint16_t gripper_fault;      // Greiferfehler
 88    uint16_t gripper_active;     // Greifer-Aktivierungsstatus
 89    uint8_t  gripper_position;   // Greiferposition
 90    int8_t   gripper_speed;      // Greifergeschwindigkeit
 91    int8_t   gripper_current;    // Greiferstrom
 92    int      gripper_temp;       // Greifertemperatur
 93    int      gripper_voltage;    // Greiferspannung
 94    robot_aux_state aux_state;   // Status der 485-Erweiterungsachse
 95    EXT_AXIS_STATUS extAxisStatus[4];  // Status der UDP-Erweiterungsachsen
 96    uint16_t extDIState[8];        // Erweiterte DI-Eingänge
 97    uint16_t extDOState[8];        // Erweiterte DO-Ausgänge
 98    uint16_t extAIState[4];        // Erweiterte AI-Eingänge
 99    uint16_t extAOState[4];        // Erweiterte AO-Ausgänge
100    int rbtEnableState;            // Roboter-Aktivierungsstatus (Enable)
101    double   jointDriverTorque[6];        // Drehmoment der Gelenkantriebe
102    double   jointDriverTemperature[6];   // Temperatur der Gelenkantriebe
103    RobotTime robotTime;           // Roboter-Systemzeit
104    int softwareUpgradeState;      // Roboter-Software-Upgrade-Status
105    uint16_t endLuaErrCode;        // LUA-Ausführungsstatus am Endeffektor
106    uint16_t cl_analog_output[2];  // Analogausgänge des Steuerschranks
107    uint16_t tl_analog_output;     // Analogausgang des Werkzeugs
108    float gripperRotNum;           // Aktuelle Umdrehungszahl des Drehgreifers
109    uint8_t gripperRotSpeed;       // Aktueller Rotationsgeschwindigkeitsprozentsatz des Drehgreifers
110    uint8_t gripperRotTorque;      // Aktueller Rotationskraftprozentsatz des Drehgreifers
111    WELDING_BREAKOFF_STATE weldingBreakOffState;  // Schweißunterbrechungsstatus
112    double jt_tgt_tor[6];                 // Gelenk-Solldrehmomente
113    int smartToolState;                   // SmartTool-Griff-Tastenstatus
114    float wideVoltageCtrlBoxTemp;         // Temperatur des Weitbereichs-Steuerschranks
115    uint16_t wideVoltageCtrlBoxFanCurrent;// Lüfterstrom des Weitbereichs-Steuerschranks (mA)
116    double toolCoord[6];        // Werkzeugkoordinatensystem
117    double wobjCoord[6];        // Werkstückkoordinatensystem
118    double extoolCoord[6];      // Externes Werkzeugkoordinatensystem
119    double exAxisCoord[6];      // Erweiterungsachsen-Koordinatensystem
120    double load;                // Nutzlastmasse
121    double loadCog[3];          // Nutzlastschwerpunkt
122    double lastServoTarget[6];  // Letzte ServoJ-Zielposition in der Warteschlange
123    int servoJCmdNum;           // ServoJ-Befehlszähler
124    uint16_t check_sum;         // Summenprüfung
125} ROBOT_STATE_PKG;