TYPE "UR__O2T_Robot"
VERSION : 0.1
   STRUCT
      "SSM: Speed slider fraction mask" : Bool;
      Reserved_1 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_2 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_3 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_4 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_5 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_6 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_7 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_8_15 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : USInt;
      Reserved_16_31 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
      "Speed slider fraction" : Real;
   END_STRUCT;

END_TYPE

TYPE "UR__O2T_ints"
VERSION : 0.1
   STRUCT
      Register : Array[0..11] of DInt;
   END_STRUCT;

END_TYPE

TYPE "UR__O2T_floats"
VERSION : 0.1
   STRUCT
      Register : Array[0..11] of Real;
   END_STRUCT;

END_TYPE

TYPE "UR__O2T_IOs"
VERSION : 0.1
   STRUCT
      "Standard digital output mask" : USInt;
      "Configurable digital output mask" : USInt;
      "Standard digital outputs" : USInt;
      "Configurable digital outputs" : USInt;
      "AOM: Analog output mask" : USInt;
      "AOT: Analog output types" : USInt;
      "TDOM: Tool digital output mask" : USInt;
      "TDO: Tool digital output" : USInt;
      "Standard analog output" : Array[0..1] of Real;
   END_STRUCT;

END_TYPE

TYPE "UR__O2T_bits"
VERSION : 0.1
   STRUCT
      Register : Array[0..31] of Bool;
   END_STRUCT;

END_TYPE

TYPE "UR_9_O2T_Registers"
VERSION : 0.1
   STRUCT
      Bits : "UR__O2T_bits";
      Ints : "UR__O2T_ints";
      Floats : "UR__O2T_floats";
   END_STRUCT;

END_TYPE

TYPE "UR__T2O_IOs"
VERSION : 0.1
   STRUCT
      "Standard digital inputs" : USInt;
      "Configurable digital inputs" : USInt;
      "Standard digital outputs" : USInt;
      "Configurable digital outputs" : USInt;
      "Analog I/O types" : USInt;
      Reserved_8_15 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : USInt;
      Reserved_16_31 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
      "Standard analog input [A or V]" : Array[0..1] of Real;
      "Standard analog output [A or V]" : Array[0..1] of Real;
      "I/O current [A]" : Real;
      "Euromap67 input bits" : Array[0..31] of Bool;
      "Euromap67 output bits" : Array[0..31] of Bool;
      "Euromap67 24V voltage" : Real;
      "Euromap67 24V current" : Real;
   END_STRUCT;

END_TYPE

TYPE "UR_8_O2T_Robot_IO"
VERSION : 0.1
   STRUCT
      Robot : "UR__O2T_Robot";
      IOs : "UR__O2T_IOs";
   END_STRUCT;

END_TYPE

TYPE "UR__T2O_Safety"
VERSION : 0.1
   STRUCT
      "Safety mode" : USInt;
      Reserved_1 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : USInt;
      Reserved_2 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
      "NO: Is normal mode" : Bool;
      "RD: Is reduced mode" : Bool;
      "PS: Is protective stopped" : Bool;
      "RC: Is recovery mode" : Bool;
      "SS: Is safeguard stopped" : Bool;
      "SES: Is system emergency stopped" : Bool;
      "RES: Is robot emergency stopped" : Bool;
      "ES: Is emergency stopped" : Bool;
      "VL: Is violation" : Bool;
      "FT: Is fault" : Bool;
      "ST: Is stopped due to safety" : Bool;
      Reserved_11 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_12 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_13 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_14 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_15 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_16_31 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
   END_STRUCT;

END_TYPE

TYPE "UR__T2O_Robot"
VERSION : 0.1
   STRUCT
      "Controller major version" : USInt;
      "Controller minor version" : USInt;
      Reserved { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
      "Robot mode" : USInt;
      "Real time machine seconds" : USInt;
      "Real time machine milliseconds" : UInt;
      "Real time machine minutes" : USInt;
      "Real time machine hours" : USInt;
      "Real time machine days" : UInt;
      "Robot current [A]" : Real;
      "PW: Is power on" : Bool;
      "PR: Is program running" : Bool;
      "TB: Is teach button pressed" : Bool;
      "PB: Is power button pressed" : Bool;
      Reserved_4 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_5 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_6 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_7 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Bool;
      Reserved_8_15 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : USInt;
      Reserved_16_31 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
      "Speed slider fraction" : Real;
   END_STRUCT;

END_TYPE

TYPE "UR__T2O_Tool"
VERSION : 0.1
   STRUCT
      "Tool mode" : USInt;
      Reserved_7_15 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : USInt;
      Reserved_16_31 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
      "TDI: Tool Digital Inputs" : USInt;
      "TDO: Tool Digital Outputs" : USInt;
      "TAIT: Tool Analog Input Types" : USInt;
      Reserved_24_31 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : USInt;
      "Tool analog input [A or V]" : Array[0..1] of Real;
      "Tool output voltage [V]" : Real;
      "Tool current [A]" : Real;
   END_STRUCT;

END_TYPE

TYPE "UR_O2T"
VERSION : 0.1
   STRUCT
      "Robot IO" : "UR_8_O2T_Robot_IO";
      "Reg 1" : "UR_9_O2T_Registers";
      "Reg 2" : "UR_9_O2T_Registers";
   END_STRUCT;

END_TYPE

TYPE "UR_4_T2O_TCP"
VERSION : 0.1
   STRUCT
      "TCP Position (X,Y,Z) [m]" : Array[0..2] of Real;
      "TCP Position (RX,RY,RZ) [rad]" : Array[0..2] of Real;
      "TCP velocity (X,Y,Z) [m/s]" : Array[0..2] of Real;
      "TCP velocity (RX,RY,RZ) [rad/s]" : Array[0..2] of Real;
      "TCP force (X,Y,Z) [N]" : Array[0..2] of Real;
      "TCP torque (X,Y,Z) [Nm]" : Array[0..2] of Real;
      "TCP force scalar [N]" : Real;
   END_STRUCT;

END_TYPE

TYPE "UR_3_T2O_Joints"
VERSION : 0.1
   STRUCT
      "Joint position [rad]" : Array[0..5] of Real;
      "Joint velocity [rad/s]" : Array[0..5] of Real;
      "Joint current [A]" : Array[0..5] of Real;
      "Joint temperature [°C]" : Array[0..5] of Real;
      "Joint mode" : Array[0..5] of USInt;
      Reserved_9 { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : UInt;
   END_STRUCT;

END_TYPE

TYPE "UR_2_T2O_IO"
VERSION : 0.1
   STRUCT
      IOs : "UR__T2O_IOs";
      Tool : "UR__T2O_Tool";
   END_STRUCT;

END_TYPE

TYPE "UR_5_T2O_BitRegisters"
VERSION : 0.1
   STRUCT
      Register : Array[0..63] of Bool;
   END_STRUCT;

END_TYPE

TYPE "UR_1_T2O_State"
VERSION : 0.1
   STRUCT
      Robot : "UR__T2O_Robot";
      Safety : "UR__T2O_Safety";
   END_STRUCT;

END_TYPE

TYPE "UR_7_T2O_FloatRegisters"
VERSION : 0.1
   STRUCT
      Register : Array[0..23] of Real;
   END_STRUCT;

END_TYPE

TYPE "UR_6_T2O_IntRegisters"
VERSION : 0.1
   STRUCT
      Register : Array[0..23] of DInt;
   END_STRUCT;

END_TYPE

TYPE "UR_T2O"
VERSION : 0.1
   STRUCT
      State { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : "UR_1_T2O_State";
      IO : "UR_2_T2O_IO";
      Joints : "UR_3_T2O_Joints";
      TCP : "UR_4_T2O_TCP";
      Bits : "UR_5_T2O_BitRegisters";
      Ints : "UR_6_T2O_IntRegisters";
      Floats : "UR_7_T2O_FloatRegisters";
   END_STRUCT;

END_TYPE

