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