Complete sim config boundary coverage

This commit is contained in:
2026-06-11 06:12:06 +08:00
parent 5bd8f12872
commit 1ab5571ae1
76 changed files with 18975 additions and 146 deletions

View File

@@ -0,0 +1,17 @@
%
#<toolno> = 10
#<ct> = 0
#<howmany> = 5
g49
o100 while [[#<ct> lt #<howmany>] and [#<_task> ne 0]]
#<ct> = [#<ct> +1]
t#<toolno> m6 g43
(debug,ct=#<ct> zoff=#5403)
g4p[0.05*60] ;approx 0.05 minutes
t0m6
g10l0 ; reload tooldata (apply_db_rules)
o100 endwhile
g49
(debug, fini)
%

View File

@@ -0,0 +1,17 @@
#INCLUDE base.inc
[EMC]
VERSION = 1.1
MACHINE = db_nonran NONRANDOM toolchanger
[RS274NGC]
PARAMETER_FILE = db_nonran.var
SUBROUTINE_PATH = .
[EMCIO]
RANDOM_TOOLCHANGER = 0
DB_PROGRAM = ./db_nonran.py
# alternate spec using args:
# DB_PROGRAM = ./db_nonran.py --period_minutes=10 /tmp/db_nonran_special
# TOOL_TABLE= is not used with DB_PROGRAM

View File

@@ -0,0 +1,125 @@
[EMC]
VERSION = 1.1
MACHINE = LinuxCNC-PANEL-GLADEVCP
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG = 0
[DISPLAY]
GLADEVCP= -u hitcounter.py manual-example.ui
DISPLAY = axis
CYCLE_TIME = 0.100
HELP_FILE = doc/help.txt
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
MAX_SPINDLE_OVERRIDE = 1.0
MAX_LINEAR_VELOCITY = 1.2
DEFAULT_LINEAR_VELOCITY = .25
PROGRAM_PREFIX = ../../nc_files/
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
#EDITOR = geany
TOOL_EDITOR = tooledit
INCREMENTS = 1 in, 0.1 in, 10 mil, 1 mil, 1mm, .1mm, 1/8000 in
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[RS274NGC]
PARAMETER_FILE = sim.var
SUBROUTINE_PATH = ../../nc_files/gladevcp_lib
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
POSTGUI_HALFILE= manual-example.hal
[TRAJ]
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.2
POSITION_FILE = position.txt
MAX_LINEAR_VELOCITY = 1.2
NO_FORCE_HOMING = 1
[EMCIO]
TOOL_TABLE = sim.tbl
TOOL_CHANGE_POSITION = 0 0 0
TOOL_CHANGE_QUILL_UP = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
HOME = 0.000
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 1
[AXIS_Y]
HOME = 0.000
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 1
[AXIS_Z]
HOME = 0.0
MIN_LIMIT = -8.0
MAX_LIMIT = 0.0001
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -8.0
MAX_LIMIT = 0.0001
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 0

View File

@@ -0,0 +1,57 @@
; caveat - this changes feed and abs/relative mode
O<probe> SUB
(print, _Probe_Axis= #<_Probe_Axis>)
(print, _Probe_Speed = #<_Probe_Speed>)
(print, _Probe_Retract = #<_Probe_Retract>)
(print, _Probe_Distance = #<_Probe_Distance>)
(print, _Probe_Diameter = #<_Probe_Diameter>)
(print, _Probe_System = #<_Probe_System>)
O<xaxis> if [#<_Probe_Axis> eq 0]
G91 G38.3 X#<_Probe_Distance> F#<_Probe_Speed>
O<xresult> if [#5070]
(MSG, probe succeeded)
G10 L20 P#<_Probe_System> X#<_Probe_Diameter>
G90 G0 X#<_Probe_Retract>
O<xresult> else
(MSG,probe failed)
G91 G0 X[0 - #<_Probe_Distance>]
O<xresult> endif
G90
O<xaxis> endif
O<yaxis> if [#<_Probe_Axis> eq 1]
G91 G38.3 y#<_Probe_Distance> F#<_Probe_Speed>
O<yresult> if [#5070]
(MSG, probe succeeded)
G10 L20 P#<_Probe_System> y#<_Probe_Diameter>
G90 G0 y#<_Probe_Retract>
O<yresult> else
(MSG,probe failed)
G91 G0 y[0 - #<_Probe_Distance>]
O<yresult> endif
G90
O<yaxis> endif
O<zaxis> if [#<_Probe_Axis> eq 2]
G91 G38.3 z#<_Probe_Distance> F#<_Probe_Speed>
O<zresult> if [#5070]
(MSG, probe succeeded)
G10 L20 P#<_Probe_System> z#<_Probe_Diameter>
G90 G0 z#<_Probe_Retract>
O<zresult> else
(MSG,probe failed)
G91 G0 z[0 - #<_Probe_Distance>]
O<zresult> endif
G90
O<zaxis> endif
O<probe> endsub
M2

View File

@@ -0,0 +1,4 @@
T1 P1 D0.125000 Z+0.511000 ;1/8 end mill
T2 P2 D0.062500 Z+0.100000 ;1/16 end mill
T3 P3 D0.201000 Z+1.273000 ;#7 tap drill
T98876 P543 Z+0.100000 ;big tool number

View File

@@ -0,0 +1,27 @@
o<rcone> sub
#<rmax> = #1 (= 10)
#<rmin> = #2 (= 1)
#<del_r> = #3 (= 0.001)
#<del_z> = #4 (= -0.001)
#<del_theta> = #5 (= +1 1:CCW -1:CW)
#<frate> = #6 (=100)
#<r> = #<rmax>
#<z> = 0
#<theta> = 0
f #<frate>
g0 x#<r> y0
o<10wh> while [#<r> gt #<rmin>]
#<r> = [#<r> - #<del_r>]
#<theta> = [#<theta> + #<del_theta>]
#<x> = [#<r> * cos[#<theta>]]
#<y> = [#<r> * sin[#<theta>]]
#<z> = [#<z> + #<del_z>]
;#<x> = [#<rmax> * cos[#<theta>]]
;#<y> = [#<rmax> * sin[#<theta>]]
;#<z> = [0 + #<del_z>]
g1 x#<x> y#<y> z#<z>
o<10wh> endwhile
o<rcone> endsub

View File

@@ -0,0 +1,11 @@
f1000
#<v> = 10
g0 x #<v> y 0 z 0
g1 x #<v> y #<v>
g1 x -#<v> y #<v>
g1 x -#<v> y -#<v>
g1 x #<v> y -#<v>
g1 x #<v> y 0
g0 z 0
o<rcone> call [#<v>][1][0.001][-0.001][+1][100]
m2

View File

@@ -0,0 +1,84 @@
[APPLICATIONS]
APP = halshow rose_engine.halshow
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 10
MAX_LINEAR_VELOCITY = 10
[KINS]
KINEMATICS = rosekins
JOINTS = 3
[EMC]
VERSION = 1.1
MACHINE = Roseengine
[DISPLAY]
DISPLAY = axis
OPEN_FILE = ./rcone_demo.ngc
POSITION_OFFSET = RELATIVE
MAX_LINEAR_VELOCITY = 10
DEFAULT_LINEAR_VELOCITY = 10
MAX_ANGULAR_VELOCITY = 72
DEFAULT_ANGULAR_VELOCITY = 72
MAX_FEED_OVERRIDE = 2
TOOL_EDITOR = tooledit
INCREMENTS = 1 in,0.1in,10mil,1mil
TKPKG = Ngcgui 1.0
NGCGUI_SUBFILE = rcone.ngc
NGCGUI_FONT = Helvetica -14 normal
[RS274NGC]
PARAMETER_FILE = /tmp/rose.var
SUBROUTINE_PATH = .
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
[EMCIO]
TOOL_TABLE = rose.tbl
[AXIS_X]
MAX_VELOCITY = 3
MAX_ACCELERATION = 30
[AXIS_Y]
MAX_VELOCITY = 3
MAX_ACCELERATION = 30
[AXIS_Z]
MAX_VELOCITY = 3
MAX_ACCELERATION = 30
# Notes:
# HOME_SEARCH_VEL=0 for immediate homing
# HOME_SEQUENCE=0 for homeall in gui
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 3
MAX_ACCELERATION = 30
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 3
MAX_ACCELERATION = 30
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
[JOINT_2]
TYPE = ANGULAR
MAX_VELOCITY = 72
MAX_ACCELERATION = 360
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0

View File

@@ -0,0 +1,93 @@
(Preamble)
G90 G64 P0.1 Q1
(Switch to Joint mode trivial kinematics)
M429
(When using "Joint" mode we need to make sure that)
(the offsets are set correctly for the pose we used)
(when we set up the Modified DH-Parameters for the )
("genserkins" kinematic where we cannot define 'Theta')
(-values.)
("M429" sets offsets to "G59.2" and resets those)
(to "G10 L2 P8 X0 Y-90 Z0 A0 B0 C0" so we match the DH-)
(Parameter model used in the genserkins kinematics)
(Note that this pose leaves Joint_3 and Joint_5 collinear)
(and that will cause the inverse kinematics to fail so we)
(need to make sure that the wrist does not start out at)
(zero degrees.)
(Note that we also change speed settings through HAL when)
(we switch kinematics)
(Set the start pose to make sure the kinematics can handle it)
G01 X0 Y0 Z0 A0 B0 C0 F1000
(Switch to Coordinated, i.e. cartesian, world mode)
M428
("M428" sets offsets to "G59.1" and resets those)
(to "G10 L2 P7 X0 Y0 Z0 A0 B0 C0")
(Origin is at bottom center of the robot base)
(So to use other, nonzero, offsets we need to declare after)
(each switch of the kinematics)
G0 X450 Y200 Z350 B10 C45
(Draw a cube of 150mm)
G91
G0 Y150
X150
Y-150
X-150
Z150
Y150
Z-150
Z150
X150
Z-150
Z150
Y-150
Z-150
Z150
X-150
(Switch to Joint mode trivial kinematics)
M429
(Go different pose)
G90
G0 X90 Y0 Z0 A0
(Switch to Coordinated, i.e. cartesian, world mode)
M428
(Draw a cube of 150mm)
G91
G0
Z-150
Y150
X150
Y-150
X-150
Z150
Y150
Z-150
Z150
X150
Z-150
Z150
Y-150
Z-150
Z150
X-150
(Switch to Joint mode trivial kinematics)
M429
(Go to start pose)
G90
G0 X0 Y0 Z0 A0
M2

View File

@@ -0,0 +1,143 @@
[EMC]
VERSION = 1.1
MACHINE = melfa (mm)
DEBUG = 0
[KINS]
KINEMATICS= genserkins
JOINTS= 6
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
HALFILE = melfa_dh.hal
HALCMD = loadusr -W melfagui
HALCMD = net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type
POSTGUI_HALFILE = melfa-postgui.hal
[RS274NGC]
PARAMETER_FILE = melfa.var
SUBROUTINE_PATH = ./remap_subs
HAL_PIN_VARS = 1
REMAP = M428 modalgroup=10 ngc=428remap
REMAP = M429 modalgroup=10 ngc=429remap
REMAP = M430 modalgroup=10 ngc=430remap
RS274NGC_STARTUP_CODE = G10 L2 P7 X0 Y0 Z0 A-180 B0 C0 G59.1 (debug, ini: startup offsets)
[HALUI]
MDI_COMMAND = M429
MDI_COMMAND = M428
MDI_COMMAND = M430
[DISPLAY]
DISPLAY = axis
GEOMETRY = XYZABC
CYCLE_TIME = 0.200
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 60.0
DEFAULT_ANGULAR_VELOCITY = 40.0
MAX_FEED_OVERRIDE = 2.0
PROGRAM_PREFIX = ./
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PYVCP = melfa.xml
EDITOR = geany
OPEN_FILE = example.ngc
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[TRAJ]
COORDINATES = X Y Z A B C
LINEAR_UNITS = mm
ANGULAR_UNITS = deg
DEFAULT_LINEAR_VELOCITY = 60.0
DEFAULT_ANGULAR_VELOCITY = 60.0
MAX_LINEAR_VELOCITY = 200.0
MAX_ANGULAR_VELOCITY = 100.0
DEFAULT_LINEAR_ACCELERATION = 200.0
MAX_LINEAR_ACCELERATION = 400.0
[EMCIO]
TOOL_TABLE = melfa.tbl
[JOINT_0]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -170.0
MAX_LIMIT = 170.0
HOME_SEQUENCE = 0
HOME_OFFSET = 0
HOME = 0
[JOINT_1]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -182.0
MAX_LIMIT = 45.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = -90.001
[JOINT_2]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -219.0
MAX_LIMIT = 76.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = 0.001
[JOINT_3]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -160.0
MAX_LIMIT = 160.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = 0.001
[JOINT_4]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -120.0
MAX_LIMIT = 120.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = 90.001
[JOINT_5]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = 0.001
[AXIS_X]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
[AXIS_Y]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
[AXIS_Z]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
[AXIS_A]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
[AXIS_B]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
[AXIS_C]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0

View File

@@ -0,0 +1,4 @@
T1 P1 Z100 D0.125 ;1/8 end mill
T2 P2 Z0.1 D0.0625 ;1/16 end mill
T3 P3 Z1.273 D0.201 ;#7 tap drill
T99999 P99999 Z0.1 ;big tool number

View File

@@ -0,0 +1,28 @@
;M428 by remap: select genserkins
o<428remap>sub
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
#<kinstype> = 0 ; genserkins
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M428:Missing [RS274NGC]FEATURE==8)
(debug,STOP)
M2
o1 endif
M66 E0 L0 ; force synch
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
G10 L2 P7 X0 Y0 Z0 A-180 B0 C0
G59.1
M66 E0 L0 ; force synch
; (debug, M428:genserkins)
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE 0]]
(debug,M428: Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<428remap>endsub

View File

@@ -0,0 +1,28 @@
;M429 by remap: select identity kins
o<429remap>sub
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
#<kinstype> = 1 ; identity kins
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M429:Missing [RS274NGC]FEATURE==8)
(debug,STOP)
M2
o1 endif
M66 E0 L0 ; force synch
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
G10 L2 P8 X0 Y-90 Z0 A0 B90 C0
G59.2
M66 E0 L0 ; force synch
; (debug, M429:identity kins)
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE 1]]
(debug,M429:Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<429remap>endsub

View File

@@ -0,0 +1,26 @@
;M430 by remap: select gensertool kins
o<430remap>sub
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
#<kinstype> = 2 ; gensertool kins
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M430:Missing [RS274NGC]FEATURE==8)
(debug,STOP)
M2
o1 endif
M66 E0 L0 ; force synch
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
M66 E0 L0 ; force synch
; (debug, M429:identity kins)
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE 2]]
(debug,M430:Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<430remap>endsub

View File

@@ -0,0 +1,212 @@
(setup work offsets to run sim w/o .var file)
G10 L2 P1 X-160 Y0 Z-230 (setup G54 for mill)
G10 L2 P2 X-275 Y0 Z-140 (setup G55 for turn)
(actual code starts here)
G21
G40
G64
M429 (turning)
G18 G8
G54
T05 M6 G43
G00 X20 Z25
G00 X13.5 Z1.0 S1000 M3
Z0.488
G94 G01 X-1.0 F1000.0
Z0.975
G00 X0.383 Z1.269
X13.5
Z0.0
G01 X-1.0
Z0.488
G00 X0.383 Z0.782
X13.5
Z1.0
Z2.0
X11.237
G01 Z-34.973 F1000.0
X12.2 Z-35.95
Z-37.95
X12.625
G00 X13.625 Z-36.95
Z2.0
X9.849
G01 Z-19.832
G00 X10.849 Z-18.832
Z2.0
X8.461
G01 Z-19.832
X9.849
G00 X10.849 Z-18.832
Z2.0
X7.073
G01 Z-10.296
G00 X8.073 Z-9.296
Z2.0
X5.685
G01 Z-8.784
G03 X7.073 Z-10.296 I-0.98513 K-2.29772
G00 X8.073 Z-9.296
Z2.0
X4.297
G01 Z-8.582
X4.7
G03 X5.685 Z-8.784 I-0.0 K-2.5
G00 X6.685 Z-7.784
Z2.0
X2.909
G01 Z-0.559
G00 X3.909 Z0.441
Z2.0
X1.521
G01 Z0.829
X2.909 Z-0.559
G00 X4.909 Z1.441
Z0.441
X2.909
G01 Z-0.559
X3.2 Z-0.85
Z-4.15
X2.909 Z-4.654
Z-8.11
G02 X4.2 Z-8.582 I1.29082 K1.52767
G01 X4.297
G00 X5.297 Z-7.582
Z-4.654
X3.909
G01 X2.909
X2.468 Z-5.418
G02 X2.2 Z-6.418 I1.73205 K-1.0
G01 Z-6.582
G02 X2.909 Z-8.11 I2.0 K0.0
G00 X3.909 Z-7.11
X7.073
Z-9.296
G01 Z-10.296
G03 X7.2 Z-11.082 I-2.3731 K-0.78638
G01 Z-11.382
G03 X7.073 Z-12.168 I-2.5 K0.0
G01 Z-19.832
X8.461
G00 X9.461 Z-18.832
Z-12.168
X8.073
G01 X7.073
G03 X6.485 Z-13.132 I-2.3731 K0.78638
G02 X5.685 Z-14.204 I3.57071 K-3.5
G01 Z-18.76
G02 X6.485 Z-19.832 I4.37094 K2.42793
G01 X7.073
G00 X8.073 Z-18.832
Z-14.204
X6.685
G01 X5.685
G02 X5.058 Z-16.482 I4.37075 K-2.42793
G02 X5.685 Z-18.76 I4.99775 K0.15
G00 X6.685 Z-17.76
X9.849
Z-18.832
G01 Z-19.832
X10.2
Z-20.132
X9.849 Z-20.74
Z-24.42
G00 X10.849 Z-23.42
Z-20.74
G01 X9.849
X8.787 Z-22.58
X9.849 Z-24.42
G00 X10.849 Z-23.42
X9.849
G01 Z-24.42
X10.2 Z-25.028
Z-27.328
G02 X9.849 Z-28.029 I5.70735 K-3.29514
G01 Z-32.917
G02 X11.214 Z-34.95 I6.0583 K2.594
G01 X11.237 Z-34.973
G00 X12.237 Z-33.973
Z-28.029
X10.849
G01 X9.849
G02 X9.319 Z-30.473 I6.05858 K-2.594
G02 X9.849 Z-32.917 I6.58858 K0.15
G00 X10.849 Z-31.917
Z-29.029
X11.237
Z2.0
X0.534 Z3.241
G01 X0.202 Z3.041 F150.0
G02 X1.081 Z0.919 I3.0 K0.0
G01 X3.0 Z-1.0
Z-4.0
X2.268 Z-5.268
G02 X2.0 Z-6.268 I1.73205 K-1.0
G01 Z-6.732
G02 X4.0 Z-8.732 I2.0 K0.0
G01 X4.5
G03 X6.285 Z-12.982 I-0.0 K-2.5
G02 Z-19.982 I3.57071 K-3.5
G01 X10.0
X8.5 Z-22.58
X10.0 Z-25.178
Z-27.178
G02 X11.014 Z-35.1 I5.70735 K-3.29514
G01 X12.0 Z-36.1
Z-38.1
G00 X15.0
Z10.0
M428 (milling)
g55
T10 m6 G43
g21 g17 g64 g90
s3400 m3
g0 z10
g0 x5 y0
g2 x-5 y0 i-5 j0 z-1 f500
g2 x5 y0 i5 j0 z-2
g2 x-5 y0 i-5 j0 z-3
g2 x5 y0 i5 j0 z-4
g2 x-5 y0 i-5 j0 z-4
g0 z10
g0 a90
g0 x5 y0
g2 x-5 y0 i-5 j0 z-1
g2 x5 y0 i5 j0 z-2
g2 x-5 y0 i-5 j0 z-3
g2 x5 y0 i5 j0 z-4
g2 x-5 y0 i-5 j0 z-4
g0 z10
g0 a180
g0 x5 y0
g2 x-5 y0 i-5 j0 z-1
g2 x5 y0 i5 j0 z-2
g2 x-5 y0 i-5 j0 z-3
g2 x5 y0 i5 j0 z-4
g2 x-5 y0 i-5 j0 z-4
g0 z10
g0 a270
g0 x5 y0
g2 x-5 y0 i-5 j0 z-1
g2 x5 y0 i5 j0 z-2
g2 x-5 y0 i-5 j0 z-3
g2 x5 y0 i5 j0 z-4
g2 x-5 y0 i-5 j0 z-4
g0 z10
g0 a360
M428 (milling)
G54
G0 X0 Z100 A0
M2
%

View File

@@ -0,0 +1,145 @@
[APPLICATIONS]
APP = halshow ./millturn.halshow
[EMC]
VERSION = 1.1
MACHINE = millturn (mm)
DEBUG = 0
[KINS]
KINEMATICS = millturn
JOINTS= 4
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
HALFILE = millturn.hal
HALCMD = net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type
POSTGUI_HALFILE = millturn-postgui.hal
[RS274NGC]
USER_M_PATH = ./mcodes
PARAMETER_FILE = millturn.var
SUBROUTINE_PATH = ./remap_subs
HAL_PIN_VARS = 1
REMAP = M428 modalgroup=10 ngc=428remap
REMAP = M429 modalgroup=10 ngc=429remap
# Set startup offsets
RS274NGC_STARTUP_CODE = G10 L2 P7 X-290 Y0 Z-160 A0 G59.1
[HALUI]
# MDI-COMMANDS 00, 01 (remapped) for switching kinematics and limits:
# M428: mill (kinstype==0 startupDEFAULT)
# M429: turn (kinstype==1)
MDI_COMMAND = M428
MDI_COMMAND = M429
# MDI-COMMANDS 02, 03 are for altering limits when switching
# Note that M129 and M129 are not meant to be called directly.
MDI_COMMAND = M128
MDI_COMMAND = M129
[DISPLAY]
DISPLAY = axis
GEOMETRY = XYZA
CYCLE_TIME = 0.200
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 60.0
DEFAULT_ANGULAR_VELOCITY = 40.0
MAX_FEED_OVERRIDE = 2.0
PROGRAM_PREFIX = ./
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PYVCP = millturn.xml
EDITOR = geany
OPEN_FILE = example.ngc
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = mm
ANGULAR_UNITS = deg
DEFAULT_LINEAR_VELOCITY = 60.0
DEFAULT_ANGULAR_VELOCITY = 60.0
MAX_LINEAR_VELOCITY = 200.0
MAX_ANGULAR_VELOCITY = 100.0
DEFAULT_LINEAR_ACCELERATION = 200.0
MAX_LINEAR_ACCELERATION = 400.0
[EMCIO]
TOOL_TABLE = millturn.tbl
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -300
MAX_LIMIT = 300
HOME_SEQUENCE = 0
HOME_OFFSET = 0
HOME = 0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -100
MAX_LIMIT = 100
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = 0
[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
MIN_LIMIT = -240
MAX_LIMIT = 0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = 0
[JOINT_3]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 0
HOME = 0.001
[AXIS_X]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
# define softlimits for default kinematic (mill)
MIN_LIMIT = -300
MAX_LIMIT = 300
# define softlimits for alternate kinematic (turn)
MIN_LIMIT_TURN = -240
MAX_LIMIT_TURN = 0
[AXIS_Y]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
# define softlimits for default kinematic (mill)
MIN_LIMIT = -100
MAX_LIMIT = 100
# define softlimits for alternate kinematic (turn)
MIN_LIMIT_TURN = -100
MAX_LIMIT_TURN = 100
[AXIS_Z]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0
# define softlimits for default kinematic (mill)
MIN_LIMIT = -240
MAX_LIMIT = 0
# define softlimits for alternate kinematic (turn)
MIN_LIMIT_TURN = -300
MAX_LIMIT_TURN = 300
[AXIS_A]
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 400.0

View File

@@ -0,0 +1,11 @@
T1 P1 X30 Z30 D0.1 I95.000000 J155.000000 Q1
T2 P2 X40 Z40 D0.1 I85.000000 J25.000000 Q2
T3 P3 X50 Z50 D0.1 I275.000000 J335.000000 Q3
T4 P4 X30 Z30 D0.1 I265.000000 J205.000000 Q4
T5 P5 X40 Z40 D0.1 I210.000000 J150.000000 Q5
T6 P6 X50 Z50 D0.1 I120.000000 J60.000000 Q6
T7 P7 X30 Z30 D0.1 I-30.000000 J30.000000 Q7
T8 P8 X40 Z40 D0.1 I240.000000 J300.000000 Q8
T9 P9 X50 Z50 D0.1 Q9
T10 P10 Z50 D5 ;5 mm end mill
T11 P11 Z80 D10

View File

@@ -0,0 +1,29 @@
;M428 by remap: select mill kins
o<428remap>sub
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
#<kinstype> = 0 ; mill
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M428:Missing)
(debug,STOP)
M2
o1 endif
M66 E0 L0 ; force synch
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
M128 ; switch limits
G10 L2 P7 X-290 Y0 Z-160 A0 ; reset home offset
G59.1 ; activate home offset
M66 E0 L0 ; force synch
;(debug, M428: mill)
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE 0]]
(debug,M428: Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<428remap>endsub

View File

@@ -0,0 +1,29 @@
;M429 by remap: select turn kins
o<429remap>sub
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
#<kinstype> = 1 ; turn kins
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M429:Missing [RS274NGC]FEATURE==8)
(debug,STOP)
M2
o1 endif
M66 E0 L0 ; force synch
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
M129 ; switch limits
G10 L2 P8 X-160 Y0 Z-290 A0 ; reset home offset
G59.2 ; activate home offset
M66 E0 L0 ; force synch
;(debug, M429: turn)
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE 1]]
(debug,M429:Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<429remap>endsub

View File

@@ -0,0 +1,159 @@
[EMC]
VERSION = 1.1
MACHINE = PUMA (pumakins,switchkins)
DEBUG = 0
[KINS]
KINEMATICS = pumakins
JOINTS = 6
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
HALFILE = puma_dh.hal
HALCMD = loadusr -W pumagui
HALCMD = net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type
POSTGUI_HALFILE = puma_postgui.hal
[RS274NGC]
USER_M_PATH = ./mcodes
SUBROUTINE_PATH = ./remap_subs
HAL_PIN_VARS = 1
REMAP = M428 modalgroup=10 ngc=428remap
REMAP = M429 modalgroup=10 ngc=429remap
REMAP = M430 modalgroup=10 ngc=430remap
PARAMETER_FILE = puma.var
# G21 reqd here since this is mm config and default G20
RS274NGC_STARTUP_CODE = G21 G10L2P0 x450 y100 z-495 a-180 (debug, ini: startup offsets)
[HALUI]
# MDI-COMMANDS 00,01,02 (remapped) do not alter limits when switching:
# M428:pumakins (kinstype==0 startupDEFAULT)
# M429:identity kins (kinstype==1)
# M430:userk kins (kinstype==2)
MDI_COMMAND = M428
MDI_COMMAND = M429
MDI_COMMAND = M430
# MDI-COMMANDS 03,04,05 ALTER limits when switching
MDI_COMMAND = M128
MDI_COMMAND = M129
MDI_COMMAND = M130
[DISPLAY]
DISPLAY = axis
CYCLE_TIME = 0.200
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 30.0
DEFAULT_ANGULAR_VELOCITY = 20.0
MAX_FEED_OVERRIDE = 2.0
PROGRAM_PREFIX = ../../nc_files/
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PYVCP = puma.xml
EDITOR = geany
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = X Y Z A B C
LINEAR_UNITS = mm
ANGULAR_UNITS = deg
DEFAULT_LINEAR_VELOCITY = 30.0
DEFAULT_ANGULAR_VELOCITY = 30.0
MAX_LINEAR_VELOCITY = 100.0
MAX_ANGULAR_VELOCITY = 50.0
DEFAULT_LINEAR_ACCELERATION = 100.0
MAX_LINEAR_ACCELERATION = 200.0
[EMCIO]
TOOL_TABLE = puma.tbl
[JOINT_0]
TYPE = ANGULAR
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -170.0
MAX_LIMIT = 170.0
HOME_SEQUENCE = 0
HOME_OFFSET = 0
HOME = 0
[JOINT_1]
TYPE = ANGULAR
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -85
MAX_LIMIT = 50
HOME_OFFSET = 0
HOME = 0
HOME_SEQUENCE = 0
[JOINT_2]
TYPE = ANGULAR
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -70
MAX_LIMIT = 75
HOME_OFFSET = 0
HOME = 0
HOME_SEQUENCE = 0
[JOINT_3]
TYPE = ANGULAR
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -250
MAX_LIMIT = 250
HOME_SEQUENCE = 0
HOME = 0.000
[JOINT_4]
TYPE = ANGULAR
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -120
MAX_LIMIT = 120
HOME = 0.000
HOME_SEQUENCE = 0
[JOINT_5]
TYPE = ANGULAR
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -250
HOME = 0.000
HOME_SEQUENCE = 0
[AXIS_X]
MIN_LIMIT = 0
MAX_LIMIT = 650
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_Y]
MIN_LIMIT = -400
MAX_LIMIT = 400
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_Z]
MIN_LIMIT = -600
MAX_LIMIT = 400
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_A]
MIN_LIMIT = -250.0
MAX_LIMIT = 250.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_B]
MIN_LIMIT = -135.0
MAX_LIMIT = 135.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_C]
MIN_LIMIT = -250.0
MAX_LIMIT = 250.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0

View File

@@ -0,0 +1,4 @@
T1 P1 D0.125000 Z+0.511000 ;1/8 end mill
T2 P2 D0.062500 Z+0.100000 ;1/16 end mill
T3 P3 D0.201000 Z+1.273000 ;#7 tap drill
T99999 P99999 Z+0.100000 ;big tool number

View File

@@ -0,0 +1,138 @@
# NOTES:
# 1) [JOINT_4]HOME is a small value to avoid a singularity detected by pumakins
# 2) No [JOINT_N] or [AXIS_L] MIN_LIMIT,MAX_LIMIT items are used so that
# big system defaults apply and allow operation for many conditions that
# may not be representative of real hardware
# 3) ini vel/accel settings are for convenience and not realistic
# 4) To offset the initial homed position (0,0,0,0,0,0) for the coordinate
# coordinate system (p0), use coordinate setting commands:
# g10l2p0 x 450
# g10l2p0 y 100
# g10l2p0 z -495
# g10l2p0 a 180
# g10l2p0 b 0
# g10l2p0 c 0
[JOINT_0]
TYPE = ANGULAR
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 2000.0
HOME_SEQUENCE = 0
[JOINT_1]
TYPE = ANGULAR
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 2000.0
HOME_SEQUENCE = 0
[JOINT_2]
TYPE = ANGULAR
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 2000.0
HOME_SEQUENCE = 0
[JOINT_3]
TYPE= ANGULAR
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 2000.0
HOME_SEQUENCE = 0
[JOINT_4]
TYPE = ANGULAR
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 2000.0
HOME_SEQUENCE = 0
[JOINT_5]
TYPE = ANGULAR
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 2000.0
HOME_SEQUENCE = 0
[AXIS_X]
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_Y]
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_Z]
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_A]
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_B]
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[AXIS_C]
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 200.0
[DISPLAY]
OPEN_FILE = ./puma_cube.ngc
#alternate: OPEN_FILE = ./puma_seam_weld.ngc
DISPLAY = axis
CYCLE_TIME = 0.200
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.0
PROGRAM_PREFIX = ../../nc_files
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PYVCP = puma.xml
[EMC]
VERSION = 1.1
MACHINE = puma_cube.ini (pumakins)
[RS274NGC]
USER_M_PATH = ./mcodes
SUBROUTINE_PATH = ./remap_subs
HAL_PIN_VARS = 1
REMAP = M428 modalgroup=10 ngc=428remap
REMAP = M429 modalgroup=10 ngc=429remap
REMAP = M430 modalgroup=10 ngc=430remap
PARAMETER_FILE = puma.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
HALFILE = puma_dh.hal
HALCMD = loadusr -W pumagui
HALCMD = net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type
POSTGUI_HALFILE = puma_postgui.hal
[HALUI]
# MDI-COMMANDS 00,01,02 (remapped) do not alter limits when switching:
# M428:pumakins (kinstype==0 startupDEFAULT)
# M429:identity kins (kinstype==1)
# M430:userk kins (kinstype==2)
MDI_COMMAND = M428
MDI_COMMAND = M429
MDI_COMMAND = M430
# MDI-COMMANDS 03,04,05 ALTER limits when switching
MDI_COMMAND = M128
MDI_COMMAND = M129
MDI_COMMAND = M130
[TRAJ]
COORDINATES = X Y Z A B C
LINEAR_UNITS = mm
ANGULAR_UNITS = deg
DEFAULT_LINEAR_VELOCITY = 30.0
MAX_LINEAR_VELOCITY = 1000.0
MAX_ANGULAR_VELOCITY = 10
DEFAULT_LINEAR_ACCELERATION = 100.0
MAX_LINEAR_ACCELERATION = 2000.0
[EMCIO]
TOOL_TABLE = puma.tbl
[KINS]
KINEMATICS = pumakins
JOINTS = 6

View File

@@ -0,0 +1,57 @@
; set offsets for current coordinate system (p0)
; pumakins JOINT HOME positions:
; [JOINT_0]HOME=0
; [JOINT_1]HOME=0
; [JOINT_2]HOME=0
; [JOINT_3]HOME=0
; [JOINT_4]HOME=0
; [JOINT_5]HOME=0
; pumakins hal settings:
; 400 pumakins.A2
; 50 pumakins.A3
; 100 pumakins.D3
; 400 pumakins.D4
; 95 pumakins.D6
;
; The following g10l2 commands set offsets for the
; above HOME positions and hal settings to establish
; (x,y,z,a,b,c)=(0,0,0,0,0,0) for the current system (p0):
g10l2p0 x 450
g10l2p0 y 100
g10l2p0 z -495
g10l2p0 a 180
g10l2p0 b 0
g10l2p0 c 0
(debug, puma_cube.ngc Set G54 offsets)
#<xmin> = -100
#<xmax> = 100
#<ymin> = -100
#<ymax> = 100
#<zmin> = -100
#<zmax> = 100
#<feedrate> = 1000
f #<feedrate>
g0 x#<xmin> y#<ymin> z#<zmin>
g1 x#<xmax>
g1 y#<ymax>
g1 x#<xmin>
g1 y#<ymin>
g1 z#<zmax>
g1 x#<xmax>
g1 y#<ymax>
g1 x#<xmin>
g1 y#<ymin>
g0 x#<xmax> y#<ymax>
g1 z#<zmin>
g0 x#<xmin>
g1 z#<zmax>
g0 x#<xmax> y#<ymin>
g1 z#<zmin>
g0 x#<xmin> y#<ymin> z#<zmin>
m2

View File

@@ -0,0 +1,20 @@
;useable with sim config: puma.ini
;This is a test plot nc program to be run on backplot
;Author Rdp 21-Dec-2017
g0 x0 y0 z10
g0 x50 y50
a-30
g1 z-10 f500
x-50
a0 b-30
y-50
a30 b0
x50
a0 b30
y50
a-30 b0
g0 z30
x0 y0 a0 b0
m30

View File

@@ -0,0 +1,24 @@
;M428 by remap: select kinstype=0 (default)
o<428remap>sub
#<kinstype> = 0
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M428:Missing [RS274NGC]HAL_PIN_VARS=1)
(debug,STOP)
M2
o1 endif
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
M66 E0 L0 ; force synch
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE #<kinstype>]]
(debug,M428: Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<428remap>endsub

View File

@@ -0,0 +1,24 @@
;M429 by remap: select kinstype==1 (Identity kinematics)
o<429remap>sub
#<kinstype> = 1
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M429:Missing [RS274NGC]HAL_PIN_VARS=1)
(debug,STOP)
M2
o1 endif
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
M66 E0 L0 ; force synch
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE #<kinstype>]]
(debug,M429:Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<429remap>endsub

View File

@@ -0,0 +1,24 @@
;M430 by remap: select kinstype==2 (userk kins)
o<430remap>sub
#<kinstype> = 2
#<SWITCHKINS_PIN> = 3 ; set N as required: motion.analog-out-0N
o1 if [exists [#<_hal[motion.switchkins-type]>]]
o1 else
(debug,M30:Missing [RS274NGC]HAL_PIN_VARS=1)
(debug,STOP)
M2
o1 endif
M68 E#<SWITCHKINS_PIN> Q#<kinstype> ; set kinstype value
M66 E0 L0 ; force synch
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE #<kinstype>]]
(debug,M430:Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<430remap>endsub

View File

@@ -0,0 +1,31 @@
o<on_abort> sub
o100 if [#1 eq 5]
(machine on)
o100 elseif [#1 eq 6]
(machine off)
o100 elseif [#1 eq 7]
(estopped)
o100 elseif [#1 eq 8]
(msg,Process Aborted)
o100 else
(DEBUG,Abort Parameter is %d[#1])
o100 endif
o<on_abort> endsub
m2
These are potential abort number:
EMC_ABORT_TASK_EXEC_ERROR = 1,
EMC_ABORT_AUX_ESTOP = 2,
EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,
EMC_ABORT_TASK_STATE_OFF = 4,
EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,
EMC_ABORT_TASK_STATE_ESTOP = 6,
EMC_ABORT_TASK_STATE_NOT_ON = 7,
EMC_ABORT_TASK_ABORT = 8,
EMC_ABORT_INTERPRETER_ERROR = 9, // interpreter failed during readahead
EMC_ABORT_INTERPRETER_ERROR_MDI = 10, // interpreter failed during MDI execution
EMC_ABORT_USER = 100 // user-defined abort codes start here

View File

@@ -0,0 +1,255 @@
# This file was created with the 7i96 Wizard on Jun 10 2019 11:12:47
# Changes to most things are ok and will be read by the wizard
[EMC]
VERSION = 1.1
MACHINE = qtdragon
DEBUG = 0x00000000
[DISPLAY]
# sets qtdragon as screen. for debug output to terminal add -d or -v
# sets window title
# sets icon in task manager
DISPLAY = qtvcp qtdragon
TITLE = QtDragon XYYZ
ICON = silver_dragon.png
# qtdragon saves most preference to this file
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon.pref
# min/max percentage overrides allowed in qtdragon 1 = 100%
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.2
# manual spindle speed will start at this RPM
DEFAULT_SPINDLE_0_SPEED = 12000
# spindle up/down increment in RPM
SPINDLE_INCREMENT = 200
# min max apindle speed manually allowed
MIN_SPINDLE_0_SPEED = 1000
MAX_SPINDLE_0_SPEED = 20000
# max spindle power in Watts
MAX_SPINDLE_POWER = 2000
# min/max/default jog velocities in qtdragon in units/sec
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.0
# incremental jog step length options
INCREMENTS = 10 mm, 1.0 mm, 0.10 mm, 0.01 mm, 1.0 inch, 0.1 inch, 0.01 inch
CYCLE_TIME = 100
INTRO_GRAPHIC = silver_dragon.png
INTRO_TIME = 2
# default program search path
PROGRAM_PREFIX = ~/linuxcnc/nc_files
# NGCGUI subroutine path.
# Thr path must also be in [RS274NGC] SUBROUTINE_PATH
NGCGUI_SUBFILE_PATH = ../../../nc_files/ngcgui_lib/
# pre selected programs tabs
# specify filenames only, files must be in the NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc
# qtdragon saves MDI cxommands to this file
MDI_HISTORY_FILE = mdi_history.dat
# qtdragon saves rnning logs to this file
LOG_FILE = qtdragon.log
[MDI_COMMAND_LIST]
# for macro buttons on main oage up to 10 possible
MDI_COMMAND_MACRO0 = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero
MDI_COMMAND_MACRO1 = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMachn\nZero
[FILTER]
# Controls what programs are shown inqtdragon file manager
PROGRAM_EXTENSION = .ngc,.nc,.tap G-Code File (*.ngc,*.nc,*.tap)
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
# specifies what special 'filter' programs runs based on program ending
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[KINS]
KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH
JOINTS = 4
[EMCIO]
TOOL_TABLE = tool.tbl
[RS274NGC]
# motion controller saves parameters to this file
PARAMETER_FILE = qtdragon.var
# start up G/M codes when first loaded
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.0127 G80 G90 G94 G97 M5 M9
# subroutine/remap path list
SUBROUTINE_PATH = ../../../../nc_files/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs
# on abort, this ngc file is called. required for basic/versa probe
ON_ABORT_COMMAND=O <on_abort> call
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = XYYZ
LINEAR_UNITS = metric
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.00
SPINDLES = 1
[HAL]
HALUI = halui
HALBRIDGE = hal_bridge
# loads the HAL machine simulation
HALFILE = gantrysim.hal
HALFILE = simulated-xyyz-home.hal
# this file is loaded after qtdragon has made it's HAl pins
# you can add multiple entries
POSTGUI_HALFILE = qtdragon_postgui.hal
# this command is run after qtdragon has made it's HAl pins
# any HAL conmmand can be used
# you can add multiple entries
# uncomment this one to print all HAL pins that start with qt
#POSTGUI_HALCMD = show pin qt
[HALUI]
# no content
[PROBE]
# pick basic probe or versa probe or remove for none
#USE_PROBE = versaprobe
USE_PROBE = basicprobe
[AXIS_X]
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Y]
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Z]
# used by external offsets for auto spindle lift
OFFSET_AV_RATIO = 0.2
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
[JOINT_0]
AXIS = X
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = -0.1
HOME_SEARCH_VEL = -20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 2
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = -0.1
HOME_SEARCH_VEL = -20.00
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = -1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_2]
AXIS = Y
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = -0.1
HOME_SEARCH_VEL = -20.00
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = -1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_3]
AXIS = Z
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 48.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = -10.0
HOME_OFFSET = 0.1
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

View File

@@ -0,0 +1,4 @@
T1 P1 X0 Y0 Z0.51100 A0 B0 C0 U0 V0 W0 D10.00000 I0 J0 Q0 ;1/8 end mill
T2 P2 X0 Y0 Z0.10000 A0 B0 C0 U0 V0 W0 D0.06250 I0 J0 Q0 ;1/16 end mill
T3 P3 X0 Y0 Z1.27300 A0 B0 C0 U0 V0 W0 D0.20100 I0 J0 Q0 ;#7 tap drill
T4 P4 X0 Y0 Z3.00000 A0 B0 C0 U0 V0 W0 D4.00000 I0 J0 Q0 ;4" Face Mill

View File

@@ -0,0 +1,31 @@
o<on_abort> sub
o100 if [#1 eq 5]
(machine on)
o100 elseif [#1 eq 6]
(machine off)
o100 elseif [#1 eq 7]
(estopped)
o100 elseif [#1 eq 8]
(msg,Process Aborted)
o100 else
(DEBUG,Abort Parameter is %d[#1])
o100 endif
o<on_abort> endsub
m2
These are potential abort number:
EMC_ABORT_TASK_EXEC_ERROR = 1,
EMC_ABORT_AUX_ESTOP = 2,
EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,
EMC_ABORT_TASK_STATE_OFF = 4,
EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,
EMC_ABORT_TASK_STATE_ESTOP = 6,
EMC_ABORT_TASK_STATE_NOT_ON = 7,
EMC_ABORT_TASK_ABORT = 8,
EMC_ABORT_INTERPRETER_ERROR = 9, // interpreter failed during readahead
EMC_ABORT_INTERPRETER_ERROR_MDI = 10, // interpreter failed during MDI execution
EMC_ABORT_USER = 100 // user-defined abort codes start here

View File

@@ -0,0 +1,266 @@
# This file was created with the 7i96 Wizard on Jun 10 2019 11:12:47
# Changes to most things are ok and will be read by the wizard
[EMC]
VERSION = 1.1
MACHINE = qtdragon_inch
DEBUG = 0x00000000
[DISPLAY]
# sets qtdragon as screen. for debug output to terminal add -d or -v
# sets window title
# sets icon in task manager
DISPLAY = qtvcp qtdragon
TITLE = QtDragon XYZ Inch
ICON = silver_dragon.png
# qtdragon saves most preference to this file
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon.pref
# min/max percentage overrides allowed in qtdragon 1 = 100%
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.2
# manual spindle speed will start at this RPM
DEFAULT_SPINDLE_0_SPEED = 12000
# spindle up/down increment in RPM
SPINDLE_INCREMENT = 200
# min max apindle speed manually allowed
MIN_SPINDLE_0_SPEED = 1000
MAX_SPINDLE_0_SPEED = 20000
# max spindle power in Watts
MAX_SPINDLE_POWER = 2000
# min/max/default jog velocities in qtdragon in units/second
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 1.00
DEFAULT_LINEAR_VELOCITY = 0.25
# incremental jog step length options
INCREMENTS = 10 mm, 1.0 mm, 0.10 mm, 0.01 mm, 1.0 inch, 0.1 inch, 0.01 inch
# Display grid increments
GRIDS = 0, .1 mm, 1 mm, 2 mm, 5 mm, 10 mm, .25 in, .5 in
CYCLE_TIME = 100
INTRO_GRAPHIC = silver_dragon.png
INTRO_TIME = 2
# default program search path
PROGRAM_PREFIX = ~/linuxcnc/nc_files
# NGCGUI subroutine path.
# Thr path must also be in [RS274NGC] SUBROUTINE_PATH
NGCGUI_SUBFILE_PATH = ../../../nc_files/ngcgui_lib/
# pre selected programs tabs
# specify filenames only, files must be in the NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc
# qtdragon saves MDI cxommands to this file
MDI_HISTORY_FILE = mdi_history.dat
# qtdragon saves rnning logs to this file
LOG_FILE = qtdragon.log
# optional user dialogs (3), controlled by HAL pins
# persistent
MESSAGE_BOLDTEXT = Critical and Persistent
MESSAGE_TEXT = This is a persistent dialog test
MESSAGE_DETAILS = There seems to be something wrong\n You must fix it to clear message
MESSAGE_TYPE = nonedialog
MESSAGE_PINNAME = nonedialogtest
MESSAGE_ICON = CRITICAL
# yes no choice
MESSAGE_BOLDTEXT = Do You Want To Make A Choice?
MESSAGE_TEXT = This is a yes no dialog test
MESSAGE_DETAILS = Y/N DETAILS
MESSAGE_TYPE = yesnodialog
MESSAGE_PINNAME = yndialogtest
MESSAGE_ICON = QUESTION
# acknowledge
MESSAGE_BOLDTEXT = This is an information message
MESSAGE_TEXT = This is low priority
MESSAGE_DETAILS = press ok to clear
MESSAGE_TYPE = okdialog status
MESSAGE_PINNAME = bothtest
MESSAGE_ICON = INFO
# optional tab showing an external qtvcp panel
EMBED_TAB_NAME=Vismach demo
EMBED_TAB_COMMAND=qtvcp vismach_mill_xyz
EMBED_TAB_LOCATION=tabWidget_utilities
[MDI_COMMAND_LIST]
# for macro buttons on main oage up to 10 possible
MDI_COMMAND_MACRO0 = G0 Z2;X0 Y0;Z0, Goto\nUser\nZero
MDI_COMMAND_MACRO1 = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMachn\nZero
[FILTER]
# Controls what programs are shown inqtdragon file manager
PROGRAM_EXTENSION = .ngc,.nc,.tap G-Code File (*.ngc,*.nc,*.tap)
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
# specifies what special 'filter' programs runs based on program ending
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[KINS]
KINEMATICS = trivkins coordinates=XYZ
JOINTS = 3
[EMCIO]
TOOL_TABLE = tool.tbl
[RS274NGC]
# motion controller saves parameters to this file
PARAMETER_FILE = qtdragon.var
# start up G/M codes when first loaded
RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.0005 G80 G90 G94 G97 M5 M9
# subroutine/remap path list
SUBROUTINE_PATH = ../../../../nc_files/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs
# on abort, this ngc file is called. required for basic/versa probe
ON_ABORT_COMMAND=O <on_abort> call
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.00
SPINDLES = 1
[HAL]
HALUI = halui
HALBRIDGE = hal_bridge
# loads the HAL machine simulation
HALFILE = core_sim.hal
HALFILE = simulated_home.hal
# this file is loaded after qtdragon has made it's HAl pins
# you can add multiple entries
POSTGUI_HALFILE = qtdragon_postgui.hal
# this command is run after qtdragon has made it's HAl pins
# any HAL conmmand can be used
# you can add multiple entries
# uncomment this one to print all HAL pins that start with qt
#POSTGUI_HALCMD = show pin qt
[HALUI]
# no content
[PROBE]
# pick basic probe or versa probe or remove for none
#USE_PROBE = versaprobe
USE_PROBE = basicprobe
[AXIS_X]
MIN_LIMIT = -0.01
MAX_LIMIT = 20.0
MAX_VELOCITY = 2.5
MAX_ACCELERATION = 20
[AXIS_Y]
MIN_LIMIT = -0.01
MAX_LIMIT = 25.0
MAX_VELOCITY = 2.5
MAX_ACCELERATION = 20.0
[AXIS_Z]
# used by external offsets for auto spindle lift
OFFSET_AV_RATIO = 0.2
MIN_LIMIT = -4.5
MAX_LIMIT = 0.5
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 20.0
[JOINT_0]
AXIS = X
MIN_LIMIT = -0.01
MAX_LIMIT = 20.0
MAX_VELOCITY = 2.5
MAX_ACCELERATION = 20.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 2.75
STEPGEN_MAX_ACC = 24.0
FERROR = 0.050
MIN_FERROR = 0.010
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 0.75
HOME_OFFSET = 0.00000
HOME_SEARCH_VEL = 0.75
HOME_LATCH_VEL = 0.5
HOME_SEQUENCE = 1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.01
MAX_LIMIT = 25.0
MAX_VELOCITY = 2.5
MAX_ACCELERATION = 20.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 2.75
STEPGEN_MAX_ACC = 24.0
FERROR = 0.050
MIN_FERROR = 0.010
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 0.75
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.75
HOME_LATCH_VEL = 0.5
HOME_SEQUENCE = 2
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_2]
AXIS = Z
MIN_LIMIT = -4.5
MAX_LIMIT = 0.5
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 20.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 1.5
STEPGEN_MAX_ACC = 24.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = -0.5
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.75
HOME_LATCH_VEL = 0.5
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

View File

@@ -0,0 +1,4 @@
T1 P1 X0 Y0 Z0.51100 A0 B0 C0 U0 V0 W0 D10.00000 I0 J0 Q0 ;1/8 end mill
T2 P2 X0 Y0 Z0.10000 A0 B0 C0 U0 V0 W0 D0.06250 I0 J0 Q0 ;1/16 end mill
T3 P3 X0 Y0 Z1.27300 A0 B0 C0 U0 V0 W0 D0.20100 I0 J0 Q0 ;#7 tap drill
T4 P4 X0 Y0 Z3.00000 A0 B0 C0 U0 V0 W0 D4.00000 I0 J0 Q0 ;4" Face Mill

View File

@@ -0,0 +1,31 @@
o<on_abort> sub
o100 if [#1 eq 5]
(machine on)
o100 elseif [#1 eq 6]
(machine off)
o100 elseif [#1 eq 7]
(estopped)
o100 elseif [#1 eq 8]
(msg,Process Aborted)
o100 else
(DEBUG,Abort Parameter is %d[#1])
o100 endif
o<on_abort> endsub
m2
These are potential abort number:
EMC_ABORT_TASK_EXEC_ERROR = 1,
EMC_ABORT_AUX_ESTOP = 2,
EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,
EMC_ABORT_TASK_STATE_OFF = 4,
EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,
EMC_ABORT_TASK_STATE_ESTOP = 6,
EMC_ABORT_TASK_STATE_NOT_ON = 7,
EMC_ABORT_TASK_ABORT = 8,
EMC_ABORT_INTERPRETER_ERROR = 9, // interpreter failed during readahead
EMC_ABORT_INTERPRETER_ERROR_MDI = 10, // interpreter failed during MDI execution
EMC_ABORT_USER = 100 // user-defined abort codes start here

View File

@@ -0,0 +1,255 @@
# This file was created with the 7i96 Wizard on Jun 10 2019 11:12:47
# Changes to most things are ok and will be read by the wizard
[EMC]
VERSION = 1.1
MACHINE = qtdragon
DEBUG = 0x00000000
[DISPLAY]
# sets qtdragon as screen. for debug output to terminal add -d or -v
# sets window title
# sets icon in task manager
DISPLAY = qtvcp qtdragon
TITLE = QtDragon XYZA Rotational Axis
ICON = silver_dragon.png
# qtdragon saves most preference to this file
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon.pref
# min/max percentage overrides allowed in qtdragon 1 = 100%
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.2
# manual spindle speed will start at this RPM
DEFAULT_SPINDLE_0_SPEED = 12000
# spindle up/down increment in RPM
SPINDLE_INCREMENT = 200
# min max apindle speed manually allowed
MIN_SPINDLE_0_SPEED = 1000
MAX_SPINDLE_0_SPEED = 20000
# max spindle power in Watts
MAX_SPINDLE_POWER = 2000
# min/max/default jog velocities in qtdragon in units/sec
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 25.0
DEFAULT_ANGULAR_VELOCITY = 10
MIN_ANGULAR_VELOCITY = 1
MAX_ANGULAR_VELOCITY = 360
# incremental jog step length options
INCREMENTS = 10 mm, 1.0 mm, 0.10 mm, 0.01 mm, 1.0 inch, 0.1 inch, 0.01 inch
CYCLE_TIME = 100
INTRO_GRAPHIC = silver_dragon.png
INTRO_TIME = 2
# default program search path
PROGRAM_PREFIX = ~/linuxcnc/nc_files
# NGCGUI subroutine path.
# Thr path must also be in [RS274NGC] SUBROUTINE_PATH
NGCGUI_SUBFILE_PATH = ../../../nc_files/ngcgui_lib/
# pre selected programs tabs
# specify filenames only, files must be in the NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc
# qtdragon saves MDI cxommands to this file
MDI_HISTORY_FILE = mdi_history.dat
# qtdragon saves rnning logs to this file
LOG_FILE = qtdragon.log
[MDI_COMMAND_LIST]
# for macro buttons on main oage up to 10 possible
MDI_COMMAND_MACRO0 = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero
MDI_COMMAND_MACRO1 = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMachn\nZero
[FILTER]
# Controls what programs are shown inqtdragon file manager
PROGRAM_EXTENSION = .ngc,.nc,.tap G-Code File (*.ngc,*.nc,*.tap)
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
# specifies what special 'filter' programs runs based on program ending
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[KINS]
KINEMATICS = trivkins coordinates=XYZA
JOINTS = 4
[EMCIO]
TOOL_TABLE = tool.tbl
[RS274NGC]
# motion controller saves parameters to this file
PARAMETER_FILE = qtdragon.var
# start up G/M codes when first loaded
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.0127 G80 G90 G94 G97 M5 M9
# subroutine/remap path list
SUBROUTINE_PATH = ../../../../nc_files/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs
# on abort, this ngc file is called. required for basic/versa probe
ON_ABORT_COMMAND=O <on_abort> call
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
#NUM_AIO = 12
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = XYZA
LINEAR_UNITS = metric
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.00
SPINDLES = 1
[HAL]
HALUI = halui
HALBRIDGE = hal_bridge
# loads the HAL machine simulation
HALFILE = gantrysim.hal
HALFILE = simulated-gantry-home.hal
# this file is loaded after qtdragon has made it's HAl pins
# you can add multiple entries
POSTGUI_HALFILE = qtdragon_postgui.hal
# this command is run after qtdragon has made it's HAl pins
# any HAL conmmand can be used
# you can add multiple entries
# uncomment this one to print all HAL pins that start with qt
#POSTGUI_HALCMD = show pin qt
[HALUI]
# no content
[PROBE]
# pick basic probe or versa probe or remove for none
#USE_PROBE = versaprobe
USE_PROBE = basicprobe
[AXIS_X]
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Y]
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Z]
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
[AXIS_A]
MAX_VELOCITY = 60
MAX_ACCELERATION = 500.0
[JOINT_0]
AXIS = X
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = -0.1
HOME_SEARCH_VEL = -20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 2
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = -0.1
HOME_SEARCH_VEL = -20.00
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = -1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_2]
AXIS = Z
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 48.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = -10.0
HOME_OFFSET = 0.1
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_3]
TYPE = ANGULAR
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
INPUT_SCALE = 40
OUTPUT_SCALE = 1.0
FERROR = 5.0
MIN_FERROR = 1.0
HOME = 0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

View File

@@ -0,0 +1,4 @@
T1 P1 X0 Y0 Z0.51100 A0 B0 C0 U0 V0 W0 D10.00000 I0 J0 Q0 ;1/8 end mill
T2 P2 X0 Y0 Z0.10000 A0 B0 C0 U0 V0 W0 D0.06250 I0 J0 Q0 ;1/16 end mill
T3 P3 X0 Y0 Z1.27300 A0 B0 C0 U0 V0 W0 D0.20100 I0 J0 Q0 ;#7 tap drill
T4 P4 X0 Y0 Z3.00000 A0 B0 C0 U0 V0 W0 D4.00000 I0 J0 Q0 ;4" Face Mill

View File

@@ -0,0 +1,31 @@
o<on_abort> sub
o100 if [#1 eq 5]
(machine on)
o100 elseif [#1 eq 6]
(machine off)
o100 elseif [#1 eq 7]
(estopped)
o100 elseif [#1 eq 8]
(msg,Process Aborted)
o100 else
(DEBUG,Abort Parameter is %d[#1])
o100 endif
o<on_abort> endsub
m2
These are potential abort number:
EMC_ABORT_TASK_EXEC_ERROR = 1,
EMC_ABORT_AUX_ESTOP = 2,
EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,
EMC_ABORT_TASK_STATE_OFF = 4,
EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,
EMC_ABORT_TASK_STATE_ESTOP = 6,
EMC_ABORT_TASK_STATE_NOT_ON = 7,
EMC_ABORT_TASK_ABORT = 8,
EMC_ABORT_INTERPRETER_ERROR = 9, // interpreter failed during readahead
EMC_ABORT_INTERPRETER_ERROR_MDI = 10, // interpreter failed during MDI execution
EMC_ABORT_USER = 100 // user-defined abort codes start here

View File

@@ -0,0 +1,241 @@
# This file was created with the 7i96 Wizard on Jun 10 2019 11:12:47
# Changes to most things are ok and will be read by the wizard
[EMC]
VERSION = 1.1
MACHINE = qtdragon
DEBUG = 0x00000000
[DISPLAY]
# sets qtdragon_hd as screen. for debug output to terminal add -d or -v
# sets window title
# sets icon in task manager
DISPLAY = qtvcp qtdragon_hd_vert
TITLE = QtDragon HD Vertical: XYZ
ICON = silver_dragon.png
# qtdragon saves most preference to this file
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon_hd_vert.pref
# min/max percentage overrides allowed in qtdragon 1 = 100%
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.2
# manual spindle speed will start at this RPM
DEFAULT_SPINDLE_0_SPEED = 12000
# spindle up/down increment in RPM
SPINDLE_INCREMENT = 200
# min max apindle speed manually allowed
MIN_SPINDLE_0_SPEED = 1000
MAX_SPINDLE_0_SPEED = 20000
# max spindle power in Watts
MAX_SPINDLE_POWER = 2000
# min/max/default jog velocities in qtdragon in units/sec
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.0
#Prevent tool mark disappearing with small tool diameter in g-code preview widget
GCODE_VIEW_TOOL_MIN_DIA = 2.0
# incremental jog step length options
INCREMENTS = 10 mm, 1.0 mm, 0.10 mm, 0.01 mm, 1.0 inch, 0.1 inch, 0.01 inch
# Display grid increments
GRIDS = 0, .1 mm, 1 mm, 2 mm, 5 mm, 10 mm, .25 in, .5 in
CYCLE_TIME = 100
INTRO_GRAPHIC = silver_dragon.png
INTRO_TIME = 2
# default program search path
PROGRAM_PREFIX = ~/linuxcnc/nc_files
# NGCGUI subroutine path.
# Thr path must also be in [RS274NGC] SUBROUTINE_PATH
NGCGUI_SUBFILE_PATH = ../../../nc_files/ngcgui_lib/
# pre selected programs tabs
# specify filenames only, files must be in the NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc
# qtdragon saves MDI cxommands to this file
MDI_HISTORY_FILE = mdi_history.dat
# qtdragon saves rnning logs to this file
LOG_FILE = qtdragon_hd.log
[MDI_COMMAND_LIST]
# for macro buttons
MDI_COMMAND = G0 Z25 X0 Y0;Z0,Goto\nZero
MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMach\nZero
[FILTER]
# Controls what programs are shown inqtdragon file manager
PROGRAM_EXTENSION = .ngc,.nc,.tap G-Code File (*.ngc,*.nc,*.tap)
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
# specifies what special 'filter' programs runs based on program ending
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[KINS]
KINEMATICS = trivkins coordinates=XYZ
JOINTS = 3
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
[RS274NGC]
# motion controller saves parameters to this file
PARAMETER_FILE = qtdragon.var
# start up G/M codes when first loaded
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.0127 G80 G90 G94 G97 M5 M9
# subroutine/remap path list
SUBROUTINE_PATH = ../../../../nc_files/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs
# on abort, this ngc file is called. required for basic/versa probe
ON_ABORT_COMMAND=O <on_abort> call
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = metric
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.00
SPINDLES = 1
[HAL]
HALUI = halui
HALBRIDGE = hal_bridge
HALFILE = core_sim.hal
HALFILE = simulated_home.hal
# this file is loaded after qtdragon has made it's HAl pins
# you can add multiple entries
POSTGUI_HALFILE = qtdragon_hd_postgui.hal
# this command is run after qtdragon has made it's HAl pins
# any HAL conmmand can be used
# you can add multiple entries
# uncomment this one to print all HAL pins that start with qt
#POSTGUI_HALCMD = show pin qt
# uncomment to simulate probing
#POSTGUI_HALCMD = loadusr qtvcp test_probe
[HALUI]
# no content
[PROBE]
# pick basic probe or versa probe or remove for none
#USE_PROBE = versaprobe
USE_PROBE = basicprobe
[AXIS_X]
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Y]
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Z]
# used by external offsets for auto spindle lift and auto leveling
OFFSET_AV_RATIO = 0.2
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
[JOINT_0]
AXIS = X
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.00000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.00
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 2
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_2]
AXIS = Z
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 48.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = -10.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

View File

@@ -0,0 +1,4 @@
T1 P1 X0 Y0 Z0.51100 A0 B0 C0 U0 V0 W0 D10.00000 I0 J0 Q0 ;1/8 end mill
T2 P2 X0 Y0 Z0.10000 A0 B0 C0 U0 V0 W0 D0.06250 I0 J0 Q0 ;1/16 end mill
T3 P3 X0 Y0 Z1.27300 A0 B0 C0 U0 V0 W0 D0.20100 I0 J0 Q0 ;#7 tap drill
T4 P4 X0 Y0 Z3.00000 A0 B0 C0 U0 V0 W0 D4.00000 I0 J0 Q0 ;4" Face Mill

View File

@@ -0,0 +1,31 @@
o<on_abort> sub
o100 if [#1 eq 5]
(machine on)
o100 elseif [#1 eq 6]
(machine off)
o100 elseif [#1 eq 7]
(estopped)
o100 elseif [#1 eq 8]
(msg,Process Aborted)
o100 else
(DEBUG,Abort Parameter is %d[#1])
o100 endif
o<on_abort> endsub
m2
These are potential abort number:
EMC_ABORT_TASK_EXEC_ERROR = 1,
EMC_ABORT_AUX_ESTOP = 2,
EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,
EMC_ABORT_TASK_STATE_OFF = 4,
EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,
EMC_ABORT_TASK_STATE_ESTOP = 6,
EMC_ABORT_TASK_STATE_NOT_ON = 7,
EMC_ABORT_TASK_ABORT = 8,
EMC_ABORT_INTERPRETER_ERROR = 9, // interpreter failed during readahead
EMC_ABORT_INTERPRETER_ERROR_MDI = 10, // interpreter failed during MDI execution
EMC_ABORT_USER = 100 // user-defined abort codes start here

View File

@@ -0,0 +1,233 @@
# This file was created with the 7i96 Wizard on Jun 10 2019 11:12:47
# Changes to most things are ok and will be read by the wizard
[EMC]
VERSION = 1.1
MACHINE = qtdragon
DEBUG = 0x00000000
[DISPLAY]
# sets qtdragon_hd as screen. for debug output to terminal add -d or -v
# sets window title
# sets icon in task manager
DISPLAY = qtvcp -d qtdragon_hd
TITLE = QtDragon HD: XYZ
ICON = silver_dragon.png
# qtdragon saves most preference to this file
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon_hd.pref
# min/max percentage overrides allowed in qtdragon 1 = 100%
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.2
# manual spindle speed will start at this RPM
DEFAULT_SPINDLE_0_SPEED = 12000
# spindle up/down increment in RPM
SPINDLE_INCREMENT = 200
# min max apindle speed manually allowed
MIN_SPINDLE_0_SPEED = 1000
MAX_SPINDLE_0_SPEED = 20000
# max spindle power in Watts
MAX_SPINDLE_POWER = 2000
# min/max/default jog velocities in qtdragon in units/sec
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.0
# incremental jog step length options
INCREMENTS = 10 mm, 1.0 mm, 0.10 mm, 0.01 mm, 1.0 inch, 0.1 inch, 0.01 inch
CYCLE_TIME = 100
INTRO_GRAPHIC = silver_dragon.png
INTRO_TIME = 2
# default program search path
PROGRAM_PREFIX = ~/linuxcnc/nc_files
# NGCGUI subroutine path.
# Thr path must also be in [RS274NGC] SUBROUTINE_PATH
NGCGUI_SUBFILE_PATH = ../../../nc_files/ngcgui_lib/
# pre selected programs tabs
# specify filenames only, files must be in the NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc
# qtdragon saves MDI cxommands to this file
MDI_HISTORY_FILE = mdi_history.dat
# qtdragon saves rnning logs to this file
LOG_FILE = qtdragon_hd.log
[MDI_COMMAND_LIST]
# for macro buttons
MDI_COMMAND_MACRO0 = G0 Z25 X0 Y0;Z0,Goto\nZero
MDI_COMMAND_MACRO1 = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMach\nZero
[FILTER]
# Controls what programs are shown inqtdragon file manager
PROGRAM_EXTENSION = .ngc,.nc,.tap G-Code File (*.ngc,*.nc,*.tap)
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
# specifies what special 'filter' programs runs based on program ending
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[KINS]
KINEMATICS = trivkins coordinates=XYZ
JOINTS = 3
[EMCIO]
TOOL_TABLE = tool.tbl
[RS274NGC]
# motion controller saves parameters to this file
PARAMETER_FILE = qtdragon.var
# start up G/M codes when first loaded
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.0127 G80 G90 G94 G97 M5 M9
# subroutine/remap path list
SUBROUTINE_PATH = ../../../../nc_files/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs
# on abort, this ngc file is called. required for basic/versa probe
ON_ABORT_COMMAND=O <on_abort> call
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = metric
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.00
SPINDLES = 1
[HAL]
HALUI = halui
HALBRIDGE = hal_bridge
HALFILE = core_sim.hal
HALFILE = simulated_home.hal
# this file is loaded after qtdragon has made it's HAl pins
# you can add multiple entries
POSTGUI_HALFILE = qtdragon_hd_postgui.hal
# this command is run after qtdragon has made it's HAl pins
# any HAL conmmand can be used
# you can add multiple entries
# uncomment this one to print all HAL pins that start with qt
#POSTGUI_HALCMD = show pin qt
# uncomment to simulate probing
#POSTGUI_HALCMD = loadusr qtvcp test_probe
[HALUI]
# no content
[PROBE]
# pick basic probe or versa probe or remove for none
#USE_PROBE = versaprobe
USE_PROBE = basicprobe
[AXIS_X]
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Y]
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Z]
# used by external offsets for auto spindle lift and auto leveling
OFFSET_AV_RATIO = 0.2
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
[JOINT_0]
AXIS = X
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.00000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.00
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 2
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_2]
AXIS = Z
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 48.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = -10.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False

View File

@@ -0,0 +1,4 @@
T1 P1 X0 Y0 Z0.51100 A0 B0 C0 U0 V0 W0 D10.00000 I0 J0 Q0 ;1/8 end mill
T2 P2 X0 Y0 Z0.10000 A0 B0 C0 U0 V0 W0 D0.06250 I0 J0 Q0 ;1/16 end mill
T3 P3 X0 Y0 Z1.27300 A0 B0 C0 U0 V0 W0 D0.20100 I0 J0 Q0 ;#7 tap drill
T4 P4 X0 Y0 Z3.00000 A0 B0 C0 U0 V0 W0 D4.00000 I0 J0 Q0 ;4" Face Mill

View File

@@ -0,0 +1,31 @@
o<on_abort> sub
o100 if [#1 eq 5]
(machine on)
o100 elseif [#1 eq 6]
(machine off)
o100 elseif [#1 eq 7]
(estopped)
o100 elseif [#1 eq 8]
(msg,Process Aborted)
o100 else
(DEBUG,Abort Parameter is %d[#1])
o100 endif
o<on_abort> endsub
m2
These are potential abort number:
EMC_ABORT_TASK_EXEC_ERROR = 1,
EMC_ABORT_AUX_ESTOP = 2,
EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,
EMC_ABORT_TASK_STATE_OFF = 4,
EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,
EMC_ABORT_TASK_STATE_ESTOP = 6,
EMC_ABORT_TASK_STATE_NOT_ON = 7,
EMC_ABORT_TASK_ABORT = 8,
EMC_ABORT_INTERPRETER_ERROR = 9, // interpreter failed during readahead
EMC_ABORT_INTERPRETER_ERROR_MDI = 10, // interpreter failed during MDI execution
EMC_ABORT_USER = 100 // user-defined abort codes start here

View File

@@ -0,0 +1,239 @@
# This file was created with the 7i96 Wizard on Jun 10 2019 11:12:47
# Changes to most things are ok and will be read by the wizard
[EMC]
VERSION = 1.1
MACHINE = qtdragon
DEBUG = 0x00000000
[DISPLAY]
DISPLAY = qtvcp qtdragon
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon.pref
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MAX_RAPID_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.2
DEFAULT_SPINDLE_0_SPEED = 12000
SPINDLE_INCREMENT = 200
MIN_SPINDLE_0_SPEED = 1000
MAX_SPINDLE_0_SPEED = 20000
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.0
DEFAULT_LINEAR_JOG_VEL = 50.0
DEFAULT_ANGULAR_VELOCITY = 0
MIN_ANGULAR_VELOCITY = 0
MAX_ANGULAR_VELOCITY = 0
CYCLE_TIME = 100
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 2
PROGRAM_PREFIX = ~/linuxcnc/nc_files
INCREMENTS = 10 mm, 1.0 mm, 0.10 mm, 0.01 mm, 1.0 inch, 0.1 inch, 0.01 inch
MDI_HISTORY_FILE = mdi_history.dat
LOG_FILE = qtdragon.log
TOOL_EDITOR = tooledit
CONFIRM_EXIT = True
MESSAGE_BOLDTEXT = Critical and Persistent
MESSAGE_TEXT = This is a persistent dialog test
MESSAGE_DETAILS = There seems to be something wrong\n You must fix it to clear message
MESSAGE_TYPE = nonedialog
MESSAGE_PINNAME = nonedialogtest
MESSAGE_ICON = CRITICAL
MESSAGE_BOLDTEXT = Do You Want To Make A Choice?
MESSAGE_TEXT = This is a yes no dialog test
MESSAGE_DETAILS = Y/N DETAILS
MESSAGE_TYPE = yesnodialog
MESSAGE_PINNAME = yndialogtest
MESSAGE_ICON = QUESTION
MESSAGE_BOLDTEXT = This is an information message
MESSAGE_TEXT = This is low priority
MESSAGE_DETAILS = press ok to clear
MESSAGE_TYPE = okdialog status
MESSAGE_PINNAME = bothtest
MESSAGE_ICON = INFO
EMBED_TAB_NAME=Vismach demo
EMBED_TAB_COMMAND=qtvcp vismach_mill_xyz
EMBED_TAB_LOCATION=tabWidget_utilities
[MDI_COMMAND_LIST]
# for macro buttons
MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero
MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0,Goto\nMachn\nZero
[FILTER]
PROGRAM_EXTENSION = .ngc,.nc,.tap G-Code File (*.ngc,*.nc,*.tap)
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[KINS]
KINEMATICS = trivkins coordinates=XYZ
JOINTS = 3
[EMCIO]
TOOL_TABLE = tool.tbl
[RS274NGC]
PARAMETER_FILE = qtdragon.var
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
SUBROUTINE_PATH = ../../../../nc_files/probe/basic_probe/macros:~/linuxcnc/nc_files/examples/ngcgui_lib
FEATURES=12
ON_ABORT_COMMAND=O <on_abort> call
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = metric
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.00
SPINDLES = 1
[HAL]
HALUI = halui
HALFILE = core_sim.hal
HALFILE = simulated_home.hal
#HALFILE = custom.hal
POSTGUI_HALFILE = qtdragon_postgui.hal
[HALUI]
# no content
[PROBE]
USE_PROBE = versaprobe
#USE_PROBE = basicprobe
[TOOLSENSOR]
X = 5.00
Y = 71.50
TOUCH_HEIGHT = 29.3
SENSOR_HEIGHT = 59.8
MAXPROBE = -40
SEARCH_VEL = 200
PROBE_VEL = 50
[LASER]
X = 106.9
Y = -16.85
[AXIS_X]
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Y]
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Z]
OFFSET_AV_RATIO = 0.2
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
[JOINT_0]
AXIS = X
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.00000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.00
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 2
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_2]
AXIS = Z
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 48.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = -10.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[SPINDLE]
SPINDLE_TYPE = openLoop
SCALE =
PWM_FREQUENCY = 2000
MAX_RPM = 18000
MIN_RPM = 8000
DEADBAND = 0
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
MAX_ERROR = 0

View File

@@ -0,0 +1,4 @@
T1 P1 X0 Y0 Z0.51100 A0 B0 C0 U0 V0 W0 D10.00000 I0 J0 Q0 ;1/8 end mill
T2 P2 X0 Y0 Z0.10000 A0 B0 C0 U0 V0 W0 D0.06250 I0 J0 Q0 ;1/16 end mill
T3 P3 X0 Y0 Z1.27300 A0 B0 C0 U0 V0 W0 D0.20100 I0 J0 Q0 ;#7 tap drill
T4 P4 X0 Y0 Z3.00000 A0 B0 C0 U0 V0 W0 D4.00000 I0 J0 Q0 ;4" Face Mill

View File

@@ -0,0 +1,31 @@
o<on_abort> sub
o100 if [#1 eq 5]
(machine on)
o100 elseif [#1 eq 6]
(machine off)
o100 elseif [#1 eq 7]
(estopped)
o100 elseif [#1 eq 8]
(msg,Process Aborted)
o100 else
(DEBUG,Abort Parameter is %d[#1])
o100 endif
o<on_abort> endsub
m2
These are potential abort number:
EMC_ABORT_TASK_EXEC_ERROR = 1,
EMC_ABORT_AUX_ESTOP = 2,
EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,
EMC_ABORT_TASK_STATE_OFF = 4,
EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,
EMC_ABORT_TASK_STATE_ESTOP = 6,
EMC_ABORT_TASK_STATE_NOT_ON = 7,
EMC_ABORT_TASK_ABORT = 8,
EMC_ABORT_INTERPRETER_ERROR = 9, // interpreter failed during readahead
EMC_ABORT_INTERPRETER_ERROR_MDI = 10, // interpreter failed during MDI execution
EMC_ABORT_USER = 100 // user-defined abort codes start here

View File

@@ -0,0 +1,29 @@
T90 P90 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D3.00000 I0 J0 Q0 ;PROBE
T0 P0 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D0 I0 J0 Q0 ;NO TOOL LOADED
T1 P1 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D1.58750 I0 J0 Q0 ;1/16" end mill
T2 P2 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D3.16000 I0 J0 Q0 ;1/8" end mill
T3 P3 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D2.86000 I0 J0 Q0 ;1/8" router bit
T4 P4 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.35000 I0 J0 Q0 ;1/4" straight router bit
T6 P5 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D0.12670 I0 J0 Q0 ;5/16" straight 25 mm flute
T6 P6 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D7.93750 I0 J0 Q0 ;5/16" straight 30 mm flute
T7 P7 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D12.70000 I0 J0 Q0 ;1/2" straight router bit
T8 P8 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D19.05000 I0 J0 Q0 ;3/4" bottom clearing
T9 P9 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.35000 I0 J0 Q0 ;1/4" single flute
T10 P10 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D3.17500 I0 J0 Q0 ;1/8" spot drill
T11 P11 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D3.17500 I0 J0 Q0 ;1/8" ball end
T12 P12 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.35000 I0 J0 Q0 ;1/4" ball end
T13 P13 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D9.52500 I0 J0 Q0 ;3/8" ball end
T14 P14 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D12.70000 I0 J0 Q0 ;1/2" ball end
T15 P15 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D12.70000 I0 J0 Q0 ;90 deg v-bit
T16 P16 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.35000 I0 J0 Q0 ;45/60 v-bit
T17 P17 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.35000 I0 J0 Q0 ;45/60 v-bit
T21 P21 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.00000 I0 J0 Q0 ;6 mm straight ball end
T22 P22 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.00000 I0 J0 Q0 ;6 mm straight ball end
T23 P23 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D1.00000 I0 J0 Q0 ;1 mm tapered ball end
T24 P24 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D1.00000 I0 J0 Q0 ;1 mm tapered ball end
T25 P25 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.00000 I0 J0 Q0 ;60 deg v-bit 6mm shank
T26 P26 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.00000 I0 J0 Q0 ;60 deg v-bit 6 mm shank
T31 P31 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D3.00000 I0 J0 Q0 ;3 mm router bit
T32 P32 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.00000 I0 J0 Q0 ;6 mm router bit
T33 P33 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.00000 I0 J0 Q0 ;6 mm drill
T34 P34 X0 Y0 Z0 A0 B0 C0 U0 V0 W0 D6.00000 I0 J0 Q0 ;6 mm 4 flute spiral upcut

View File

@@ -0,0 +1,202 @@
# This file was created with the 7i96 Wizard on Jun 10 2019 11:12:47
# Changes to most things are ok and will be read by the wizard
[EMC]
VERSION = 1.1
MACHINE = woodpecker
DEBUG = 0x00000000
[DISPLAY]
DISPLAY = qtvcp woodpecker
PREFERENCE_FILE_PATH = WORKINGFOLDER/woodpecker.pref
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_0_OVERRIDE = 0.5
MAX_SPINDLE_0_OVERRIDE = 1.2
DEFAULT_SPINDLE_0_SPEED = 12000
SPINDLE_INCREMENT = 200
MIN_SPINDLE_0_SPEED = 1000
MAX_SPINDLE_0_SPEED = 20000
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.0
DEFAULT_LINEAR_JOG_VEL = 50.0
DEFAULT_ANGULAR_VELOCITY = 0
MIN_ANGULAR_VELOCITY = 0
MAX_ANGULAR_VELOCITY = 0
CYCLE_TIME = 100
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 2
PROGRAM_PREFIX = ~/linuxcnc/nc_files
INCREMENTS = 10 mm, 1.0 mm, 0.10 mm, 0.01 mm, 1.0 inch, 0.1 inch, 0.01 inch
MDI_HISTORY_FILE = mdi_history.dat
LOG_FILE = woodpecker.log
TOOL_EDITOR = tooledit
CONFIRM_EXIT = True
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .nc,.tap G-Code File
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[KINS]
KINEMATICS = trivkins coordinates=XYZ
JOINTS = 3
[EMCIO]
TOOL_TABLE = tool.tbl
[RS274NGC]
PARAMETER_FILE = woodpecker.var
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
SUBROUTINE_PATH = ../../../../nc_files/probe/basic_probe/macros
FEATURES=12
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = metric
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 60.00
DEFAULT_LINEAR_VELOCITY = 50.00
SPINDLES = 1
[HAL]
HALUI = halui
HALFILE = core_sim.hal
HALFILE = simulated_home.hal
#HALFILE = custom.hal
POSTGUI_HALFILE = woodpecker_postgui.hal
[HALUI]
# no content
[TOOLSENSOR]
X = 5.00
Y = 71.50
TOUCH_HEIGHT = 29.3
SENSOR_HEIGHT = 59.8
MAXPROBE = -40
SEARCH_VEL = 200
PROBE_VEL = 50
[LASER]
X = 106.9
Y = -16.85
[AXIS_X]
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Y]
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
[AXIS_Z]
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
[JOINT_0]
AXIS = X
MIN_LIMIT = -0.001
MAX_LIMIT = 520.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.00000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_1]
AXIS = Y
MIN_LIMIT = -0.001
MAX_LIMIT = 630.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 72.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = 20.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.00
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 2
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[JOINT_2]
AXIS = Z
MIN_LIMIT = -115.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 500.0
TYPE = LINEAR
SCALE = 160.0
STEPGEN_MAX_VEL = 48.0
STEPGEN_MAX_ACC = 600.0
FERROR = 1.0
MIN_FERROR = 0.5
MAX_OUTPUT = 0
MAX_ERROR = 0.0127
HOME = -10.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.00
HOME_SEQUENCE = 0
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
[SPINDLE]
SPINDLE_TYPE = openLoop
SCALE =
PWM_FREQUENCY = 2000
MAX_RPM = 18000
MIN_RPM = 8000
DEADBAND = 0
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
MAX_ERROR = 0