Tuning of servo-drive
26 Jul 2024 17:28 #306113
by thomaseg
Tuning of servo-drive was created by thomaseg
Hi,
I've been trying to get a couple of chineese CTB servos with drives to get to work via EtherCAT. I'm not quite happy with how their follow-error is at the moment. But i'm wondering how i could resolve this, because most "how to do a PID tuning in LinuxCNC"-guides reference closed loop circuits via LinuxCNC. But since these drives are connected via EtherCAT i thought that you guys might also have had to do the same with your drives.
Currently my "step response" looks like this:
...it seems to be conservatively tuned from the factory, since the follow-error is quite large...and i'm a bit puzzled by the flat bit, it seems like it slows down before finally trying to hit the target...
So my questions are essentially:
1. If you are using closed-loop servodrives without an autotune function(or with an undocumented autotune function, as with my drives!), how did you go about and tune it?
2. What are a "good" stepresponse for an axis? And what should i aim for with regards to follow-error to get "good enough" results? I know it is a "what is the diameter of an elastic band"-kinda question, but i find it hard to figure out what to aim for, so any input or thoughts are appreciated....
/Thomas
I've been trying to get a couple of chineese CTB servos with drives to get to work via EtherCAT. I'm not quite happy with how their follow-error is at the moment. But i'm wondering how i could resolve this, because most "how to do a PID tuning in LinuxCNC"-guides reference closed loop circuits via LinuxCNC. But since these drives are connected via EtherCAT i thought that you guys might also have had to do the same with your drives.
Currently my "step response" looks like this:
...it seems to be conservatively tuned from the factory, since the follow-error is quite large...and i'm a bit puzzled by the flat bit, it seems like it slows down before finally trying to hit the target...
So my questions are essentially:
1. If you are using closed-loop servodrives without an autotune function(or with an undocumented autotune function, as with my drives!), how did you go about and tune it?
2. What are a "good" stepresponse for an axis? And what should i aim for with regards to follow-error to get "good enough" results? I know it is a "what is the diameter of an elastic band"-kinda question, but i find it hard to figure out what to aim for, so any input or thoughts are appreciated....
/Thomas
Attachments:
Please Log in or Create an account to join the conversation.
29 Jul 2024 17:25 #306345
by thomaseg
Replied by thomaseg on topic Tuning of servo-drive
Hi again,
For "posterity" on google i thought i'd show what i did on my CTB-servodrives. I managed to figure out that if i turned up for the gain(register Cn.29) from the factory setting of 100 to 350 i got quite a lot better results. Now a "step" looks something like this:
Greatly reduced the follow error and made it hit the required position a lot faster/better. I tried higher values, but then it will overshoot. This enabled me to turn "ferror" down to 10 and "min_ferror" down to 1 in the settings without getting "follow error" when jogging....this is better, but not sure if it is good/low enough?
However, i still have a question: There is a delay between "pos-cmd" and "sta-ActualPosition", obvious this can never be 0, but it seems like there is something like 50ms between the two according to the graph...this seems "long" to me...is that normal? I'm guessing that EtherCAT has something to do with this, even though i think it should be an order of magnitude lower if it stems from EtherCat. Anyways, i'm unsure if this will affect the performance of the machine significantly...?
Question: What is this delay on your machine? I'm trying to either comfort myself and accept that this is a normal delay, or determin if i have to keep digging in the drives registers to try to make the drive follow LinuxCNC in a tighter way...somehow...
/Thomas
For "posterity" on google i thought i'd show what i did on my CTB-servodrives. I managed to figure out that if i turned up for the gain(register Cn.29) from the factory setting of 100 to 350 i got quite a lot better results. Now a "step" looks something like this:
Greatly reduced the follow error and made it hit the required position a lot faster/better. I tried higher values, but then it will overshoot. This enabled me to turn "ferror" down to 10 and "min_ferror" down to 1 in the settings without getting "follow error" when jogging....this is better, but not sure if it is good/low enough?
However, i still have a question: There is a delay between "pos-cmd" and "sta-ActualPosition", obvious this can never be 0, but it seems like there is something like 50ms between the two according to the graph...this seems "long" to me...is that normal? I'm guessing that EtherCAT has something to do with this, even though i think it should be an order of magnitude lower if it stems from EtherCat. Anyways, i'm unsure if this will affect the performance of the machine significantly...?
Question: What is this delay on your machine? I'm trying to either comfort myself and accept that this is a normal delay, or determin if i have to keep digging in the drives registers to try to make the drive follow LinuxCNC in a tighter way...somehow...
/Thomas
Attachments:
Please Log in or Create an account to join the conversation.
- besriworld
- Offline
- Elite Member
Less
More
- Posts: 250
- Thank you received: 70
30 Jul 2024 06:07 #306380
by besriworld
Replied by besriworld on topic Tuning of servo-drive
You need to set up the driver manually. If there is software for the driver it is a very easy task. Automatic settings have never worked well for me.
A minimum error of 1 is too large for most machines.
A minimum error of 1 is too large for most machines.
Please Log in or Create an account to join the conversation.
01 Aug 2024 12:01 #306601
by thomaseg
I can't seem to get rid of the delay between commanded position and actual position... this does not seem to be a property of PID-tuning... is this a EtherCAT thing or something else?
You say that 1 is to large for most machines... what is a good goal to have? What are the units of this? Is it milimeters of error between commanded and actual position, if the machine is metric? Or what does these two properties represent?
/Thomas
Replied by thomaseg on topic Tuning of servo-drive
Unfortunately there isn't software available for automatic tuning of CTB servo drives So it has to be done manually...You need to set up the driver manually. If there is software for the driver it is a very easy task. Automatic settings have never worked well for me.
A minimum error of 1 is too large for most machines.
I can't seem to get rid of the delay between commanded position and actual position... this does not seem to be a property of PID-tuning... is this a EtherCAT thing or something else?
You say that 1 is to large for most machines... what is a good goal to have? What are the units of this? Is it milimeters of error between commanded and actual position, if the machine is metric? Or what does these two properties represent?
/Thomas
Please Log in or Create an account to join the conversation.
- besriworld
- Offline
- Elite Member
Less
More
- Posts: 250
- Thank you received: 70
01 Aug 2024 15:36 #306630
by besriworld
Replied by besriworld on topic Tuning of servo-drive
MIN_FERROR = 0.010 - This is the value in machine units by which the joint is permitted to deviate from commanded position at very low speeds. If MIN_FERROR is smaller than FERROR, the two produce a ramp of error trip points. You could think of this as a graph where one dimension is speed and the other is permitted following error. As speed increases the amount of following error also increases toward the FERROR value.
FERROR = 1.0 - FERROR is the maximum allowable following error, in machine units. If the difference between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the INI file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, with FERROR applying to the rapid rate set by
If you are on the factory settings of the PID regulator. They are almost always very soft. They must be set up.
When the driver is activated, the motor axis must be locked - by hand, the axis must not move.
FERROR = 1.0 - FERROR is the maximum allowable following error, in machine units. If the difference between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the INI file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, with FERROR applying to the rapid rate set by
If you are on the factory settings of the PID regulator. They are almost always very soft. They must be set up.
When the driver is activated, the motor axis must be locked - by hand, the axis must not move.
Please Log in or Create an account to join the conversation.
Time to create page: 0.283 seconds