02-03-2012 08:42 PM
We have a multi-stage electro-hydraulic actuator at work that we need to construct a control scheme for. I have no formal training in controls but I get what is going on with PID. In particular our actuator has an "inner" and "outer" control loop. The feedback from both loops are LVDTs. The outer control loop LVDT indicates the position of the actuator (the RAM) itself. When the LVDT output is 0V the actuator is at it's mid stroke. The inner control loop feedback is also an LVDT attached to an internal "main control valve" (the MCV). This main control valve is controlled by an electro-hydraulic servovalve (the EHV). In a nutshell, when the EHV moves off of it's null position with an electrical signal it steers hydraulic flow toward one end of the MCV. This moves the MCV off of it's null which itself will then steer fluid towards one end of the RAM moving it.
In general, I think it should be possible to construct two parallel running PID loops for the inner and outer and I should be able to tune the gain constants to get the desired reponse, no?
02-04-2012 06:39 AM
Are you controlling only one actuator with a single EHSV?. If yes you don't need two loops 1 should be sufficient. You need to get the RAM position form the LVDT and measure the position of the actuator and generate the corresponding current to the EHSV to control the position with the help of the PID loop. If you are controlling anythig else then explain that for a better solution.
02-04-2012 03:46 PM
I'm not so sure a single loop will work because of the intermediate stage of the MCV. Consider this setup, the actuator is fully retracted, the EHSV is at it's null, the MCV is in any position that will not cause the actuator to extend (this would be anywhere from null to fully one side of its travel), we give a large impulse step commanding it to it's midstroke. In general, the EHSV has to move in the direction that will then cause the MCV to move in a direction that will cause the RAM to move towards the setpoint.
I think only controlling based on RAM feedback will not work because of the time lag required to first move the EHSV which will then move the MCV which will then move/stop the RAM. For both high and low gain values the EHSV should be back at it's null when the RAM is at the setpoint, however the MCV will still be in a position that will cause the RAM to continue moving - the EHSV and MCV are not linked together in any mechanical or true "servo" way. It will only be after the RAM has passed the setpoint that the EHSV will now be commanded in the opposite direction which will first begin closing the MCV, slowing the actuator, until the MCV is fully closed, begins opening the other direction and begins the RAM moving back towards the set point.
This is where the idea of the inner loop comes from. Ideally, the outer loops and inner loops are tuned such that for any given change in set point, the EHSV will first have the MCV open causing motion towards the setpoint and as we are running towards the setpoint the MCV will be closing at a rate that should have it go back to its null position at precisely the point at which the setpoint is hit.
02-04-2012 04:18 PM
I think the point P Anand was trying to make is that you are only directly controlling one thing - the EHSV. The output of the EHSV controls the MCV which controls the ram. If you have two control loops, you have two outputs to control two things. The second output has nothing to control so you do not need two loops.
What you do need is one loop with two inputs. The control model will likely look like two loops. You will get two feedback signals, the position of the ram and the position of the MCV. Your model needs to establish the relationship between those two signals and the setpoint. Then you write your code to implement the model.
It seems that the first paragraph of your example is not what I would expect. The ram is at X = -Xmax. The MCV is anywhere from Y = zero to -Ymax. The EHSV is at Z = zero. No motion takes place but hydraulic pressure is applied, keeping the ram fully extended. Then you enter a setpoint of X = 0. This immediately creates an Xerror of -Xmax. This should cause the controller output (Z) to cause the EHSV to move in the positive direction, which moves the MCV positive, which moves the ram positive or toward the setpoint.
Can you get applications assistance from the manufacturer of the EHSV and MCV? They have probably addressed this control problem. Even if they know nothing about LabVIEW, they may be able to help you develop an accurate model of the valves and sensors.
Lynn
02-04-2012 09:30 PM
If I've correctly understood your system, the standard approach to this problem is to use the output from one loop as the setpoint to the inner loop. There are two separate LVDT inputs, but only one output to the EHV, right? So, you would have an inner PID loop that controls the EHV. The process variable is the LVDT for that valve. The setpoint is the output from the outer PID loop. The process variable for the outer loop is the actual position LVDT, and the setpoint is your desired position. Schematically it looks like this (pardon the ASCII art, I hope it helps):
Desired position (Setpoint) ]
] -> PID -> MCV Target Position ]
RAM position feedback (LVDT, Process Variable) ] ] -> PID -> EHV Setpoint
MCV Position Feedback ]