Search Results (Searched for: estop_latch)
- jmp97
- jmp97
26 Oct 2025 19:57 - 26 Oct 2025 19:59
Replied by jmp97 on topic LinuxCNC installation + 7I96S
LinuxCNC installation + 7I96S
Category: Installing LinuxCNC
No, it does not show an error at the beginning when the machine stops. The movement error occurs when you try to move the motors afterwards.
My INI
[EMC] # The version string for this INI file. VERSION = 1.1 # Name of machine, for use with display, etc. MACHINE = HM2-Stepper # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others #DEBUG = 0x00000003 #DEBUG = 0x00000007 DEBUG = 0 [DISPLAY] # Name of display program, e.g., tklinuxcnc #DISPLAY = tklinuxcnc DISPLAY = axis update_period = 0.05 show_trail = True # Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.0500 # Path to help file HELP_FILE = tklinuxcnc.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.5 # Prefix to be used PROGRAM_PREFIX = ../../nc_files/ # Introductory graphic INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 [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] # File containing interpreter variables PARAMETER_FILE = hm2-stepper.var [EMCMOT] EMCMOT = motmod # Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 # Servo task period, in nanoseconds SERVO_PERIOD = 4000000 [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.010 [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 = hm2-stepper-eth.hal # list of halcmd commands to execute # commands are executed in the order in which they appear #HALCMD = save neta [HALUI] #No Content [TRAJ] COORDINATES = X Y Z LINEAR_UNITS = mm ANGULAR_UNITS = degree # Ajuste seguro de velocidad inicial MAX_LINEAR_VELOCITY = 20 [EMCIO] # Name of IO controller program, e.g., io EMCIO = io # cycle time, in seconds CYCLE_TIME = 0.100 # tool table file TOOL_TABLE = tool.tbl [KINS] KINEMATICS = trivkins JOINTS = 3 [AXIS_X] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_0] # # Step timing is 40 us steplen + 40 us stepspace # That gives 80 us step period = 12.5 KHz step freq # # Bah, even software stepping can handle that, hm2 doesn't buy you much with # such slow steppers. # # Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch # # This gives a maxvel of 12.5/1 = 12.5 ips # TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.01 # scale is 200 steps/rev * 5 revs/inch SCALE = -400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [AXIS_Y] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_1] TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.005 SCALE = -400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [AXIS_Z] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_2] TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.004 SCALE = 400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [HOSTMOT2] DRIVER=hm2_eth BOARD_IP=192.168.1.121 BOARD=7i96s CONFIG="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=0000"
My HAL:
# HAL file for HostMot2 with 3 steppers # # Derived from Ted Hyde's original hm2-servo config # # Based up work and discussion with Seb & Peter & Jeff # GNU license references - insert here. www.linuxcnc.org # # # ######################################## # Firmware files are in /lib/firmware/hm2/7i43/ # Must symlink the hostmot2 firmware directory of sanbox to # /lib/firmware before running EMC2... # sudo ln -s $HOME/emc2-sandbox/src/hal/drivers/mesa-hostmot2/firmware /lib/firmware/hm2 # # See also: # <www.linuxcnc.org/docs/devel/html/man/man...ml#config%20modparam> # and wiki.linuxcnc.org/cgi-bin/emcinfo.pl?HostMot2 # # ##################################################################### # ################################### # Core EMC/HAL Loads # ################################### # kinematics loadrt [KINS]KINEMATICS # motion controller, get name and thread periods from ini file loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS # hostmot2 driver loadrt hostmot2 # load low-level driver loadrt [HOSTMOT2](DRIVER) board_ip=[HOSTMOT2](BOARD_IP) config=[HOSTMOT2](CONFIG) # load estop latch component loadrt estop_latch # ################################################ # THREADS # ################################################ addf hm2_[HOSTMOT2](BOARD).0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread # revel in the free time here from not having que run PID addf hm2_[HOSTMOT2](BOARD).0.write servo-thread addf estop-latch.0 servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### # ################ # X [0] Axis # ################ # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE net emcmot.00.enable <= joint.0.amp-enable-out net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable # position command and feedback net emcmot.00.pos-cmd <= joint.0.motor-pos-cmd net emcmot.00.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-cmd net motor.00.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-fb net motor.00.pos-fb => joint.0.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [JOINT_0]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [JOINT_0]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [JOINT_0]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [JOINT_0]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [JOINT_0]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 0 # ################ # Y [1] Axis # ################ # axis enable chain newsig emcmot.01.enable bit sets emcmot.01.enable FALSE net emcmot.01.enable <= joint.1.amp-enable-out net emcmot.01.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.01.enable # position command and feedback net emcmot.01.pos-cmd <= joint.1.motor-pos-cmd net emcmot.01.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-cmd net motor.01.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-fb net motor.01.pos-fb => joint.1.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirsetup [JOINT_1]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirhold [JOINT_1]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.steplen [JOINT_1]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.stepspace [JOINT_1]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-scale [JOINT_1]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.step_type 0 # ################ # Z [2] Axis # ################ # axis enable chain newsig emcmot.02.enable bit sets emcmot.02.enable FALSE net emcmot.02.enable <= joint.2.amp-enable-out net emcmot.02.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.02.enable # position command and feedback net emcmot.02.pos-cmd <= joint.2.motor-pos-cmd net emcmot.02.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-cmd net motor.02.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-fb net motor.02.pos-fb => joint.2.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirsetup [JOINT_2]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirhold [JOINT_2]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.steplen [JOINT_2]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.stepspace [JOINT_2]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-scale [JOINT_2]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.step_type 0 # # The Mesa AnyIO output pins can be in open-drain mode (drive low, float # high) or push/pull mode (drive low, drive high). # # When a logical output is 1 in open-drain mode, the FPGA lets the pin # float and it gets pulled high to +5V via a 10K resistor. # # When a logical output is 1 in push/pull mode, the FPGA pushes the pin # high but only to +3.3V. This is problematic on some kinds of inputs. # #setp hm2_[HOSTMOT2](BOARD).0.gpio.048.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.049.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.054.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.055.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.060.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.061.is_opendrain 1 # ################################################## # Standard I/O Block - EStop, Etc # ################################################## # A basic estop loop that only includes the hostmot watchdog. net user-enable iocontrol.0.user-request-enable => estop-latch.0.reset net enable-latch estop-latch.0.ok-out => iocontrol.0.emc-enable-in net watchdog hm2_[HOSTMOT2](BOARD).0.watchdog.has_bit => estop-latch.0.fault-in # create signals for tool loading loopback net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
(Use CL57T stepper drivers)
Thanks
My INI
[EMC] # The version string for this INI file. VERSION = 1.1 # Name of machine, for use with display, etc. MACHINE = HM2-Stepper # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others #DEBUG = 0x00000003 #DEBUG = 0x00000007 DEBUG = 0 [DISPLAY] # Name of display program, e.g., tklinuxcnc #DISPLAY = tklinuxcnc DISPLAY = axis update_period = 0.05 show_trail = True # Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.0500 # Path to help file HELP_FILE = tklinuxcnc.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.5 # Prefix to be used PROGRAM_PREFIX = ../../nc_files/ # Introductory graphic INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 [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] # File containing interpreter variables PARAMETER_FILE = hm2-stepper.var [EMCMOT] EMCMOT = motmod # Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 # Servo task period, in nanoseconds SERVO_PERIOD = 4000000 [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.010 [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 = hm2-stepper-eth.hal # list of halcmd commands to execute # commands are executed in the order in which they appear #HALCMD = save neta [HALUI] #No Content [TRAJ] COORDINATES = X Y Z LINEAR_UNITS = mm ANGULAR_UNITS = degree # Ajuste seguro de velocidad inicial MAX_LINEAR_VELOCITY = 20 [EMCIO] # Name of IO controller program, e.g., io EMCIO = io # cycle time, in seconds CYCLE_TIME = 0.100 # tool table file TOOL_TABLE = tool.tbl [KINS] KINEMATICS = trivkins JOINTS = 3 [AXIS_X] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_0] # # Step timing is 40 us steplen + 40 us stepspace # That gives 80 us step period = 12.5 KHz step freq # # Bah, even software stepping can handle that, hm2 doesn't buy you much with # such slow steppers. # # Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch # # This gives a maxvel of 12.5/1 = 12.5 ips # TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.01 # scale is 200 steps/rev * 5 revs/inch SCALE = -400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [AXIS_Y] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_1] TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.005 SCALE = -400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [AXIS_Z] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_2] TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.004 SCALE = 400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [HOSTMOT2] DRIVER=hm2_eth BOARD_IP=192.168.1.121 BOARD=7i96s CONFIG="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=0000"
My HAL:
# HAL file for HostMot2 with 3 steppers # # Derived from Ted Hyde's original hm2-servo config # # Based up work and discussion with Seb & Peter & Jeff # GNU license references - insert here. www.linuxcnc.org # # # ######################################## # Firmware files are in /lib/firmware/hm2/7i43/ # Must symlink the hostmot2 firmware directory of sanbox to # /lib/firmware before running EMC2... # sudo ln -s $HOME/emc2-sandbox/src/hal/drivers/mesa-hostmot2/firmware /lib/firmware/hm2 # # See also: # <www.linuxcnc.org/docs/devel/html/man/man...ml#config%20modparam> # and wiki.linuxcnc.org/cgi-bin/emcinfo.pl?HostMot2 # # ##################################################################### # ################################### # Core EMC/HAL Loads # ################################### # kinematics loadrt [KINS]KINEMATICS # motion controller, get name and thread periods from ini file loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS # hostmot2 driver loadrt hostmot2 # load low-level driver loadrt [HOSTMOT2](DRIVER) board_ip=[HOSTMOT2](BOARD_IP) config=[HOSTMOT2](CONFIG) # load estop latch component loadrt estop_latch # ################################################ # THREADS # ################################################ addf hm2_[HOSTMOT2](BOARD).0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread # revel in the free time here from not having que run PID addf hm2_[HOSTMOT2](BOARD).0.write servo-thread addf estop-latch.0 servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### # ################ # X [0] Axis # ################ # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE net emcmot.00.enable <= joint.0.amp-enable-out net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable # position command and feedback net emcmot.00.pos-cmd <= joint.0.motor-pos-cmd net emcmot.00.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-cmd net motor.00.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-fb net motor.00.pos-fb => joint.0.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [JOINT_0]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [JOINT_0]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [JOINT_0]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [JOINT_0]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [JOINT_0]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 0 # ################ # Y [1] Axis # ################ # axis enable chain newsig emcmot.01.enable bit sets emcmot.01.enable FALSE net emcmot.01.enable <= joint.1.amp-enable-out net emcmot.01.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.01.enable # position command and feedback net emcmot.01.pos-cmd <= joint.1.motor-pos-cmd net emcmot.01.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-cmd net motor.01.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-fb net motor.01.pos-fb => joint.1.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirsetup [JOINT_1]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirhold [JOINT_1]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.steplen [JOINT_1]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.stepspace [JOINT_1]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-scale [JOINT_1]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.step_type 0 # ################ # Z [2] Axis # ################ # axis enable chain newsig emcmot.02.enable bit sets emcmot.02.enable FALSE net emcmot.02.enable <= joint.2.amp-enable-out net emcmot.02.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.02.enable # position command and feedback net emcmot.02.pos-cmd <= joint.2.motor-pos-cmd net emcmot.02.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-cmd net motor.02.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-fb net motor.02.pos-fb => joint.2.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirsetup [JOINT_2]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirhold [JOINT_2]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.steplen [JOINT_2]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.stepspace [JOINT_2]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-scale [JOINT_2]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.step_type 0 # # The Mesa AnyIO output pins can be in open-drain mode (drive low, float # high) or push/pull mode (drive low, drive high). # # When a logical output is 1 in open-drain mode, the FPGA lets the pin # float and it gets pulled high to +5V via a 10K resistor. # # When a logical output is 1 in push/pull mode, the FPGA pushes the pin # high but only to +3.3V. This is problematic on some kinds of inputs. # #setp hm2_[HOSTMOT2](BOARD).0.gpio.048.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.049.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.054.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.055.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.060.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.061.is_opendrain 1 # ################################################## # Standard I/O Block - EStop, Etc # ################################################## # A basic estop loop that only includes the hostmot watchdog. net user-enable iocontrol.0.user-request-enable => estop-latch.0.reset net enable-latch estop-latch.0.ok-out => iocontrol.0.emc-enable-in net watchdog hm2_[HOSTMOT2](BOARD).0.watchdog.has_bit => estop-latch.0.fault-in # create signals for tool loading loopback net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
(Use CL57T stepper drivers)
Thanks
- jmp97
- jmp97
16 Oct 2025 19:11
Replied by jmp97 on topic LinuxCNC installation + 7I96S
LinuxCNC installation + 7I96S
Category: Installing LinuxCNC
Ok, i see this:
halcmd show all *.tmax
Loaded HAL Components:
ID Type Name PID State
Component Pins:
Owner Type Dir Value Name
Pin Aliases:
Alias Original Name
Signals:
Type Value Name (linked to)
Parameters:
Owner Type Dir Value Name
33 s32 RW 1642 estop-latch.0.tmax
30 s32 RW 0 hm2_7i96s.0.read-request.tmax
30 s32 RW 2042995 hm2_7i96s.0.read.tmax
30 s32 RW 27254 hm2_7i96s.0.write.tmax
23 s32 RW 4820 motion-command-handler.tmax
23 s32 RW 18868 motion-controller.tmax
24 s32 RW 2081134 servo-thread.tmax
Parameter Aliases:
Alias Original Name
Exported Functions:
Owner CodeAddr Arg FP Users Name
Realtime Threads:
Period FP Name ( Time, Max-Time )
As for the controller, how do I install it?
halcmd show all *.tmax
Loaded HAL Components:
ID Type Name PID State
Component Pins:
Owner Type Dir Value Name
Pin Aliases:
Alias Original Name
Signals:
Type Value Name (linked to)
Parameters:
Owner Type Dir Value Name
33 s32 RW 1642 estop-latch.0.tmax
30 s32 RW 0 hm2_7i96s.0.read-request.tmax
30 s32 RW 2042995 hm2_7i96s.0.read.tmax
30 s32 RW 27254 hm2_7i96s.0.write.tmax
23 s32 RW 4820 motion-command-handler.tmax
23 s32 RW 18868 motion-controller.tmax
24 s32 RW 2081134 servo-thread.tmax
Parameter Aliases:
Alias Original Name
Exported Functions:
Owner CodeAddr Arg FP Users Name
Realtime Threads:
Period FP Name ( Time, Max-Time )
As for the controller, how do I install it?
- rodw

03 Oct 2025 10:43
Replied by rodw on topic External E-Stop
External E-Stop
Category: HAL Examples
my recommendation is to get it working in axis and then convert to gmocappy cos it does some funny things. If your config breaks on conversion, raise it with gmocappy.
This is how I did it with a safety relay and an external latch button attached to the relay that
sends a signal to pin lcec.0.3.in-01 when the relay is enabled
this is inverted and sent to the drives estop input on all drives.
The estop button is attached to the safety relay
github.com/rodw-au/vmnmillqt/blob/main/VMNmillQT.hal#L146
In this case no estop-latch is used,
This is how I did it with a safety relay and an external latch button attached to the relay that
sends a signal to pin lcec.0.3.in-01 when the relay is enabled
this is inverted and sent to the drives estop input on all drives.
The estop button is attached to the safety relay
github.com/rodw-au/vmnmillqt/blob/main/VMNmillQT.hal#L146
In this case no estop-latch is used,
- MacKaye
- MacKaye
29 Sep 2025 19:58
Replied by MacKaye on topic External E-Stop
External E-Stop
Category: HAL Examples
Thank you but i have seemingly stumbled upon an issue with estop i cannot resolve in any way. Even without any further hal functionality, just ini, configuring a basic gmoccapy and a base hal doing nothing but estop logic i can´t reset estop.
Current version i am trying. I can set external estop via halcmd to either states and try to reset estop with F1 GUI estop
I have built pretty elaborate estop logics with debouncing of external estop time delays and everything, but can´t get emc-task 3 (OFF but no estop) to show.
# base.hal – Minimalstart für Weiler XZ (V10)
# --- components ---
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT
loadrt hostmot2
loadrt hm2_pci config="num_encoders=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=000XXXXX"
loadrt estop_latch count=1
# --- Motion in den Servo-Thread einhängen ---
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf hm2_5i25.0.read servo-thread
addf estop-latch.0 servo-thread
# --- Loopback pro Joint, damit Motion ohne Feedback auskommt ---
net joint-0-pos-loop joint.0.motor-pos-cmd => joint.0.motor-pos-fb
net joint-1-pos-loop joint.1.motor-pos-cmd => joint.1.motor-pos-fb
# Enable-Leitungen/Faults – aktuell ohne Verdrahtung (werden später ergänzt)
addf hm2_5i25.0.write servo-thread
# --- ESTOP CHAIN (single latch) ---
net latch-reset <= iocontrol.0.user-request-enable
net latch-ok-in <= iocontrol.0.user-enable-out
net latch-ok-in => estop-latch.0.ok-in
net latch-reset => estop-latch.0.reset
net latch-out iocontrol.0.emc-enable-in <= estop-latch.0.ok-out
net estop-out estop-latch.0.fault-out
# External E-Stop input (single source)
# For testing: fix the external signal to TRUE (fault active)
net external-estop => estop-latch.0.fault-in
sets external-estop TRUE
# --- ESTOP CHAIN ENDS ---
# doormagnet and relay for 24V supply
setp hm2_5i25.0.7i84.0.2.output-02 TRUE
setp hm2_5i25.0.7i84.0.2.output-03 TRUE
Current version i am trying. I can set external estop via halcmd to either states and try to reset estop with F1 GUI estop
I have built pretty elaborate estop logics with debouncing of external estop time delays and everything, but can´t get emc-task 3 (OFF but no estop) to show.
- tommylight

14 Aug 2025 13:11
Replied by tommylight on topic multiple estops on separate pins
multiple estops on separate pins
Category: General LinuxCNC Questions
Rod, i did not read your post past "estop-latch is the right way to go", and you know the reason why.
Sorry, this time i should have continued.
Thank you.
Sorry, this time i should have continued.
Thank you.
- rodw

14 Aug 2025 11:50
Replied by rodw on topic multiple estops on separate pins
multiple estops on separate pins
Category: General LinuxCNC Questions
estop-latch is the right way to go with these but a better way is to use joint.N.amp-fault-in IN BIT Should be driven TRUE if an external fault is detected with the amplifier for this joint.
ref: linuxcnc.org/docs/stable/html/man/man9/motion.9.html
This will halt motion.
Your drives may also have a estop input which disables the drive on an estop.
ref: linuxcnc.org/docs/stable/html/man/man9/motion.9.html
This will halt motion.
Your drives may also have a estop input which disables the drive on an estop.
- JT

14 Aug 2025 11:40
Replied by JT on topic multiple estops on separate pins
multiple estops on separate pins
Category: General LinuxCNC Questions
There's a couple of ways, you could use the
Mesa Configuration Tool
or you can add the
estop_latch
component yourself.
JT
JT
- deedee
- deedee
18 Jun 2025 06:41
Replied by deedee on topic LinuxCNC and Beckhoff AX5000 servo drives
LinuxCNC and Beckhoff AX5000 servo drives
Category: EtherCAT
Hi,
i've got the AX5106 and A5203 up and running. db1981 helped al lot regarding the homing and pos_mode issues.
The project itself is still work in progress, but the main features are working. See attached files. These are the relevant snippets from *.hal:
i've got the AX5106 and A5203 up and running. db1981 helped al lot regarding the homing and pos_mode issues.
The project itself is still work in progress, but the main features are working. See attached files. These are the relevant snippets from *.hal:
#*******************# NOT AUS#*******************net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-outnet estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-innet estop-reset iocontrol.0.user-request-enable => estop-latch.0.resetnet remote-estp estop-latch.0.fault-in <= lcec.0.1_EL1018.din-2-not#*******************# AXIS Z#*******************# Skalierung 10mm Weg entspricht 1 Motorumdrehung; Minus da Z-!setp lcec.0.16_AX5106.srv-scale -0.1net Zaxis_enable joint.2.amp-enable-out => lcec.0.16_AX5106.srv-enablenet Zaxis_fb lcec.0.16_AX5106.enc-pos-abs => joint.2.motor-pos-fbnet Zaxis_cmd joint.2.motor-pos-cmd => lcec.0.16_AX5106.srv-pos-cmdnet Zaxis_torque <= lcec.0.16_AX5106.srv-torque-fb-pctnet Zaxis_home_sw lcec.0.16_AX5106.srv-dig-in-2-not => joint.2.home-sw-innet Zaxis_index_enable lcec.0.16_AX5106.enc-index-ena => joint.2.index-enable- deedee
- deedee
18 Jun 2025 06:05 - 18 Jun 2025 06:15
Replied by deedee on topic Einbindung AX5000 und EL3104
Einbindung AX5000 und EL3104
Category: Deutsch
Hier die relevaten Teile aus dem *.hal file. An der Z-Achse ist ein Homeswitch, über den die Achse referenziert wird. An der Achse ist keine direkte Wegmessung, das läuft dann über den Motorencoder
#*******************# NOT AUS#*******************net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-outnet estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-innet estop-reset iocontrol.0.user-request-enable => estop-latch.0.resetnet remote-estp estop-latch.0.fault-in <= lcec.0.1_EL1018.din-2-not#*******************# AXIS Z#*******************# Skalierung 10mm Weg entspricht 1 Motorumdrehung; Minus da Z-!setp lcec.0.16_AX5106.srv-scale -0.1net Zaxis_enable joint.2.amp-enable-out => lcec.0.16_AX5106.srv-enablenet Zaxis_fb lcec.0.16_AX5106.enc-pos-abs => joint.2.motor-pos-fbnet Zaxis_cmd joint.2.motor-pos-cmd => lcec.0.16_AX5106.srv-pos-cmdnet Zaxis_torque <= lcec.0.16_AX5106.srv-torque-fb-pctnet Zaxis_home_sw lcec.0.16_AX5106.srv-dig-in-2-not => joint.2.home-sw-innet Zaxis_index_enable lcec.0.16_AX5106.enc-index-ena => joint.2.index-enable- cakeslob
- cakeslob
07 May 2025 03:01
Replied by cakeslob on topic Remora - ethernet NVEM / EC300 / EC500 cnc board
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
DarkPheonix - that one got lost in translation. i kind of understand but if you can take a short video that would be great
Spyder - yes, the .not is used to invert the pin without having to use a linuxcnc not component. the probe looks good, the estop latch might not get reset for some reason leaving it in estop if i understand the logic of it from here.
adm1n - most of this one can be used but we gotta modify the nvmpg inputs to be normal ones
github.com/scottalford75/Remora-RT1052-c...ic/remora-nv-mpg.hal
Spyder - yes, the .not is used to invert the pin without having to use a linuxcnc not component. the probe looks good, the estop latch might not get reset for some reason leaving it in estop if i understand the logic of it from here.
adm1n - most of this one can be used but we gotta modify the nvmpg inputs to be normal ones
github.com/scottalford75/Remora-RT1052-c...ic/remora-nv-mpg.hal
- DarkPhoinix
- DarkPhoinix
06 May 2025 18:58 - 06 May 2025 20:54
Replied by DarkPhoinix on topic Remora - ethernet NVEM / EC300 / EC500 cnc board
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
There is only one problem when you use the directional buttons to move the axes, the movement is strange, not responsive, slow to start, and sometimes that movement remains in memory, after an estop, the car exiting the estop starts turning again by itself or makes strange movements.!! but gcode work fine! i need study the problem! I was able to get it working using a function generator and an osciloscope.Ok great, so
DarkPheonix - good for now and stepping?
Warning: Spoiler!
aDm1N - you have the Estop behavior working properly with that code then? If yes, Spyder, refer to his example.
re- MPG , here is the config for MPG, un-comment the line from your ini file, and make sure the component is installed. This is for the NVMPG that can come with the board with the screen. If you are talking about a separate MPG, we can copy the same with a few changes.
github.com/scottalford75/Remora-RT1052-c...ic/remora-nv-mpg.hal
re- C axis and encoder - this is more involved, lets circle back to this one
Spyder, yes there will be some conflicting line, the 3 lines at the top of the hal file needed modification, but I think you figured it out. "net remote-estp " check out the linuxcnc page on hal, but the nets are names that you create, so there wont be a remote-estp pin in the linuxcnc documents, and yes the => and <= denote signal direction,
so for example the new net "remote-estp" is connecting the linuxcnc pin "estop-latch.0.fault-in" to the remora pin "remora.input.04"
and the remora pin is going to the latch.0.fault-in pin
- cakeslob
- cakeslob
06 May 2025 17:57
Replied by cakeslob on topic Remora - ethernet NVEM / EC300 / EC500 cnc board
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
Ok great, so
DarkPheonix - good for now and stepping?
aDm1N - you have the Estop behavior working properly with that code then? If yes, Spyder, refer to his example.
re- MPG , here is the config for MPG, un-comment the line from your ini file, and make sure the component is installed. This is for the NVMPG that can come with the board with the screen. If you are talking about a separate MPG, we can copy the same with a few changes.
github.com/scottalford75/Remora-RT1052-c...ic/remora-nv-mpg.hal
re- C axis and encoder - this is more involved, lets circle back to this one
Spyder, yes there will be some conflicting line, the 3 lines at the top of the hal file needed modification, but I think you figured it out. "net remote-estp " check out the linuxcnc page on hal, but the nets are names that you create, so there wont be a remote-estp pin in the linuxcnc documents, and yes the => and <= denote signal direction,
so for example the new net "remote-estp" is connecting the linuxcnc pin "estop-latch.0.fault-in" to the remora pin "remora.input.04"
and the remora pin is going to the latch.0.fault-in pin
DarkPheonix - good for now and stepping?
aDm1N - you have the Estop behavior working properly with that code then? If yes, Spyder, refer to his example.
re- MPG , here is the config for MPG, un-comment the line from your ini file, and make sure the component is installed. This is for the NVMPG that can come with the board with the screen. If you are talking about a separate MPG, we can copy the same with a few changes.
github.com/scottalford75/Remora-RT1052-c...ic/remora-nv-mpg.hal
re- C axis and encoder - this is more involved, lets circle back to this one
Spyder, yes there will be some conflicting line, the 3 lines at the top of the hal file needed modification, but I think you figured it out. "net remote-estp " check out the linuxcnc page on hal, but the nets are names that you create, so there wont be a remote-estp pin in the linuxcnc documents, and yes the => and <= denote signal direction,
so for example the new net "remote-estp" is connecting the linuxcnc pin "estop-latch.0.fault-in" to the remora pin "remora.input.04"
and the remora pin is going to the latch.0.fault-in pin
- aDm1N

06 May 2025 09:51 - 06 May 2025 12:14
Replied by aDm1N on topic Remora - ethernet NVEM / EC300 / EC500 cnc board
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
Where can I find an example of how to connect and integrate a handwheel (MPG)? Is it possible with Remora to use both a handwheel and an encoder for the spindle, or is only one of the two possible?
The background is that I drive the spindle with an AC servo, and this should be controlled via step/dir as a C axis. In the Gcode, the spindle should then work as a C axis, depending on the call, or rotate as a spindle. For the C axis to function correctly, not only the index must be evaluated, but also the angle via A/B.
EStop tested on NVEM board, works with mushroom button. In the GUI, EStop can be released and the machine started if the switch is not pressed. If it is pressed afterwards, the machine goes back into EStop.
Thanks to the "stupid" AI, I now seem to have managed to get a command to be issued on Joint2 with G0 C10 or with an M3 S300.
The background is that I drive the spindle with an AC servo, and this should be controlled via step/dir as a C axis. In the Gcode, the spindle should then work as a C axis, depending on the call, or rotate as a spindle. For the C axis to function correctly, not only the index must be evaluated, but also the angle via A/B.
EStop tested on NVEM board, works with mushroom button. In the GUI, EStop can be released and the machine started if the switch is not pressed. If it is pressed afterwards, the machine goes back into EStop.
#External e-stop (fault) on NVEM v5 input.
loadrt estop_latch
addf estop-latch.0 servo-thread
net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-out
net user-enable-out iocontrol.0.user-enable-out => remora.enable
net estop-loopin remora.status => estop-latch.0.ok-in => estop-latch.0.reset
net estop-reset iocontrol.0.user-request-enable => remora.reset
net remote-estp estop-latch.0.fault-in <= remora.input.04
Edit* - Spyderbreath

06 May 2025 06:52 - 06 May 2025 07:17
Replied by Spyderbreath on topic Remora - ethernet NVEM / EC300 / EC500 cnc board
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
I tried to enter the estop from tuxcnc above and got this error.
I attached my hal and ini files. Does this mean I can only have the watchdog or the estop latch but not both?
*Edit*
I have just tried the estop latch with the tuxcnc code with the watchdog commented out and after fixing the typo in the last line where it starts out - net remote-estp ... - it is missing the o in estop. That error is in the attached hal, didn't catch it befor attaching. It works, exactly one time, by opening the circuit and thats all she wrote. reconnecting the circuit and can not reset the estop and power back on the machine without closing down and restarting the gui.
Note: Using POSIX realtime
./remora-ec500.hal:60: Pin 'iocontrol.0.emc-enable-in' was already linked to signal 'remora-status'
3295
Stopping realtime threads
Unloading hal components
Note: Using POSIX realtimeI attached my hal and ini files. Does this mean I can only have the watchdog or the estop latch but not both?
*Edit*
I have just tried the estop latch with the tuxcnc code with the watchdog commented out and after fixing the typo in the last line where it starts out - net remote-estp ... - it is missing the o in estop. That error is in the attached hal, didn't catch it befor attaching. It works, exactly one time, by opening the circuit and thats all she wrote. reconnecting the circuit and can not reset the estop and power back on the machine without closing down and restarting the gui.
- Spyderbreath

06 May 2025 06:12
Replied by Spyderbreath on topic Remora - ethernet NVEM / EC300 / EC500 cnc board
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
Thank you cakeslob for these posts. I went back and read the Remona manual again from the start and I did discover something I didn't know before and that is the included estop stuff at the beginning of the sample .hal is a coms watchdog and testing it by unplugging the ethernet cable triggers the estop. Shiny, I can understand the function of that part. How or why, cluless, but what it does is clear.
But you asked if there were any questions, and yes there are.
I'll start with a single line from the tuxcnc example above.
1. estop-loopout - where did that come from? Did a search "estop-loopout" site:https://linuxcnc.org/docs and got 0 returns, same with a search of the Remora doc site, 0 results.
2. estop-latch - this did return some results - linuxcnc.org/docs/html/man/man9/estop_latch.9.html but I do not see any connection there that would lead me to come up with those words being placed where they are in the example. How would one know to put that there?
3. <= and => - What do these mean? Do they denote the direction flow of data or signals, do they stand for less than and equal to and equal to and greater than or is it something else and why are they needed and what determines where they go? Is this explained somewhere?
To be truthful, maybe I should be looking for someone to hire that can do all this complex coding and programing for me as it seems far and beyond my ability with my learning handicap.
For the moment, I'll keep trying and hack away at it bit by bit. To much time invested to round file it all now, but please feel free to tell me to go pound sand when I become to much of a burden. I won't feel bad, happens all the time when I am confronted with this kind of complex programing.
But you asked if there were any questions, and yes there are.
I'll start with a single line from the tuxcnc example above.
net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-out1. estop-loopout - where did that come from? Did a search "estop-loopout" site:https://linuxcnc.org/docs and got 0 returns, same with a search of the Remora doc site, 0 results.
2. estop-latch - this did return some results - linuxcnc.org/docs/html/man/man9/estop_latch.9.html but I do not see any connection there that would lead me to come up with those words being placed where they are in the example. How would one know to put that there?
3. <= and => - What do these mean? Do they denote the direction flow of data or signals, do they stand for less than and equal to and equal to and greater than or is it something else and why are they needed and what determines where they go? Is this explained somewhere?
To be truthful, maybe I should be looking for someone to hire that can do all this complex coding and programing for me as it seems far and beyond my ability with my learning handicap.
For the moment, I'll keep trying and hack away at it bit by bit. To much time invested to round file it all now, but please feel free to tell me to go pound sand when I become to much of a burden. I won't feel bad, happens all the time when I am confronted with this kind of complex programing.
Time to create page: 0.989 seconds