From 90157da910100682c81b535789b887e9f0987a6d Mon Sep 17 00:00:00 2001 From: Hans Unzner Date: Mon, 29 Jul 2024 10:49:24 +0200 Subject: [PATCH] gmoccapy: add sim config for gcmc support --- configs/sim/gmoccapy/gmoccapy_pyngcgui.txt | 2 +- .../sim/gmoccapy/gmoccapy_pyngcgui_gcmc.ini | 246 ++++++++++++++++++ .../sim/gmoccapy/gmoccapy_pyngcgui_gcmc.txt | 24 ++ nc_files/gcmc_lib/cpocket.png | Bin 0 -> 5836 bytes nc_files/gcmc_lib/involute-gear.png | Bin 0 -> 4661 bytes nc_files/gcmc_lib/trochoid-path.png | Bin 0 -> 14921 bytes 6 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.ini create mode 100644 configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.txt create mode 100644 nc_files/gcmc_lib/cpocket.png create mode 100644 nc_files/gcmc_lib/involute-gear.png create mode 100644 nc_files/gcmc_lib/trochoid-path.png diff --git a/configs/sim/gmoccapy/gmoccapy_pyngcgui.txt b/configs/sim/gmoccapy/gmoccapy_pyngcgui.txt index 6f14c53e95f..9425ec2c3be 100644 --- a/configs/sim/gmoccapy/gmoccapy_pyngcgui.txt +++ b/configs/sim/gmoccapy/gmoccapy_pyngcgui.txt @@ -1,4 +1,4 @@ -Standard GMOCCCPAY configuration for a XYZ mill, +Standard GMOCCAPY configuration for a XYZ mill, including diff --git a/configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.ini b/configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.ini new file mode 100644 index 00000000000..09dc0fede5f --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.ini @@ -0,0 +1,246 @@ +# EMC controller parameters for a simulated machine. +# General note: Comments can either be preceded with a # or ; - either is +# acceptable, although # is in keeping with most linux config files. + +# General section ------------------------------------------------------------- +[EMC] +VERSION = 1.1 +MACHINE = gmoccapy +DEBUG = 0 + +# Sections for display options ------------------------------------------------ +[DISPLAY] +DISPLAY = gmoccapy + +EMBED_TAB_NAME = NGC-GUI +EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui.ui +EMBED_TAB_LOCATION = ntb_user_tabs + +PROGRAM_PREFIX = ../../nc_files +TKPKG = Ngcgui 1.0 +TKPKG = Ngcguittt 1.0 +# Ngcgui must precede Ngcguittt + +NGCGUI_FONT = Helvetica -12 normal + +# for startup NGCGUI_PREAMBLE, NGCGUI_SUBFILE, NGCGUI_POSTAMBLE, TTT_PREAMBLE +# items, specifly: +# a) absolute filename (start with /) +# b) relative filename: search directories specified by +# [DISPLAY]PROGRAM_PREFIX and [RS274NGC]SUBROUTINE_PATH + +NGCGUI_PREAMBLE = in_std.ngc +NGCGUI_SUBFILE = rectangle.gcmc +NGCGUI_SUBFILE = drill.gcmc +NGCGUI_SUBFILE = involute-gear.gcmc +NGCGUI_SUBFILE = trochoid-path.gcmc +NGCGUI_SUBFILE = cpocket.gcmc +NGCGUI_SUBFILE = star.gcmc +NGCGUI_SUBFILE = wheels.gcmc +# specify "" for a custom tab page +NGCGUI_SUBFILE = "" + +NGCGUI_OPTIONS = +#NGCGUI_OPTIONS = opt1 opt2 ... +# opt items: +# nonew -- disallow making new tab page +# noremove -- disallow removing any tab page +# noauto -- no autosend (makeFile, then manually send) +# noiframe -- no internal image, image on separate toplevel +# nom2 -- no m2 terminator (use %) + +# example for gcmc includes: separate dirnames with colons: +# GCMC_INCLUDE_PATH = dir1:dir2:... +GCMC_INCLUDE_PATH = ../../nc_files/gcmc_lib + +TTT = truetype-tracer +TTT_PREAMBLE = in_std.ngc + + +# Cycle time, in milliseconds, that display will sleep between polls +CYCLE_TIME = 100 + +# Values that will be allowed for override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 +MAX_SPINDLE_OVERRIDE = 1.2 +MIN_SPINDLE_OVERRIDE = 0.5 + +# Max and default jog speeds in units per second +MAX_LINEAR_VELOCITY = 166 +DEFAULT_LINEAR_VELOCITY = 100 +MAX_ANGULAR_VELOCITY = 234 +DEFAULT_SPINDLE_SPEED = 450 + +# Introductory graphic +INTRO_GRAPHIC = linuxcnc.gif +INTRO_TIME = 5 + +# list of selectable jog increments +INCREMENTS = 1.000 mm, 0.100 mm, 0.010 mm, 0.001 mm, 1.2345 inch + +# for details see nc_files/subroutines/maco_instructions.txt +[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 + +# Task controller section ----------------------------------------------------- +[RS274NGC] +RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9 +SUBROUTINE_PATH = macros:../../nc_files/ngcgui_lib:../../nc_files/gcmc_lib:../../nc_files/ngcgui_lib/utilitysubs +USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles +PARAMETER_FILE = sim.var + +# Motion control section ------------------------------------------------------ +[EMCMOT] +EMCMOT = motmod +COMM_TIMEOUT = 1.0 +BASE_PERIOD = 100000 +SERVO_PERIOD = 1000000 + +# Hardware Abstraction Layer section -------------------------------------------------- +[TASK] +TASK = milltask +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[HAL] +HALFILE = core_sim.hal +HALFILE = spindle_sim.hal +HALFILE = simulated_home.hal + +# Single file that is executed after the GUI has started. +POSTGUI_HALFILE = gmoccapy_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[HALUI] +#No Content + +[TRAJ] +COORDINATES = X Y Z +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +DEFAULT_LINEAR_VELOCITY = 35 +MAX_LINEAR_VELOCITY = 234 +POSITION_FILE = position.txt +#NO_FORCE_HOMING = 1 + +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl +TOOL_CHANGE_POSITION = 100 100 -10 +TOOL_CHANGE_QUILL_UP = 1 + +[KINS] +KINEMATICS = trivkins coordinates=xyz +JOINTS = 3 + +[AXIS_X] +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 + +[JOINT_0] +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME = 10 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 +HOME_IS_SHARED = 1 + +# Second axis +[AXIS_Y] +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 + +[JOINT_1] +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME = 10 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 + +# Third axis +[AXIS_Z] +MIN_LIMIT = -400.0 +MAX_LIMIT = 0.001 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 + +[JOINT_2] +TYPE = LINEAR +HOME = 0.0 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 0.001 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 1.0 +HOME = -10 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# section for main IO controller parameters ----------------------------------- +[MACROS] +MACRO = go_to_position x-pos y-pos z-pos +MACRO = i_am_lost +MACRO = increment x-incr y-incr +MACRO = macro_4 +MACRO = macro_5 +MACRO = macro_6 +MACRO = macro_7 +MACRO = macro_8 +MACRO = macro_9 +MACRO = macro_10 +MACRO = macro_11 +MACRO = macro_12 +MACRO = macro_13 +MACRO = macro_14 +MACRO = macro_15 + + diff --git a/configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.txt b/configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.txt new file mode 100644 index 00000000000..e2aa102003c --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_pyngcgui_gcmc.txt @@ -0,0 +1,24 @@ +Standard GMOCCAPY configuration for a XYZ mill, + +including +- example macros +- pyngcgui in embedded user tab with support for .gcmc (G-Code Meta Compiler) files + +REQUIREMENT: Installation of gcmc, see instructions below. + +The .ngc and .gcmc files can be intermixed with +ini file lines like: + +NGCGUI_SUBFILE = drill.gcmc +NGCGUI_SUBFILE = wheels.gcmc +NGCGUI_SUBFILE = simp.ngc + +Installation instructions: +1. Download from https://gitlab.com/gcmc/gcmc +2. cd gcmc +3. ./configure +4. make +5. sudo make install + + + diff --git a/nc_files/gcmc_lib/cpocket.png b/nc_files/gcmc_lib/cpocket.png new file mode 100644 index 0000000000000000000000000000000000000000..7854338985d04a726fef266d1c580349aee37af8 GIT binary patch literal 5836 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 literal 0 HcmV?d00001 diff --git a/nc_files/gcmc_lib/involute-gear.png b/nc_files/gcmc_lib/involute-gear.png new file mode 100644 index 0000000000000000000000000000000000000000..4dde1e97cf2f8fcd8e10eed9202f0afe12d6d0bb GIT binary patch literal 4661 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 S$Q^R$C7`9Q2QO8#4*DM`D1;{f literal 0 HcmV?d00001