Expand WASM sim-config staging coverage

This commit is contained in:
2026-06-09 07:32:15 +08:00
parent 2658ee3b72
commit 5116b9894d
26 changed files with 5989 additions and 141 deletions

View File

@@ -0,0 +1,43 @@
(info: Multiple circles at radius R, use 0 for current val)
;Notes:
; 1) z axis not altered (remains at current z)
; 2) for inside polygon cutting (fnum==0):
; start with rfraction negative
; and gradually increase rfraction to zero as program runs
; multiple circles
; 3) for outside polygon cutting (fnum==1):
; start with rfraction positive
; and gradually decrease to zero as program runs multiple
; circles
;
; Alternate method for polygons:
; 1) use #<radius>=0 and jog to safe starting position
; 2) use #<revs>=1, run program for one revolution
; 3) Run program repeatedly and manually jog x (radius)
; before each program start to increase/decrease
; current radius for inside/outside polygon respectively
o<circles> sub
#<radius> = #1 (= 1 R 0==>current)
#<aspeed> = #2 (= 8 aspeed: RPM)
#<lspeed> = #3 (= 10 lspeed: units/sec)
#<revs> = #4 (= 1 +/- Revolutions)
#<c> = #<_c> ;starting value
#<ctarget> = [#<c> + #<revs> * 360]
#<arate> = [#<aspeed> * 360]
m111 ;clear prior info messages
o<if1> if [#<radius> EQ 0]
#<ref_radius> = #<_x> ;use current x
o<if1> else
#<ref_radius> = #<radius>
f#<lspeed> g1 x#<ref_radius>
o<if1> endif
(debug, ref_radius=#<ref_radius>)
m68 e0 q#<ref_radius> ; set ref_radius for eoffsets
f#<arate> g1 c#<ctarget> ; circles at arate
o<circles> endsub

View File

@@ -0,0 +1,104 @@
# Notes:
# 1) [AXIS_n]OFFSET_AV_RATIO= controls external offsets a,v
# Allowed values are 0.0 <= OFFSET_AV_RATIO <= 0.9
# Value of 0.0 disables external offsets
# Disallowed values are superseded with msg to stdout
# 2) Immediate homing herein
# ([JOINT_*]HOME_SEQUENCE=0, other HOME_* items omitted)
# 3) uncomment [JOINT_0]HOME_SEARCH_VEL,HOME_LATCH_VEL
# to demonstrate non-zero joint.0.motor-offset
[APPLICATIONS]
APP = sim_pin --title "MPG Simulator" \
e:xcounts \
e:ycounts \
e:zcounts
# make sure [xyz]:ecounts are zero if machine off:
APP = eoffsets_monitor.tcl
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl -no_use_hal_manualtoolchange
HALFILE = eoffsets.hal
POSTGUI_HALFILE = eoffsets_panel.hal
[EMC]
MACHINE = External Offsets Demo
VERSION = 1.1
[DISPLAY]
PYVCP = eoffsets_panel.xml
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_LINEAR_VELOCITY = 2
OPEN_FILE = ./eoffsets.ngc
TKPKG = Ngcgui 1.0
NGCGUI_FONT = Helvetica -12 normal
NGCGUI_SUBFILE = queuebuster.ngc
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
SUBROUTINE_PATH = .
USER_M_PATH = .
PARAMETER_FILE = sim.var
[EMCIO]
TOOL_TABLE = eoffset.tbl
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[AXIS_X]
OFFSET_AV_RATIO = 0.2
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
MIN_LIMIT = -0.1
MAX_LIMIT = 10
[AXIS_Y]
OFFSET_AV_RATIO = 0.2
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
MIN_LIMIT = -0.1
MAX_LIMIT = 5
[AXIS_Z]
OFFSET_AV_RATIO = 0.2
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
MIN_LIMIT = -1
MAX_LIMIT = 1
[JOINT_0]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[JOINT_1]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[JOINT_2]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20

View File

@@ -0,0 +1,35 @@
#<xmax> = 9
#<ymax> = 4
#<zdepth> = 0
#<feed> = 20
#<x1> = [0.25 * #<xmax>]
#<y1> = [0.66 * #<ymax>]
#<z1> = 0
#<x2> = [0.50 * #<xmax>]
#<y2> = 0
#<z2> = -.5
#<x3> = [0.75 * #<xmax>]
#<y3> = 0
#<z3> = 0
#<x4> = #<x3>
#<y4> = #<y1>
#<z4> = 0
m111 ;clear notifications
g61
g0x0y0z0
f #<feed>
g1 x #<x1> y #<y1> z #<z1>
g1 x #<x2> y #<y2> z #<z2>
g1 x #<x3> y #<y3> z #<z3>
g1 x #<x4> y #<y4> z #<z4>
g1 x #<xmax> y #<ymax>
g0x0y0z0
m111 ;clear notifications
m2

View File

@@ -0,0 +1,86 @@
# Notes:
# 1) [AXIS_n]OFFSET_AV_RATIO= controls external offsets a,v
# Allowed values are 0.0 <= OFFSET_AV_RATIO <= 0.9
# Value of 0.0 disables external offsets
# Disallowed values are superseded with msg to stdout
# 2) Immediate homing herein
# ([JOINT_*]HOME_SEQUENCE=0, other HOME_* items omitted)
# 3) uncomment [JOINT_0]HOME_SEARCH_VEL,HOME_LATCH_VEL
# to demonstrate non-zero joint.0.motor-offset
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
POSTGUI_HALFILE = jwp_z_panel.hal
[EMC]
MACHINE = Jog-While-Pause Z Demo
VERSION = 1.1
[DISPLAY]
PYVCP = jwp_z_panel.xml
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_LINEAR_VELOCITY = 2
OPEN_FILE = ./jwp_z.ngc
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
USER_M_PATH = .
PARAMETER_FILE = sim.var
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[AXIS_X]
MIN_LIMIT = -1
MAX_LIMIT = 11
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[AXIS_Y]
MIN_LIMIT = -1
MAX_LIMIT = 5
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[AXIS_Z]
# Note: low OFFSET_AV_RATIO:
OFFSET_AV_RATIO = 0.05
MIN_LIMIT = -1
MAX_LIMIT = 1
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[JOINT_0]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[JOINT_1]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[JOINT_2]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20

View File

@@ -0,0 +1,35 @@
#<xmax> = 10
#<ymax> = 5
#<zsafe> = 0.5
#<feed> = 100
#<x1> = [0.25 * #<xmax>]
#<y1> = [0.66 * #<ymax>]
#<x2> = [0.50 * #<xmax>]
#<y2> = [0.33 * #<ymax>]
#<x3> = [0.75 * #<xmax>]
#<y3> = [0.33 * #<ymax>]
m111 ;clear notifications
g61
g0 x0 y0 z#<zsafe>
(debug, Enter offsets only when paused, s to continue)
m0
m111
f #<feed>
g0 z0
g1 x #<x1> y #<y1>
g1 x #<x2> y #<y2>
g1 x #<x3> y #<y3>
g1 x #<xmax> y #<ymax>
g0 z#<zsafe>
(debug, Program End: Clear offsets, s to continue)
m0
g0 x0 y0
m111 ;clear notifications
m2

View File

@@ -0,0 +1,87 @@
[APPLICATIONS]
DELAY = 3
# For assessing system accel/vel:
# (particularly when using func3 square wave modulation)
APP = sim_pin ini.x.max_acceleration ini.x.max_velocity
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
HALFILE = opa.hal
POSTGUI_HALFILE = opa_panel.hal
[EMC]
MACHINE = External Offset(X) per Angle(C) Demo
VERSION = 1.1
[DISPLAY]
PYVCP = opa_panel.xml
DISPLAY = axis
OPEN_FILE = opa_demo.ngc
GEOMETRY = !CXZ
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_LINEAR_VELOCITY = 2
MAX_ANGULAR_VELOCITY = 60
TKPKG = Ngcgui 1.0
NGCGUI_FONT = Helvetica -12 normal
NGCGUI_SUBFILE = circles.ngc
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
SUBROUTINE_PATH = .
USER_M_PATH = .
PARAMETER_FILE = sim.var
[EMCIO]
TOOL_TABLE = eoffset.tbl
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
[TRAJ]
COORDINATES = XZC
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XZC
[AXIS_X]
OFFSET_AV_RATIO = 0.5
MAX_VELOCITY = 5
# increase MAX_ACCELERATION to improve
# waveform tracking:
MAX_ACCELERATION = 50
[AXIS_Z]
MAX_VELOCITY = 5
MAX_ACCELERATION = 10
[AXIS_C]
MAX_VELOCITY = 60
MAX_ACCELERATION = 600
[JOINT_0]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 5
MAX_ACCELERATION = 50
[JOINT_1]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 5
MAX_ACCELERATION = 10
[JOINT_2]
TYPE = ANGULAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 60
MAX_ACCELERATION = 600

View File

@@ -0,0 +1,15 @@
; opa_demo.ngc:
; invoke subroutine circles.ngc for multiple circles (#<revs>)
; with:
; x = #<radius>
; z = #<_z>
#<radius> = 1
#<z> = #<_z> ; current value
#<aspeed> = 8 ; angular speed (RPM)
#<lspeed> = 10 ; linear speed (units/minute)
#<revs> = 100
g0 x#<radius> z#<z>
o<circles> call [#<radius>][#<aspeed>][#<lspeed>][#<revs>]
m2