?
This commit is contained in:
6
configs/sim.pyvcp_demo/README
Normal file
6
configs/sim.pyvcp_demo/README
Normal file
@@ -0,0 +1,6 @@
|
||||
The sim configuration is a set of files
|
||||
that shows a demo of some of the pyvcp_widgets
|
||||
note:
|
||||
The bar widget changes color at certain value ranges.
|
||||
The value of spinboxs and dials can be changed using HAL signals.
|
||||
The multilabel will change text depending on the HAL signal.
|
||||
6
configs/sim.pyvcp_demo/README_es
Normal file
6
configs/sim.pyvcp_demo/README_es
Normal file
@@ -0,0 +1,6 @@
|
||||
La configuración sim es un conjunto de archivos
|
||||
que dan una demostración de algunos de los widgets de pyvcp
|
||||
Nota:
|
||||
El widget de barra cambia de color en ciertos rangos de valores.
|
||||
El valor de los spinboxs y los diales se puede cambiar usando señales HAL.
|
||||
El multilabel cambiará el texto según la señal HAL.
|
||||
40
configs/sim.pyvcp_demo/custom.hal
Normal file
40
configs/sim.pyvcp_demo/custom.hal
Normal file
@@ -0,0 +1,40 @@
|
||||
# #########################################
|
||||
# Example hal file showing some linkages
|
||||
# of pyvcp_widgets
|
||||
|
||||
# top row of scales and spinboxes
|
||||
net scale2spin1 pyvcp.scale0-f => pyvcp.spinbox.0.param_pin => pyvcp.number0
|
||||
net scale2spin3 pyvcp.scale1-f => pyvcp.spinbox.1.param_pin => pyvcp.number1
|
||||
net scale2spin5 pyvcp.scale2-f => pyvcp.spinbox.2.param_pin => pyvcp.number2
|
||||
|
||||
# second row of dials and scales
|
||||
net dial2scale0 pyvcp.scale.3.param_pin <= pyvcp.dial0
|
||||
net dial2scale2 pyvcp.scale.4.param_pin <= pyvcp.dial1
|
||||
net dial2scale4 pyvcp.scale.5.param_pin <= pyvcp.dial2
|
||||
|
||||
# third row of label and led activating radio buttons
|
||||
net 1pressed pyvcp.multilabel.0.legend0 <= pyvcp.radio0.one
|
||||
net 2pressed pyvcp.multilabel.0.legend1 <= pyvcp.radio0.two
|
||||
net 3pressed pyvcp.multilabel.0.legend2 <= pyvcp.radio0.three
|
||||
net 4pressed pyvcp.multilabel.1.legend0 <= pyvcp.radio1.four
|
||||
net 5pressed pyvcp.multilabel.1.legend1 <= pyvcp.radio1.five
|
||||
net 6pressed pyvcp.multilabel.1.legend2 <= pyvcp.radio1.six
|
||||
|
||||
net cb0active pyvcp.checkbutton0 => pyvcp.led0
|
||||
net cb1active pyvcp.checkbutton1 => pyvcp.led1
|
||||
net cb2active pyvcp.checkbutton2 => pyvcp.led2
|
||||
net cb3active pyvcp.checkbutton3 => pyvcp.led3
|
||||
net cb4active pyvcp.checkbutton4 => pyvcp.led4
|
||||
net cb5active pyvcp.checkbutton5 => pyvcp.led5
|
||||
|
||||
# fourth row checkboxes with checkbox0 toggled by push button
|
||||
net toggle0 pyvcp.checkbutton0.changepin <= pyvcp.toggle-button0
|
||||
net toggle1 pyvcp.checkbutton5.changepin <= pyvcp.toggle-button1
|
||||
|
||||
# sixth row 3 colour bar activated by slider
|
||||
net bar1 pyvcp.my-bar <= pyvcp.my-hscale-f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1
configs/sim.pyvcp_demo/hallib
Symbolic link
1
configs/sim.pyvcp_demo/hallib
Symbolic link
@@ -0,0 +1 @@
|
||||
/usr/share/linuxcnc/hallib
|
||||
16
configs/sim.pyvcp_demo/position_mm.txt
Normal file
16
configs/sim.pyvcp_demo/position_mm.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
0.00000000000000000
|
||||
9
configs/sim.pyvcp_demo/pyvcp_bottom_panel.hal
Normal file
9
configs/sim.pyvcp_demo/pyvcp_bottom_panel.hal
Normal file
@@ -0,0 +1,9 @@
|
||||
# #########################################
|
||||
# Example hal file showing some linkages
|
||||
# of pyvcp_widgets
|
||||
|
||||
# second row of dials and scales
|
||||
net dial2scale0 pyvcp.scale.0.param_pin <= pyvcp.dial0
|
||||
net dial2scale1 pyvcp.scale.1.param_pin <= pyvcp.dial1
|
||||
net dial2scale2 pyvcp.scale.2.param_pin <= pyvcp.dial2
|
||||
net dial2scale3 pyvcp.scale.3.param_pin <= pyvcp.dial3
|
||||
235
configs/sim.pyvcp_demo/pyvcp_bottom_panel.ini
Normal file
235
configs/sim.pyvcp_demo/pyvcp_bottom_panel.ini
Normal file
@@ -0,0 +1,235 @@
|
||||
# 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 of this INI file
|
||||
VERSION = 1.1
|
||||
|
||||
# Name of machine, for use with display, etc.
|
||||
MACHINE = Pyvcp_demo1
|
||||
|
||||
# Name of NML file to use, default is emc.nml
|
||||
#NML_FILE = emc.nml
|
||||
|
||||
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
|
||||
# DEBUG = 0x7FFFFFFF
|
||||
DEBUG = 0
|
||||
|
||||
# Sections for display options ------------------------------------------------
|
||||
[DISPLAY]
|
||||
|
||||
DISPLAY = axis
|
||||
|
||||
PYVCP = pyvcp_bottom_panel.xml
|
||||
|
||||
# places the pyvcp panel at the bottom of the Axis window
|
||||
PYVCP_POSITION = BOTTOM
|
||||
|
||||
# Cycle time, in seconds, that display will sleep between polls
|
||||
CYCLE_TIME = 0.100
|
||||
|
||||
# Path to help file
|
||||
HELP_FILE = doc/help.txt
|
||||
|
||||
# Initial display setting for position, RELATIVE or MACHINE
|
||||
POSITION_OFFSET = RELATIVE
|
||||
|
||||
# Initial display setting for position, COMMANDED or ACTUAL
|
||||
POSITION_FEEDBACK = ACTUAL
|
||||
|
||||
# Highest value that will be allowed for feed override, 1.0 = 100%
|
||||
MAX_FEED_OVERRIDE = 1.2
|
||||
MAX_SPINDLE_OVERRIDE = 1.0
|
||||
# Prefix to be used
|
||||
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
|
||||
|
||||
# Introductory graphic
|
||||
INTRO_GRAPHIC = linuxcnc.gif
|
||||
INTRO_TIME = 5
|
||||
|
||||
#EDITOR = geany
|
||||
|
||||
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm
|
||||
#INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in
|
||||
|
||||
[FILTER]
|
||||
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
|
||||
PROGRAM_EXTENSION = .py Python Script
|
||||
PROGRAM_EXTENSION = .nc, .NC
|
||||
|
||||
png = image-to-gcode
|
||||
gif = image-to-gcode
|
||||
jpg = image-to-gcode
|
||||
dxf = image-to-gcode
|
||||
py = python3
|
||||
nc = /usr/bin/axis
|
||||
|
||||
# Task controller section -----------------------------------------------------
|
||||
[RS274NGC]
|
||||
|
||||
# File containing interpreter variables
|
||||
PARAMETER_FILE = sim_mm.var
|
||||
|
||||
# Motion control section ------------------------------------------------------
|
||||
[EMCMOT]
|
||||
|
||||
EMCMOT = motmod
|
||||
|
||||
# Timeout for comm to emcmot, in seconds
|
||||
COMM_TIMEOUT = 1.0
|
||||
|
||||
# BASE_PERIOD is unused in this configuration but specified in core_sim.hal
|
||||
BASE_PERIOD = 0
|
||||
# Servo task period, in nano-seconds
|
||||
SERVO_PERIOD = 1000000
|
||||
|
||||
# Hardware Abstraction Layer section --------------------------------------------------
|
||||
[TASK]
|
||||
|
||||
# Name of task controller program, e.g., milltask
|
||||
TASK = milltask
|
||||
|
||||
# Cycle time, in seconds, that task controller will sleep between polls
|
||||
CYCLE_TIME = 0.001
|
||||
|
||||
# Part program interpreter section --------------------------------------------
|
||||
[HAL]
|
||||
|
||||
# The run script first uses halcmd to execute any HALFILE
|
||||
# files, and then to execute any individual HALCMD commands.
|
||||
#
|
||||
|
||||
# list of hal config files to run through halcmd
|
||||
# files are executed in the order in which they appear
|
||||
HALFILE = core_sim.hal
|
||||
HALFILE = axis_manualtoolchange.hal
|
||||
HALFILE = simulated_home.hal
|
||||
#HALFILE = gamepad.hal
|
||||
|
||||
# list of halcmd commands to execute
|
||||
# commands are executed in the order in which they appear
|
||||
#HALCMD = save neta
|
||||
|
||||
# Single file that is executed after the GUI has started. Only supported by
|
||||
# AXIS at this time (only AXIS creates a HAL component of its own)
|
||||
POSTGUI_HALFILE = pyvcp_bottom_panel.hal
|
||||
|
||||
HALUI = halui
|
||||
|
||||
[HALUI]
|
||||
# add halui MDI commands here (max 64)
|
||||
|
||||
# Trajectory planner section --------------------------------------------------
|
||||
[TRAJ]
|
||||
COORDINATES = X Y Z
|
||||
LINEAR_UNITS = mm
|
||||
ANGULAR_UNITS = degree
|
||||
DEFAULT_LINEAR_VELOCITY = 30.48
|
||||
MAX_LINEAR_VELOCITY = 53.34
|
||||
DEFAULT_LINEAR_ACCELERATION = 508
|
||||
MAX_LINEAR_ACCELERATION = 508
|
||||
POSITION_FILE = position_mm.txt
|
||||
|
||||
# Axes sections ---------------------------------------------------------------
|
||||
|
||||
# First axis
|
||||
[EMCIO]
|
||||
|
||||
# Name of IO controller program, e.g., io
|
||||
EMCIO = io
|
||||
|
||||
# cycle time, in seconds
|
||||
CYCLE_TIME = 0.100
|
||||
|
||||
# tool table file
|
||||
TOOL_TABLE = sim_mm.tbl
|
||||
TOOL_CHANGE_POSITION = 0 0 50.8
|
||||
#RANDOM_TOOLCHANGER = 1
|
||||
|
||||
[KINS]
|
||||
KINEMATICS = trivkins
|
||||
JOINTS = 3
|
||||
|
||||
[AXIS_X]
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_0]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.000
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0.0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = YES
|
||||
HOME_SEQUENCE = 0
|
||||
#HOME_IS_SHARED = 1
|
||||
|
||||
# Second axis
|
||||
[AXIS_Y]
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_1]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.000
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0.0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
#HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = NO
|
||||
HOME_SEQUENCE = 0
|
||||
|
||||
# Third axis
|
||||
[AXIS_Z]
|
||||
MIN_LIMIT = -150
|
||||
MAX_LIMIT = 101.6
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_2]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.0
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -150
|
||||
MAX_LIMIT = 101.6
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
#HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = NO
|
||||
HOME_SEQUENCE = 0
|
||||
#HOME_IS_SHARED = 1
|
||||
|
||||
# section for main IO controller parameters -----------------------------------
|
||||
136
configs/sim.pyvcp_demo/pyvcp_bottom_panel.xml
Normal file
136
configs/sim.pyvcp_demo/pyvcp_bottom_panel.xml
Normal file
@@ -0,0 +1,136 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<pyvcp>
|
||||
<hbox>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial 0"</text>
|
||||
<initval>5</initval>
|
||||
<resolution>1</resolution>
|
||||
<halpin>"dial0"</halpin>
|
||||
<dialcolor>"yellow"</dialcolor>
|
||||
<edgecolor>"green"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale0"</halpin>
|
||||
<resolution>1</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>20</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial 1"</text>
|
||||
<initval>10</initval>
|
||||
<resolution>0.1</resolution>
|
||||
<halpin>"dial1"</halpin>
|
||||
<dialcolor>"green"</dialcolor>
|
||||
<edgecolor>"red"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale1"</halpin>
|
||||
<resolution>0.1</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>10</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial 2"</text>
|
||||
<initval>15</initval>
|
||||
<resolution>0.01</resolution>
|
||||
<halpin>"dial2"</halpin>
|
||||
<dialcolor>"yellow"</dialcolor>
|
||||
<edgecolor>"green"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale2"</halpin>
|
||||
<resolution>0.01</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>1</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial 3"</text>
|
||||
<initval>20</initval>
|
||||
<resolution>0.001</resolution>
|
||||
<halpin>"dial3"</halpin>
|
||||
<dialcolor>"green"</dialcolor>
|
||||
<edgecolor>"red"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale3"</halpin>
|
||||
<resolution>0.001</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>10</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
</hbox>
|
||||
</pyvcp>
|
||||
|
||||
|
||||
232
configs/sim.pyvcp_demo/pyvcp_demo1.ini
Normal file
232
configs/sim.pyvcp_demo/pyvcp_demo1.ini
Normal file
@@ -0,0 +1,232 @@
|
||||
# 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 of this INI file
|
||||
VERSION = 1.1
|
||||
|
||||
# Name of machine, for use with display, etc.
|
||||
MACHINE = Pyvcp_demo1
|
||||
|
||||
# Name of NML file to use, default is emc.nml
|
||||
#NML_FILE = emc.nml
|
||||
|
||||
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
|
||||
# DEBUG = 0x7FFFFFFF
|
||||
DEBUG = 0
|
||||
|
||||
# Sections for display options ------------------------------------------------
|
||||
[DISPLAY]
|
||||
|
||||
DISPLAY = axis
|
||||
|
||||
PYVCP = pyvcp_demo1.xml
|
||||
|
||||
# Cycle time, in seconds, that display will sleep between polls
|
||||
CYCLE_TIME = 0.100
|
||||
|
||||
# Path to help file
|
||||
HELP_FILE = doc/help.txt
|
||||
|
||||
# Initial display setting for position, RELATIVE or MACHINE
|
||||
POSITION_OFFSET = RELATIVE
|
||||
|
||||
# Initial display setting for position, COMMANDED or ACTUAL
|
||||
POSITION_FEEDBACK = ACTUAL
|
||||
|
||||
# Highest value that will be allowed for feed override, 1.0 = 100%
|
||||
MAX_FEED_OVERRIDE = 1.2
|
||||
MAX_SPINDLE_OVERRIDE = 1.0
|
||||
# Prefix to be used
|
||||
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
|
||||
|
||||
# Introductory graphic
|
||||
INTRO_GRAPHIC = linuxcnc.gif
|
||||
INTRO_TIME = 5
|
||||
|
||||
#EDITOR = geany
|
||||
|
||||
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm
|
||||
#INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in
|
||||
|
||||
[FILTER]
|
||||
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
|
||||
PROGRAM_EXTENSION = .py Python Script
|
||||
PROGRAM_EXTENSION = .nc, .NC
|
||||
|
||||
png = image-to-gcode
|
||||
gif = image-to-gcode
|
||||
jpg = image-to-gcode
|
||||
dxf = image-to-gcode
|
||||
py = python3
|
||||
nc = /usr/bin/axis
|
||||
|
||||
# Task controller section -----------------------------------------------------
|
||||
[RS274NGC]
|
||||
|
||||
# File containing interpreter variables
|
||||
PARAMETER_FILE = sim_mm.var
|
||||
|
||||
# Motion control section ------------------------------------------------------
|
||||
[EMCMOT]
|
||||
|
||||
EMCMOT = motmod
|
||||
|
||||
# Timeout for comm to emcmot, in seconds
|
||||
COMM_TIMEOUT = 1.0
|
||||
|
||||
# BASE_PERIOD is unused in this configuration but specified in core_sim.hal
|
||||
BASE_PERIOD = 0
|
||||
# Servo task period, in nano-seconds
|
||||
SERVO_PERIOD = 1000000
|
||||
|
||||
# Hardware Abstraction Layer section --------------------------------------------------
|
||||
[TASK]
|
||||
|
||||
# Name of task controller program, e.g., milltask
|
||||
TASK = milltask
|
||||
|
||||
# Cycle time, in seconds, that task controller will sleep between polls
|
||||
CYCLE_TIME = 0.001
|
||||
|
||||
# Part program interpreter section --------------------------------------------
|
||||
[HAL]
|
||||
|
||||
# The run script first uses halcmd to execute any HALFILE
|
||||
# files, and then to execute any individual HALCMD commands.
|
||||
#
|
||||
|
||||
# list of hal config files to run through halcmd
|
||||
# files are executed in the order in which they appear
|
||||
HALFILE = core_sim.hal
|
||||
HALFILE = axis_manualtoolchange.hal
|
||||
HALFILE = simulated_home.hal
|
||||
#HALFILE = gamepad.hal
|
||||
|
||||
# list of halcmd commands to execute
|
||||
# commands are executed in the order in which they appear
|
||||
#HALCMD = save neta
|
||||
|
||||
# Single file that is executed after the GUI has started. Only supported by
|
||||
# AXIS at this time (only AXIS creates a HAL component of its own)
|
||||
POSTGUI_HALFILE = custom.hal
|
||||
|
||||
HALUI = halui
|
||||
|
||||
[HALUI]
|
||||
# add halui MDI commands here (max 64)
|
||||
|
||||
# Trajectory planner section --------------------------------------------------
|
||||
[TRAJ]
|
||||
COORDINATES = X Y Z
|
||||
LINEAR_UNITS = mm
|
||||
ANGULAR_UNITS = degree
|
||||
DEFAULT_LINEAR_VELOCITY = 30.48
|
||||
MAX_LINEAR_VELOCITY = 53.34
|
||||
DEFAULT_LINEAR_ACCELERATION = 508
|
||||
MAX_LINEAR_ACCELERATION = 508
|
||||
POSITION_FILE = position_mm.txt
|
||||
|
||||
# Axes sections ---------------------------------------------------------------
|
||||
|
||||
# First axis
|
||||
[EMCIO]
|
||||
|
||||
# Name of IO controller program, e.g., io
|
||||
EMCIO = io
|
||||
|
||||
# cycle time, in seconds
|
||||
CYCLE_TIME = 0.100
|
||||
|
||||
# tool table file
|
||||
TOOL_TABLE = sim_mm.tbl
|
||||
TOOL_CHANGE_POSITION = 0 0 50.8
|
||||
#RANDOM_TOOLCHANGER = 1
|
||||
|
||||
[KINS]
|
||||
KINEMATICS = trivkins
|
||||
JOINTS = 3
|
||||
|
||||
[AXIS_X]
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_0]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.000
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0.0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = YES
|
||||
HOME_SEQUENCE = 0
|
||||
#HOME_IS_SHARED = 1
|
||||
|
||||
# Second axis
|
||||
[AXIS_Y]
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_1]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.000
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0.0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
#HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = NO
|
||||
HOME_SEQUENCE = 0
|
||||
|
||||
# Third axis
|
||||
[AXIS_Z]
|
||||
MIN_LIMIT = -150
|
||||
MAX_LIMIT = 101.6
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_2]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.0
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -150
|
||||
MAX_LIMIT = 101.6
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
#HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = NO
|
||||
HOME_SEQUENCE = 0
|
||||
#HOME_IS_SHARED = 1
|
||||
|
||||
# section for main IO controller parameters -----------------------------------
|
||||
474
configs/sim.pyvcp_demo/pyvcp_demo1.xml
Normal file
474
configs/sim.pyvcp_demo/pyvcp_demo1.xml
Normal file
@@ -0,0 +1,474 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<pyvcp>
|
||||
<labelframe text="Spinboxes linked to scales/number displays, shows initval and param_pin usage">
|
||||
<font>("Helvetica",10)</font>
|
||||
<bd>3</bd>
|
||||
<relief>SUNKEN</relief>
|
||||
<hbox>
|
||||
<!-- stack of 3 spinboxes -->
|
||||
<vbox>
|
||||
<hbox>
|
||||
<spinbox>
|
||||
<halpin>"spinbox0"</halpin>
|
||||
<min_>-12</min_>
|
||||
<max_>33</max_>
|
||||
<initval>10</initval>
|
||||
<resolution>0.1</resolution>
|
||||
<format>"2.3f"</format>
|
||||
<font>("Arial",16)</font>
|
||||
<param_pin>1</param_pin>
|
||||
</spinbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<spinbox>
|
||||
<halpin>"spinbox1"</halpin>
|
||||
<min_>-12</min_>
|
||||
<max_>33</max_>
|
||||
<initval>20</initval>
|
||||
<resolution>0.1</resolution>
|
||||
<format>"2.3f"</format>
|
||||
<font>("Arial",16)</font>
|
||||
<param_pin>1</param_pin>
|
||||
</spinbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<spinbox>
|
||||
<halpin>"spinbox2"</halpin>
|
||||
<min_>-12</min_>
|
||||
<max_>33</max_>
|
||||
<initval>30</initval>
|
||||
<resolution>0.1</resolution>
|
||||
<format>"2.3f"</format>
|
||||
<font>("Arial",16)</font>
|
||||
<param_pin>1</param_pin>
|
||||
</spinbox>
|
||||
</hbox>
|
||||
</vbox>
|
||||
<!-- stack of 3 horizontal scales in same hbox -->
|
||||
<vbox>
|
||||
<hbox>
|
||||
<scale>
|
||||
<font>("Helvetica",16)</font>
|
||||
<width>"30"</width>
|
||||
<halpin>"scale0"</halpin>
|
||||
<resolution>1</resolution>
|
||||
<orient>HORIZONTAL</orient>
|
||||
<initval>5</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<scale>
|
||||
<font>("Helvetica",16)</font>
|
||||
<width>"30"</width>
|
||||
<halpin>"scale1"</halpin>
|
||||
<resolution>1</resolution>
|
||||
<orient>HORIZONTAL</orient>
|
||||
<initval>15</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<scale>
|
||||
<font>("Helvetica",16)</font>
|
||||
<width>"30"</width>
|
||||
<halpin>"scale2"</halpin>
|
||||
<resolution>1</resolution>
|
||||
<orient>HORIZONTAL</orient>
|
||||
<initval>25</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
||||
<!-- stack of 3 number displays in same hbox -->
|
||||
<vbox>
|
||||
<hbox>
|
||||
<number>
|
||||
<halpin>"number0"</halpin>
|
||||
<font>("Helvetica",16)</font>
|
||||
<format>"+4.4f"</format>
|
||||
</number>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<number>
|
||||
<halpin>"number1"</halpin>
|
||||
<font>("Helvetica",16)</font>
|
||||
<format>"+4.4f"</format>
|
||||
</number>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<number>
|
||||
<halpin>"number2"</halpin>
|
||||
<font>("Helvetica",16)</font>
|
||||
<format>"+4.4f"</format>
|
||||
</number>
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
||||
</hbox>
|
||||
</labelframe>
|
||||
|
||||
<!-- new hbox with 3 dials -->
|
||||
<labelframe text="Dials linked to scales, showing initval and param_pin usage">
|
||||
<font>("Helvetica",10)</font>
|
||||
<bd>3</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>150</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial0"</text>
|
||||
<initval>10</initval>
|
||||
<resolution>0.01</resolution>
|
||||
<halpin>"dial0"</halpin>
|
||||
<dialcolor>"yellow"</dialcolor>
|
||||
<edgecolor>"green"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
|
||||
<dial>
|
||||
<size>150</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial1"</text>
|
||||
<initval>12</initval>
|
||||
<resolution>0.1</resolution>
|
||||
<halpin>"dial1"</halpin>
|
||||
<dialcolor>"green"</dialcolor>
|
||||
<edgecolor>"red"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
|
||||
<dial>
|
||||
<size>150</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial2"</text>
|
||||
<initval>5</initval>
|
||||
<resolution>1</resolution>
|
||||
<halpin>"dial2"</halpin>
|
||||
<dialcolor>"yellow"</dialcolor>
|
||||
<edgecolor>"green"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
</hbox>
|
||||
<!-- new hbox with 3 scales, spaced to sit under dials -->
|
||||
<hbox>
|
||||
<scale>
|
||||
<font>("Helvetica",16)</font>
|
||||
<width>"25"</width>
|
||||
<halpin>"scale3"</halpin>
|
||||
<resolution>0.01</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>1</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
|
||||
<!-- label used as a spacer -->
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
|
||||
<scale>
|
||||
<font>("Helvetica",16)</font>
|
||||
<width>"25"</width>
|
||||
<halpin>"scale4"</halpin>
|
||||
<resolution>0.1</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>10</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
|
||||
<!-- label used as a spacer -->
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
|
||||
<scale>
|
||||
<font>("Helvetica",16)</font>
|
||||
<width>"25"</width>
|
||||
<halpin>"scale5"</halpin>
|
||||
<resolution>1</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>20</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
|
||||
<!-- new hbox with 3 dials -->
|
||||
<labelframe text="Radio buttons linked to multi_labels showing legend selection">
|
||||
<font>("Helvetica",10)</font>
|
||||
<bd>3</bd>
|
||||
<relief>FLAT</relief>
|
||||
<hbox>
|
||||
<hbox>
|
||||
<vbox>
|
||||
<radiobutton>
|
||||
<choices>["one","two","three"]</choices>
|
||||
<halpin>"radio0"</halpin>
|
||||
<initval>0</initval>
|
||||
</radiobutton>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<radiobutton>
|
||||
<choices>["four","five","six"]</choices>
|
||||
<halpin>"radio1"</halpin>
|
||||
<initval>1</initval>
|
||||
</radiobutton>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<vbox>
|
||||
<multilabel>
|
||||
<legends>["Radio1-Selected","Now Radio2-Selected","And Now Radio3-Selected"]</legends>
|
||||
<font>("Helvetica", 10)</font>
|
||||
<disable_pin>True</disable_pin>
|
||||
<initval>0</initval>
|
||||
</multilabel>
|
||||
|
||||
<multilabel>
|
||||
<legends>["Radio4-Selected","Now Radio5-Selected","And Now Radio6-Selected"]</legends>
|
||||
<font>("Helvetica", 10)</font>
|
||||
<disable_pin>True</disable_pin>
|
||||
<initval>1</initval>
|
||||
</multilabel>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
|
||||
</hbox>
|
||||
</labelframe>
|
||||
|
||||
|
||||
<labelframe text="Checkbuttons showing initval setting / led operation and remote toggling of value">
|
||||
<font>("Helvetica",10)</font>
|
||||
<bd>3</bd>
|
||||
<relief>GROOVE</relief>
|
||||
<hbox>
|
||||
<hbox>
|
||||
<vbox>
|
||||
<checkbutton>
|
||||
<halpin>"checkbutton0"</halpin>
|
||||
<text>"Button 0"</text>
|
||||
<initval>1</initval>
|
||||
</checkbutton>
|
||||
<checkbutton>
|
||||
<halpin>"checkbutton1"</halpin>
|
||||
<text>"Button 1"</text>
|
||||
<initval>0</initval>
|
||||
</checkbutton>
|
||||
<checkbutton>
|
||||
<halpin>"checkbutton2"</halpin>
|
||||
<text>"Button 2"</text>
|
||||
<initval>0</initval>
|
||||
</checkbutton>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<vbox>
|
||||
<checkbutton>
|
||||
<halpin>"checkbutton3"</halpin>
|
||||
<text>"Button 3"</text>
|
||||
<initval>0</initval>
|
||||
</checkbutton>
|
||||
<checkbutton>
|
||||
<halpin>"checkbutton4"</halpin>
|
||||
<text>"Button 4"</text>
|
||||
<initval>1</initval>
|
||||
</checkbutton>
|
||||
<checkbutton>
|
||||
<halpin>"checkbutton5"</halpin>
|
||||
<text>"Button 5"</text>
|
||||
<initval>0</initval>
|
||||
</checkbutton>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<!-- hbox of labels used as a spacer -->
|
||||
<hbox>
|
||||
<vbox>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<vbox>
|
||||
<button>
|
||||
<halpin>"toggle-button0"</halpin>
|
||||
<text>"Toggle Checkbox 0"</text>
|
||||
</button>
|
||||
<!-- label used as a spacer -->
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<button>
|
||||
<halpin>"toggle-button1"</halpin>
|
||||
<text>"Toggle Checkbox 5"</text>
|
||||
</button>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
<!-- hbox of labels used as a spacer -->
|
||||
<hbox>
|
||||
<vbox>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
<hbox>
|
||||
<vbox>
|
||||
<led>
|
||||
<halpin>"led0"</halpin>
|
||||
<size>30</size>
|
||||
<on_color>"green"</on_color>
|
||||
<off_color>"red"</off_color>
|
||||
</led>
|
||||
<led>
|
||||
<halpin>"led1"</halpin>
|
||||
<size>30</size>
|
||||
<on_color>"green"</on_color>
|
||||
<off_color>"red"</off_color>
|
||||
</led>
|
||||
<led>
|
||||
<halpin>"led2"</halpin>
|
||||
<size>30</size>
|
||||
<on_color>"green"</on_color>
|
||||
<off_color>"red"</off_color>
|
||||
</led>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
<hbox>
|
||||
<vbox>
|
||||
<led>
|
||||
<halpin>"led3"</halpin>
|
||||
<size>30</size>
|
||||
<on_color>"green"</on_color>
|
||||
<off_color>"red"</off_color>
|
||||
</led>
|
||||
<led>
|
||||
<halpin>"led4"</halpin>
|
||||
<size>30</size>
|
||||
<on_color>"green"</on_color>
|
||||
<off_color>"red"</off_color>
|
||||
</led>
|
||||
<led>
|
||||
<halpin>"led5"</halpin>
|
||||
<size>30</size>
|
||||
<on_color>"green"</on_color>
|
||||
<off_color>"red"</off_color>
|
||||
</led>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
|
||||
</hbox>
|
||||
</labelframe>
|
||||
|
||||
|
||||
<labelframe text="Bar with ranges of different colours activated by scale / labels">
|
||||
<font>("Helvetica",10)</font>
|
||||
<bd>3</bd>
|
||||
<relief>RIDGE</relief>
|
||||
<hbox>
|
||||
<hbox>
|
||||
<bar>
|
||||
<halpin>"my-bar"</halpin>
|
||||
<min_>0</min_>
|
||||
<max_>150</max_>
|
||||
<bgcolor>"grey"</bgcolor>
|
||||
<range1>(0,100,"green")</range1>
|
||||
<range2>(101,129,"orange")</range2>
|
||||
<range3>(130,150,"red")</range3>
|
||||
<fillcolor>"green"</fillcolor>
|
||||
</bar>
|
||||
</hbox>
|
||||
|
||||
<hbox>
|
||||
<scale>
|
||||
<font>("Helvetica",16)</font>
|
||||
<width>"25"</width>
|
||||
<halpin>"my-hscale"</halpin>
|
||||
<resolution>1</resolution>
|
||||
<orient>HORIZONTAL</orient>
|
||||
<initval>0</initval>
|
||||
<min_>0</min_>
|
||||
<max_>150</max_>
|
||||
</scale>
|
||||
</hbox>
|
||||
|
||||
<!-- hbox of labels used as a spacer -->
|
||||
<hbox>
|
||||
<vbox>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
<hbox>
|
||||
<vbox>
|
||||
<label>
|
||||
<relief>FLAT</relief>
|
||||
<text>"I am a borderless label"</text>
|
||||
</label>
|
||||
<label>
|
||||
<bd>3</bd>
|
||||
<relief>RAISED</relief>
|
||||
<text>"I am a raised label"</text>
|
||||
</label>
|
||||
<label>
|
||||
<bd>3</bd>
|
||||
<relief>SUNKEN</relief>
|
||||
<text>"I am a sunken label"</text>
|
||||
</label>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
|
||||
|
||||
</pyvcp>
|
||||
|
||||
|
||||
8
configs/sim.pyvcp_demo/pyvcp_embed_tab.hal
Normal file
8
configs/sim.pyvcp_demo/pyvcp_embed_tab.hal
Normal file
@@ -0,0 +1,8 @@
|
||||
# #########################################
|
||||
# Example hal file showing some linkages
|
||||
# of pyvcp_widgets
|
||||
|
||||
#net dials1scale0 dials1.scale.0.param_pin <= dials1.dial0
|
||||
#net dials1scale1 dials1.scale.1.param_pin <= dials1.dial1
|
||||
#net dials2scale0 dials2.scale.0.param_pin <= dials2.dial0
|
||||
#net dials2scale1 dials2.scale.1.param_pin <= dials2.dial1
|
||||
236
configs/sim.pyvcp_demo/pyvcp_embed_tab.ini
Normal file
236
configs/sim.pyvcp_demo/pyvcp_embed_tab.ini
Normal file
@@ -0,0 +1,236 @@
|
||||
# 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 of this INI file
|
||||
VERSION = 1.1
|
||||
|
||||
# Name of machine, for use with display, etc.
|
||||
MACHINE = Pyvcp_demo1
|
||||
|
||||
# Name of NML file to use, default is emc.nml
|
||||
#NML_FILE = emc.nml
|
||||
|
||||
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
|
||||
# DEBUG = 0x7FFFFFFF
|
||||
DEBUG = 0
|
||||
|
||||
# Sections for display options ------------------------------------------------
|
||||
[DISPLAY]
|
||||
|
||||
DISPLAY = axis
|
||||
|
||||
# embed two PyVCP panels as tabs
|
||||
EMBED_TAB_NAME = Dials1
|
||||
EMBED_TAB_COMMAND = pyvcp pyvcp_embed_tab_1.xml
|
||||
EMBED_TAB_NAME = Dials2
|
||||
EMBED_TAB_COMMAND = pyvcp pyvcp_embed_tab_2.xml
|
||||
|
||||
# Cycle time, in seconds, that display will sleep between polls
|
||||
CYCLE_TIME = 0.100
|
||||
|
||||
# Path to help file
|
||||
HELP_FILE = doc/help.txt
|
||||
|
||||
# Initial display setting for position, RELATIVE or MACHINE
|
||||
POSITION_OFFSET = RELATIVE
|
||||
|
||||
# Initial display setting for position, COMMANDED or ACTUAL
|
||||
POSITION_FEEDBACK = ACTUAL
|
||||
|
||||
# Highest value that will be allowed for feed override, 1.0 = 100%
|
||||
MAX_FEED_OVERRIDE = 1.2
|
||||
MAX_SPINDLE_OVERRIDE = 1.0
|
||||
# Prefix to be used
|
||||
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
|
||||
|
||||
# Introductory graphic
|
||||
INTRO_GRAPHIC = linuxcnc.gif
|
||||
INTRO_TIME = 5
|
||||
|
||||
#EDITOR = geany
|
||||
|
||||
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm
|
||||
#INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in
|
||||
|
||||
[FILTER]
|
||||
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
|
||||
PROGRAM_EXTENSION = .py Python Script
|
||||
PROGRAM_EXTENSION = .nc, .NC
|
||||
|
||||
png = image-to-gcode
|
||||
gif = image-to-gcode
|
||||
jpg = image-to-gcode
|
||||
dxf = image-to-gcode
|
||||
py = python3
|
||||
nc = /usr/bin/axis
|
||||
|
||||
# Task controller section -----------------------------------------------------
|
||||
[RS274NGC]
|
||||
|
||||
# File containing interpreter variables
|
||||
PARAMETER_FILE = sim_mm.var
|
||||
|
||||
# Motion control section ------------------------------------------------------
|
||||
[EMCMOT]
|
||||
|
||||
EMCMOT = motmod
|
||||
|
||||
# Timeout for comm to emcmot, in seconds
|
||||
COMM_TIMEOUT = 1.0
|
||||
|
||||
# BASE_PERIOD is unused in this configuration but specified in core_sim.hal
|
||||
BASE_PERIOD = 0
|
||||
# Servo task period, in nano-seconds
|
||||
SERVO_PERIOD = 1000000
|
||||
|
||||
# Hardware Abstraction Layer section --------------------------------------------------
|
||||
[TASK]
|
||||
|
||||
# Name of task controller program, e.g., milltask
|
||||
TASK = milltask
|
||||
|
||||
# Cycle time, in seconds, that task controller will sleep between polls
|
||||
CYCLE_TIME = 0.001
|
||||
|
||||
# Part program interpreter section --------------------------------------------
|
||||
[HAL]
|
||||
|
||||
# The run script first uses halcmd to execute any HALFILE
|
||||
# files, and then to execute any individual HALCMD commands.
|
||||
#
|
||||
|
||||
# list of hal config files to run through halcmd
|
||||
# files are executed in the order in which they appear
|
||||
HALFILE = core_sim.hal
|
||||
HALFILE = axis_manualtoolchange.hal
|
||||
HALFILE = simulated_home.hal
|
||||
#HALFILE = gamepad.hal
|
||||
|
||||
# list of halcmd commands to execute
|
||||
# commands are executed in the order in which they appear
|
||||
#HALCMD = save neta
|
||||
|
||||
# Single file that is executed after the GUI has started. Only supported by
|
||||
# AXIS at this time (only AXIS creates a HAL component of its own)
|
||||
POSTGUI_HALFILE = pyvcp_embed_tab.hal
|
||||
|
||||
HALUI = halui
|
||||
|
||||
[HALUI]
|
||||
# add halui MDI commands here (max 64)
|
||||
|
||||
# Trajectory planner section --------------------------------------------------
|
||||
[TRAJ]
|
||||
COORDINATES = X Y Z
|
||||
LINEAR_UNITS = mm
|
||||
ANGULAR_UNITS = degree
|
||||
DEFAULT_LINEAR_VELOCITY = 30.48
|
||||
MAX_LINEAR_VELOCITY = 53.34
|
||||
DEFAULT_LINEAR_ACCELERATION = 508
|
||||
MAX_LINEAR_ACCELERATION = 508
|
||||
POSITION_FILE = position_mm.txt
|
||||
|
||||
# Axes sections ---------------------------------------------------------------
|
||||
|
||||
# First axis
|
||||
[EMCIO]
|
||||
|
||||
# Name of IO controller program, e.g., io
|
||||
EMCIO = io
|
||||
|
||||
# cycle time, in seconds
|
||||
CYCLE_TIME = 0.100
|
||||
|
||||
# tool table file
|
||||
TOOL_TABLE = sim_mm.tbl
|
||||
TOOL_CHANGE_POSITION = 0 0 50.8
|
||||
#RANDOM_TOOLCHANGER = 1
|
||||
|
||||
[KINS]
|
||||
KINEMATICS = trivkins
|
||||
JOINTS = 3
|
||||
|
||||
[AXIS_X]
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_0]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.000
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0.0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = YES
|
||||
HOME_SEQUENCE = 0
|
||||
#HOME_IS_SHARED = 1
|
||||
|
||||
# Second axis
|
||||
[AXIS_Y]
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_1]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.000
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -254
|
||||
MAX_LIMIT = 254
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0.0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
#HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = NO
|
||||
HOME_SEQUENCE = 0
|
||||
|
||||
# Third axis
|
||||
[AXIS_Z]
|
||||
MIN_LIMIT = -150
|
||||
MAX_LIMIT = 101.6
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
|
||||
[JOINT_2]
|
||||
TYPE = LINEAR
|
||||
HOME = 0.0
|
||||
MAX_VELOCITY = 30.48
|
||||
MAX_ACCELERATION = 508
|
||||
BACKLASH = 0.000
|
||||
INPUT_SCALE = 157.48
|
||||
OUTPUT_SCALE = 1.000
|
||||
MIN_LIMIT = -150
|
||||
MAX_LIMIT = 101.6
|
||||
FERROR = 1.27
|
||||
MIN_FERROR = .254
|
||||
HOME_OFFSET = 0
|
||||
HOME_SEARCH_VEL = 0
|
||||
HOME_LATCH_VEL = 0
|
||||
#HOME_USE_INDEX = NO
|
||||
#HOME_IGNORE_LIMITS = NO
|
||||
HOME_SEQUENCE = 0
|
||||
#HOME_IS_SHARED = 1
|
||||
|
||||
# section for main IO controller parameters -----------------------------------
|
||||
77
configs/sim.pyvcp_demo/pyvcp_embed_tab_1.xml
Normal file
77
configs/sim.pyvcp_demo/pyvcp_embed_tab_1.xml
Normal file
@@ -0,0 +1,77 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<pyvcp>
|
||||
<vbox>
|
||||
<label>
|
||||
<text>"Embedded Tab #1"</text>
|
||||
<font>("Helvetica",14)</font>
|
||||
<pady>8</pady>
|
||||
</label>
|
||||
<hbox>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<text>"Dial 0"</text>
|
||||
<initval>50</initval>
|
||||
<resolution>1</resolution>
|
||||
<halpin>"dial0"</halpin>
|
||||
<dialcolor>"red"</dialcolor>
|
||||
<edgecolor>"yellow"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale0"</halpin>
|
||||
<resolution>1</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>50</initval>
|
||||
<min_>0</min_>
|
||||
<max_>100</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>10</max_>
|
||||
<text>"Dial 1"</text>
|
||||
<initval>5</initval>
|
||||
<resolution>0.1</resolution>
|
||||
<halpin>"dial1"</halpin>
|
||||
<dialcolor>"green"</dialcolor>
|
||||
<edgecolor>"cyan"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale1"</halpin>
|
||||
<resolution>0.1</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>5</initval>
|
||||
<min_>0</min_>
|
||||
<max_>10</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</pyvcp>
|
||||
|
||||
|
||||
77
configs/sim.pyvcp_demo/pyvcp_embed_tab_2.xml
Normal file
77
configs/sim.pyvcp_demo/pyvcp_embed_tab_2.xml
Normal file
@@ -0,0 +1,77 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<pyvcp>
|
||||
<vbox>
|
||||
<label>
|
||||
<text>"Embedded Tab #2"</text>
|
||||
<font>("Helvetica",16)</font>
|
||||
<pady>8</pady>
|
||||
</label>
|
||||
<hbox>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>1</max_>
|
||||
<text>"Dial 2"</text>
|
||||
<initval>0.5</initval>
|
||||
<resolution>0.01</resolution>
|
||||
<halpin>"dial0"</halpin>
|
||||
<dialcolor>"cyan"</dialcolor>
|
||||
<edgecolor>"magenta"</edgecolor>
|
||||
<dotcolor>"black"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale0"</halpin>
|
||||
<resolution>0.01</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>.5</initval>
|
||||
<min_>0</min_>
|
||||
<max_>1</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
<label>
|
||||
<text>" "</text>
|
||||
</label>
|
||||
<labelframe>
|
||||
<bd>2</bd>
|
||||
<relief>RAISED</relief>
|
||||
<hbox>
|
||||
<dial>
|
||||
<size>100</size>
|
||||
<cpr>100</cpr>
|
||||
<min_>0</min_>
|
||||
<max_>0.1</max_>
|
||||
<text>"Dial 3"</text>
|
||||
<initval>0.05</initval>
|
||||
<resolution>0.001</resolution>
|
||||
<halpin>"dial1"</halpin>
|
||||
<dialcolor>"yellow"</dialcolor>
|
||||
<edgecolor>"red"</edgecolor>
|
||||
<dotcolor>"blue"</dotcolor>
|
||||
<param_pin>1</param_pin>
|
||||
</dial>
|
||||
<scale>
|
||||
<width>"15"</width>
|
||||
<halpin>"scale1"</halpin>
|
||||
<resolution>0.001</resolution>
|
||||
<orient>VERTICAL</orient>
|
||||
<initval>0.05</initval>
|
||||
<min_>0</min_>
|
||||
<max_>0.1</max_>
|
||||
<param_pin>1</param_pin>
|
||||
</scale>
|
||||
</hbox>
|
||||
</labelframe>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</pyvcp>
|
||||
|
||||
|
||||
24
configs/sim.pyvcp_demo/sim_mm.tbl
Normal file
24
configs/sim.pyvcp_demo/sim_mm.tbl
Normal file
@@ -0,0 +1,24 @@
|
||||
T1 P1 Z0.511 D3 ;3mm end mill
|
||||
T2 P4 Z0.1 D1.5 ;1.5mm end mill
|
||||
T3 P3 Z1.273 D5 ;5mm tap drill
|
||||
T4 P2 Z10 D16 ;16 mm schaftfräser
|
||||
T5 P5 Z25 D25 ;25'er fräser
|
||||
T6 P6 Z6 D6 ;tool 6
|
||||
T7 P7 Z7 D7 ;7
|
||||
T8 P8 Z8 D8 ;8
|
||||
T9 P9 Z9 D9 ;9
|
||||
T10 P10 Z10 D10 ;10
|
||||
T11 P11 Z11 D11 ;11
|
||||
T12 P12 Z12 D12 ;12
|
||||
T13 P13 Z13 D13 ;13
|
||||
T14 P14 Z14 D14 ;14
|
||||
T15 P15 Z15 D15 ;15
|
||||
T16 P16 Z16 D16 ;16
|
||||
T17 P17 Z17 D17 ;17
|
||||
T18 P18 Z18 D18 ;18
|
||||
T19 P19 Z19 D19 ;19
|
||||
T20 P20 Z20 D20 ;20
|
||||
T21 P21 Z21 D21 ;21
|
||||
T22 P22 Z22 D22 ;22
|
||||
T23 P23 Z23 D23 ;23
|
||||
T24 P24 Z24 D24 ;24
|
||||
119
configs/sim.pyvcp_demo/sim_mm.var
Normal file
119
configs/sim.pyvcp_demo/sim_mm.var
Normal file
@@ -0,0 +1,119 @@
|
||||
5161 0.000000
|
||||
5162 0.000000
|
||||
5163 0.000000
|
||||
5164 0.000000
|
||||
5165 0.000000
|
||||
5166 0.000000
|
||||
5167 0.000000
|
||||
5168 0.000000
|
||||
5169 0.000000
|
||||
5181 0.000000
|
||||
5182 0.000000
|
||||
5183 0.000000
|
||||
5184 0.000000
|
||||
5185 0.000000
|
||||
5186 0.000000
|
||||
5187 0.000000
|
||||
5188 0.000000
|
||||
5189 0.000000
|
||||
5210 0.000000
|
||||
5211 0.000000
|
||||
5212 0.000000
|
||||
5213 0.000000
|
||||
5214 0.000000
|
||||
5215 0.000000
|
||||
5216 0.000000
|
||||
5217 0.000000
|
||||
5218 0.000000
|
||||
5219 0.000000
|
||||
5220 1.000000
|
||||
5221 0.000000
|
||||
5222 0.000000
|
||||
5223 0.000000
|
||||
5224 0.000000
|
||||
5225 0.000000
|
||||
5226 0.000000
|
||||
5227 0.000000
|
||||
5228 0.000000
|
||||
5229 0.000000
|
||||
5230 0.000000
|
||||
5241 0.000000
|
||||
5242 0.000000
|
||||
5243 0.000000
|
||||
5244 0.000000
|
||||
5245 0.000000
|
||||
5246 0.000000
|
||||
5247 0.000000
|
||||
5248 0.000000
|
||||
5249 0.000000
|
||||
5250 0.000000
|
||||
5261 0.000000
|
||||
5262 0.000000
|
||||
5263 0.000000
|
||||
5264 0.000000
|
||||
5265 0.000000
|
||||
5266 0.000000
|
||||
5267 0.000000
|
||||
5268 0.000000
|
||||
5269 0.000000
|
||||
5270 0.000000
|
||||
5281 0.000000
|
||||
5282 0.000000
|
||||
5283 0.000000
|
||||
5284 0.000000
|
||||
5285 0.000000
|
||||
5286 0.000000
|
||||
5287 0.000000
|
||||
5288 0.000000
|
||||
5289 0.000000
|
||||
5290 0.000000
|
||||
5301 0.000000
|
||||
5302 0.000000
|
||||
5303 0.000000
|
||||
5304 0.000000
|
||||
5305 0.000000
|
||||
5306 0.000000
|
||||
5307 0.000000
|
||||
5308 0.000000
|
||||
5309 0.000000
|
||||
5310 0.000000
|
||||
5321 0.000000
|
||||
5322 0.000000
|
||||
5323 0.000000
|
||||
5324 0.000000
|
||||
5325 0.000000
|
||||
5326 0.000000
|
||||
5327 0.000000
|
||||
5328 0.000000
|
||||
5329 0.000000
|
||||
5330 0.000000
|
||||
5341 0.000000
|
||||
5342 0.000000
|
||||
5343 0.000000
|
||||
5344 0.000000
|
||||
5345 0.000000
|
||||
5346 0.000000
|
||||
5347 0.000000
|
||||
5348 0.000000
|
||||
5349 0.000000
|
||||
5350 0.000000
|
||||
5361 0.000000
|
||||
5362 0.000000
|
||||
5363 0.000000
|
||||
5364 0.000000
|
||||
5365 0.000000
|
||||
5366 0.000000
|
||||
5367 0.000000
|
||||
5368 0.000000
|
||||
5369 0.000000
|
||||
5370 0.000000
|
||||
5381 0.000000
|
||||
5382 0.000000
|
||||
5383 0.000000
|
||||
5384 0.000000
|
||||
5385 0.000000
|
||||
5386 0.000000
|
||||
5387 0.000000
|
||||
5388 0.000000
|
||||
5389 0.000000
|
||||
5390 0.000000
|
||||
119
configs/sim.pyvcp_demo/sim_mm.var.bak
Normal file
119
configs/sim.pyvcp_demo/sim_mm.var.bak
Normal file
@@ -0,0 +1,119 @@
|
||||
5161 0.000000
|
||||
5162 0.000000
|
||||
5163 0.000000
|
||||
5164 0.000000
|
||||
5165 0.000000
|
||||
5166 0.000000
|
||||
5167 0.000000
|
||||
5168 0.000000
|
||||
5169 0.000000
|
||||
5181 0.000000
|
||||
5182 0.000000
|
||||
5183 0.000000
|
||||
5184 0.000000
|
||||
5185 0.000000
|
||||
5186 0.000000
|
||||
5187 0.000000
|
||||
5188 0.000000
|
||||
5189 0.000000
|
||||
5210 0.000000
|
||||
5211 0.000000
|
||||
5212 0.000000
|
||||
5213 0.000000
|
||||
5214 0.000000
|
||||
5215 0.000000
|
||||
5216 0.000000
|
||||
5217 0.000000
|
||||
5218 0.000000
|
||||
5219 0.000000
|
||||
5220 1.000000
|
||||
5221 0.000000
|
||||
5222 0.000000
|
||||
5223 0.000000
|
||||
5224 0.000000
|
||||
5225 0.000000
|
||||
5226 0.000000
|
||||
5227 0.000000
|
||||
5228 0.000000
|
||||
5229 0.000000
|
||||
5230 0.000000
|
||||
5241 0.000000
|
||||
5242 0.000000
|
||||
5243 0.000000
|
||||
5244 0.000000
|
||||
5245 0.000000
|
||||
5246 0.000000
|
||||
5247 0.000000
|
||||
5248 0.000000
|
||||
5249 0.000000
|
||||
5250 0.000000
|
||||
5261 0.000000
|
||||
5262 0.000000
|
||||
5263 0.000000
|
||||
5264 0.000000
|
||||
5265 0.000000
|
||||
5266 0.000000
|
||||
5267 0.000000
|
||||
5268 0.000000
|
||||
5269 0.000000
|
||||
5270 0.000000
|
||||
5281 0.000000
|
||||
5282 0.000000
|
||||
5283 0.000000
|
||||
5284 0.000000
|
||||
5285 0.000000
|
||||
5286 0.000000
|
||||
5287 0.000000
|
||||
5288 0.000000
|
||||
5289 0.000000
|
||||
5290 0.000000
|
||||
5301 0.000000
|
||||
5302 0.000000
|
||||
5303 0.000000
|
||||
5304 0.000000
|
||||
5305 0.000000
|
||||
5306 0.000000
|
||||
5307 0.000000
|
||||
5308 0.000000
|
||||
5309 0.000000
|
||||
5310 0.000000
|
||||
5321 0.000000
|
||||
5322 0.000000
|
||||
5323 0.000000
|
||||
5324 0.000000
|
||||
5325 0.000000
|
||||
5326 0.000000
|
||||
5327 0.000000
|
||||
5328 0.000000
|
||||
5329 0.000000
|
||||
5330 0.000000
|
||||
5341 0.000000
|
||||
5342 0.000000
|
||||
5343 0.000000
|
||||
5344 0.000000
|
||||
5345 0.000000
|
||||
5346 0.000000
|
||||
5347 0.000000
|
||||
5348 0.000000
|
||||
5349 0.000000
|
||||
5350 0.000000
|
||||
5361 0.000000
|
||||
5362 0.000000
|
||||
5363 0.000000
|
||||
5364 0.000000
|
||||
5365 0.000000
|
||||
5366 0.000000
|
||||
5367 0.000000
|
||||
5368 0.000000
|
||||
5369 0.000000
|
||||
5370 0.000000
|
||||
5381 0.000000
|
||||
5382 0.000000
|
||||
5383 0.000000
|
||||
5384 0.000000
|
||||
5385 0.000000
|
||||
5386 0.000000
|
||||
5387 0.000000
|
||||
5388 0.000000
|
||||
5389 0.000000
|
||||
5390 0.000000
|
||||
Reference in New Issue
Block a user