Linear Actuator Force Control Advice

Jieve

Member
Join Date
Feb 2012
Location
USA
Posts
274
Hi all,


I have a tricky controls task to implement that I could use some input on.


I have a system using a trap-screw linear actuator that applies a load on a shaft through a spring setup. Actuator travel / force range is 750lbf / in. I want to get as much resolution as possible within that 0-750lbf range, ideally +/-5lbf (unlikely) but +/- 10 will suffice. Max actuator speed is 0.58in / sec. A load cell provides feedback to the PLC. Actuator is AC and controlled using zero-crossing SSRs. PLC worst-case cycle time is 13ms. Operator sets the load on the HMI and the actuator should go to set load within the tolerance.


I tried implementing this by going full-on on the SSRs and switching off when the actuator is within tolerance. The actuator overshoots then reverses, and hunts for the position indefinitely, even with tolerance ranges as wide as +/-25lbf.
It turns out that due to the initial acceleration of the actuator, the load cell reading massively overshoots in both directions by up to 60lbf. By switching the SSRs on a timer for a 30ms pulse, I’m able to get force increments of about 10-15lbf per “on-Step” at the lower end of the force range, and 3-5lbf at the mid-upper range. I still get about 5lbf overshoot initially, which settles after a few seconds. I turned off filtering on the PLC analog input.


So it seems that some type of PWM is the way I’m going to need to go here. In the ideal scenario, I’m envisioning some type of control (PID perhaps?) where the on-duration at each cycle step is controlled by the force error and the motion is smooth; however, as mentioned, the sensor value overshoots significantly. To simplify things, however, I could implement and test different constant pulse durations (duty cycles) and take whatever gets me closest.



Curious if anyone would be willing to share advice / suggestions on how they would solve this. Not sure what the best way is to determine the on-off durations, or if there’s an entirely different method that might work better.


PLC is a Siemens S7-1200 if it makes any difference.



Thanks!
 
You are not going to get much better with what you have got and not with 30ms PWM. Try much faster if the S7-1200 can do it. The faster the better. You need output resolution. Can the SSRs even turn on and off within a few milliseconds let alone micro seconds. A special card that can generate PWMs would be good but then you have the limitation of the pLC scan time.

This should be easy. What is the spring constant of the spring. Compress the spring until it provides the desired force and stay there. You might have been better off with a stepper motor because then you could just step in until the spring is compressed to provide the desired force. Also a stepper motor is much easier to control by the PLC.
 
The slowest of the PWM outputs on the S7-1200 can do up to 20kHz, but the limit will be on the zero-crossing SSR. The SSRs don't switch ON instantly but wait until the voltage is near a zero point, they also don't switch OFF instantly, but wait until the current is near zero. I get a bit confused where the zeros are measured, so lets take a worst case of 50HZ. Now back to Peter for the PID implications :)
 
Jieve said:
It turns out that due to the initial acceleration of the actuator, the load cell reading massively overshoots in both directions by up to 60lbf.
Yes, the loadcells will pickup the acceleration as a peak in the mechanical force.
I think this is the main problem, that you don't have a reliable force value when switching the actuator rapidly.

Instead of the SSR's, I would go for a VFD, and then go constant full speed until getting close to the setpoint, and then ramp down as smoothly as possible, to have the force value be unaffected by the changes in speed.
 
One question I would have is does the process stay constant during the holding time?

We have applications where we are holding force as a part is curing or being induction heated. If we just maintained position, the force would go up or down as the part grows or shrinks during the process.

If that is the case you have to maintain your control routine continuously and that is harder than get to force and stop.

But if the process is dimensionally stable and acceleration and tooling weight/friction is consistent enough you might be able to determine a consistent point to just turn the motor off before the final target and let the system coast into position.

Your +/-10lbf is +/-0.013 in [0.34mm] with the 750lb/in spring. We have done this with hydraulic cylinders and simple on/off valves but the rest of the system has to be capable of this by being consistent.

By “trap screw” I’m assuming that you mean an ACME thread screw that is self locking and has a lot of friction. Sometimes these are also called lead screws.
 
Last edited:
the load cell reading massively overshoots in both directions by up to 60lbf.

I don’t know how long the load cell reading overshoot effect provides. But I'm almost sure it's excludes short-impulse feedback control
I don't know your system, but I suppose that when driving and immediately after stopping, the load cell readings are also not very accurate, i.e. you can only rely on the readings obtained on a stopped actuator.
If my assumptions are correct, it may make sense to calculate the impulse duration

Minimum pressure P_min
Maximum pressure P_max
Rate of pressure change at minimum pressure Rp_min
Rate of pressure change at maximum pressure Rp_max
Rate of pressure change at current pressure Rp_curr = Rp_min + P_curr * (Rp_max - Rp_min)/( P_max - P_min)
Rate of pressure change at target pressure Rp_tg = Rp_min + P_tg * (Rp_max - Rp_min)/( P_max - P_min)

Average rate of pressure change at current and target pressure P_a = (Rp_curr+ Rp_tg)/2 = Rp_min + (P_curr + P_tg) /2 * (Rp_max - Rp_min)/( P_max - P_min)
Impulse duration Id = (P_tg - P_curr) / P_a

Of course, the coefficients for increasing and decreasing pressure will be different. Obviously I "forgot" about the SSRs turn on and off time and about acceleration and deceleration time of the motor. But it is easy to check whether this method will work or not. Of course, the system may not reach the target position in the 1st iteration.
 
Thanks everyone for the replies!



You need output resolution. Can the SSRs even turn on and off within a few milliseconds let alone micro seconds. A special card that can generate PWMs would be good but then you have the limitation of the pLC scan time.
The SSRs turn on off within a few milliseconds but they are zero-crossing. At 60Hz that means 8.33 ms potential variation in on-off delay. If this were a DC actuator a PWM solution would be more predictable with high-frequency resolution, not sure I can get it to work with the(se) SSRs...


Yes, the loadcells will pickup the acceleration as a peak in the mechanical force.
I think this is the main problem, that you don't have a reliable force value when switching the actuator rapidly.
Yeah, I think this is the main problem as well. It would probably be much easier (as Peter Nachtway suggested) if the force feedback value were consistent, but it massively overshoots and I can't really get a reliable reading until it settles, seconds after the move. Inching the actuator with the very short on times brings the overshoot into reasonable territory, but then of course the motion isn't smooth... well, not to say it CAN'T be, just haven't figured out if it CAN be with the system I have yet ...



Instead of the SSR's, I would go for a VFD, and then go constant full speed until getting close to the setpoint, and then ramp down as smoothly as possible, to have the force value be unaffected by the changes in speed.
Hmmm, thinking about this, I like this solution ... unfortunately have pretty much no cabinet space left 🙃 Wonder if I can find a very compact VFD for this ... also the actuator is single-phase. Never really looked for VFD's with single-phase outputs, do they exist?



One question I would have is does the process stay constant during the holding time?
Yes the process stays pretty constant during the holding time.


By “trap screw” I’m assuming that you mean an ACME thread screw that is self locking and has a lot of friction. Sometimes these are also called lead screws.
Correct, yes sorry if that wasn't clear, I meant trapezoidal thread, self-locking. Once stopped it does a decent job of staying there, it's trying to get there that's the problem.


I don't know your system, but I suppose that when driving and immediately after stopping, the load cell readings are also not very accurate, i.e. you can only rely on the readings obtained on a stopped actuator.
Yes, this is the problem, why I can't use a simple solution of just stopping at the lower end tolerance and letting it coast into position. At least when driven full speed (no switching), I need to wait until the actuator stops for a few seconds until I get an accurate reading. The short duration on-pulsing helps with this, minimizing the overshoot, which is why I was trying to work with this solution.



If my assumptions are correct, it may make sense to calculate the impulse duration
Interesting, I thought about something like this, I need to see if I can look at the feedback signal on a scope or record them somehow. So would you then use the impulse duration as the maximum "off-time"? Or "predict" the settled force value based on the slopes and use that as the "current" value? Or how would you use this exactly?
 
Last edited:
A single phase AC actuator motor is going to be a serious pain to control. Not sure what actuator you are using but can you swap in a DC motor?

Keith
 
A single phase AC actuator motor is going to be a serious pain to control. Not sure what actuator you are using but can you swap in a DC motor?
The actuator is from Thompson linear, there were DC versions but AC was chosen due to the high DC current draw requirement (large extra power supply required = more cooling, constrained space), plus lead times were 3-6 months (time pressure). The originally chosen actuator gearbox was actually more ideal than the one we have (slower, higher load capacity), but the one purchased was done so because it was available (and seemed like it would work, decision was made based on lead time.)



I'm open to hardware change suggestions, but unfortunately these are a bit constrained due to time, budget and space (not entirely my call). If at all possible, finding the optimal solution using the existing hardware would be best, but if there are other solutions that wouldn't require massive changes or redesign (i.e. simple component swaps, only minor wiring required, programming approaches, etc.) I'm very open to them. Hence why I posted here with the hope that I could work with this in the software.


I do like Jesper's ramp-up/ramp-down solution, I feel like that could potentially work well. Is there something like this for AC single-phase similar to a VFD, where current could be ramped up/down over a fixed time duration? I'm thinking like an advanced soft-starter type device with single-phase output.
 
It looks like it’s time for a total redesign and rebuild
Whatever your response time from the PLC is add at least 8ms, you say that you are using SSR’s to control the screw that means it’s ON – OFF not really the torque control. SSR’s are SCR’s internally all SCR’s require the current through them to reduce to zero or in the high power units actually require the current through them to reverse slightly to shut down. On a 60hz system the only happens once every 8ms so when the run command goes away the SSR could still pass current for another 8ms. Then add whatever time is necessary for the collapsing field.
When you turn off the SSR you are providing 0 torque to the screw. So your actual torque to the actuator is all over the place. So your control is actually either 0 torque or 100% torque rapidly switched between them on / off
Not a good control system for your needs. And with all the measurements and control into a PLC is way too slow for this.
A much better option is to replace the SSR and with a torque drive at this point with the limited information I have I would think a good Flux Vector VFD drive system set up as a torque control drive with speed limit would work much better for you. Have the force gage / load cell feedback directly into the VFD and let it manage it all speed and torque control eliminate the time delay that is necessary with the PLC and communication you also have the advantage of torque control at position
 
If you decide to move to DC actuator, I would recommend looking at Nominal Controls, for your SSR. They are a small outfit out of Canada. They make them to order, and lead times are short (1-2 weeks). We just ordered three DC-reversing SS contactors from them last week and I should have them later this week or next. We special ordered them to be able to PWM the inputs (Fwd and Rev) at up to 4 kHz. Tell Peter there that "Don, from Means" sent you. :)
 
And with all the measurements and control into a PLC is way too slow for this.
With the risk of turning this into a PLC platform comparison, I respectfully disagree.

It depends on what PLC platform you're using as to whether its too slow or not. We're doing high speed precision motion control and measurements (up to 100khz sampling, 24-bit resolution) all day long with ours in our lab. I'm not familiar with Siemens so I can't comment on that platform and what its capable of.
 
This mechanics of the system are fine. What was done right is the add the spring on the end of the rod. This makes the system more compliant so the force ( NOT PRESSURE ) increases more slowly than if the rod hit a hard surface.

What was done wrong is to use a SSR and PLC PWM. The motion is too coarse and the system reacts too slow.

Ditto those above that say use a DC motor but that will take a real motion controller. I still say a stepper motor would do too if it has enough torque and the steps are fine enough and the pitch of the threads on the lead screw are fine enough. One should be able to calculate the change in force per step using the steps per revolution, the thread pitch and the spring constant. A stepper motor is easier to control with a cheap PLC.


BTW, our controller could control this to a fraction of a pound. It would be best to have an encoder so it could precisely move in and out slowly. So there would be an inner position loop and a outer force loop. We have done many of systems like this before. Again, the spring makes things much easier.
 

Similar Topics

We are looking for using a linear actuator, with stroke of 780 mm, with force of 2000 to 10000 N, and powered by 24V. It has to be industrial...
Replies
4
Views
877
Hi, We want to buy a linear actuator 24VDC. We want to control this with a circuit board fro electromen...
Replies
8
Views
2,297
I have a SMC Linear actuator rated at 24vdc. 2 wires, do I assume I apply 24vdc to make it go one way, and reverse polarity to make it go the...
Replies
8
Views
2,067
A R&D project, designing sort of a DENSI-METER (hardness tester), to check density of soft products. Looking for a compact version of a motor to...
Replies
1
Views
2,295
The below text is a copy of a web site I just created (1-8-03) to find information on how to solve a seemingly easy but diffcult problem of...
Replies
39
Views
11,201
Back
Top Bottom