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}