Advanced Search

Search Results (Searched for: 7i77 spindle)

  • LucaGiorcelli
  • LucaGiorcelli
Yesterday 21:31

Machine choice for composite panel CNC + probe-driven XY/Z G-code compensation

Category: Milling Machines

Hi all,

I'm planning a gantry router build for machining composite panels into cabinet components. Looking for advice on machine choice and stack.

Material

- Sandwich panels: 1mm aluminium skins on both faces, polyurethane foam core
- Total thickness: ~60mm nominal, but varies ±1mm across a batch
- Panel size: up to 1500x3000mm

Parts and operations



- Cutting outlines
- Pockets and step joints on panel face
- V-scoring the aluminium skin to create precise fold lines (score-and-fold)

These operations require multiple tools in a single job (end mills for pockets and joints, V-bit for scoring), so automatic tool change (ATC) is a hard requirement.

The step joints are the critical operation: they create mechanical overlap between mating panels so cabinets assemble with tight joints. A 1mm thickness variation in the stock translates directly into a gap.

Workflow

probing → generate Z map → process map (Python) → adjust G-code geometry (XY and Z) → send corrected G-code → machining

- Fusion 360 CAM produces nominal G-code
- Before cutting, I probe a grid of Z points across the panel surface
- A Python script reads the probe map and rewrites the G-code: step depths and joint profiles are adjusted to the actual measured local thickness — for both the panel being cut and its mating counterpart
- This is not just Z surface compensation: XY profiles are modified based on the probe map so that mating joints match regardless of thickness variation

Why LinuxCNC

- Workflow already tested with LinuxCNC + MESA cards (7i96/7i77) on an entry level router.
- Plan to use the Python socket interface for probe data collection and G-code rewriting — tight integration between probing and post-processing is central to the workflow

My questions

1. Are there manufacturers selling new gantry routers with these specs who ship with LinuxCNC, or sell mechanics separately from the controller?
   - Working envelope: ~1600x3200mm
   - HF spindle: 18k+ RPM
   - Integrated vacuum table with independently switchable zones
   - ATC (tool magazine or rack)
   - Probe input

2. For a retrofit path: which used industrial gantry platforms have the best LinuxCNC community experience?
   - Main concerns: ATC integration and vacuum zone management via MESA I/O

3. Any experience with probe-map-driven G-code modification beyond simple Z surface mapping?
   - Currently planning G38.x + Python
   - Is there a better pattern for this use case?

Thanks

 
  • kb0thn
  • kb0thn
Yesterday 11:31

Laser power scaling based on speed and direction

Category: HAL Examples

Much thanks to iforce2d for this implementation and write-up. I just deployed a slightly tweaked version of it to my 4x10' router that has a 40 watt laser as second spindle. 

I had to modify the component to force zero power output when there was no motion. It looks like the original first line of code can result in a NaN and then my machine was ending up with a 50% PWM output in that state. So I force NaN to zero. That worked okay in my testing at a fixed z height. But when running an actual program I retract Z between parts and I was finding that Z only motion was leaving the laser stuck on. So now I also force zero power output when X and Y motion are essentially zero.
component aprs_laserreg "";

pin in   float inpower    "Desired laser power at constant speed";
pin in   float reqspd    "Requested speed, connect to motion.requested-vel";
pin in   float curspd    "Current speed, connect to motion.current-vel";
pin in   float velx    "Current speed x component, connect to joint.0.vel-cmd";
pin in   float vely    "Current speed y component, connect to joint.1.vel-cmd";
pin in   float velz    "Current speed y component, connect to joint.1.vel-cmd";
pin in   float share    "Fraction of power given to pure Y movement, eg. 0.6";
pin out  float outpower "Scaled output laser power";

function _ fp "Update the laser power";

license "GPL";

;;

#include <math.h>

FUNCTION(_) {
	outpower = inpower * (curspd / reqspd);
	    
	float angle = atan2(fabs(velx), fabs(vely));  // angle away from y in radians
	float horz = angle / (0.5*M_PI);          // 1 when moving perfectly along x axis
	outpower *= share + (1-share) * horz;

	if ( outpower > inpower )
		outpower = inpower;        
	if ( outpower > 100 )
		outpower = 100;        
	if ( ( fabs(velx)<1e-6 && fabs(vely)<1e-6 ) || isnan(outpower) || outpower < 0 )
		outpower = 0;

}

I use a bunch of MESA cards including a 7I77 and a 7I76. And then some additional IO boards linked via serial. I never figured out how to get a hardware PWM output. So I am using software PWM for driving the laser. Here are the relevant sections of my custom.hal file showing how it all goes together:
# laser engraver
# software PWM
loadrt pwmgen output_type=0
addf pwmgen.update      servo-thread
addf pwmgen.make-pulses servo-thread # should be base-thread
setp pwmgen.0.enable TRUE
setp pwmgen.0.scale 65535

# based on https://forum.linuxcnc.org/47-hal-examples/54073-laser-power-scaling-based-on-speed-and-direction
loadrt lincurve personality=2
loadrt aprs_laserreg # for some reason the component gets renamed to aprs-laserreg (ie changes _ to -)

addf lincurve.0         servo-thread
addf aprs-laserreg.0    servo-thread # I don't seem to have a base-thread. I think because it is MESA


# Laser power mapping (0-100 -> 0-65535)
setp lincurve.0.x-val-00 0
setp lincurve.0.y-val-00 0

setp lincurve.0.x-val-01 100 
setp lincurve.0.y-val-01 65535 

net laser-requested-speed      motion.requested-vel    => aprs-laserreg.0.reqspd
net laser-current-speed        motion.current-vel      => aprs-laserreg.0.curspd
net laser-velx                 joint.0.vel-cmd         => aprs-laserreg.0.velx
net laser-vely                 joint.1.vel-cmd         => aprs-laserreg.0.vely
net laser-velz                 joint.2.vel-cmd         => aprs-laserreg.0.velz
setp aprs-laserreg.0.share     1.0 

net laser-percent              spindle.1.speed-out      => aprs-laserreg.0.inpower
net laser-regulated-percent    aprs-laserreg.0.outpower => lincurve.0.in
net laser-65535                lincurve.0.out           => pwmgen.0.value
net laser-pwm                  pwmgen.0.pwm             => optimat_o_laser_engraver_pwm

# second spindle we will always consider to be at speed
net laser-at-speed => spindle.1.at-speed
sets laser-at-speed true
  • GDTH
  • GDTH's Avatar
06 Mar 2026 11:11

Rover 336 retrofit – horizontal drills and tool offsets in LinuxCNC

Category: Advanced Configuration

Hello,I am currently retrofitting a Biesse Rover 336 with LinuxCNC.The machine is controlled with a Mesa 7i77, and I am using EtherCAT modules distributed throughout the machine for the I/O.Originally the machine had a Control Techniques Unidrive VFD, but I was unable to change the required parameters, so I replaced it with a Danfoss VFD, which is now working well.At this point the machine is mostly operational:
  • Homing works
  • XYZ motion works
  • Spindle runs correctly
  • The toolchanger sequence is mostly prepared
So I am approaching the final stages of the retrofit.I am using Probe Basic as the interface.Machine configuration
  • Toolchanger: 7 tools
  • Vertical drills: ~25
  • Horizontal drill (X axis): 1
  • Horizontal drills (Y axis): 3
My current plan is:
  • Tools 1–7 → spindle toolchanger
  • Tools 101–130 → drill bank (fixed tools)
Questions about tool offsetsFor the drill bank I need to determine the XYZ offsets relative to the main spindle.I am unsure what the best way to handle this is.Options I am considering:
  1. Store the offsets in the tool table (like normal tools)
  2. Apply the offsets inside the M6 tool change routine, since these drills are fixed and it may reduce the chance of mistakes.
Do tool table offsets work correctly for horizontal drills, or is there a better recommended approach?Fusion 360 questionI also created a test piece in Fusion 360 to test the horizontal drills.However I get the following error:
 Error: Function 'positionABC' can only be used with multi-axis machine configurations.
Error at line: 2040
Error in operation: 'Drill2'I suspect this may be related to how I defined the horizontal drilling operation.Is there a recommended way to program horizontal drilling for drill banks in Fusion when targeting LinuxCNC?Any advice from people who have implemented drill banks or horizontal drills on router-style machines would be very helpful.Thanks!
  • okielaxplyr
  • okielaxplyr
27 Feb 2026 01:20
7I77D over heat was created by okielaxplyr

7I77D over heat

Category: Driver Boards

I am using a optocoupler (from amazon) between my 7i77D output and a solenoid valve for a spindle break in the sinking configuration, the output is over-temperature faulting for some reason.
using TB8 OUTPUT0. Field voltage is 24Vdc and driving the relay with the same 24 power supply. 
I set up the opto relay on the bench and it only draws 2.2ma on the input in low position.
I'm kind of at a loss, the manual says the outputs can take up to 350ma.

Please advise
John V.
 
  • NT4Boy
  • NT4Boy
19 Feb 2026 17:22
Replied by NT4Boy on topic HURCO KMB-1 Control Update

HURCO KMB-1 Control Update

Category: Milling Machines

I've ended up fighting the hal loader.

#
# M19 ORIENT – single driver / multi‑sink form
#

loadrt orient count=1
addf orient.0 servo-thread

loadrt pid names=pid.o
addf pid.o.do-pid-calcs servo-thread

loadrt mux2 count=1
addf mux2.0 servo-thread
loadrt or2 count=1
addf or2.0 servo-thread

# --- Orient PID tuning ---
setp pid.o.Pgain 0.05
setp pid.o.Igain 0.0005
setp pid.o.Dgain 0.0002
setp pid.o.maxoutput 60
setp pid.o.error-previous-target true
setp orient.0.tolerance 0.05
setp orient.0.angle 0

# --- One signal name, declared once and fanned out ---
net orient-bit spindle.0.orient => orient.0.enable
net orient-bit => or2.0.in1
net orient-bit => mux2.0.sel
# separate signal drives the encoder’s index enable input
net orient-arm-index orient-bit => hm2_7i92.0.encoder.05.index-enable

# --- Run enable OR gate ---
net run-enable or2.0.out => hm2_7i92.0.7i77.0.1.spinena
net spindle-enable => or2.0.in0

# --- Orient angle / feedback wiring ---
net orient-angle spindle.0.orient-angle => orient.0.angle
net spindle-revs hm2_7i92.0.encoder.05.position => orient.0.position

# --- Orient PID loop ---
net orient-cmd orient.0.command => pid.o.command
net orient-fb hm2_7i92.0.encoder.05.velocity-rpm => pid.o.feedback
net orient-out pid.o.output => mux2.0.in1

# --- Normal spindle path and output switch ---
net spindle-output pid.s.output => mux2.0.in0
net spindle-vfd-out mux2.0.out => hm2_7i92.0.7i77.0.1.analogout5

# --- Completion flag back to controller ---
net orient-done orient.0.is-oriented => spindle.0.is-oriented

#Error in file ./spindlecontrol.hal:
# Pin 'orient-bit' does not exist
#Shutting down and cleaning up LinuxCNC…
  • NT4Boy
  • NT4Boy
17 Feb 2026 13:50
Replied by NT4Boy on topic HURCO KMB-1 Control Update

HURCO KMB-1 Control Update

Category: Milling Machines

I replaced the spindle motor VFD, three phase outpout and the speed signal is 0-10v.
I notice that the speed varies in a random way and at say 1000 rpm, I get steps of 15 to 30 plus and minus.
The fuzzy line is an oscilloscope trace of the analogout5 pin on the 7i77.
The lower halscope trace is the same pin also nominally at 1000, offset and magnified to show what I can hear.
I have started the spindle using MDI with M3 S1000.
Any ideas what maye be going on?
  • besriworld
  • besriworld
09 Feb 2026 02:56

Servo Wiring and Tuning detailed How To example Mesa 7i77.

Category: Advanced Configuration

I am trying to configure the spindle as a C-axis, but I am having a problem and cannot find a solution.
Could someone please take a look at my configuration and the video and give me some advice?
I was not able to post this in the original lathe thread.





#########################
# AXIS C JOINT 2
#########################

setp  pid.c.Pgain     [JOINT_2](P)
setp  pid.c.Igain     [JOINT_2](I)
setp  pid.c.Dgain     [JOINT_2](D)
setp  pid.c.bias      [JOINT_2](BIAS)
setp  pid.c.FF0       [JOINT_2](FF0)
setp  pid.c.FF1       [JOINT_2](FF1)
setp  pid.c.FF2       [JOINT_2](FF2)
setp  pid.c.deadband  [JOINT_2](DEADBAND)
setp  pid.c.maxoutput [JOINT_2](MAX_OUTPUT)
setp  pid.c.error-previous-target true

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

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

268 net c-output            =>  hm2_7i98.0.pwmgen.00.value
269 net c-pos-cmd           <=  joint.2.motor-pos-cmd
270 net c-enable            <=  joint.2.amp-enable-out
271 # enable _all_ sserial pwmgens
272 #net c-enable            =>  hm2_7i92.0.7i77.0.1.analogen

276 net c-spindle-pos-fb    <=  hm2_7i98.0.encoder.02.position
277 net c-spindle-vel-fb    <=  hm2_7i98.0.encoder.02.velocity
278 net c-spindle-pos-fb    =>  joint.2.motor-pos-fb
279 #net c-index-enable     joint.0.index-enable <=> hm2_7i92.0.encoder.06.index-enable
280 net c-pos-rawcounts     <=  hm2_7i98.0.encoder.02.rawcounts

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

284 net c-home-sw           =>  joint.2.home-sw-in
285 net c-neg-limit         =>  joint.2.neg-lim-sw-in
286 net c-pos-limit         =>  joint.2.pos-lim-sw-in


[AXIS_C]
MAX_VELOCITY     = 360
MAX_ACCELERATION = 500
MIN_LIMIT        = -900.0
MAX_LIMIT        = 900.0

[JOINT_2]
TYPE             = ANGULAR
HOME             = 0.0
FERROR           = 1000.0
MIN_FERROR       = 500.0
MAX_VELOCITY     = 360
MAX_ACCELERATION = 500

P        = 0.0000001
I        = 0.
D        = 0.
FF0      = 0.98
FF1      = 0
FF2      = 0
BIAS     = 0
DEADBAND = 0.1
MAX_OUTPUT = 10

ENCODER_SCALE    = -40
OUTPUT_SCALE     = 10
OUTPUT_MIN_LIMIT = -10
OUTPUT_MAX_LIMIT = 10

MIN_LIMIT = -1000
MAX_LIMIT = 1000

HOME_OFFSET   = 0.0
HOME_SEQUENCE = 1
  • tommylight
  • tommylight's Avatar
02 Jan 2026 21:50
Replied by tommylight on topic Retrofitting Deckel FP4ATC

Retrofitting Deckel FP4ATC

Category: Milling Machines

No, Mesa 7i80 does not go with 7i77 and 7i85, the Mesa 7i92TM goes with those. 7i80 is 50 pin, 7i92 is 25/26pin.
There are other options also, the 7i77 is hard to find so a bit more searching is needed, on the 50 pin stuff i can not help, but for 25 pin stuff i used a lot, here are some options:
-7i97T it is roughly the same as 7i92TM with 7i77, with 7i85 or even better with 7i74 as this needs plain LAN cables to wire the 7i70 (48 inputs) and/or 7i71/7i72 (48 outputs sinking or sourcing), or 7i84 (32 in and 16 out)
-7i92TM (notice the M, makes it directly plugable into 7i77 so no need for IDC26 to DB25 cable and adapter), with 7i85 OR 7i74
-7i96S (step/dir and spindle) with 7i83 (analog outputs) and 7i85 (encoder and SSerial) for 7i70/7i71/7i72/7i84
-
I think there is also 7i93 IRC should have 3 of IDC26 headers, but not sure, should be same as 7i92 with more IO. Again, do double check this.
  • Mbrand1901
  • Mbrand1901
02 Jan 2026 20:26
Replied by Mbrand1901 on topic Retrofitting Deckel FP4ATC

Retrofitting Deckel FP4ATC

Category: Milling Machines

The original contoller (in the control cabinet) has 56 Inputs and 92 Outputs. 
I am going to ned an analog Output for the servos and a sin/cos (1 Vpp)u Input for the linear encoders. The servos also have some encoders on them, but these are only for the velocity.
Later i am going to need another analog Output for the spindle.

In my mind i am going to use a mesa 7i80HDT as a base for the daugthercards. For the spindle and the servos a 7i77 and for the linear encoders a 7i85, because that one can read the 1 Vss signal.
For the other I/Os i would use some 7i70‘s and 7i71‘s.

Please correct me, if i am going to make a mistake?
  • jameslc15
  • jameslc15
26 Dec 2025 09:14

No speed control on xhc-wb04b-6 pendant on 3 axis router

Category: Basic Configuration

Hello all

I installed a 0-10v signal from my MESA 7i77 board to the vfd to control rpm and my XHC-W04B-6 pendant will enable the spindle but wont tell the spindle to turn at default spindle speed set in the ini file .  Any help would be appreciated.

Regards 
James 
  • Masiwood123
  • Masiwood123's Avatar
16 Dec 2025 11:22
Replied by Masiwood123 on topic Physical buttons to 7i96s+7i77

Physical buttons to 7i96s+7i77

Category: HAL

This is the only thing that works smoothly for me.
# --- FEED SPEED RAPID POTENTIOMETER'S ---
#BIT direct value
setp halui.spindle.0.override.direct-value 1
setp halui.rapid-override.direct-value 1
setp halui.feed-override.direct-value 1
# SCALE
setp halui.spindle.0.override.scale 0.01
setp halui.rapid-override.scale 0.01
setp halui.feed-override.scale 0.01
# scalemax
setp hm2_7i96s.0.7i77.0.0.analogin1-scalemax 100 # spindle
setp hm2_7i96s.0.7i77.0.0.analogin2-scalemax 100 # rapid
setp hm2_7i96s.0.7i77.0.0.analogin0-scalemax 200 # feed
loadrt conv_float_s32 count=2
addf conv-float-s32.0 servo-thread
addf conv-float-s32.1 servo-thread
addf conv-float-s32.2 servo-thread
net analogin1 conv-float-s32.0.in <= hm2_7i96s.0.7i77.0.0.analogin1
net analogin2 conv-float-s32.1.in <= hm2_7i96s.0.7i77.0.0.analogin2
net analogin0 conv-float-s32.2.in <= hm2_7i96s.0.7i77.0.0.analogin0
net analogout0 conv-float-s32.0.out => halui.spindle.0.override.counts
net analogout1 conv-float-s32.1.out => halui.rapid-override.counts
net analogout2 conv-float-s32.2.out => halui.feed-override.counts

File Attachment:

File Name: betabeta_2...2-16.zip
File Size:22 KB
  • Z3n
  • Z3n
01 Dec 2025 04:24
Replied by Z3n on topic Red Init & Done Lights on 7i92M

Red Init & Done Lights on 7i92M

Category: Driver Boards

Ahh, well, so it goes. I've ordered a 7I76U because I think that the D models were actually going to be more difficult to wire anyways, as I'd like some sourcing outputs.  I'll see about getting an RMA for the 7I77D I have, and can function test the existing 7I76D when I get the new 7I92TM.  5 axis + spindle and 48 I/O pins should be plenty to get this mill up and running, and that leaves me some boards to experiment with in the future :)

Thanks for the quick replies, nice to keep momentum up on the project!
  • Masiwood123
  • Masiwood123's Avatar
30 Nov 2025 22:11 - 30 Nov 2025 22:14
Replied by Masiwood123 on topic Physical buttons to 7i96s+7i77

Physical buttons to 7i96s+7i77

Category: HAL

of course here are my files, I tried one configuration with fb that works but I still don't know in practice if it works well, definitely try it if you are able to see why this one doesn't work. thank you very much




# --- FEED SPEED POTENTIOMETER'S ---
[url=https://www.facebook.com/hashtag/bit?__eep__=6&__cft__[0]#BIT direct value
setp halui.spindle.0.override.direct-value 1
setp halui.feed-override.direct-value 1
# SCALE
setp halui.spindle.0.override.scale 0.01
setp halui.feed-override.scale 0.01
# scalemax
setp hm2_7i96s.0.7i77.0.0.analogin1-scalemax 150 # spindle
setp hm2_7i96s.0.7i77.0.0.analogin0-scalemax 120 # feed
loadrt conv_float_s32 count=2
addf conv-float-s32.0 servo-thread
addf conv-float-s32.1 servo-thread
net analogin0 conv-float-s32.0.in <= hm2_7i96s.0.7i77.0.0.analogin0
net analogin1 conv-float-s32.1.in <= hm2_7i96s.0.7i77.0.0.analogin1
net analogout0 conv-float-s32.0.out => halui.spindle.0.override.counts
net analogout1 conv-float-s32.1.out => halui.feed-override.counts


youtube.com/shorts/Htwi7ruTzAQ?si=xwU-Dm2b8Pwv2qeN 

File Attachment:

File Name: beta1.zip
File Size:13 KB

 [/url]
  • unknown
  • unknown
30 Nov 2025 07:30
Replied by unknown on topic Red Init & Done Lights on 7i92M

Red Init & Done Lights on 7i92M

Category: Driver Boards

First, is the a 7I92M or 7I92TM?
 
This is old machine, so it's probably an old board, so it's probably a 7i92M (sans "T").


Just for future reference, the age of machine will have no bearing on whether it's a T or sans T. It will depend on the period the card was bought. History will show the the Spartan 6 FPGA was hard to get at one stage, hence the switch to the Trion device.

In real life, despite what the "maker community" will tell you, a capacitor isn't the end all and be all. Also you'll really need to know the load current,ripple and frequency for determining the capacitor reqired, which will differ from application to application, just mentioning this as a PSA.
What is the best option is a quality PSU, yep a bench PSU is great for testing, a genuine Meanwell or Weidmüller (depending on where you are not as easy to get hold of and a little more $$$) supply wont let you down once installed, I only mention these as these are the ones I've been using for eons, all DIN rail mount. I usually switch the computer PSU on, then the MESA boards PSUs, then the stepper power and finally the servo driver for the spindle. To tell the truth with all the relays (self latching) and stuff the PSU wiring was way more complicated than maybe what is should have been. But each circuit controlling the mains is independently controlled.
Regarding powering the 7i77/7i776 or any other DB-25 daughter I've been powering mine(7i76/7i74/7i73/7i83)by the DB-25 connector, found it to be a simple and solid solution. The 7i73 & 7i83 are also powered by the smart serial cable via the 7i74.
  • Masiwood123
  • Masiwood123's Avatar
29 Nov 2025 12:59
Replied by Masiwood123 on topic Physical buttons to 7i96s+7i77

Physical buttons to 7i96s+7i77

Category: HAL

I will try today the potentiometers for feed and spindle, I noticed when I opened the panel that this is not ``mpg'' but the same potentiometer:)..its power supply is connected to the power supply of the potentiometer for feed and speed and its mass is connected to the physical buttons jog+ and jog-..it probably had some logic in the plc of the old controller, I will have to replace it with a class mpg of 100ppr it seems:)
Displaying 1 - 15 out of 42 results.
Time to create page: 0.634 seconds
Powered by Kunena Forum