[EMC]
VERSION = 1.1
MACHINE = sim-xyzab-tdr-kins (switchkins)

[DISPLAY]
            GEOMETRY = XYZA-B
           OPEN_FILE = ./demos/xyzab-tdr-demo.ngc
               PYVCP = ./xyzab-tdr.xml
             DISPLAY = axis
MAX_ANGULAR_VELOCITY =  360
 MAX_LINEAR_VELOCITY = 1000
     POSITION_OFFSET = RELATIVE
   POSITION_FEEDBACK = ACTUAL
   MAX_FEED_OVERRIDE = 2
      PROGRAM_PREFIX = ../../nc_files
       INTRO_GRAPHIC = emc2.gif
          INTRO_TIME = 1
         TOOL_EDITOR = tooledit z diam

[RS274NGC]
SUBROUTINE_PATH = ./remap_subs
          REMAP = M428  modalgroup=10  ngc=428remap
          REMAP = M429  modalgroup=10  ngc=429remap
 PARAMETER_FILE = xyzab-tdr.var

[KINS]
#NOTE:
#      switchkins-type == 0 is identity kins
#      switchkins-type == 1 is xyzab-tdr-kins

KINEMATICS = xyzab_tdr_kins
    JOINTS = 5

[HAL]
          HALUI = halui
        HALFILE = LIB:basic_sim.tcl
POSTGUI_HALFILE = xyzab-tdr-postgui.hal

# net for control of motion.switchkins-type
HALCMD = net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type

# Values '(x,z)-offsets' for geometric offset of the rotary-assembly and the
# values '(x,y,z)-rot-point' that describe the position of the
# rotation-point of the rotary-assembly can be changed using the sliders
# in the axis-gui.
# Default values (initval) and ranges (min,max) are set
# in the corresponding 'scale' sections in the file 'xyzab-tdr.xml'

# vismach xyzab-tdr-gui items
HALCMD = loadusr -W xyzab-tdr-gui
HALCMD = net  :axis-x       joint.0.pos-fb             xyzab-tdr-gui.axis-x
HALCMD = net  :axis-y       joint.1.pos-fb             xyzab-tdr-gui.axis-y
HALCMD = net  :axis-z       joint.2.pos-fb             xyzab-tdr-gui.axis-z
HALCMD = net  :rotary-a     joint.3.pos-fb             xyzab-tdr-gui.rotary-a
HALCMD = net  :rotary-b     joint.4.pos-fb             xyzab-tdr-gui.rotary-b
HALCMD = net  :tool-offset  motion.tooloffset.z        xyzab-tdr-gui.tool_length
HALCMD = net  :tool-diam    halui.tool.diameter        xyzab-tdr-gui.tool_diameter
HALCMD = net  :x-offset                                xyzab-tdr-gui.x_offset
HALCMD = net  :z-offset                                xyzab-tdr-gui.z_offset
HALCMD = net  :x-rot-point                             xyzab-tdr-gui.x-rot-point
HALCMD = net  :y-rot-point                             xyzab-tdr-gui.y-rot-point
HALCMD = net  :z-rot-point                             xyzab-tdr-gui.z-rot-point

# xyzab_tdr_kins items
HALCMD = net  :tool-offset  xyzab_tdr_kins.tool-offset-z
HALCMD = net  :x-offset     xyzab_tdr_kins.x-offset
HALCMD = net  :z-offset     xyzab_tdr_kins.z-offset
HALCMD = net  :x-rot-point  xyzab_tdr_kins.x-rot-point
HALCMD = net  :y-rot-point  xyzab_tdr_kins.y-rot-point
HALCMD = net  :z-rot-point  xyzab_tdr_kins.z-rot-point

# This is only used to preset the vismach model to the default values as set
# in the xml scale widgets
# These will be overwritten by the values in the xml
HALCMD = sets :x-offset     -20
HALCMD = sets :z-offset     -10

[HALUI]
# M429:identity  kins (motion.switchkins-type==0 startupDEFAULT)
# M428:xyzab-tdr kins (motion.switchkins-type==1)
MDI_COMMAND = M429
MDI_COMMAND = M428

[TRAJ]
                COORDINATES = XYZAB
               LINEAR_UNITS = mm
              ANGULAR_UNITS = deg
    DEFAULT_LINEAR_VELOCITY = 20
        MAX_LINEAR_VELOCITY = 35
    MAX_LINEAR_ACCELERATION = 400
DEFAULT_LINEAR_ACCELERATION = 300

[EMCMOT]
      EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT =       1

[TASK]
      TASK = milltask
CYCLE_TIME = 0.010

[EMCIO]
     EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = xyzab-tdr.tbl

[AXIS_X]
       MIN_LIMIT = -200
       MAX_LIMIT =  200
    MAX_VELOCITY =   20
MAX_ACCELERATION =  300

[AXIS_Y]
       MIN_LIMIT = -200
       MAX_LIMIT =  200
    MAX_VELOCITY =   20
MAX_ACCELERATION =  300

[AXIS_Z]
       MIN_LIMIT = -300
       MAX_LIMIT =  300
    MAX_VELOCITY =   20
MAX_ACCELERATION =  300

[AXIS_A]
       MIN_LIMIT = -3600
       MAX_LIMIT =  3600
    MAX_VELOCITY =    30
MAX_ACCELERATION =   300

[AXIS_B]
       MIN_LIMIT =   -180
       MAX_LIMIT =    180
    MAX_VELOCITY =     30
MAX_ACCELERATION =    300

[JOINT_0]
              TYPE = LINEAR
              HOME =    0
      MAX_VELOCITY =   20
  MAX_ACCELERATION =  300
         MIN_LIMIT = -200
         MAX_LIMIT =  200
   HOME_SEARCH_VEL =    0
     HOME_SEQUENCE =    0

[JOINT_1]
              TYPE = LINEAR
              HOME =    0
      MAX_VELOCITY =   20
  MAX_ACCELERATION =  300
         MIN_LIMIT = -200
         MAX_LIMIT =  200
   HOME_SEARCH_VEL =    0
     HOME_SEQUENCE =    0

[JOINT_2]
              TYPE = LINEAR
              HOME =    0
      MAX_VELOCITY =   20
  MAX_ACCELERATION =  300
         MIN_LIMIT = -300
         MAX_LIMIT =  300
   HOME_SEARCH_VEL =    0
     HOME_SEQUENCE =    0

[JOINT_3]
            TYPE = ANGULAR
            HOME =      0
    MAX_VELOCITY =     30
MAX_ACCELERATION =    300
       MIN_LIMIT =  -3600
       MAX_LIMIT =   3600
 HOME_SEARCH_VEL =      0
   HOME_SEQUENCE =      0

[JOINT_4]
            TYPE = ANGULAR
            HOME =      0
    MAX_VELOCITY =     30
MAX_ACCELERATION =    300
       MIN_LIMIT =   -180
       MAX_LIMIT =    180
 HOME_SEARCH_VEL =      0
   HOME_SEQUENCE =      0
