Advanced Search

Search Results (Searched for: stepper spindle)

27 Apr 2024 22:01
Replied by tommylight on topic 3040T and Y axis shift

3040T and Y axis shift

Category: General LinuxCNC Questions

Barely can hear it over the spindle/endmill noise, but for sure it is there, steppers skipping, and from that faint sound seems like underpowered a lot, so what current are the drives set to?
And what microstepping are they set?
27 Apr 2024 17:09 - 27 Apr 2024 17:17
3040T and Y axis shift was created by Lpkkk

3040T and Y axis shift

Category: General LinuxCNC Questions

Hi 
Some time ago I've upgraded my 3040. I've replaced all electronics and now I'm using hy-jk02-m bob + 4xTB6600. Stepper motors are still original Anchuan 57hd0401 1.8deg 2A.I've also upgraded spindle to 2.2kw driven by hy inverter. Only one Power supply for motors is 24v 20A. Currently I've got an issue with Y axis. I've tried to cut different size of squares in plywood. Everything went OK, after measuring difference was that small so I can take it as a measure error. In one of the tests I've cut 30x30 square and then I've tried to cut it diagonally. Unfortunately I've noticed shift during cutting in X+Y - direction. Because of that axis is shifted. I'm not sure what's is wrong. Mechanically I cannot see any issue with coupler or driving nut. I made a video from this test. Please have a look here :





Efect in attachment 
 
27 Apr 2024 10:31

Remora - ethernet NVEM / EC300 / EC500 cnc board

Category: Computers and Hardware

I have read the full thread, wiki and looked at git hub and there are a number of things I am still confused about due to conflicting information.

I am using a standard LinuxCNC distro on an i5 PC. I have erased and programmed an NVEM V5 board (RT1052) using pyocd and the remora-rt1052-NVEM-0.2.1.bin and the board responds to pings at 10.10.10.10.

I cannot upload a config to the remora board due to time outs, but I understand this is to be expected as the firmware has a full config built-in - is this correct or is this the root cause of my issues?

The board outputs the following via the debug port on boot:

        Initializing PHY...

         ## Entering SETUP state


         ## Entering START state

          Starting the threads

         ## Entering IDLE state

I have installed the remora components (remora-eth, remora-nv, remora-nvmpg) into LinuxCNC and I copied various remora configs to my config directory.

Satrting LinuxCNC and using the remova-nv config I can get the x & y steppers to sort of move but I cannot see any inputs change state (I have tried all of them). In the HAL viewer I can see the Remora status as OK and both the servo-thread.time /remora.update-frq.time are updating.

Ultimately I want to set this up for a lathe with x,y and spindle control but for now it is sitting on my desk with two steppers and some switches wired up to the inputs.


So my questions are:

1: have I flashed the correct firmware?
2: do I need to upload a config file to the NVEM - if so why would I get a timeout (this is mentioned by someone else in an earlier post)?
3: If the above is OK why can I not see any input changes?
4: Do anyone have a Lathe config as a starting point?

Thanks in advance
27 Apr 2024 09:18 - 27 Apr 2024 09:23

Lichuan AC servos for axes and spindle

Category: PnCConf Wizard

Hello,My setup for a re-retrofit (from Mach3 to LinuxCNC) of an old EMCO Compact 5 CNC lathe is as follows:
  • RPI 5 with Linuxcnc 2.9.2 on Debian bookworm
  • Mesa 7i96s
  • 2x 200W AC servos with A5 drives from Lichuan, for X and Z. Encoders are 17bit incremental type (why on earth did I not get the absolute ones when they were like 20 dollars more....)
  • 1x 1000W AC servo with A5 drive from Lichuan, for spindle. Same encoder as for the 200W motors.

    As far as I've understood, normal lathe use would indicate that i run the axis drives in position mode with step/dir inputs, and the spindle drive in speed mode, with -10- 10V analog input.

    I believe that is what will be relevant info for the questions in this thread?  
    1. In the axis section of the pncconf wizard I am faced with some settings I have never encountered before, namely "step-on time", "space", "direction hold" and "direction setup". I have tried to read up on what they mean and how it relates to the information I am given in the servo drive manual. Among the numerous settings and points of information for the servo drives, I cannot find anything which is called the same or remotely the same as those parameters. Can I assume that my step high/low and pulse high/low times are identical, and that I can simply use the drives' maximum step frequency as a base for step-on time and space? It is stated as 1MHz in the manual. What about direction hold and direction setup, could someone please explain what they are? I am anxious of doing something bad to my new precious drivers and motors, so in case any wrong settings can hurt my drives, i just want to be on the safe side...
    2. Is there anything else I need to pay special attention to when using AC servos with step/dir inputs, instead of stepper motors? I see there are some unseleactable/uneditable tuning parameters (PID info) on the left; I thought I would be tuning the servos internally on the drives?

      Link to servo motor with drive (200W version): 
      www.aliexpress.com/item/1005005440028771...ain.5.76c81802WfkwiM

       

27 Apr 2024 03:04

Mill Project, Looking for driver Board advice

Category: Driver Boards

Hello everyone, this is my first real cnc re-build so please correct any misconceptions I might have, I'm excited about the possibility of converting to running with Lcnc, But I wanted to run past my machine configuration in front of some more experienced eyes before making any mesa purchases.

Currently there are three axis being used for motion and a fourth being used for rotating the toolchanger carousel, all are servos running analogue. I am considering removing the servo being used for the atc and replacing it with a stepper, so I can then use the servo as a fourth axis. The motion servos Amp seems to be capable of running step or ana, (or maybe not, see attached img from the servopack manual) but I know for sure that the fourth servo is ana only. This seems to lock me into using something like the 7I97T but I am also seeing daughter boards like the 7I36 that seem like they would allow me to use something else. so I am really wondering what Is the best way to use a mixed ana servo/stepper setup as far as mesa cards (if its even possible) or if its something I should just abandon and get another amp and servo in the future if I want to do fourth axis. I am also going to be needing a reasonably large amount of IO for the pneumatics system, six outputs at a minimum but more is better, so if I was going to use a daughter card it might be for that.

Another thing I am wondering about it the spindle, I am currently being shipped the documentation for my Spindle controller so I am unsure exactly how it interfaces with the motion controller But I see that some cards provide a dedicated option for the spindle while others don't. I am wondering if the spindle is going to take the place of one of the axis and how that works on one of the analogue cards.
in my ideal configuration it seems like its 5/6 axis (3motion+atc+4thaxis+spindle?) but the mesa card configuration that would achieve this is beyond my current understanding.

Appreciate any input, thanks.
 
25 Apr 2024 07:16

Can not get stepper motors to move with Gecko g250x drivers

Category: PnCConf Wizard

As I stated previously, my knowledge of electronics is somewhat dated.

I thought if I connected the V- (48v PSU) and COM (5v/12v PSU) to earth, I was potentially creating a Ground Loop, which I understood was potentially harmful to electronics. But I do realize that this means I have a floating ground.

So, I tied V- and COM to earth. However, this did not resolve the issue I am having.

I did find that my spindle contactor was closed as soon as I powered the system, so I have something misconfigured there.
18 Apr 2024 21:49

Arcs / Circles not concentric

Category: General LinuxCNC Questions

Greetings,

I have encountered a (for me) rather strange issue that I, even after a day of experimenting, can't seem to fully understand.
I have a stepper-motor driven CNC that used to work marvelous for years until recently, when I decided to update the machine to LinuxCNC 2.9.1. That update gave me nothing but pain, i.e. latency increased by a factor of 10, my touch screen was no longer working, operation of gmoccapy was incredibly sluggish etc.

I was quite busy otherwise, so I simply ignored the problem for a while, stuck to operating the machine with an external keyboard and continued. Yesterday, I eventually had to mill some parts as part of an official project, so I decided I'd finally tackle the problem and tried the naive approach first, that is, updating to 2.9.2. That didn't do much at all, plus I discovered something completely different that has been bugging me every since: circles (or arcs, depending how you want to look at it) are no longer being milled concentric.

The arc/circle itself is fine, i.e. perfectly round, but given an arc and a circle with identical reference (center) points, they are slightly offset to each other. Naturally, I checked the DXF, both entities have the same center point - LinuxCNC also draws them correctly on top of each other when processing the GCODE. I also uploaded the code generated by my cam software to an online GCODE viewer, again, both entities are sitting on top of each other just fine.

Facing this new problem, I bit the bullet and downgraded back to 2.8.4, which resolved almost all of my problems, i.e. the touch screen works again, UI response time is instant and so on. It also made the actual issue better, out of 4 pairs of arcs/circles, only two pairs are now offset, and the offsets have become smaller in general. In general, we're talking of an absolute error distance of 1mm to 1.5mm though.

I'll attach the generated GCODE just in case someone wants to have a look at it, it's a really basic operation for a 6mm D - shaft encoder cap.
 

File Attachment:

File Name: gcode.txt
File Size:11 KB


Maybe I'm coping here, but I somehow doubt that it's e.g. step loss since the machine worked in an identical configuration with precision for literally years (and is well maintained). The Gecko drivers, motors and power supply are definitely capable of driving the machine. Plus, I'm cutting decorative knobs out of wood here with a 2kW spindle, so nothing demanding. I'm also running Mesa interface cards. I'll run a few more ops and check position accuracy with a dial test indicator again, but so far, everything looked good.

Does anyone have any idea what I could check to narrow my problem down further? Any ideas, approaches, pointers would be appreciated.

Cheers,

James

 
18 Apr 2024 14:00

Steppers work ok in pncconf tests but not with Axis

Category: AXIS

# Generated by PNCconf at Wed Apr 17 15:26:19 2024
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_pci config="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=00xxxx"
setp hm2_5i25.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s

addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_5i25.0.write servo-thread

# external output signals


# external input signals


# --- BOTH-X ---
net both-x <= hm2_5i25.0.7i76.0.0.input-00

# --- HOME-X ---
net home-x <= hm2_5i25.0.7i76.0.0.input-01

# --- BOTH-Y ---
net both-y <= hm2_5i25.0.7i76.0.0.input-02

# --- HOME-Y ---
net home-y <= hm2_5i25.0.7i76.0.0.input-03

# --- BOTH-Z ---
net both-z <= hm2_5i25.0.7i76.0.0.input-04

# --- HOME-Z ---
net home-z <= hm2_5i25.0.7i76.0.0.input-05

#*******************
# AXIS X JOINT 0
#*******************

setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500

net x-index-enable => pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output

# Step Gen signals/setup

setp hm2_5i25.0.stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp hm2_5i25.0.stepgen.00.dirhold [JOINT_0]DIRHOLD
setp hm2_5i25.0.stepgen.00.steplen [JOINT_0]STEPLEN
setp hm2_5i25.0.stepgen.00.stepspace [JOINT_0]STEPSPACE
setp hm2_5i25.0.stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp hm2_5i25.0.stepgen.00.step_type 0
setp hm2_5i25.0.stepgen.00.control-type 1
setp hm2_5i25.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => hm2_5i25.0.stepgen.00.velocity-cmd
net x-pos-fb <= hm2_5i25.0.stepgen.00.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => hm2_5i25.0.stepgen.00.enable

# ---setup home / limit switch signals---

net home-x => joint.0.home-sw-in
net both-x => joint.0.neg-lim-sw-in
net both-x => joint.0.pos-lim-sw-in

#*******************
# AXIS Y JOINT 1
#*******************

setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500

net y-index-enable => pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output

# Step Gen signals/setup

setp hm2_5i25.0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_5i25.0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_5i25.0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_5i25.0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_5i25.0.stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp hm2_5i25.0.stepgen.01.step_type 0
setp hm2_5i25.0.stepgen.01.control-type 1
setp hm2_5i25.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => hm2_5i25.0.stepgen.01.velocity-cmd
net y-pos-fb <= hm2_5i25.0.stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_5i25.0.stepgen.01.enable

# ---setup home / limit switch signals---

net home-y => joint.1.home-sw-in
net both-y => joint.1.neg-lim-sw-in
net both-y => joint.1.pos-lim-sw-in

#*******************
# AXIS Z JOINT 2
#*******************

setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500

net z-index-enable => pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output

# Step Gen signals/setup

setp hm2_5i25.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_5i25.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_5i25.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_5i25.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_5i25.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_5i25.0.stepgen.02.step_type 0
setp hm2_5i25.0.stepgen.02.control-type 1
setp hm2_5i25.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => hm2_5i25.0.stepgen.02.velocity-cmd
net z-pos-fb <= hm2_5i25.0.stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => hm2_5i25.0.stepgen.02.enable

# ---setup home / limit switch signals---

net home-z => joint.2.home-sw-in
net both-z => joint.2.neg-lim-sw-in
net both-z => joint.2.pos-lim-sw-in


#******************************
# connect miscellaneous signals
#******************************

# ---HALUI signals---

net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net z-is-homed halui.joint.2.is-homed
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi

# ---coolant signals---

net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood

# ---probe signal---

net probe-in => motion.probe-input

# ---motion control signals---

net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled

# ---digital in / out signals---

# ---estop signals---

net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in

# ---manual tool change signals---

loadusr -W hal_manualtoolchange
net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared



# Generated by PNCconf at Wed Apr 17 15:26:19 2024
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

[EMC]
MACHINE = my_LinuxCNC_machine
DEBUG = 0
VERSION = 1.1

[DISPLAY]
DISPLAY = gmoccapy
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/jack/linuxcnc/nc_files
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 0.250000
MAX_LINEAR_VELOCITY = 1.000000
MIN_LINEAR_VELOCITY = 0.016670
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xyz

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G20 G40 G90 G94 G97 G64 P0.001

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000

[HMOT]
# **** This is for info only ****
CARD0=hm2_5i25.0

[HAL]
HALUI = halui
HALFILE = my_LinuxCNC_machine.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal

[HALUI]
MDI_COMMAND = G10 L20 P0 X0 ( Set X to zero )
MDI_COMMAND = G10 L20 P0 Y0 ( Set Y to zero )
MDI_COMMAND = G10 L20 P0 Z0 ( Set Z to zero )

[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ

[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.23
MAX_LINEAR_VELOCITY = 2.25

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

#******************************************
[AXIS_X]
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
MIN_LIMIT = -19.0
MAX_LIMIT = 1.25

[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2.81
STEPGEN_MAXACCEL = 6.25
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 5050
STEPSPACE = 5050
STEP_SCALE = 13546.666
MIN_LIMIT = -19.0
MAX_LIMIT = 1.25
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.066667
HOME_LATCH_VEL = 0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
#******************************************

#******************************************
[AXIS_Y]
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
MIN_LIMIT = -14.0
MAX_LIMIT = 1.0

[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2.81
STEPGEN_MAXACCEL = 6.25
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 13546.666
MIN_LIMIT = -14.0
MAX_LIMIT = 1.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.066667
HOME_LATCH_VEL = 0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 2
#******************************************

#******************************************
[AXIS_Z]
MAX_VELOCITY = 0.216666666667
MAX_ACCELERATION = 5.0
MIN_LIMIT = -17.0
MAX_LIMIT = 0.001

[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 0.216666666667
MAX_ACCELERATION = 5.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 0.27
STEPGEN_MAXACCEL = 6.25
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = -13546.666
MIN_LIMIT = -17.0
MAX_LIMIT = 0.001
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.066667
HOME_LATCH_VEL = 0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0
#******************************************
16 Apr 2024 20:28

No input device matching 'none' was found (1 devices checked)

Category: General LinuxCNC Questions

cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-6.1.0-20-rt-amd64 root=UUID=be81bdd1-24cc-432f-a985-5fdf3d4cfb6e ro initrd=/install/gtk/initrd.gz quiet

hal
# Generated by PNCconf at Mon Apr 15 17:49:17 2024
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=1 num_pwmgens=1 num_stepgens=5 sserial_port_0=0xxxxxxx"
setp [HMOT](CARD0).pwmgen.pwm_frequency 20000
setp [HMOT](CARD0).pwmgen.pdm_frequency 6000000
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadusr -W hal_input -KRAL none

loadrt pid names=pid.x,pid.y,pid.z,pid.s
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10 numBits=50 numWords=50
loadrt mux16 names=jogspeed

addf [HMOT](CARD0).read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf classicladder.0.refresh servo-thread
addf jogspeed servo-thread
addf [HMOT](CARD0).write servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1

# external output signals

# --- SPINDLE-ENABLE ---
net spindle-enable => [HMOT](CARD0).outm.00.out-05


# external input signals

# --- MIN-Z ---
net min-z <= [HMOT](CARD0).gpio.000.in

# --- MAX-HOME-Z ---
net max-home-z <= [HMOT](CARD0).gpio.001.in

# --- MAX-X ---
net max-x <= [HMOT](CARD0).gpio.003.in

# --- MIN-HOME-Y ---
net min-home-y <= [HMOT](CARD0).gpio.004.in

# --- MAX-Y ---
net max-y <= [HMOT](CARD0).gpio.005.in

# --- ESTOP-EXT ---
net estop-ext <= [HMOT](CARD0).gpio.006.in


#*******************
# AXIS X JOINT 0
#*******************

setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500

net x-index-enable => pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.01.maxvel [JOINT_0]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => [HMOT](CARD0).stepgen.01.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).stepgen.01.enable

# ---setup home / limit switch signals---

net x-home-sw => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net max-x => joint.0.pos-lim-sw-in

#*******************
# AXIS Y JOINT 1
#*******************

setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500

net y-index-enable => pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.00.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.00.maxvel [JOINT_1]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => [HMOT](CARD0).stepgen.00.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.00.enable

# ---setup home / limit switch signals---

net min-home-y => joint.1.home-sw-in
net min-home-y => joint.1.neg-lim-sw-in
net max-y => joint.1.pos-lim-sw-in

#*******************
# AXIS Z JOINT 2
#*******************

setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500

net z-index-enable => pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.02.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.02.step_type 0
setp [HMOT](CARD0).stepgen.02.control-type 1
setp [HMOT](CARD0).stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => [HMOT](CARD0).stepgen.02.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.02.enable

# ---setup home / limit switch signals---

net max-home-z => joint.2.home-sw-in
net min-z => joint.2.neg-lim-sw-in
net max-home-z => joint.2.pos-lim-sw-in

#*******************
# SPINDLE
#*******************

setp pid.s.Pgain [SPINDLE_0]P
setp pid.s.Igain [SPINDLE_0]I
setp pid.s.Dgain [SPINDLE_0]D
setp pid.s.bias [SPINDLE_0]BIAS
setp pid.s.FF0 [SPINDLE_0]FF0
setp pid.s.FF1 [SPINDLE_0]FF1
setp pid.s.FF2 [SPINDLE_0]FF2
setp pid.s.deadband [SPINDLE_0]DEADBAND
setp pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp pid.s.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.s.maxerror 0.000500

net spindle-index-enable => pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.04.dirsetup [SPINDLE_0]DIRSETUP
setp [HMOT](CARD0).stepgen.04.dirhold [SPINDLE_0]DIRHOLD
setp [HMOT](CARD0).stepgen.04.steplen [SPINDLE_0]STEPLEN
setp [HMOT](CARD0).stepgen.04.stepspace [SPINDLE_0]STEPSPACE
setp [HMOT](CARD0).stepgen.04.position-scale [SPINDLE_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.04.step_type 0
setp [HMOT](CARD0).stepgen.04.control-type 1
setp [HMOT](CARD0).stepgen.04.maxaccel [SPINDLE_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.04.maxvel [SPINDLE_0]STEPGEN_MAXVEL

net machine-is-on => [HMOT](CARD0).stepgen.04.enable
net spindle-vel-cmd-rps => [HMOT](CARD0).stepgen.04.velocity-cmd
net spindle-vel-fb-rps <= [HMOT](CARD0).stepgen.04.velocity-fb
# ---setup spindle control signals---

net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable

# ---Setup spindle at speed signals---

sets spindle-at-speed true


#******************************
# connect miscellaneous signals
#******************************

# ---HALUI signals---

net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net z-is-homed halui.joint.2.is-homed
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi

# ---coolant signals---

net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood

# ---probe signal---

net probe-in => motion.probe-input

# ---USB device jog button signals---

# connect selectable mpg jog speeds
net jog-speed-a => jogspeed.sel0
net jog-speed-b => jogspeed.sel1
net jog-speed <= jogspeed.out-f
setp jogspeed.in00 0.100000
setp jogspeed.in01 1.000000
setp jogspeed.in02 10.000000
setp jogspeed.in03 100.000000

# ---motion control signals---

net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled

# ---digital in / out signals---

# ---estop signals---

net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in

# ---manual tool change signals---

net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number

# ---ignore tool prepare requests---
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared


# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI

loadusr classicladder --nogui custom.clp

ini:
# Generated by PNCconf at Mon Apr 15 17:49:17 2024
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

[EMC]
MACHINE = GSF1000-5
DEBUG = 0
VERSION = 1.1

[DISPLAY]
DISPLAY = gmoccapy
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/mill/linuxcnc/nc_files
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 0.250000
MAX_LINEAR_VELOCITY = 1.000000
MIN_LINEAR_VELOCITY = 0.016670
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xyz
CYCLE_TIME = 100

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G20 G40 G90 G94 G97 G64 P0.001

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000

[HMOT]
CARD0=hm2_7i96s.0

[HAL]
HALUI = halui
HALFILE = GSF1000-5.hal
HALFILE = custom.hal
POSTGUI_HALFILE = gmoccapy_postgui.hal
POSTGUI_HALFILE = custom_postgui.hal
SHUTDOWN = shutdown.hal

[HALUI]

[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ

[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.10
MAX_LINEAR_VELOCITY = 1.00

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

#******************************************
[AXIS_X]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -0.0
MAX_LIMIT = 24.0

[JOINT_0]
TYPE = LINEAR
HOME = 12.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2.00
STEPGEN_MAXACCEL = 60.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 1016.0
BACKLASH = 0.0
MIN_LIMIT = -0.0
MAX_LIMIT = 24.0
HOME_OFFSET = 12.0
HOME_SEQUENCE = 2
#******************************************

#******************************************
[AXIS_Y]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -0.0
MAX_LIMIT = 12.0

[JOINT_1]
TYPE = LINEAR
HOME = 6.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2.00
STEPGEN_MAXACCEL = 60.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 1016.0
BACKLASH = 0.0
MIN_LIMIT = -0.0
MAX_LIMIT = 12.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -0.050000
HOME_LATCH_VEL = -0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
#******************************************

#******************************************
[AXIS_Z]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -4.0
MAX_LIMIT = 9.0

[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2.00
STEPGEN_MAXACCEL = 60.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 1016.0
BACKLASH = 0.0
MIN_LIMIT = -4.0
MAX_LIMIT = 9.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -0.050000
HOME_LATCH_VEL = -0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
#******************************************

[SPINDLE_0]
MAX_VELOCITY = 2000.0
MAX_ACCELERATION = 300.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2500.00
STEPGEN_MAXACCEL = 375.00
P = 0.0
I = 0.0
D = 0.0
FF0 = 1.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 1250.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 200.0

ping 10.10.10.10
PING 10.10.10.10 (10.10.10.10) 56(84) bytes of data.
64 bytes from 10.10.10.10: icmp_seq=1 ttl=64 time=0.176 ms
64 bytes from 10.10.10.10: icmp_seq=2 ttl=64 time=0.095 ms
64 bytes from 10.10.10.10: icmp_seq=3 ttl=64 time=0.098 ms
64 bytes from 10.10.10.10: icmp_seq=4 ttl=64 time=0.077 ms
64 bytes from 10.10.10.10: icmp_seq=5 ttl=64 time=0.094 ms
64 bytes from 10.10.10.10: icmp_seq=6 ttl=64 time=0.101 ms
64 bytes from 10.10.10.10: icmp_seq=7 ttl=64 time=0.104 ms
64 bytes from 10.10.10.10: icmp_seq=8 ttl=64 time=0.075 ms
64 bytes from 10.10.10.10: icmp_seq=9 ttl=64 time=0.118 ms
64 bytes from 10.10.10.10: icmp_seq=10 ttl=64 time=0.073 ms
64 bytes from 10.10.10.10: icmp_seq=11 ttl=64 time=0.080 ms
64 bytes from 10.10.10.10: icmp_seq=12 ttl=64 time=0.075 ms
64 bytes from 10.10.10.10: icmp_seq=13 ttl=64 time=0.081 ms
64 bytes from 10.10.10.10: icmp_seq=14 ttl=64 time=0.097 ms
64 bytes from 10.10.10.10: icmp_seq=15 ttl=64 time=0.093 ms
64 bytes from 10.10.10.10: icmp_seq=16 ttl=64 time=0.072 ms
64 bytes from 10.10.10.10: icmp_seq=17 ttl=64 time=0.081 ms
64 bytes from 10.10.10.10: icmp_seq=18 ttl=64 time=0.079 ms
64 bytes from 10.10.10.10: icmp_seq=19 ttl=64 time=0.101 ms
^C
--- 10.10.10.10 ping statistics ---
19 packets transmitted, 19 received, 0% packet loss, time 18417ms
rtt min/avg/max/mdev = 0.072/0.093/0.176/0.023 ms

for hardware: Dell Vostro 270 with an i5 3.4ghz 4 core cpu with 16g ram, a firepro 2500(i think) gpu, and i have a second ethernet card in one of the other pci slots. to be honest, i have not tried it without all the extra hardware. i did all these upgrades so i didn't have issues with a slow PC right out of the box. i have a dell laptop with linuxcnc on it that i could try if i can't figure out how to get it running with this machine.

i don't know why the ping times are so abismal. they were half that yesterday. from what i am reading, it's virtualbox that is giving me the error. im not running linuxcnc through a VM but i have it on here so i can run the servo setup software. is there issues running VM's with linux cnc? i have no problem reinstalling the OS if that is what needs to happen.
14 Apr 2024 03:59

Spindle speed via SuperPID

Category: General LinuxCNC Questions

Thanks for the reply and sorry for the late response.
The reason I'm using the mx3660x2d firmware is according the docs for the bobs I have pin one is enable, see pic.
 

I'm using 0 - 5v out. I've been doing a lot of messing around with it and can't seem to get the M3 Sxxx to match what the SuperPID displays.
I've switched to qtdragon from axis due to a glade error when adding a spindle tab. The spindle speed in qtdragon matches the SuperPID display.

I believe this is my last ini and hal before giving up.

======================================================================
# Generated by PNCconf at Sat Apr 13 10:38:01 2024
# Using LinuxCNC version:  Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

[EMC]
MACHINE = MuttCNC_No-Limits_RPi4
DEBUG = 0
VERSION = 1.1

[DISPLAY]
DISPLAY = qtvcp qtdragon
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon.pref
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_0_OVERRIDE = 1.000000
MIN_SPINDLE_0_OVERRIDE = 0.500000
DEFAULT_SPINDLE_0_SPEED = 500
MIN_SPINDLE_0_SPEED = 100
MAX_SPINDLE_0_SPEED = 2500
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 6.000000
MAX_LINEAR_VELOCITY = 158.333333
MIN_LINEAR_VELOCITY = 0.500000
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xyz
CYCLE_TIME = 100

[MDI_COMMAND_LIST]
MDI_COMMAND = G0 Z0;X0 Y0
MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G21 G40 G90 G94 G97 G64 P0.025

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000

[HMOT]
CARD0=hm2_7c81.0

[HAL]
HALUI = halui
HALFILE = MuttCNC_No-Limits_RPi4.hal
HALFILE = custom.hal
POSTGUI_HALFILE = qtvcp_postgui.hal
POSTGUI_HALFILE = custom_postgui.hal
SHUTDOWN = shutdown.hal

[HALUI]

[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ

[TRAJ]
COORDINATES =  XYZ
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 20.83
MAX_LINEAR_VELOCITY = 208.33
POSITION_FILE = position.txt

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

#******************************************
[AXIS_X]
MAX_VELOCITY = 208.33333333333334
MAX_ACCELERATION = 1150.0
MIN_LIMIT = -0.0
MAX_LIMIT = 785.0

[JOINT_0]
TYPE = LINEAR
HOME = 2.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 208.33333333333334
MAX_ACCELERATION = 1150.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 260.42
STEPGEN_MAXACCEL = 1437.5
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
# these are in nanoseconds
DIRSETUP   = 20000
DIRHOLD    = 20000
STEPLEN    = 5000
STEPSPACE  = 5000
STEP_SCALE = 160.9
MIN_LIMIT = -0.0
MAX_LIMIT = 785.0
HOME_OFFSET = 2.0
HOME_SEQUENCE = 2
#******************************************

#******************************************
[AXIS_Y]
MAX_VELOCITY = 208.33333333333334
MAX_ACCELERATION = 1150.0
MIN_LIMIT = -0.0
MAX_LIMIT = 283.0

[JOINT_1]
TYPE = LINEAR
HOME = 2.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 208.33333333333334
MAX_ACCELERATION = 1150.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 260.42
STEPGEN_MAXACCEL = 1437.5
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
# these are in nanoseconds
DIRSETUP   = 10000
DIRHOLD    = 10000
STEPLEN    = 5000
STEPSPACE  = 5000
STEP_SCALE = 159.1
MIN_LIMIT = -0.0
MAX_LIMIT = 283.0
HOME_OFFSET = 2.0
HOME_SEQUENCE = 3
#******************************************

#******************************************
[AXIS_Z]
MAX_VELOCITY = 46.666666666666664
MAX_ACCELERATION = 250.0
MIN_LIMIT = -150.0
MAX_LIMIT = 0.0

[JOINT_2]
TYPE = LINEAR
HOME = -2.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 46.666666666666664
MAX_ACCELERATION = 250.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 58.33
STEPGEN_MAXACCEL = 312.5
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
# these are in nanoseconds
DIRSETUP   = 20000
DIRHOLD    = 20000
STEPLEN    = 5000
STEPSPACE  = 5000
STEP_SCALE = -804.2
MIN_LIMIT = -150.0
MAX_LIMIT = 0.0
HOME_OFFSET = -2.0
HOME_SEQUENCE = 1
#******************************************

[SPINDLE_0]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 25000.0
ENCODER_SCALE = 1
OUTPUT_SCALE = 50000
OUTPUT_MIN_LIMIT = 0
OUTPUT_MAX_LIMIT = 25000.0
======================================================================
======================================================================
# Generated by PNCconf at Sat Apr 13 10:38:01 2024
# Using LinuxCNC version:  Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_rpspi config="firmware=hm2/7c81/MX3660X2.BIT num_encoders=2 num_pwmgens=2 num_stepgens=8 sserial_port_0=00xxxxxx" 
setp    [HMOT](CARD0).pwmgen.pwm_frequency 50
setp    [HMOT](CARD0).pwmgen.pdm_frequency 6000000
setp    [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
loadrt scale names=scale.gear
loadrt near
loadrt mux16 names=ratio_select

addf [HMOT](CARD0).read          servo-thread
addf motion-command-handler   servo-thread
addf motion-controller        servo-thread
addf pid.x.do-pid-calcs       servo-thread
addf pid.y.do-pid-calcs       servo-thread
addf pid.z.do-pid-calcs       servo-thread
addf pid.s.do-pid-calcs       servo-thread
addf ratio_select             servo-thread
addf scale.gear               servo-thread
addf near.0                   servo-thread
addf [HMOT](CARD0).write         servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1

# external output signals

# --- MACHINE-IS-ENABLED ---
setp [HMOT](CARD0).gpio.000.is_output true
net machine-is-enabled  =>     [HMOT](CARD0).gpio.000.out
setp [HMOT](CARD0).gpio.000.invert_output true

# --- MACHINE-IS-ENABLED ---
setp [HMOT](CARD0).gpio.019.is_output true
net machine-is-enabled  =>     [HMOT](CARD0).gpio.019.out
setp [HMOT](CARD0).gpio.019.invert_output true

# --- COOLANT-FLOOD ---
setp [HMOT](CARD0).gpio.039.is_output true
net coolant-flood  =>     [HMOT](CARD0).gpio.039.out

# --- COOLANT-MIST ---
setp [HMOT](CARD0).gpio.043.is_output true
net coolant-mist  =>     [HMOT](CARD0).gpio.043.out

# --- SPINDLE-ENABLE ---
setp [HMOT](CARD0).gpio.045.is_output true
net spindle-enable  =>     [HMOT](CARD0).gpio.045.out
setp [HMOT](CARD0).gpio.045.invert_output true


# external input signals

# --- ESTOP-EXT ---
net estop-ext     <=  [HMOT](CARD0).gpio.003.in


#*******************
#  AXIS X JOINT 0
#*******************

setp   pid.x.Pgain     [JOINT_0]P
setp   pid.x.Igain     [JOINT_0]I
setp   pid.x.Dgain     [JOINT_0]D
setp   pid.x.bias      [JOINT_0]BIAS
setp   pid.x.FF0       [JOINT_0]FF0
setp   pid.x.FF1       [JOINT_0]FF1
setp   pid.x.FF2       [JOINT_0]FF2
setp   pid.x.deadband  [JOINT_0]DEADBAND
setp   pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp   pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp   pid.x.maxerror 0.012700

net x-index-enable  =>  pid.x.index-enable
net x-enable        =>  pid.x.enable
net x-pos-cmd       =>  pid.x.command
net x-pos-fb        =>  pid.x.feedback
net x-output        <=  pid.x.output

# Step Gen signals/setup

setp   [HMOT](CARD0).stepgen.04.dirsetup        [JOINT_0]DIRSETUP
setp   [HMOT](CARD0).stepgen.04.dirhold         [JOINT_0]DIRHOLD
setp   [HMOT](CARD0).stepgen.04.steplen         [JOINT_0]STEPLEN
setp   [HMOT](CARD0).stepgen.04.stepspace       [JOINT_0]STEPSPACE
setp   [HMOT](CARD0).stepgen.04.position-scale  [JOINT_0]STEP_SCALE
setp   [HMOT](CARD0).stepgen.04.step_type        0
setp   [HMOT](CARD0).stepgen.04.control-type     1
setp   [HMOT](CARD0).stepgen.04.maxaccel         [JOINT_0]STEPGEN_MAXACCEL
setp   [HMOT](CARD0).stepgen.04.maxvel           [JOINT_0]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net x-pos-cmd    <= joint.0.motor-pos-cmd
net x-vel-cmd    <= joint.0.vel-cmd
net x-output     => [HMOT](CARD0).stepgen.04.velocity-cmd
net x-pos-fb     <= [HMOT](CARD0).stepgen.04.position-fb
net x-pos-fb     => joint.0.motor-pos-fb
net x-enable     <= joint.0.amp-enable-out
net x-enable     => [HMOT](CARD0).stepgen.04.enable

# ---setup home / limit switch signals---

net x-home-sw     =>  joint.0.home-sw-in
net x-neg-limit     =>  joint.0.neg-lim-sw-in
net x-pos-limit     =>  joint.0.pos-lim-sw-in

#*******************
#  AXIS Y JOINT 1
#*******************

setp   pid.y.Pgain     [JOINT_1]P
setp   pid.y.Igain     [JOINT_1]I
setp   pid.y.Dgain     [JOINT_1]D
setp   pid.y.bias      [JOINT_1]BIAS
setp   pid.y.FF0       [JOINT_1]FF0
setp   pid.y.FF1       [JOINT_1]FF1
setp   pid.y.FF2       [JOINT_1]FF2
setp   pid.y.deadband  [JOINT_1]DEADBAND
setp   pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp   pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp   pid.y.maxerror 0.012700

net y-index-enable  =>  pid.y.index-enable
net y-enable        =>  pid.y.enable
net y-pos-cmd       =>  pid.y.command
net y-pos-fb        =>  pid.y.feedback
net y-output        <=  pid.y.output

# Step Gen signals/setup

setp   [HMOT](CARD0).stepgen.01.dirsetup        [JOINT_1]DIRSETUP
setp   [HMOT](CARD0).stepgen.01.dirhold         [JOINT_1]DIRHOLD
setp   [HMOT](CARD0).stepgen.01.steplen         [JOINT_1]STEPLEN
setp   [HMOT](CARD0).stepgen.01.stepspace       [JOINT_1]STEPSPACE
setp   [HMOT](CARD0).stepgen.01.position-scale  [JOINT_1]STEP_SCALE
setp   [HMOT](CARD0).stepgen.01.step_type        0
setp   [HMOT](CARD0).stepgen.01.control-type     1
setp   [HMOT](CARD0).stepgen.01.maxaccel         [JOINT_1]STEPGEN_MAXACCEL
setp   [HMOT](CARD0).stepgen.01.maxvel           [JOINT_1]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net y-pos-cmd    <= joint.1.motor-pos-cmd
net y-vel-cmd    <= joint.1.vel-cmd
net y-output     => [HMOT](CARD0).stepgen.01.velocity-cmd
net y-pos-fb     <= [HMOT](CARD0).stepgen.01.position-fb
net y-pos-fb     => joint.1.motor-pos-fb
net y-enable     <= joint.1.amp-enable-out
net y-enable     => [HMOT](CARD0).stepgen.01.enable

# ---setup home / limit switch signals---

net y-home-sw     =>  joint.1.home-sw-in
net y-neg-limit     =>  joint.1.neg-lim-sw-in
net y-pos-limit     =>  joint.1.pos-lim-sw-in

#*******************
#  AXIS Z JOINT 2
#*******************

setp   pid.z.Pgain     [JOINT_2]P
setp   pid.z.Igain     [JOINT_2]I
setp   pid.z.Dgain     [JOINT_2]D
setp   pid.z.bias      [JOINT_2]BIAS
setp   pid.z.FF0       [JOINT_2]FF0
setp   pid.z.FF1       [JOINT_2]FF1
setp   pid.z.FF2       [JOINT_2]FF2
setp   pid.z.deadband  [JOINT_2]DEADBAND
setp   pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp   pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp   pid.z.maxerror 0.012700

net z-index-enable  =>  pid.z.index-enable
net z-enable        =>  pid.z.enable
net z-pos-cmd       =>  pid.z.command
net z-pos-fb        =>  pid.z.feedback
net z-output        <=  pid.z.output

# Step Gen signals/setup

setp   [HMOT](CARD0).stepgen.02.dirsetup        [JOINT_2]DIRSETUP
setp   [HMOT](CARD0).stepgen.02.dirhold         [JOINT_2]DIRHOLD
setp   [HMOT](CARD0).stepgen.02.steplen         [JOINT_2]STEPLEN
setp   [HMOT](CARD0).stepgen.02.stepspace       [JOINT_2]STEPSPACE
setp   [HMOT](CARD0).stepgen.02.position-scale  [JOINT_2]STEP_SCALE
setp   [HMOT](CARD0).stepgen.02.step_type        0
setp   [HMOT](CARD0).stepgen.02.control-type     1
setp   [HMOT](CARD0).stepgen.02.maxaccel         [JOINT_2]STEPGEN_MAXACCEL
setp   [HMOT](CARD0).stepgen.02.maxvel           [JOINT_2]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net z-pos-cmd    <= joint.2.motor-pos-cmd
net z-vel-cmd    <= joint.2.vel-cmd
net z-output     => [HMOT](CARD0).stepgen.02.velocity-cmd
net z-pos-fb     <= [HMOT](CARD0).stepgen.02.position-fb
net z-pos-fb     => joint.2.motor-pos-fb
net z-enable     <= joint.2.amp-enable-out
net z-enable     => [HMOT](CARD0).stepgen.02.enable

# ---setup home / limit switch signals---

net z-home-sw     =>  joint.2.home-sw-in
net z-neg-limit     =>  joint.2.neg-lim-sw-in
net z-pos-limit     =>  joint.2.pos-lim-sw-in

#*******************
#  SPINDLE
#*******************

setp   pid.s.Pgain     [SPINDLE_0]P
setp   pid.s.Igain     [SPINDLE_0]I
setp   pid.s.Dgain     [SPINDLE_0]D
setp   pid.s.bias      [SPINDLE_0]BIAS
setp   pid.s.FF0       [SPINDLE_0]FF0
setp   pid.s.FF1       [SPINDLE_0]FF1
setp   pid.s.FF2       [SPINDLE_0]FF2
setp   pid.s.deadband  [SPINDLE_0]DEADBAND
net ratio_select.out   pid.s.maxoutput 
setp   pid.s.error-previous-target true

net spindle-index-enable  =>  pid.s.index-enable
net spindle-enable        =>  pid.s.enable
net spindle-vel-cmd-rpm-abs     => pid.s.command
net spindle-vel-fb-rpm-abs      => pid.s.feedback
net spindle-pid-out  pid.s.output    => scale.gear.in
net gear-ratio       ratio_select.out-f => scale.gear.gain
setp ratio_select.in00 0.000200
setp ratio_select.in01 0.000040
net gear-select-a         =>  ratio_select.sel0
net spindle-output        <=  scale.gear.out

# ---PWM Generator signals/setup---

setp   [HMOT](CARD0).pwmgen.01.output-type 1
setp   [HMOT](CARD0).pwmgen.01.scale  [SPINDLE_0]OUTPUT_SCALE
setp    hm2_7c81.0.gpio.020.invert_output true


net spindle-output      => [HMOT](CARD0).pwmgen.01.value
net spindle-enable      => [HMOT](CARD0).pwmgen.01.enable

# ---Encoder feedback signals/setup---

setp    [HMOT](CARD0).encoder.01.counter-mode 1
setp    [HMOT](CARD0).encoder.01.filter 1
setp    [HMOT](CARD0).encoder.01.index-invert 0
setp    [HMOT](CARD0).encoder.01.index-mask 0
setp    [HMOT](CARD0).encoder.01.index-mask-invert 0
setp    [HMOT](CARD0).encoder.01.scale  [SPINDLE_0]ENCODER_SCALE

net spindle-revs             <=   [HMOT](CARD0).encoder.01.position
net spindle-vel-fb-rps       <=   [HMOT](CARD0).encoder.01.velocity
net spindle-vel-fb-rpm       <=   [HMOT](CARD0).encoder.01.velocity-rpm
net spindle-index-enable     <=>  [HMOT](CARD0).encoder.01.index-enable

# ---setup spindle control signals---

net spindle-vel-cmd-rps        <=  spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs    <=  spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm        <=  spindle.0.speed-out
net spindle-vel-cmd-rpm-abs    <=  spindle.0.speed-out-abs
net spindle-enable             <=  spindle.0.on
net spindle-cw                 <=  spindle.0.forward
net spindle-ccw                <=  spindle.0.reverse
net spindle-brake              <=  spindle.0.brake
net spindle-revs               =>  spindle.0.revs
net spindle-at-speed           =>  spindle.0.at-speed
net spindle-vel-fb-rps         =>  spindle.0.speed-in
net spindle-index-enable      <=>  spindle.0.index-enable

# ---Setup spindle at speed signals---

net spindle-vel-cmd-rps    =>  near.0.in1
net spindle-vel-fb-rps         =>  near.0.in2
net spindle-at-speed       <=  near.0.out
setp near.0.scale 1.000000
setp near.0.difference 3.333333


#******************************
# connect miscellaneous signals
#******************************

#  ---HALUI signals---

net axis-select-x  halui.axis.x.select
net jog-x-pos      halui.axis.x.plus
net jog-x-neg      halui.axis.x.minus
net jog-x-analog   halui.axis.x.analog
net x-is-homed     halui.joint.0.is-homed
net axis-select-y  halui.axis.y.select
net jog-y-pos      halui.axis.y.plus
net jog-y-neg      halui.axis.y.minus
net jog-y-analog   halui.axis.y.analog
net y-is-homed     halui.joint.1.is-homed
net axis-select-z  halui.axis.z.select
net jog-z-pos      halui.axis.z.plus
net jog-z-neg      halui.axis.z.minus
net jog-z-analog   halui.axis.z.analog
net z-is-homed     halui.joint.2.is-homed
net jog-selected-pos      halui.axis.selected.plus
net jog-selected-neg      halui.axis.selected.minus
net spindle-manual-cw     halui.spindle.0.forward
net spindle-manual-ccw    halui.spindle.0.reverse
net spindle-manual-stop   halui.spindle.0.stop
net machine-is-on         halui.machine.is-on
net jog-speed             halui.axis.jog-speed
net MDI-mode              halui.mode.is-mdi

#  ---coolant signals---

net coolant-mist      <=  iocontrol.0.coolant-mist
net coolant-flood     <=  iocontrol.0.coolant-flood

#  ---probe signal---

net probe-in     =>  motion.probe-input

#  ---motion control signals---

net in-position               <=  motion.in-position
net machine-is-enabled        <=  motion.motion-enabled

#  ---digital in / out signals---

#  ---estop signals---

net estop-out     <=  iocontrol.0.user-enable-out
net estop-ext     =>  iocontrol.0.emc-enable-in

#  ---manual tool change signals---

net tool-change-request    <= iocontrol.0.tool-change
net tool-change-confirmed  => iocontrol.0.tool-changed
net tool-number            <= iocontrol.0.tool-prep-number

#  ---ignore tool prepare requests---
net tool-prepare-loopback   iocontrol.0.tool-prepare      =>  iocontrol.0.tool-prepared
======================================================================

Any change I made was through pncconf to keep me from making a change while screwing around that I would later forget about and be scratching my head if something was working...

Thanks.
 
12 Apr 2024 00:03 - 12 Apr 2024 00:04

Spindle speed via SuperPID

Category: General LinuxCNC Questions

Hoping for some help.
I was using a Dell Optiplex 780 SFF with a 5i25 a G540 and a SuperPID. All worked well until the G540 died. I replaced it with some sainsmart bobs and stepperonline motors/drivers. All worked great until the Dell died. I went with a RPi4 and 7c81 with mx3660x2d firmware. I had to remove the relay in order to use the DB25-14 pin as pwm. The output on that pin ranges from 0.90v to 5v when I click the + for the spindle speed in axis. When I do a M3 S8000 the rpm is something like 15000 and the pin voltage is something  like 1.7v. I have the pwm_frequncy set to 50 as I believe is needed. Whats the best way to calibrate the spindle?

Thanks for any help.
I can try to upload my configs if needed.
04 Apr 2024 19:55

Taig Mill/Gecko G540/Mesa Card?

Category: Driver Boards

I am trying to put together my first LinuxCNC build using a Taig Mill. My previous experience is limited to GRBL 3D printers and CNC routers.

I have a Gecko 540 in an enclosure (including power supply and e-stop) with 3 steppers on the Taig. I have an older PC (Intel i7 - one core enabled jitter is below 10K) with a SIIG PCIe Parallel port card. I have the steppers working on this hardware. I have not installed any limit or home switches yet. I have a Digital Loggers relay power strip that I was planning on using for turning on and off the spindle.

I am considering switching to a Mesa ethernet solution - just because it seems to be a more elegant solution. I would also love to utilize a RPI5 I have sitting idle, primarily due to space concerns posed by the old gaming PC chassis. 

So, from my research it seems that a Mesa 7192TF would allow me to connect to the Gecko box and utilize the ethernet connection from the PC or the RPI5. 

Am I on the right path? - or am I missing other components that I need?

TIA

Randale
 
03 Apr 2024 17:09
Replied by PCW on topic Stepper Motor to work like a DC

Stepper Motor to work like a DC

Category: Driver Boards

Not sure what you mean. A step motor always needs a step motor driver,
and those typically use step/dir commands (though other driver interfaces
are available)

You can treat a stepmotor/drive as a simple velocity controlled device (
say for a spindle) in LinuxCNC if that's what you mean.
31 Mar 2024 02:51
Replied by pippin88 on topic Anyone seen this?

Anyone seen this?

Category: EtherCAT

In drive ethercat is definitely the way to go.

Servo drives: costs is $40-60 per drive for ethercat (vs pulse input variants) across multiple brands.
You then don't need a stepgen card. Decent stepgen card is $120-150.
So cost difference is minimal. Ethercat in drive gives you a lot more and is a lot easier than having a stepgen card.
For a new system, there would be no role for ethercat -> stepgen card -> servo/stepper.

But there is a case where converting an existing step/dir setup would be nice. I have a small lathe with a 750W step/dir servo for the spindle. It's good quality, not a cheap servo. The axis are cheap stepper driven. I'd like to change to ethercat servos for the axis. But then I am stuck with what to do for the spindle which is step/dir.
27 Mar 2024 23:50

How to setup simultaneous tandem Y and tandem Z

Category: StepConf Wizard

Most probably yes, it can be done.
What do you mean by "splitting signals"?
That would require 10 outputs for 5 stepper drives and 5 inputs for limit switches, leaving you 2 outputs free for spindle on/pwm.
No idea if StepConf can make such a config, but PncConf might, although that would require a lot of editing.
Just checked, no Z tandem, so make X and Y with tandem Y and then another Y with tandem Y on the other pins, then edit the hal and ini files to reflect Z axis for the last two stepgens/outputs.
Displaying 91 - 105 out of 168 results.
Time to create page: 0.983 seconds
Powered by Kunena Forum