Closed loop firmware for CNC
-
Hi, I'm currently modfifying a cnc router with closed loop steppers and I'm looking for control alternatives which are closed loop.
I could only find LinuxCNC which works with mesa cards and have inputs for the motor encoders, I mean not only the drivers are closed loop but also the control board and the software (in the way professional CNC controllers are).
By any chance do you have in development something like that aim at CNC?
There are more options if you go the route of ethercat, but it's way more expensive. -
@3DOeste Duet3D produce a closed loop motor driver board, the Duet 3 Expansion 1HCL, that connects to a Duet 3 mainboard. See https://www.duet3d.com/duet-3-expansion-1hcl
These are integrated into the Duet firmware, so you get a lot more information back than typical closed loop motor drivers.I'm not sure I understand what you mean by
I mean not only the drivers are closed loop but also the control board and the software
If you mean the spindle control and/or other tools, Duet can control these and read any feedback using RS485/Modbus, which is supported on 6HC/6XD mainboards with newer firmware versions. EtherCat is not supported.
Ian
-
@droftarts Hi droftarts, what I mean by closed loop board and software is that, aside from the closed loop driver which take care if the motor lags behind, the other motors don't take that into account. You can have closed loop drivers, but the system continue to be open loop.
In a real closed loop CNC system, if a motor lags behind, the control board and software (path planning) will notice, trhough feedback from the encoders, and coorect the other motors to keep the syncronicity of the system.
So for example if you are milling a part and at some point there is more matterial, some motor might lag behind, it will be corrected by the driver, but since the others motors didn't encounter that perturbance, those won't lag, and you will end with a dent in your part. In a closed loop system, that is corrected by the software and you won't end with a dent but instead with a smooth surface which is dimmensionally accurate.
At the time of this writing, only closed loop software available (which support step and dir) is linuxCNC with mesa cards. But it would be good to have a newer alternative, without reaching the costs professional CNC controllers like fanuc. -
@3DOeste I understand. No, Duet firmware doesn't do that at the moment. I'm not sure it would be possible over CAN, there would be too much latency. Perhaps raise a feature request for this functionality here https://github.com/Duet3D/RepRapFirmware/issues and @dc42 can look into it.
Ian
-
AFAIK, the current closed loop strategy in RRF is to add the missed steps to the axis involved. But that could end up very bad on CNC machines.
Slowing down the other axis' would be the safer way, but with a buffered path planner it's still not in real time. -
@3DOeste said in Closed loop firmware for CNC:
So for example if you are milling a part and at some point there is more matterial, some motor might lag behind, it will be corrected by the driver, but since the others motors didn't encounter that perturbance, those won't lag, and you will end with a dent in your part. In a closed loop system, that is corrected by the software and you won't end with a dent but instead with a smooth surface which is dimmensionally accurate.
We have no plans to do that, although I can see that for a dedicated CNC controller it would be a nice feature. I think it would be hard to implement in a distributed motion control system.
Our existing closed loop solution lets you trigger an event if the driver reports a position error greater than a threshold that you can set. This could be used to reduce the speed factor of the current operation. In the current version of RRF this speed change might take 2 seconds + 1 move to take effect, but we plan to allows for faster changes of the speed factor in RRF 3.7.
-
@o_lampe said in Closed loop firmware for CNC:
AFAIK, the current closed loop strategy in RRF is to add the missed steps to the axis involved.
I don't think that is correct. RRF sends a profile of the move via CAN, not step pulses. In closed loop mode, the 1HCL moves to the position at the speed dictated by the move profile. It doesn't really use steps; it uses the feedback from the encoder to position the motor. If the motor isn't keeping position, it increases current (up to a defined limit) until the motor has enough torque to achieve position. If it still can't keep position, it raises a driver error.
Ian