Advanced Search

Search Results (Searched for: )

  • RotarySMP
  • RotarySMP's Avatar
02 Dec 2025 15:00 - 02 Dec 2025 15:06

Considering a Full Rewire on a Working Schaublin 125 CNC

Category: Turning

I suspect you dont need to do any of that. LinuxCNC tool tables aready define both tool number and pockets. Tool numbers are unique, but pockets dont have to be. 

There is a carousel tool changer comp which supposedly already works with the Schaublin tool changer.
www.forum.linuxcnc.org/10-advanced-confi...carousel-toolchanger

So lets consider your example.
For a job we mount all of these tools. The first three go on the three postion gang tooling holder you have. We mount that in turret position 1 which in the tool table is pocket 1.
T1- Spot drill - Pocket 1
T2- Drill - Pocket 1
T3- boring bar - Pocket 1

T4 - RH VCMT turning tool in pocket 2
T5 - Kurling tool in pocket 3
T6 - LH VCMT turning tool in pocket 4
T7 - but we also need a threading tool, so that is on another tool holder, and will be manually changed into pocket 1.

T8 - Parting tool on the rear tool post, which we will call Pocket 5.

I have not looked at the code of that carousel.comp, but suspect it only trigers activity of the tool holder when a pocket in it's assigned range is called.  So if pockets 1-4 are assigned in the comp to the carousel, then the behaviour would be:

At the start of the program, I would add an M1 and a pop up message to remind that the gang tool has to be in pocket 1.
The M6T1G43, the carousel indexes back to pocket 1, if not already there.
First three M6TxG43, the carousel is not called, LinuxCNC just assigns the correct called tool, offset, orientation and nose radius, and continues.
M6T4 G43 - Turrent indexes once, then LCNC assigns the correct called tool, offset, orientation and nose radius, and continues.
It would be at this point that I would have programmed in the M1 stop, to manually remove the gang tool holder with it's T1-3, and load T7.
M6T5 ( and T6) Indexes around one.
Calling M6T7G43 would rotate the turret back to pocket 1, with its changed tool.
M6T8G43 I would expect to again do nothing with the turret and just load the offsets for the parting tool.

It would probably be a good idea to add another M1 and text pop up at the end of the program to remind to reinstall the gang tool in pocket one, so the program is ready to go on a restart.

Of course I could be wrong about that carousel.comp not moving the turret on a tool change which calls a pocket outside it's range (or no pocket). But if that is the case, it would be best to modify the comp. Misusing the tool diameter for this would lose the ablity to do tool radius compensation, which is important on a lathe.

CAM software doesn't care where the tools come from. It just assumes the appear with the correct offsets, orientation and radius.

For tool table hygiene, it might be good to standardise like anything in pocket 1 is called T1xx, in pocket 5 -->T5xx etc.
Cheers,
Mark

 
  • Hakan
  • Hakan
02 Dec 2025 14:52 - 02 Dec 2025 15:01
Replied by Hakan on topic EtherCAT servo as main spindle

EtherCAT servo as main spindle

Category: EtherCAT

There might be something in the cia402pv code.
The original cia402 component didn't allow mode switching, it took the first csp_mode value at startup.
I need to at least go over that part to make sure mode switching works.
But I doubt that's the reason.

Start using the debugging tools. Halshow and maybe halscope to follow the values over time
to find out the reason for the following error.
  • Hexagon
  • Hexagon
02 Dec 2025 14:27
Replied by Hexagon on topic EtherCAT servo as main spindle

EtherCAT servo as main spindle

Category: EtherCAT

Yes I use his code for tracking the positon.

It also seems like if I tested the pv mode not long enough, because if I let the servo run with for example 600rpm, it throws a joint0 following error after some time. Is this even possible in pv mode? I thought this is only a velocity command without feedback loop?

I also changed the code back to spindle.0.speed-out instead of spindle.0.speed-out-rps (of course with a scale change), but the behaviour is exactly the same.
  • rodw
  • rodw's Avatar
02 Dec 2025 12:15
Replied by rodw on topic Reduce read-all timing 7i76e + 7i77

Reduce read-all timing 7i76e + 7i77

Category: Advanced Configuration

Excellent info. I've started working on a similar procedure.There are a few more optimisations but I'll test before sharing anything.
Now PREEMPT_RT is in the mainline, there are a lot of articles emerging about  RT tuning.
  • OHEngineering
  • OHEngineering
02 Dec 2025 11:47
Replied by OHEngineering on topic Kuhlmann Engraver/mill retrofit Build log

Kuhlmann Engraver/mill retrofit Build log

Category: Show Your Stuff

I've had a bunch of issues with the TB6600 drives, both missed steps and failed parts. Although they might have been knockoffs but still.
I've used the DM556 series exclusively since then with no issues.

But I've already done that, even if it have been with GRBL and ESTL instead of LinuxCNC.

I already have both the EtherCat servos and EtherCat IO so that is the way forward in this project.
  • unknown
  • unknown
02 Dec 2025 11:30

Running LinuxCNC on a Raspbery Pi5 using the Byte2Bot daughter board

Category: Installing LinuxCNC

Top work.

The thing is there is a few users of the RPi, I know about 3 personally, but very rarely do they post or answer any questions. So it gets left to a few to get the job done.
Personally I like the RPi5 I just acquired a second one thanks to my son for father's Day and grabbed the same waveshare housing and Nvme adapters I'm using on the mill.
I have been wondering about including a basic 3 axis Byte2Bob config in the next experimental image. Your thoughts ?
Would you be ok with some of your attachments, with due credit, being included ?

Cheers
Rob
  • unknown
  • unknown
02 Dec 2025 11:19
Replied by unknown on topic Raspberry with LinuxCNC direct interface

Raspberry with LinuxCNC direct interface

Category: Computers and Hardware

Some advice regarding chatgpt and AI in general for help. Currently it is not a good idea asking about Linuxcnc, many many times it gives answers that make no sense and will not work.
  • unknown
  • unknown
02 Dec 2025 11:16
Replied by unknown on topic Reduce read-all timing 7i76e + 7i77

Reduce read-all timing 7i76e + 7i77

Category: Advanced Configuration

I wonder if it would be worth having a sticky thread that is an index to some of these great posts regarding latency and such.
  • unknown
  • unknown
02 Dec 2025 11:05
Replied by unknown on topic Raspberry with LinuxCNC direct interface

Raspberry with LinuxCNC direct interface

Category: Computers and Hardware

Hello friend, I will try to help as much as I can.
First I would like to ask what language is best for you ? I am asking this as I can only speak English. It is my hope that there maybe someone that speaks your native language and maybe able to help.

For the image the most recent can be found here:
forum.linuxcnc.org/9-installing-linuxcnc...mages?start=0#338181

Byte2Bob help can be found here:
forum.linuxcnc.org/9-installing-linuxcnc...aughter-board#339613

I hope this is a start. I will do as much as I can to help.
All the best
Rob
  • Dudelbert
  • Dudelbert
02 Dec 2025 10:51

Considering a Full Rewire on a Working Schaublin 125 CNC

Category: Turning

Hi everyone,
I’ve been thinking about how to handle the toolchanger logic on my lathe, and it’s turning out to be more complicated than I first expected. I’d like to get your opinions on the approach I’m considering.

Problems I’m trying to solve
1. My machine has a 4-position turret plus a back-toolpost. When a tool change is commanded, LinuxCNC needs to decide whether the turret actually needs to rotate or not.
2. Some toolholders can carry multiple tools, so I need a way to define several tool offsets for the same physical holder.
3. A program might use more toolholders than I currently have installed, which means a manual tool change may be necessary.
4. But if the requested tool is just another tool inside the same holder, then no manual intervention should be required.
5. I want to achieve all of this without making CAM programming more complicated.

Nomenclature
Toolholder: The physical holder that can contain up to four tools.
Toolchanger position: One of the physical locations where a toolholder can be installed.
• Back-toolpost = position 0
• Turret stations = positions 1–4
Tool pocket: A logical element in the tool table used to identify and group a toolholder and its tools. A tool pocket maps to a toolchanger position using:
tool pocket number % 5 = toolchanger position
For example, tool pocket 7 corresponds to toolchanger position 2 (because 7 % 5 = 2).
Tool table number:
The line number (ID) in the tool table.

My idea
I’m proposing to use the tool table in an unconventional but structured way:
• Every tool table number divisible by 5 is used as a toolholder descriptor.
This tool table entry represents the holder itself and indicates which tool pocket (and therefore which toolchanger position) it belongs to.
I plan to store the tool pocket number in the diameter field.
• The four following tool table numbers describe the actual tools inside that holder.
These tool entries can be used normally in CAM and have their own offsets, as usual.
In summary:
Toolholder → tool table numbers 5, 10, 15, …
Tools inside holder → table numbers (N+1) to (N+4)

Additional requirements for the component
This approach requires the component to check a few things when a tool change is requested:
• Is the requested tool number divisible by 5?
(If yes, the request refers to a toolholder descriptor, not an actual tool.)
• Does the corresponding toolholder descriptor exist?
The component needs to confirm that the descriptor entry is present in the tool table.
• Is the diameter field of that descriptor a valid integer?
This determines which tool pocket (and therefore which toolchanger position) the holder belongs to.
These checks should be fairly easy to implement.


What this should allow my component to do
• Decide when a turret rotation is required
• Decide when a manual tool change is required
• Select and apply the correct tool offsets
• Remember which toolholder is installed in each toolchanger position (even if that position is not currently active)

Questions
Does this approach make sense?
Is there anything fundamental I may be overlooking?
Any feedback or suggestions would be appreciated!
  • meister
  • meister
02 Dec 2025 10:38
Replied by meister on topic Raspberry with LinuxCNC direct interface

Raspberry with LinuxCNC direct interface

Category: Computers and Hardware

you can use this bob directly on the RPI GPIO's:

www.amazon.de/DollaTek-5-Achsen-CNC-Brea...reiber/dp/B07PNDXZQK

only need to build an adapter cable, there are no 5v comming out of the bob on the db25 side, no risk to damage the gpio's.
  • GiBi77930
  • GiBi77930
02 Dec 2025 10:13
GCode particulier a QtDragon was created by GiBi77930

GCode particulier a QtDragon

Category: Français

Bonjour,
Si je crée un script via l'utilitaire "Hole enlarge" afin de faire le surfacage d'un disque (pas d'incrément en profondeur), je lis une boucle du genre:
(Create spiral with 7 loops)
N55 o100 repeat [630]
N60 g91 g1 @  0.2889 ^-4
N65 o100 endrepeat

Dites moi SVP où trouver la documentation sur les signes non GCode @ et ^ ?
  • endian
  • endian's Avatar
02 Dec 2025 10:02
Replied by endian on topic Reduce read-all timing 7i76e + 7i77

Reduce read-all timing 7i76e + 7i77

Category: Advanced Configuration

To reduce network latency:

1. Make sure basic host latency setup is done (disable power management etc)
Actions:

sudo apt update
sudo apt install net-tools

Edit your GRUB config:
sudo nano /etc/default/grub

Find the line starting with:
GRUB_CMDLINE_LINUX_DEFAULT=

Append these parameters:
quiet splash isolcpus=nohz,domain,managed_irq,1 intel_idle.max_cstate=0 processor.max_cstate=1 idle=poll

Adjust isolcpus numbers later once you know your CPU layout.
Then update and reboot:
sudo update-grub
sudo reboot

Also:
Disable CPU frequency scaling:

 sudo apt install cpufrequtils
echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils
sudo systemctl enable --now cpufrequtils

Disable power-saving for NIC and USB:

 sudo ethtool -s eth0 wol d
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

2. If you have an intel MAC on the host PC, disable IRQ coalescing.
IRQ coalescing groups interrupts together to reduce CPU load — bad for real-time use.
Run:
sudo ethtool -C eth0 rx-usecs 0 rx-frames 0 tx-usecs 0 tx-frames 0

Make it persistent by adding it to:
sudo nano /etc/network/interfaces

Example:
auto eth0
iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    pre-up /sbin/ethtool -C eth0 rx-usecs 0 rx-frames 0 tx-usecs 0 tx-frames 0

3. Use isolcpus to run LinuxCNC on the last CPU
You “isolate” a CPU core so only LinuxCNC and its threads run there.
Example:
 If you have 4 cores (0–3), you isolate the last one:
isolcpus=3 nohz_full=3 rcu_nocbs=3

That goes into your GRUB line (as above). Then:
sudo update-grub
sudo reboot

To verify:
cat /sys/devices/system/cpu/isolated

4.  (in conjunction with #3) Pin the Ethernet IRQ to the last CPU
(and set irqbalance to one-shot mode so it doesn't mess with the IRQ pinning)
First, find your Ethernet IRQ number:
grep eth0 /proc/interrupts

You’ll see something like:
123:   12345   0   0   0   IR-PCI-MSI  eth0

→ IRQ number is 123
Then pin it:
echo 8 | sudo tee /proc/irq/123/smp_affinity

Here 8 is a bitmask (binary 1000) meaning CPU 3.
 (Use 1, 2, 4, 8, etc., depending on which CPU you isolated.)
irqbalance dynamically moves IRQs — you don’t want that after pinning.
Edit:
sudo nano /etc/default/irqbalance

Find this line:
ENABLED="1"

Change to:
ENABLED="1"
ONESHOT="1"

Then restart:
sudo systemctl restart irqbalance

irqbalance dynamically moves IRQs — you don’t want that after pinning.
Edit:
sudo nano /etc/default/irqbalance

Find this line:
ENABLED="1"

Change to:
ENABLED="1"
ONESHOT="1"

Then restart:
sudo systemctl restart irqbalance

5. Set irqbalance to One-Shot Mode
irqbalance dynamically moves IRQs — you don’t want that after pinning.
Edit:
sudo nano /etc/default/irqbalance

Find this line:
ENABLED="1"

Change to:
ENABLED="1"
ONESHOT="1"

Then restart:
sudo systemctl restart irqbalance


To check maximum network latency:
sudo chrt 99 ping -i .001 -q -c 60000 192.168.1.10
( Assuming 192.168.1.10 is the 7I76E IP address ) 

This will run for 1 minute and print statistics


Command Breakdown
sudo chrt 99 ping -i .001 -q -c 60000 192.168.1.10

Part
Meaning
sudo
Run with root privileges (needed for chrt and for such a short ping interval).
chrt 99
Runs the command with real-time priority 99 (highest possible SCHED_FIFO priority).
ping
Standard ICMP ping utility.
-i .001
Interval of 1 millisecond (1000 Hz) between packets — very fast.
-q
Quiet mode (only summary results).
-c 60000
Send 60,000 pings, which takes about 60 seconds at 1 kHz.
192.168.1.10
Target IP address (replace with your remote machine or device).


What It Tests
Latency/jitter of your Ethernet path between your host and the device at 192.168.1.10

Consistency under real-time scheduling (since chrt gives the ping thread real-time priority).

Impact of CPU isolation and IRQ pinning on network determinism.

then

How to Interpret the Results
When it finishes, you’ll get something like:
--- 192.168.1.10 ping statistics ---
60000 packets transmitted, 60000 received, 0% packet loss, time 60040ms
rtt min/avg/max/mdev = 0.120/0.135/0.210/0.015 ms

Value
Meaning
min
Best-case latency.
avg
Typical latency.
max
Worst-case latency (what we care about most).
mdev
Standard deviation (jitter).

Good results for a well-tuned LinuxCNC host:
max under 0.5 ms (ideally < 0.2 ms).

No packet loss.

mdev small (under 0.05 ms).

Bad results (what to look out for):
max spikes to several milliseconds → indicates power management or IRQ contention.

Packet loss → NIC or cable issues.

mdev large → jittery CPU or network driver.

Tips
Make sure your Ethernet link partner (the device at 192.168.1.10) responds quickly — e.g., another PC on the same subnet, or an EtherCAT master/slave device.

Run it while LinuxCNC is idle and again under load (with the machine moving) — compare the two.

For continuous monitoring, use:

 watch -n 1 "ping -q -c 1000 192.168.1.10"
 to sample shorter bursts every second.

then 

edit servo thread time to for example Ts=333 333 ns in the .ini file

finaly

edit setp hm2_7i76e.0.read.timeout 100000      # 100μs or less depends at measured latency

and check the time of servo thread which has to be less then for example < then Ts
 
  • masawee
  • masawee
02 Dec 2025 09:27
Replied by masawee on topic Raspberry with LinuxCNC direct interface

Raspberry with LinuxCNC direct interface

Category: Computers and Hardware

NOT can found, no have, only can use paraller port hat and paraller port breakoutboard, if want rpi use stepper drive direct need voltage level shifter board, 3,3V to 5V 8 pin converter, rpi use 3,3V and convert output can use 5V stuff, etc, stepper motor driver, step and dir pin, and enable pin. and same can bi -directional board use input too 5V sensors,limitSW etc convert to 3,3V and use whit rpi. same output relays etc, cn use gpio pin 3,3V convert to 5V and then use trnsistor who connect to relay on/off relay. gpio not handle lot current about 2mA out and in little more, or burn input/output port. thats why need converter and optocoupler to input current resistor need too, stuff not broken rpi. and shift level converter and resistor output no burn output pin, if have lot money waste buy ower price protoneer rpi cnc shield 100€ horriple price, or cheapen option rpi paraller port hat 35€ and cheap chinese 10€ breakoutboard. i think have possiple use shift level converter to input/output gpio pins and optocoupler cheap in-out system direct to driver and all limit,home,probe,etc inputs, opto input pins and shift level converter output pins, i hope working , i need test if has order all parts, but i not understand what software need do, image were is linuxcnc and how working whit paraller port hat if use, or what need hal file doing or other, programs and code not my job ,not understand anything.
  • tommylight
  • tommylight's Avatar
02 Dec 2025 08:05

Remora (SKR 1.4 RPi) – massive SPI noise, “bad payload” communication fails

Category: General LinuxCNC Questions

That really depends on use case, sometimes both sides must be used, sometimes only one side.
I really do not think i can do a god job of explaining that, so i'll shut up. :)
Displaying 241 - 255 out of 22064 results.
Time to create page: 0.198 seconds
Powered by Kunena Forum