2. Beschreibung der Datenstrukturen
2.1. Datentyp für Gelenkpositionen
1/**
2* @brief Datentyp für Gelenkpositionen.
3*/
4struct JointPos
5{
6 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
7 public double[] jPos; /* Sechs Gelenkpositionen, Einheit deg */
8}
2.2. Datentyp für Positionen im kartesischen Raum
1/**
2* @brief Datentyp für Positionen im kartesischen Raum.
3*/
4struct DescTran
5{
6 public double x; /* x-Achsen-Koordinate, Einheit mm */
7 public double y; /* y-Achsen-Koordinate, Einheit mm */
8 public double z; /* z-Achsen-Koordinate, Einheit mm */
9}
2.3. Datentyp für Euler-Winkel-Ausrichtung
1/**
2* @brief Datentyp für Euler-Winkel-Ausrichtung.
3*/
4struct Rpy
5{
6 public double rx; /* Rotationswinkel um die feste X-Achse, Einheit: deg */
7 public double ry; /* Rotationswinkel um die feste Y-Achse, Einheit: deg */
8 public double rz; /* Rotationswinkel um die feste Z-Achse, Einheit: deg */
9}
2.4. Datentyp für Posen im kartesischen Raum
1/**
2* @brief Datentyp für Posen im kartesischen Raum.
3*/
4struct DescPose
5{
6 public DescTran tran; /* Position im kartesischen Raum */
7 public Rpy rpy; /* Ausrichtung im kartesischen Raum */
8}
2.5. Datentyp für Positionen der Erweiterungsachse
1/**
2* @brief Datentyp für Positionen der Erweiterungsachse.
3*/
4struct ExaxisPos
5{
6 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
7 public double[] ePos; /* Positionen der vier Erweiterungsachsen, Einheit mm */
8}
2.6. Datentyp für Kraft-/Drehmomentsensor
1/**
2* @brief Kraftkomponenten und Drehmomentkomponenten des Kraftsensors.
3*/
4struct ForceTorque
5{
6 public double fx; /* Kraftkomponente entlang der x-Achse, Einheit N */
7 public double fy; /* Kraftkomponente entlang der y-Achse, Einheit N */
8 public double fz; /* Kraftkomponente entlang der z-Achse, Einheit N */
9 public double tx; /* Drehmomentkomponente um die x-Achse, Einheit Nm */
10 public double ty; /* Drehmomentkomponente um die y-Achse, Einheit Nm */
11 public double tz; /* Drehmomentkomponente um die z-Achse, Einheit Nm */
12}
2.7. Datentyp für Spiralparameter
1public struct SpiralParam
2{
3 public int circle_num; /* Anzahl der Windungen */
4 public float circle_angle; /* Neigungswinkel der Spirale */
5 public float rad_init; /* Anfangsradius der Spirale, Einheit mm */
6 public float rad_add; /* Radiusinkrement */
7 public float rotaxis_add; /* Inkrement in Richtung der Drehachse */
8 public uint rot_direction; /* Drehrichtung, 0-im Uhrzeigersinn, 1-gegen Uhrzeigersinn */
9 public int velAccMode; // Modus für Geschwindigkeit/Beschleunigung: 0-Winkelgeschwindigkeit konstant; 1-Lineargeschwindigkeit konstant
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. Datentyp für Erweiterungsachsen-Status
Neu in Version C#SDK-v1.0.6.
1/**
2* @brief Datentyp für den Status der Erweiterungsachse.
3*/
4[StructLayout(LayoutKind.Sequential, Pack = 1)]
5public struct ROBOT_AUX_STATE
6{
7 public byte servoId; // Servoantriebs-ID-Nummer
8 public int servoErrCode; // Fehlercode des Servoantriebs
9 public int servoState; // Status des Servoantriebs
10 public double servoPos; // Aktuelle Position des Servos
11 public float servoVel; // Aktuelle Geschwindigkeit des Servos
12 public float servoTorque; // Aktuelles Drehmoment des Servos
13}
2.9. Schweißunterbrechungsstatus
1[StructLayout(LayoutKind.Sequential, Pack = 1)]
2public struct WELDING_BREAKOFF_STATE
3{
4 public byte breakOffState; // Schweißunterbrechungsstatus
5 public byte weldArcState; // Lichtbogenunterbrechungsstatus beim Schweißen
6}
2.10. Strukturtyp für Roboterstatus-Rückmeldung
Neu in Version C#SDK-V1.1.4: Web-3.8.3
1/**
2* @brief Strukturtyp für die Roboterstatus-Rückmeldung.
3*/
4[StructLayout(LayoutKind.Sequential, Pack = 1)]
5public struct ROBOT_STATE_PKG
6{
7 public UInt16 frame_head; // Frame-Header 0x5A5A
8 public byte frame_cnt; // Frame-Zähler
9 public UInt16 data_len; // Datenlänge 5
10 public byte program_state; // Programmausführungsstatus, 1-gestoppt; 2-läuft; 3-pausiert
11 public byte robot_state; // Roboterbewegungsstatus, 1-gestoppt; 2-läuft; 3-pausiert; 4-Ziehemodus (Drag) 7
12 public int main_code; // Hauptfehlercode
13 public int sub_code; // Unterfehlercode
14 public byte robot_mode; // Robotermodus, 0-Automatikmodus; 1-Handmodus 16
15
16 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
17 public double[] jt_cur_pos; // Aktuelle Gelenkpositionen
18 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
19 public double[] tl_cur_pos; // Aktuelle Werkzeugpose
20 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
21 public double[] flange_cur_pos; // Aktuelle Pose des Endflansches
22 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
23 public double[] actual_qd; // Aktuelle Gelenkgeschwindigkeiten des Roboters
24 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
25 public double[] actual_qdd; // Aktuelle Gelenkbeschleunigungen des Roboters 16 + 8 * 6 * 5 = 256
26 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
27 public double[] target_TCP_CmpSpeed; // Resultierende TCP-Sollgeschwindigkeit des Roboters
28 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
29 public double[] target_TCP_Speed; // TCP-Sollgeschwindigkeit des Roboters (Komponenten)
30 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
31 public double[] actual_TCP_CmpSpeed; // Resultierende TCP-Istgeschwindigkeit des Roboters
32 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
33 public double[] actual_TCP_Speed; // TCP-Istgeschwindigkeit des Roboters (Komponenten)
34 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
35 public double[] jt_cur_tor; // Aktuelle Drehmomente
36 public int tool; // Werkzeugnummer
37 public int user; // Werkstücknummer
38 public byte cl_dgt_output_h; // Digitalausgänge 15-8
39 public byte cl_dgt_output_l; // Digitalausgänge 7-0
40 public byte tl_dgt_output_l; // Werkzeug-Digitalausgänge 7-0 (nur bit0-bit1 gültig)
41 public byte cl_dgt_input_h; // Digitaleingänge 15-8
42 public byte cl_dgt_input_l; // Digitaleingänge 7-0
43 public byte tl_dgt_input_l; // Werkzeug-Digitaleingänge 7-0 (nur bit0-bit1 gültig)
44 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
45 public UInt16[] cl_analog_input; // Analogeingänge des Steuerschranks
46 public UInt16 tl_anglog_input; // Analogeingang des Werkzeugs
47 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
48 public double[] ft_sensor_raw_data; // Rohdaten des Kraft-/Drehmomentsensors
49 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
50 public double[] ft_sensor_data; // Verarbeitete Daten des Kraft-/Drehmomentsensors
51 public byte ft_sensor_active; // Aktivierungsstatus des Kraft-/Drehmomentsensors, 0-Reset, 1-aktiviert
52 public byte EmergencyStop; // Not-Halt-Flag
53 public int motion_done; // In-Position-Signal
54 public byte gripper_motiondone; // Greifer-Bewegungsabschluss-Signal
55 public int mc_queue_len; // Länge der Bewegungswarteschlange
56 public byte collisionState; // Kollisionserkennung, 1-Kollision; 0-keine Kollision
57 public int trajectory_pnum; // Bahnpunktnummer
58 public byte safety_stop0_state; /* Sicherheitsstopp-Signal SI0 */
59 public byte safety_stop1_state; /* Sicherheitsstopp-Signal SI1 */
60 public byte gripper_fault_id; /* Fehlerhafte Greifernummer */
61 public UInt16 gripper_fault; /* Greiferfehler */
62 public UInt16 gripper_active; /* Greifer-Aktivierungsstatus */
63 public byte gripper_position; /* Greiferposition */
64 public byte gripper_speed; /* Greifergeschwindigkeit */
65 public byte gripper_current; /* Greiferstrom */
66 public int gripper_tmp; /* Greifertemperatur */
67 public int gripper_voltage; /* Greiferspannung */
68 public ROBOT_AUX_STATE auxState; /* Status der 485-Erweiterungsachse */
69 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
70 public EXT_AXIS_STATUS[] extAxisStatus; /* Status der UDP-Erweiterungsachsen */
71 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
72 public UInt16[] extDIState; // Erweiterte DI-Eingänge
73 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
74 public UInt16[] extDOState; // Erweiterte DO-Ausgänge
75 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
76 public UInt16[] extAIState; // Erweiterte AI-Eingänge
77 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
78 public UInt16[] extAOState; // Erweiterte AO-Ausgänge
79 public int rbtEnableState; // Roboter-Aktivierungsstatus (Enable)
80 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
81 public double[] jointDriverTorque; // Drehmoment der Gelenkantriebe
82 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
83 public double[] jointDriverTemperature; // Temperatur der Gelenkantriebe
84 public ROBOT_TIME robotTime; // Roboter-Systemzeit
85 public int softwareUpgradeState; // Software-Upgrade-Status 0-im Leerlauf oder Upgrade-Paket wird hochgeladen; 1~100: Upgrade-Fortschritt in Prozent; -1: Software-Upgrade fehlgeschlagen; -2: Prüfsummenfehler; -3: Versionsprüfung fehlgeschlagen; -4: Entpacken fehlgeschlagen; -5: Benutzerkonfigurations-Upgrade fehlgeschlagen; -6: Peripherie-Konfigurations-Upgrade fehlgeschlagen; -7: Erweiterungsachsen-Konfigurations-Upgrade fehlgeschlagen; -8: Roboter-Konfigurations-Upgrade fehlgeschlagen; -9: DH-Parameter-Konfigurations-Upgrade fehlgeschlagen
86 public UInt16 endLuaErrCode; // LUA-Ausführungsstatus am Endeffektor
87 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
88 public UInt16[] cl_analog_output; // Analogausgänge des Steuerschranks
89 public UInt16 tl_analog_output; // Analogausgang des Werkzeugs
90 public float gripperRotNum; // Aktuelle Umdrehungszahl des Drehgreifers
91 public byte gripperRotSpeed; // Aktueller Rotationsgeschwindigkeitsprozentsatz des Drehgreifers
92 public byte gripperRotTorque; // Aktueller Rotationskraftprozentsatz des Drehgreifers
93 public WELDING_BREAKOFF_STATE weldingBreakOffState;// Schweißunterbrechungsstatus
94
95 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
96 public double[] jt_tgt_tor; // Gelenk-Solldrehmomente
97 public int smartToolState; // SmartTool-Griff-Tastenstatus
98 public float wideVoltageCtrlBoxTemp; // Temperatur des Weitbereichs-Steuerschranks
99 public UInt16 wideVoltageCtrlBoxFanVel; // Lüfterstrom des Weitbereichs-Steuerschranks (mA)
100
101 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
102 public double[] toolCoord; // Werkzeugkoordinatensystem
103 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
104 public double[] wobjCoord; // Werkstückkoordinatensystem
105 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
106 public double[] extoolCoord; // Externes Werkzeugkoordinatensystem
107 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
108 public double[] exAxisCoord; // Erweiterungsachsen-Koordinatensystem
109 public double load; // Nutzlastmasse
110
111 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
112 public double[] loadCog; // Nutzlastschwerpunkt
113 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
114 public double[] lastServoTarget; // Letzte servoJ-Zielposition in der Warteschlange
115
116 public int servoJCmdNum; // servoJ-Befehlszähler
117 public UInt16 check_sum; /* Summenprüfung */
118}