[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYZY kinstype=BOTH
# Notes:
#  KINEMATICS coordinates=value  MUST agree with [TRAJ]COORDINATES
#
#  X: JOINT_0
#  Y: JOINT_1 and JOINT_3
#  Z: JOINT_2
#
#  kinstype=BOTH specifies non-identity kinematics
#
#  HOME ALL sequence:
#  HOME_SEQUENCE  0 (first)  JOINT_0             (coordinate X)
#  HOME_SEQUENCE -1 (second) JOINT_1 and JOINT_3 (coordinate Y)
#  HOME_SEQUENCE  2 (third)  JOINT_2             (coordinate Z)
#  The negative (-1) sequence indicates synchronization of
#  the final move for all joints in the sequence

[EMC]
VERSION = 1.1
MACHINE = LinuxCNC-GANTRY-SIM-qtvcp
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG = 0

[DISPLAY]
DISPLAY = qtvcp -d qtaxis
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtaxis_gantry.pref
CYCLE_TIME = 0.100
MAX_FEED_OVERRIDE = 1.2
PROGRAM_PREFIX = ../../nc_files/
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = 0.100 in, 0.010 in, 0.001 in, 0.0001 in
GEOMETRY = XYZ

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .dxf 3D Polygon Model
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode.py
gif = image-to-gcode.py
jpg = image-to-gcode.py
dxf = toolpaths.py
py = python3

[RS274NGC]
PARAMETER_FILE = sim.var

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

[TASK]
TASK = milltask
CYCLE_TIME = 0.001

[HAL]
HALFILE = gantrysim.hal
HALFILE = sim_spindle_encoder.hal
HALFILE = simulated-gantry-home.hal

[TRAJ]
# These two variables are a bit weird for gantry machines.
# The gantry machine that this sim config describes has only three axes (X,
# Y, and Z), but it uses two joints to implement the Y axis.
# The [TRAJ]COORDINATES variable only lists the axis names
# that are accepted in incoming G-code, and duplicate names here have no
# effect.
COORDINATES = XYZY
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.0
MAX_LINEAR_VELOCITY = 58
MAX_LINEAR_VELOCITY = 58

[EMCIO]
TOOL_TABLE = sim.tbl

[AXIS_X]
MIN_LIMIT = -0.01
MAX_LIMIT = 50.0
MAX_VELOCITY = 39
MAX_ACCELERATION = 120.0

[JOINT_0]
TYPE = LINEAR
MIN_LIMIT = -0.01
MAX_LIMIT = 50.0
MAX_VELOCITY = 39
MAX_ACCELERATION = 120.0
HOME               = 0
HOME_SEQUENCE      = 0
HOME_SEARCH_VEL    = -10
HOME_LATCH_VEL     =   5
HOME_OFFSET        = -0.1

[AXIS_Y]
MIN_LIMIT = -0.01
MAX_LIMIT = 50.0
MAX_VELOCITY = 39
MAX_ACCELERATION = 120.0

[JOINT_1]
TYPE = LINEAR
MIN_LIMIT     = -0.01
MAX_LIMIT     = 50.0
MAX_VELOCITY = 39
MAX_ACCELERATION = 120.0
HOME               = 0.0
HOME_SEQUENCE      = -1
HOME_SEARCH_VEL    = -0.1
HOME_LATCH_VEL     =  0.05
HOME_OFFSET        = -0.1

[AXIS_Z]
MIN_LIMIT = -50.0
MAX_LIMIT = 0.01
MAX_VELOCITY = 39
MAX_ACCELERATION = 120.0

[JOINT_2]
TYPE = LINEAR
MIN_LIMIT   = -50.0
MAX_LIMIT   = 0.01
MAX_VELOCITY     = 39
MAX_ACCELERATION = 120.0
HOME               = 0.0
HOME_SEQUENCE      = 2
HOME_SEARCH_VEL    =  0.1
HOME_LATCH_VEL     = -0.05
HOME_OFFSET        = 0.1

[JOINT_3]
TYPE = LINEAR
MIN_LIMIT   = -0.01
MAX_LIMIT   = 50
MAX_VELOCITY     = 39
MAX_ACCELERATION = 120.0
HOME               = 0.0
HOME_SEQUENCE      = -1
HOME_SEARCH_VEL    = -0.1
HOME_LATCH_VEL     =  0.05
HOME_OFFSET        = -0.1
