Advanced Search

Search Results (Searched for: stepper spindle)

10 Aug 2024 15:30

5x10 servo router rebuild - analog of step/dir with mesa card?

Category: General LinuxCNC Questions

I've got a 5' x 10' CNC router with a failed Mach 3 control. It has Yaskawa Servos (SGMGH-09ACA61) and was set up for step/dir with an ethernet smooth stepper. It was "open loop" with that control. It has four motors for the 3 main axis and a 5th motor for a rotary axis. I might not use the 5th axis but I do have a crazy idea for an automated dust collection "axis" that would probably use stepper motors. 

I have a Mesa 7I76e that I bought several years ago for another machine that has yet to be completed and I think this would be my fastest/easiest control to drop in but would still leave me open loop to the control. Instead I've been thinking of running with analog servo signals and the encoder feedback into LinuxCNC using a 7I92TF with a 7I77 or a single 7I97T. It seems the 7I97T might be a bit light on general I/O since the machine has an ATC spindle and several other pneumatics that need to be controlled and sensed so I'm leaning towards the former combo. 

Any suggestions wrt to Mesa card availability and the advantage of using analog vs step/dir in this application? 

 
07 Aug 2024 18:50 - 07 Aug 2024 18:52

LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)

Category: Computers and Hardware

Just checked my stepper drives and as expected (a.k.a. modern equipment), they do have built-in isolation (optos). Same as my spindle BLDC motor drive, all built-in modern stuff. And so wtf, why the excessive legendary need for so called isolation on those motion control boards for exactly? 

Calling the electron godz lol... 
07 Aug 2024 18:32 - 07 Aug 2024 18:46

LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)

Category: Computers and Hardware

I'm no control motion board expert by any trade. First one. The "Legend" has it that they are noisy and spikey. Mind you I'm having no issue running a colorlight on my lathe which share the same 5V&GND for pretty much everything (rotary encoder, switches, stepper drives, estop, everything basically). Just got isolation on the Spindle/BLDC motor drive (obviously), but that's on the drive itself not on the motion control board. And so I'm a bit lost as to what's best isolation design, low-cost, "convenience-wise".

btw - I apologize for hijacking your thread and abusing your kind generosity (and expertise!!). Just trying to get a semi-universal "RIO Control Board" schematic out for the community to copy/paste and ideally do their own...

Edit: perhaps worth using another forum for those sort of questions?! If so do not hesitate to recommend one/more/many, and I'll be on my way out!!
07 Aug 2024 03:44 - 07 Aug 2024 04:22

Question regarding shielding

Category: General LinuxCNC Questions

Hi all,

This is my first time playing with electronics. I had almost zero knowledge but during the last 3 months I understand quite a bit now. I was quite afraid of it (especially Linuxcnc, I was keeping Acorn ahead because of the ease) but I am quite enjoying it now. I have wired my lathe previously with a printer BOB and it ran successfully. Now I am getting it hooked with a mesa 7i96s card with nema 23 motors and a spindle encoder. Getting a mesa board here in India is quite hectic so I will ask some questions frequently so that I dont mess anything up. 

1. What are the 5V, GND pins on each stepper axis of the Mesa card used for?

2. I heard that you need shielded wires for steppers. So do I need to shield the pulse and direction wires from the mesa card to the drivers along with the wires from the drivers to the motor or just the latter is enough?

3. Even though I searched quite a bit about the enable signal of the drivers, I couldn't land on a decision on how to wire it. I understand that leaving it unconnected or having the pins low enables them and having them high disables them. I really dont want the steppers to be enabled all the time, maybe F1, F2 from Linuxcnc will disable-enable them. Any wiring suggestions?

4. There is a Frame GND on the Mesa card. Do I need to ground it?

Thanks in advance..


EDIT: I now understand what the 5v and GND is for on the mesa stepper axis segments. I somehow missed it on the manual..
05 Aug 2024 23:47

[ Vfdmod ] An easy VFD control over MODBUS RTU

Category: HAL

Hey aekhv,
Your github and docs seem to be in a bit of a scramble with your name change on github. Any estimate of when that will get straightened out? Love the project I was able to put together a working configuration for the StepperOnline EV200 pretty easily. Mb2hal just didn't work for this device. Still trying to figure out what their spindle speed register wants, but that is their documentation problem.
05 Aug 2024 22:36

3 Achs Fräse mit MESA 7C80 und Raspi 4

Category: Deutsch

Hello,

Please excuse my crashing into this thread. I've found it very useful so far and managed to set up 6 out of 7 parts of my 30-year-old Gravograph Unica that I'm trying to convert to LinuxCNC running on a Raspberry Pi with a Mesa 7C80.

What's working fine so far are the 3 steppers and corresponding home switches X, Y & Z.

But: The spindle won't turn on.
I'd like to control it via PWM and as far as I can tell there should be PWM output on pin 2 of TB5 of the 7C80.
There's no useable output there, and I'm not sure where to search and what to do next ...

If there's any chance you could have a look at my .hal and .ini files, that would be very much appreciated :)
I also included the output of the terminal from where LinuxCNC was launched, and the output of "halcmd show signal spin".
Voltage between SINDLE+ and SPINDLE- seems to be just noise or in the mV-Magnitude.

Thank you for reading and best regards,
Erik
captain-panda

 

File Attachment:

File Name: UNICA.hal
File Size:11 KB

 

File Attachment:

File Name: UNICA.ini
File Size:5 KB

 

File Attachment:

File Name: UNICA_run.txt
File Size:5 KB

 

File Attachment:

File Name: signal_spin.txt
File Size:2 KB
04 Aug 2024 22:16

EtherCAT i/o board for spindle, estop and mpg

Category: EtherCAT

I'm assembling a machine on EtherCAT. All the mechanics are ready, checked on stepper motors while the servo motors are still on the way. But the spindle is available and there was a question of connecting it. The speed can be controlled by 0-10 volts or PWM. Plus, I need to connect Estop and MPG. I'm considering the following options:

1. Since I have a computer with two network ports, I can connect RP2040 via Ethernet to one of them. Cheap and angry, but I would like to do everything on one technology.

2. Noname EtherCAT i/o board from Ali Express (but which one?)

3. Beckhoff EK1828 coupler with 4 digital inputs and 8 digital outputs.  www.beckhoff.com/en-en/products/i-o/ethe...-coupler/ek1828.html  But is it possible to issue a computer-generated PWM signal through it and receive feedback from the spindle about the speed?

I would like to do with one device that covers all needs except servos. What are your recommendations, colleagues?
04 Aug 2024 03:13

Hello, I would like to add an EtherCAT IO device. What should I do

Category: EtherCAT

# Generated by PNCconf at Sat Sep 10 10:10:56 2016
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

loadrt [KINS]KINEMATICS
#autoconverted  trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt cia402 count=4

addf lcec.read-all            servo-thread
addf cia402.0.read-all        servo-thread
addf cia402.1.read-all        servo-thread
addf cia402.2.read-all        servo-thread
addf cia402.3.read-all        servo-thread

addf motion-command-handler   servo-thread
addf motion-controller        servo-thread
addf cia402.0.write-all       servo-thread
addf cia402.1.write-all       servo-thread
addf cia402.2.write-all       servo-thread
addf cia402.3.write-all       servo-thread

addf lcec.write-all           servo-thread

#*******************
#  AXIS X
#*******************

# --- joint signals for motion

net x-pos-cmd    <= joint.0.motor-pos-cmd
net x-vel-cmd    <= joint.0.vel-cmd
net x-pos-fb     <= joint.0.motor-pos-fb
net x-enable     <= joint.0.amp-enable-out

# --- connect stepper driver to joint

net x-pos-cmd    => cia402.0.pos-cmd
net x-pos-fb     => cia402.0.pos-fb
net x-enable     => cia402.0.enable

# --- ect60 settings

setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 26214.4

# --- from stepper(ethercat) to cia402

net x-statusword      lcec.0.0.cia-statusword  => cia402.0.statusword
net x-opmode-display  lcec.0.0.opmode-display  => cia402.0.opmode-display
net x-drv-act-pos     lcec.0.0.actual-position => cia402.0.drv-actual-position
net x-drv-act-velo    lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity

# --- from cia402 to stepper(ethercat) 

net x-controlword         cia402.0.controlword         => lcec.0.0.cia-controlword
net x-modes-of-operation  cia402.0.opmode              => lcec.0.0.opmode
net x-drv-target-pos      cia402.0.drv-target-position => lcec.0.0.target-position
net x-drv-target-velo     cia402.0.drv-target-velocity => lcec.0.0.target-velocity

#*******************
#  AXIS Y
#*******************

# --- joint signals for motion
net y-pos-cmd    <= joint.1.motor-pos-cmd
net y-vel-cmd    <= joint.1.vel-cmd
net y-pos-fb     <= joint.1.motor-pos-fb
net y-enable     <= joint.1.amp-enable-out

# --- connect stepper driver to the joint

net y-pos-cmd    => cia402.1.pos-cmd
net y-pos-fb     => cia402.1.pos-fb
net y-enable     => cia402.1.enable

# --- ect60 settings

setp cia402.1.csp-mode 1
setp cia402.1.pos-scale 26214.4

# --- from servo(ethercat) to cia402

net y-statusword      lcec.0.1.cia-statusword  => cia402.1.statusword
net y-opmode-display  lcec.0.1.opmode-display  => cia402.1.opmode-display
net y-drv-act-pos     lcec.0.1.actual-position => cia402.1.drv-actual-position
net y-drv-act-velo    lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity

# --- from cia402 to servo(ethercat) 

net y-controlword         cia402.1.controlword         => lcec.0.1.cia-controlword
net y-modes-of-operation  cia402.1.opmode              => lcec.0.1.opmode
net y-drv-target-pos      cia402.1.drv-target-position => lcec.0.1.target-position
net y-drv-target-velo     cia402.1.drv-target-velocity => lcec.0.1.target-velocity


#*******************
#  AXIS z
#*******************

# --- joint signals for motion
net z-pos-cmd    <= joint.2.motor-pos-cmd
net z-vel-cmd    <= joint.2.vel-cmd
net z-pos-fb     <= joint.2.motor-pos-fb
net z-enable     <= joint.2.amp-enable-out

# --- connect stepper driver to the joint

net z-pos-cmd    => cia402.2.pos-cmd
net z-pos-fb     => cia402.2.pos-fb
net z-enable     => cia402.2.enable

# --- ect60 settings

setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 26214.4

# --- from servo(ethercat) to cia402

net z-statusword      lcec.0.2.cia-statusword  => cia402.2.statusword
net z-opmode-display  lcec.0.2.opmode-display  => cia402.2.opmode-display
net z-drv-act-pos     lcec.0.2.actual-position => cia402.2.drv-actual-position
net z-drv-act-velo    lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity

# --- from cia402 to servo(ethercat) 

net z-controlword         cia402.2.controlword         => lcec.0.2.cia-controlword
net z-modes-of-operation  cia402.2.opmode              => lcec.0.2.opmode
net z-drv-target-pos      cia402.2.drv-target-position => lcec.0.2.target-position
net z-drv-target-velo     cia402.2.drv-target-velocity => lcec.0.2.target-velocity


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

# --- joint signals for motion

net spindle-speed-cmd spindle.0.speed-out => cia402.3.velocity-cmd
net spindle-speed-fb cia402.3.velocity-fb => spindle.0.speed-in
net spindle-on spindle.0.on => cia402.3.enable

# --- ect60 settings

setp cia402.3.csp-mode 0
setp cia402.3.pos-scale 4000
setp cia402.3.velo-scale 400

# --- from servo(ethercat) to cia402

net s-statusword      lcec.0.3.cia-statusword  => cia402.3.statusword
net s-opmode-display  lcec.0.3.opmode-display  => cia402.3.opmode-display
net s-drv-act-pos     lcec.0.3.actual-position => cia402.3.drv-actual-position
net s-drv-act-velo    lcec.0.3.actual-velocity => cia402.3.drv-actual-velocity

# --- from cia402 to servo(ethercat) 

net s-controlword         cia402.3.controlword         => lcec.0.3.cia-controlword
net s-modes-of-operation  cia402.3.opmode              => lcec.0.3.opmode
net s-drv-target-pos      cia402.3.drv-target-position => lcec.0.3.target-position
net s-drv-target-velo     cia402.3.drv-target-velocity => lcec.0.3.target-velocity


#*********************
#   E-STOP
#*********************

setp iocontrol.0.emc-enable-in 1


loadrt hal_parport cfg="0 in"
addf parport.0.read servo-thread
#addf mux4.0 servo-thread

# Jog Pendant
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
addf mux4.0 servo-thread

# If your MPG outputs a quadrature signal per click set x4 to 1
# If your MPG puts out 1 pulse per click set x4 to 0
setp encoder.0.x4-mode 0

# For velocity mode, set to 1
# In velocity mode the axis stops when the dial is stopped
# even if that means the commanded motion is not completed,
# For position mode (the default), set to 0
# In position mode the axis will move exactly jog-scale
# units for each count, regardless of how long that might take,
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0

# This sets the scale that will be used based on the input to the mux4
setp mux4.0.in0 0.1
setp mux4.0.in1 0.01
setp mux4.0.in2 0.001

# The inputs to the mux4 component
net scale1 mux4.0.sel0 <= parport.0.pin-08-in-not
net scale2 mux4.0.sel1 <= parport.0.pin-07-in-not

# The output from the mux4 is sent to each axis jog scale
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale

# The MPG inputs
net mpg-a encoder.0.phase-A <= parport.0.pin-13-in
net mpg-b encoder.0.phase-B <= parport.0.pin-10-in

# The Axis select inputs
net mpg-x axis.x.jog-enable <= parport.0.pin-15-in-not
net mpg-y axis.y.jog-enable <= parport.0.pin-11-in
net mpg-z axis.z.jog-enable <= parport.0.pin-14-in

# The encoder output counts to the axis. Only the selected axis will move.
net encoder-counts  <= encoder.0.counts
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts


lite@LinuxCNC:~$ sudo ethercat slaves
0  0:0  OP     +  L7EC-400S(COE)
1  0:1  OP     +  L7EC-400S(COE)
2  0:2  OP     +  L7EC-400S(COE)
3  0:3  PREOP  E  EM32DX-E4


/* Master 0, Slave 3, "EM32DX-E4"
 * Vendor ID:       0x00004321
 * Product code:    0x01100073
 * Revision number: 0x18050210
 */

ec_pdo_entry_info_t slave_3_pdo_entries[] = {
    {0x7000, 0x01, 16}, /* OUT */
    {0x6000, 0x01, 16}, /* IN */
};

ec_pdo_info_t slave_3_pdos[] = {
    {0x1600, 1, slave_3_pdo_entries + 0}, /* RxPDO0-Map */
    {0x1a00, 1, slave_3_pdo_entries + 1}, /* TxPDO1-Map */
};

ec_sync_info_t slave_3_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, slave_3_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, slave_3_pdos + 1, EC_WD_DISABLE},
    {0xff}
 
04 Aug 2024 02:05

Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis

Category: General LinuxCNC Questions

Rick,

You'll find that there are many ways to accomplish the same thing in LCNC, but what I suggested was a combination of boards that would easily drive 9 separate axis motors, plus an analog 0-10v output for typical spindle control, plus a fair amount of inputs & outputs, plus has 5 high-speed encoder inputs since you mentioned 'closed loop.'

The 7i84 vs 7i84D - boards have the same I/O quantity, but one is for sourcing outputs and the other (D) is for sinking outputs.

The above recommendation is just that - a suggestion of an easy way to get 9 axes.  It was not a cost or space optimized solution, and I strongly discourage you from buying anything at this point.  You need to be in research mode right now.

If you want more specific recommendations, pics of the lathe, plus a detailed description of what additional 'stuff' you want to add would help us help you.  Pics of the existing control electronics (stepper drives, spindle drive, power supplies, etc.) and anything else (control panel) would help.

Make a list of all the inputs, outputs, axes, spindle, whatever.  Identify the voltages, amps, what components you have and will need in the future.

As for loading... are you talking about stock or part blank loading?  Does this hardware currently exist, or are you planning to fabricate some sort of automation mechanism?

-S

 
02 Aug 2024 19:12

Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis

Category: General LinuxCNC Questions

Some additional info would be helpful.

What is the machine? What is the upcoming project and why do you need three additional axes?
What are the current 6 axes, and what are the three additional axes you want/need to add? (linear axes, rotary, ballscrew, belt, worm drive, etc.)
When you ask for hardware suggestions, do you mean control hardware, motion hardware, or both?
What exactly is the current control setup?  What do you plan to re-use?
Closed loop how? Closed loop steppers, or closed loop back to the control (LCNC)?  Why do you think you might want this?
What IO do you need? Voltage, sinking/sourcing, current requirements?
Is there a spindle?  How is it controlled?

Anything you can provide details on will help.
02 Aug 2024 09:55 - 03 Aug 2024 10:08

Gravograph Engraving Machine(s) Conversion (Updated)

Category: Basic Configuration

Dear All,

Figured it out with extended reading - thanks for this great forum! - and a bit of creative try-and-error.
All 3 axes are set up and calibrated, homing works like a charm :)
Next and last open issue is the spindle - but I don't expect much difficulty with that. Otherwise there'll be another post here ...

ORIGINAL POST:
I've started a project to convert a 30-year-old engraving machine (Gravograph UNICA) to LinuxCNC running on a Raspberry PI 4 with a MESA 7C80. I have several Gravograph machines of various sizes available and am looking to roll out my conversion to most of them, if it works out as planned. These machines may be old, but as such they're solid and reliable. Also they are simple as there's just one stepper and one limit switch per axis and the spindle motor to control. The main reason for conversion is that the UNICA machine only runs on it's own Gravograph-unique operating system with a tiny monochrome CRT screen and propietary keyboard, with no communication port. The other, larger machines can communicate via serial port, but they also require Gravograph-only software ...

So far, I got the Raspberry PI, 7C80 and LinuxCNC up and running to the point that the x-axis stepper is operational by using linuxcnc.hal and linuxcnc.ini from this thread:
forum.linuxcnc.org/42-deutsch/52725-3-ac...esa-7c80-und-raspi-4

As far as I can tell, there's no wizard available (stepconf etc.) for configuring the MESA 7C80, so I need to work with the config files directly(?)

I modified linuxcnc.ini so that the stepper runs smoothly, and added three lines for the limit switch and homing. The stepper now starts running when I home the machine in LinuxCNC, and the program is apparently waiting for the limit switch to be triggered.
This is where I'm currently insecure and would like to ask for assistance:
  • What terminals to connect the limit switch to at the 7C80?
  • How to set it up as a NC contact (Switch opens when x-axis home position is reached)?
  • How to set up homing to move the spindle towards home at first if the home switch is not triggered, and then move a short distance away and back to the final home position? 

    This is my current linuxcnc.ini:
     

    File Attachment:

    File Name: linuxcnc.ini
    File Size:4 KB

     
    Thank you for reading and thanks in advance for any answers!

    Best regards,
    Erik 
    captain-panda
30 Jul 2024 13:32

help with millrun and/or custom Z-X-A(or C) lathe/machine

Category: Fusion 360

Hello everyone, hoping someone in the community can help. I have a lathe that I modified to have the headstock be driven by a positional stepper motor, and have added a spindle on the cross slide WITHOUT a Y axis. Thus, I am looking for help getting a working processor that can generate gcode for 2d milling in this configuration, meaning I can do things like drill holes on the face of my stock off center. 

What is the best way to go about doing this? Has anyone already made or used a working post processor for this? An old thread in fusion360 support said to find a post processor for millturn and remove mention of the Y axis so it only generates gcode without it - is that the right way to go about it?


Lastly, can someone verify if my kinematics are organized correctly in fusion360? My rotational/positional axis is along the Z axis and holds the stock, my spindle is on the cross slide (X axis) and points along the Z axis (attached image)

 
30 Jul 2024 09:43

Verify my Mesa selection

Category: Driver Boards

First of all thanks for the quick reply.

The setup with 7i97t with 7i84 would be ideal, however the 7i84 with sourcing outputs is currently out of stock everywhere I look. The spindle vfd takes a 0-10v signal and can therefore easily be controlled with one of the 6 axis outputs. I actually follow your Schaublin retrofit and that's where I got the idea for the 7i73 in my control cabinet. This can support physical keys in a matrix and also the encoders for Spindle/feed/jog so that's really good. I'm not satisfied with the cards in my electrical panel as well, but selecting from the available components this seems to work. Also, maybe in the future I'm gonna add a 4th axis to this machine and I'm not sure which type of motor I'm gonna use then, but having the 7i96 would leave the possibility of using a stepper or a servo for that.
28 Jul 2024 22:11 - 29 Jul 2024 10:13

7i96 non S PWM on an output possible?

Category: Driver Boards

ok below are my current HAL, INI, and PYVCP files for the foam cutter.
the HAL file
# Generated by PNCconf at Wed Jul 17 17:05:42 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=0 num_stepgens=5 sserial_port_0=0xxxxxxx"  
loadrt pid names=pid.x,pid.y,pid.u,pid.v,pid.a,pid.s

loadrt pwmgen output_type=0

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.u.do-pid-calcs       servo-thread
addf pid.v.do-pid-calcs       servo-thread
addf pid.a.do-pid-calcs       servo-thread
addf pid.s.do-pid-calcs       servo-thread
addf [HMOT](CARD0).write      servo-thread

addf pwmgen.update        servo-thread
addf pwmgen.make-pulses   servo-thread

setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1
setp    [HMOT](CARD0).watchdog.timeout_ns 5000000

setp pwmgen.0.dither-pwm true
setp pwmgen.0.pwm-freq 20
setp pwmgen.0.scale 100 # Change to your spindle’s top speed in RPM

# external output signals

# --- WIRE-OUTPUT-PIN ---
net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value
net spindle-on spindle.0.on => pwmgen.0.enable
net spindle-pwm pwmgen.0.pwm => [HMOT](CARD0).ssr.00.out-05


# external input signals

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

# --- HOME-X ---
net home-x     <=  [HMOT](CARD0).gpio.001.in

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

# --- HOME-U ---
net home-U     <=  [HMOT](CARD0).gpio.003.in

# --- HOME-V ---
net home-V    <=  [HMOT](CARD0).gpio.004.in

# --- HOME-A ---
#net home-A     <=  [HMOT](CARD0).gpio.005.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.00.dirsetup        [JOINT_0]DIRSETUP
setp   [HMOT](CARD0).stepgen.00.dirhold         [JOINT_0]DIRHOLD
setp   [HMOT](CARD0).stepgen.00.steplen         [JOINT_0]STEPLEN
setp   [HMOT](CARD0).stepgen.00.stepspace       [JOINT_0]STEPSPACE
setp   [HMOT](CARD0).stepgen.00.position-scale  [JOINT_0]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_0]STEPGEN_MAXACCEL
setp   [HMOT](CARD0).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     => [HMOT](CARD0).stepgen.00.velocity-cmd
net x-pos-fb     <= [HMOT](CARD0).stepgen.00.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.00.enable

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

#net x-home-sw     =>  joint.0.home-sw-in
net x-home     =>  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 home-y     =>  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 U JOINT 2
#*******************

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

net u-index-enable  =>  pid.u.index-enable
net u-enable        =>  pid.u.enable
net u-pos-cmd       =>  pid.u.command
net u-pos-fb        =>  pid.u.feedback
net u-output        <=  pid.u.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 u-pos-cmd    <= joint.2.motor-pos-cmd
net u-vel-cmd    <= joint.2.vel-cmd
net u-output     => [HMOT](CARD0).stepgen.02.velocity-cmd
net u-pos-fb     <= [HMOT](CARD0).stepgen.02.position-fb
net u-pos-fb     => joint.2.motor-pos-fb
net u-enable     <= joint.2.amp-enable-out
net u-enable     => [HMOT](CARD0).stepgen.02.enable

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

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

#*******************
#  AXIS V JOINT 3
#*******************

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

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

# Step Gen signals/setup

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

# ---closedloop stepper signals---

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

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

#net v-home-sw     =>  joint.3.home-sw-in
net home-v     =>  joint.3.home-sw-in
net v-neg-limit     =>  joint.3.neg-lim-sw-in
net v-pos-limit     =>  joint.3.pos-lim-sw-in

#*******************
#  AXIS A JOINT 4
#*******************

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

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

# Step Gen signals/setup

setp   [HMOT](CARD0).stepgen.04.dirsetup        [JOINT_4]DIRSETUP
setp   [HMOT](CARD0).stepgen.04.dirhold         [JOINT_4]DIRHOLD
setp   [HMOT](CARD0).stepgen.04.steplen         [JOINT_4]STEPLEN
setp   [HMOT](CARD0).stepgen.04.stepspace       [JOINT_4]STEPSPACE
setp   [HMOT](CARD0).stepgen.04.position-scale  [JOINT_4]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_4]STEPGEN_MAXACCEL
setp   [HMOT](CARD0).stepgen.04.maxvel           [JOINT_4]STEPGEN_MAXVEL

# ---closedloop stepper signals---

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

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

net a-home-sw     =>  joint.4.home-sw-in
#net home-a     =>  joint.4.home-sw-in
net a-neg-limit     =>  joint.4.neg-lim-sw-in
net a-pos-limit     =>  joint.4.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

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

# ---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-u  halui.axis.u.select
net jog-u-pos      halui.axis.u.plus
net jog-u-neg      halui.axis.u.minus
net jog-u-analog   halui.axis.u.analog
net u-is-homed     halui.joint.2.is-homed
#
net axis-select-v  halui.axis.v.select
net jog-v-pos      halui.axis.v.plus
net jog-v-neg      halui.axis.v.minus
net jog-v-analog   halui.axis.v.analog
net v-is-homed     halui.joint.3.is-homed
#
net axis-select-a  halui.axis.a.select
net jog-a-pos      halui.axis.a.plus
net jog-a-neg      halui.axis.a.minus
net jog-a-analog   halui.axis.a.analog
net a-is-homed     halui.joint.4.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

#  ---Use external manual tool change dialog---

loadusr -W hal_manualtoolchange
net tool-change-request    =>  hal_manualtoolchange.change
net tool-change-confirmed  <=  hal_manualtoolchange.changed
net tool-number            =>  hal_manualtoolchange.number

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



the INI file

[code]# Generated by PNCconf at Wed Jul 17 17:05:42 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 = foam_cutter
DEBUG = 0
VERSION = 1.1

[DISPLAY]
DISPLAY = axis
FOAM = 1
XY_Z_POS = 5
UV_W_POS = 0
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/cnc002/linuxcnc/nc_files
PYVCP = pyvcp-panel.xml
INCREMENTS = 10mm 1mm .1mm  .01mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 6.000000
MAX_LINEAR_VELOCITY = 25.000000
MIN_LINEAR_VELOCITY = 0.500000
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
#GEOMETRY = xyz
GEOMETRY = xyuv
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 = G21 G40 G90 G94 G97 G64 P0.025

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

[HMOT]
CARD0=hm2_7i96.0

[HAL]
HALUI = halui
HALFILE = foam_cutter.hal
HALFILE = custom.hal
POSTGUI_HALFILE = pyvcp_options.hal
POSTGUI_HALFILE = custom_postgui.hal
SHUTDOWN = shutdown.hal

[HALUI]

[KINS]
#JOINTS = 4
JOINTS = 5
#KINEMATICS = trivkins coordinates=XYZA
#KINEMATICS = trivkins coordinates=XYUV
KINEMATICS = trivkins coordinates=XYUVA

[TRAJ]
#COORDINATES =  XYZA
#COORDINATES =  XYUV
COORDINATES =  XYUVA
MAX_ANGULAR_VELOCITY = 360.00
DEFAULT_ANGULAR_VELOCITY = 36.00
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00

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

#******************************************
[AXIS_X]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0

[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.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 = 31.25
STEPGEN_MAXACCEL = 937.50
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   = 20000
DIRHOLD    = 20000
STEPLEN    = 5000
STEPSPACE  = 5000
STEP_SCALE = 1600.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 1
#******************************************

#******************************************
[AXIS_Y]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0

[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.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 = 31.25
STEPGEN_MAXACCEL = 937.50
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   = 20000
DIRHOLD    = 20000
STEPLEN    = 5000
STEPSPACE  = 5000
STEP_SCALE = 800.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 2
#******************************************

#******************************************
[AXIS_U]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0

[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.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 = 31.25
STEPGEN_MAXACCEL = 937.50
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   = 20000
DIRHOLD    = 20000
STEPLEN    = 5000
STEPSPACE  = 5000
STEP_SCALE = 800.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 0
#******************************************

#******************************************
[AXIS_V]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0

[JOINT_3]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.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 = 31.25
STEPGEN_MAXACCEL = 937.50
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   = 20000
DIRHOLD    = 20000
STEPLEN    = 5000
STEPSPACE  = 5000
STEP_SCALE = 800.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 2
#******************************************

#******************************************
[AXIS_A]
MAX_VELOCITY = 360.0
MAX_ACCELERATION = 1200.0
MIN_LIMIT = -361.0
MAX_LIMIT = 361.0

[JOINT_4]
TYPE = ANGULAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 360.0
MAX_ACCELERATION = 1200.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 = 450.00
STEPGEN_MAXACCEL = 1500.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 = 4.4444
MIN_LIMIT = -361.0
MAX_LIMIT = 361.0
HOME_OFFSET = 0.0
#
#HOME_SEARCH_VEL = -1.000000
#HOME_LATCH_VEL = -0.500000
#HOME_FINAL_VEL = 0.000000
#HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 1
#HOME_SEQUENCE = 3
#******************************************

[SPINDLE_0]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 100



PYVCP hal

[code]# _DO NOT_ include your HAL commands here.
# Put custom HAL commands in custom_postgui.hal
# The commands in this file are run after the GUI loads

# **** Setup of spindle speed display using pyvcp -START ****

net spindle-vel-cmd-rpm-abs    =>    pyvcp.spindle-speed
net spindle-cw        =>    pyvcp.spindle-at-speed-led

# **** Setup of spindle speed display using pyvcp -END ****





PYVCP xml

[code]<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
         <vbox>
         <relief>RIDGE</relief>         
         <bd>6</bd>
                <label>
                        <text>"Wire Power:"</text>
                        <font>;("Helvetica",20)</font>
                </label>
                <bar>
                        <halpin>"spindle-speed"</halpin>
                        <max_>100</max_>
                </bar>
                <label>
                        <text>"Wire ON:"</text>
                        <font>;("Helvetica",20)</font>
                </label>
                <hbox>
                    <label>
                            <text>"             "</text>
                            <font>;("Helvetica",20)</font>
                    </label>
                    <led>
                        <halpin>"spindle-at-speed-led"</halpin>
                        <size>30</size>
                        <on_color>"red"</on_color>
                        <off_color>"blue"</off_color>
                    </led>
                </hbox>
        </vbox>
</pyvcp>
[/code][/code][/code]
 
28 Jul 2024 19:00

Help with pncconf Z-X-A custom machine

Category: General LinuxCNC Questions

Hello, I am modifying a sherline lathe with a positional stepper to drive the spindle, and I will have a high speed spindle mounted to the cross slide. 

I am trying to set up this machine but am confused on how to handle the Y axis. For now, I WILL NOT have a Y axis, meaning any of my milling operations will be circular or tending to the spindle center line.

However, in PNCconf, it forces me to define a Y axis - do I have to do this? How can the kinematics be resolved if linuxcnc thinks there is a Y axis but it is not supposed to function. Is there any way to remove Y axis need from the machine?

My Z axis travels along the bed of the lathe to and from the spindle, my X axis travels side to side on the cross slide, and my A axis will be the positional stepper rotating the stock.
Displaying 16 - 30 out of 179 results.
Time to create page: 0.567 seconds
Powered by Kunena Forum