I am having a very serious problem configuring my five-axis milling machine.
Until recently, it only had three axes, and everything worked fine.
For drives, I used 3 Nm Lichuan closed-loop integrated stepper motors.
Perhaps there were some underlying issues, but they were hard to notice because these servo-like systems are quite forgiving.
However, I added two more axes in a rotary/tilt configuration. The unit is actually too large for my milling machine—it fits, but only just, and it requires some clever workarounds to use. Modifying the unit itself is out of the question. It uses standard Nema 24 stepper motors paired with 1:50 harmonic drives. Judging by their appearance, the harmonic drives are more delicate than the theoretical torque output (motor torque multiplied by the gear ratio) would suggest; in other words, something is likely to break before the motors run out of torque.
So, that is not the problem.
The issue is that the motors are losing steps, and it is the fault of the controllers—specifically, Yitutoyo CL57 units (I bought a few while they were on sale).
These controllers can be set to either open-loop or closed-loop mode.
It seems there are either transmission issues or the controllers are freezing momentarily due to incorrect settings. This leads to a classic symptom: the motors stop moving and start humming. This happens at random intervals—sometimes occasionally, sometimes constantly.
Now, here are some technical details. The computer is a Ryzen 3 2200G, which exhibits very low and stable jitter—on the order of 20 microseconds. It uses an integrated Realtek network adapter (the system is a mini-PC, so installing a different one isn't possible). I also tested it on a more powerful Ryzen 5 system equipped with an Intel i210 network card; while it might be slightly better, the problem persists.
The operating system is Debian 13.7.
The software is LinuxCNC 2.10-pre1 (I’ve had nothing but trouble with the "pre-2" version—it’s practically unusable for me).
The drivers are as described earlier.
After many attempts, I managed to create a configuration file that allows the machine to run, but I’m not sure how reliable it is.
If the B-axis (tilt) were to stop at an arbitrary position, I could end up milling the machine itself instead of the workpiece—a scenario I’d very much like to avoid.
Below is an excerpt from the configuration file (irrelevant lines have been removed):
Code:
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="10">
<slave idx="0" type="generic" vid="0x0000ffff" pid="0x00000001" name="A">
<!--TQ870(COE)-->
<dcConf assignActivate="300" sync0Cycle="*10" sync0Shift="0"/>
</slave>
<slave idx="2" type="generic" vid="0x00000a79" pid="0x00003000" name="Y">
<!--TLC57-E-->
<dcConf assignActivate="300" sync0Cycle="*2" sync0Shift="0"/>
</slave>
</master>
</masters>
First, look at the initial line. I originally had `refClockSyncCycles="-1"`, which the Yitutoyo drivers absolutely do not like. I tried `0`, but that didn't work either; however, using positive values yields much better results. I settled on `10`, though I’m not certain if this is the optimal setting.
In the line for the TQ810 (Yitutoyo), I have `sync0Cycle="*10"`. Generally, higher values are better, but `10` is the maximum valid setting (anything from `11` upwards renders the driver unresponsive).
Meanwhile, for the TLC57-E (Lichuan), the setting is `sync0Cycle="*2"`. While it is possible to set a higher value, doing so triggers a "following error" during longer movements. Basically, it looks as if these two models are completely incompatible...
In desperation, I even considered switching to closed-loop motors, but that would have required raising the B axis by 30 mm—since the available models are that much longer—which would have rendered the machine useless.
I’ve ordered some Lichuan OL3-E57H drivers, though the Chinese sellers don’t seem to be in any rush to ship them (I always run into this issue with them). I figured that Lichuan components ought to work better together, but I suppose I’ll find out in due time.
And now, a question:
Has anyone encountered similar problems, or perhaps has an idea of how to resolve them?