Velocity Feed Forward in Force Control for Testing Cylinders

Introduction
When testing actuators, it is common to use one hydraulic cylinder (the loading cylinder) to apply a constant force on the cylinder that is the unit under test (UUT), while the position of the UUT is moving back and forth.

Problem
Controlling force when the velocity varies significantly is challenging. The loading cylinder is in force control, using a force PID and feed forwards. However, in this situation, the force feed forward and force rate feed forward do not help, since the gain of the force control varies greatly with velocity. The loading cylinder is in effect only using a PID, which is limited in how quickly and accurately it can respond to changes in the force.

Solution
The best solution is to add a velocity feed forward to the loading cylinder axis. A force axis does not have a velocity feed forward, so we must create one. To do so, we create a user program that continuously multiplies the velocity by a variable that we call the velocity feed forward, and add that to the Control Output by putting it in the Output Bias.

  • Preferred Velocity Source: The loading axis will achieve the best control if the RMC is controlling the UUT in position control. In this case, the velocity feed forward that we made for the loading axis can use the UUT Target Velocity, which is a very clean signal, with no delays.

  • Alternate Velocity Source: If the RMC is not in control of the UUT, the control will not be as good. In this case, the velocity feed forward that we made for the loading axis must use the UUT Actual Velocity, which typically has some noise and will have some delay (hopefully minimal), and therefore will not control so well.

Other Factors
Another important factor for controllability is that there is no slop in the system. The loading cylinder and UUT should be tightly coupled together, especially if the force goes both negative and positive. If the loading cylinder is always applying a force in the same direction, this requirement may not be necessary.

Example
Attached is a project with examples for the RMC75 and RMC150. The Initialize Loading user program starts the VFF program on a separate task, and it must keep running on that task while the loading cylinder is controlling force. The project also includes an example of how to define a load profile based on position, if that is desired.

Velocity Feed Forward in Force Control for opposing actuators.rmcproj (72.4 KB)

1 Like

@Jacob_Paso when tuning the load actuator VFF in this method, would the VFF be similar value to the position control VFF on the load actuator axis?

If not, do you have any recommended methods for tuning the VFF? Is S-curve tuning like a position control axis common?

Yes, I expect that the VFF will be similar to the position control VFF on the load actuator axis. Whether in force control or position control, the valve has to open approximately the same amount to achieve a certain velocity, so the feed forward will be pretty much the same.

The easiest way to set the VFF is to look at a plot of motion that includes a section of steady velocity, preferably close to the fastest velocity the system will experience during normal operation. Then, divide the Control Output (in terms of percent) by the Actual Velocity. This method is fairly intuitive given that the units of VFF are % of Control Output divided by velocity (% / pu/s), where pu are the position units, such as in. or mm.

This assumes the system is linear, meaning that the velocity is linearly proportional to the Control Output.

Gotcha, thanks for the explaination.

For a ratio’d cylinder would you average the extend/retract VFF value since you only specified one VFF type in this program example?

I would actually apply a different VFF for each direction. If it’s averaged, it will be wrong in both directions.

@Jacob_Paso would you recommend using the target or actual velocity as the VFF reference of the loading actautor? My concern is that any noise in actual velocity will get amplified in the LA VFF and it will lag slightly behind the UUT actuator if actual velocity is used.

I always recommend using the Target Velocity, if it is available, for the exact reasons you mention.