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;