Hydraulic cilinder position control

Begonnen von basparky, 11. April 2012, 15:35:48

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

basparky

Hello,

Today i found Oscat.de and downloaded the basic library and documentation. Great library and docu!!
I want to make a position control loop for 2 hydraulic cylinders. The cilinders are controlled by proportional valves with there pwm controllers. I need to greate a sollwert from minus 100% to 100%/-10V to 10V. Both cilinders have a position feedback 0-10V. length cilinder 200mm. I thought of using the CTRL_PID source to create the closed loop position control.
Could somebody please confirm if using the CTRL_PID is the right way to go?
Is there a way to determe the input parameters in front (behing my desk)?

The position off cilinder 2 is dependent from the actual position from cilinder 1. I can Use the actual position from cilinder 1 as Sollwert for cilinder 2. This in combination with a position check to make sure cilinder 2 is following correctly.
(I have no experience in controlling Proportional valves for position control  :()
Thanks in advance.

alexdrik

Hello,

as far as i know, position control of hydraulic cylinders with proportional valves by plc is a difficult thing to do.
hydraulic by itself is not as constant as electric (oil volume is heat and preassure dependend, hoses are flexible, ...).
furthermore proportional valves may be non-linear, cylinders usually have two different preassure areas, ...

if you have slow movements, little disturbances and can accept some deviation, it might work. But tendencies to oscillate exist.
What kind of hydraulic machine do you want to create?

I hope you can prove me wrong.

Best regards
     Alex

basparky

Hello Alex,

Thanks for your reply.

I know there are special servo valves for position control with hydraulics... In my case i need to use the supplied components..
The goal is to control a arm over 0 - 180 degrees. This arm needs to move from 0 to 180 degrees in 2 seconds. This with a smooth ramp ump and down curve. The arm is driven by a cilinder with a 200 mm stroke.
The accuracy is not very importand for the arm. The most important is a smooth movement and getting within 2 seconds from pos 0 to 180 degrees. The arm is mounted on a sled. This sled has also a 200mm cilinder.

The position of the sled depents on the actual angle of the arm. i thought of using the actual position of the arm in a select case function to select the wanted position setpoint for the sled.

I thought of using the PID function for both cilinders.

On other option is creating a ramp up and down function for the arm to create a smooth travel from 0 to 180 degrees. And using the actual poistion of the arm as sollwert for the pid loop of the sled.

What would you suggest?

Thanks in advance.







alexdrik


Hello,

i have been talking to some of our hydraulic guys. They told me that it might work.

for 200mm stroke, a resolution of 12 bits typically is ok. analog meassurement can be used.
a recommended plc cycletime would be 2 ms.
an important thing is the valve. you will need one with zero overlap (e.g. 4WRSE...V1...)
PID-controller is a good approach.

Best regards
     Alex


basparky

#4
Thanks for asking your specialists!!
The 2 ms cyclus time is going to be a problem.. My plc runs at 10ms.

I will be on the site later this week. As soon as i have further test results i will posts.

Thanks!

Skotti

A couple of years ago I have programmed a position control using the functions "SRAMP" (calculates the ramp command position with acceleration and deceleration) and a PID control for the analogue output.

But I had a linear axis (asynchronous motor with frequency converter and an ENDAT encoder feedback). The speed was 220mm/s (with workpiece) up to 300mm/s (empty) and acceleration 300mm/s.
I'm afraid that for such a dynamic hydraulic axis you need a fast CPU and fast analogue inputs to avoid overshoot at the final position of the axis.

Regards,
skotti

basparky

#6
Thanks for sharing your knowledge with me.
I have been trying to set up de CTRL_PID controller on the position control of 1 cilinder.
At first i hade troubles with the speed of the position feedback. The sample time of the analog input card was >100ms. No go.
I have bought a new analog input card with 2,5ms interval. Cpu cycle time around 6ms.
The cilinder needs to travel 200mm in 1,5sec i know the system is to sloo to make a exact position control. (cilinders travels at 0,13mm/s).
I 'am using the PID function as P controller. I and D are zero. If i try to ad the I or D i get a really unstable oscilating system.... (P=4,I=0,D=0).

I will try your idea of using the sramp function to control the setpoint. Does this mean i need the PID controller to be aggrasive to react fast at small setpoint changes doesnt it?

Any thoughts?


alexdrik

Hello,

the SRAMP does limit your position, velocity and acceleration to certain values.

My suggestion is to put the SRAMP before the CTRL_PID, so that the input values of the PID stay inside a defined area and (maybe) you can make a more stable PID.
If you put the SRAMP after the PID, your cylinder will make a much bigger overshoot (because of the I-part).

Regards
     Alex

Skotti

Zitat von: basparky in 14. Mai 2012, 08:43:35
Thanks for sharing your knowledge with me.
I have been trying to set up de CTRL_PID controller on the position control of 1 cilinder.
At first i hade troubles with the speed of the position feedback. The sample time of the analog input card was >100ms. No go.
I have bought a new analog input card with 2,5ms interval. Cpu cycle time around 6ms.
The cilinder needs to travel 200mm in 1,5sec i know the system is to sloo to make a exact position control. (cilinders travels at 0,13mm/s).
I 'am using the PID function as P controller. I and D are zero. If i try to ad the I or D i get a really unstable oscilating system.... (P=4,I=0,D=0).

I will try your idea of using the sramp function to control the setpoint. Does this mean i need the PID controller to be aggrasive to react fast at small setpoint changes doesnt it?

If you use only a PID control (input: diff between actual and target position) you will have an extreme raising output when the axis starts. I use this method sometimes to move hydraulic axes, but those axes don't move very fast. The advantage is that I can limit the output to a desired speed value. So the axis will move with a constant speed towards the target position. When it reaches the target area the PID comes into action. And you need an acceleration ramp for the target speed within your drive, this limits the jump when the axis starts (I usually use servo drives, they provide ramps for accel and deccel of the command speed). As already told before: This is used for slow axes with slow to medium speed and high accuracy of reaching the target pos.

The idea I have described previously was to use SRAMP to create a target position ramp. The diff between the SRAMP-output and the actual position is the input for the PID control. SRAMP generates acceleration and deceleration ramps (the ramp has the shape on an trapeze).
In this case there should be no accel/deccel ramps active in your drive / analogues output / amplifier card, so that the motor speed can follow the PID output without any delay.

This is how the position control of a servo drive works. But servo drives usually have no other work to do beside, so they have a quick response time (cycle times normally are less than 1ms).

So dont't expect a high performance positioning control when using a PLC with 6ms cycle time and a 2,5ms response from the analogue input (dont't forget the response time of the hydraulic control). If your hardware is limited to those values mentioned above you should use an external positioning control.