Cyclider Position Control

Dear Experts, 

We have following requirement in our project. 

There are some cylinders to control the choke of a machinery. 

We have two DO signals in DCS to open and Close. One AI signal for Position indication. 

From the operator Display they need two Buttons OPEN  and CLOSE. One Analog indicator to indicate the position. 

From the Display, If operator Keep Pressing the OPEN button then the Cylinder should open continuously. He can see the position indication in the AI indicator. 

If he releases the OPEN button then it should hold  in the same position. 

Likewise if he keep pressing the CLOSE button then the Cylinder to close  from the position where it got hold. 

I have searched in PCSD for this application , I could not find any. 

If anybody has used this application please share with me.

Thanks,

Manik

21 Replies

  • Sorry  the Subject line is  "Cylinder Position Control"

  • In reply to manik:

    I think the only tricky part of this requirement is the user interface.  Typically, a click writes a value, but it is not usual to tie releasing the click to stopping or resetting the write action.  There are probably safety reasons as to why this might not be a good idea to implement through software.

    Additionally, I would imagine a safeguard at the control module level to only send the Open impulse in short bursts would be practiced to prevent full open in the event that HMI communication with the controller was interrupted.  

    On your open button, the mousedown (click)  event could be tied to your button to write a "1" to the setpoint of the DO of the Open impulse and "0" to the DO of the  Close impulse.  A complimentary mouseup (release click) event would then write a "0" to the setpoint of the Open impulse DO.

    However, if your mouseup event or the HMI communications failed before releasing the button, your Open impulse would stay energized.  

    There are various ways to ensure the Open impulse is limited; configure the DO channel as momentary output, then reset the DO SP through logic every time the Open button is clicked, or by configuring a timed pulse function block to control the DO SP.

    Bottom line, I wouldn't rely on a mouseup event to de-energize your equipment.

  • In reply to Youssef.El-Bahtimy:

    Hi,

    Check for any references to subsea 'CHOKE Valve' in any of the oil & gas project. This valve is generally STEP operated & "on each click", the step value increases or decreases by one. You can make the corelation as cylinder position 0 - 360 deg. = 0 - 360 steps or clicks, based on the required precision.

    Also, it will be difficult to use the DO as continuous signal, as then it will be 'module scan rate' dependant. If scan rate is 2 seconds, then the cylinder system will receive the movement command for longer duration than a 1 sec scan rate module instance. instead, if you use a pulse DO, then you can control the setpoint willingly form the faceplate, based on number of pulses. Off-cource, the control will be slower, but I doubt this application would need very high speed reponse.

    Furthermore, It would not be good to be blind about the feedback-setpoint relation, as there might be some delay in the command & feedback. So the possibility is when operator releases the click / stop clicking the open button, the position would actually cross the required value. Hence you can also add the setpoint position value in module & on faceplate using the number of clicks, as corelated to the cylinder position, detailed in above sentence.

    If you implement this, the setpoint sometimes need to align with the feedback value (tracking), if there is deviation between them. This will have to be achieved using a seperate pulse button on faceplate/detail.

    If not found a reference to 'choke valve typical' in any project, you can also search for 'stepper motor control typical'.

    Best of luck...

    Regards,

    Amod.

  • In reply to amodbobade:

    HI,

    have used similar applications several times. Usually you can program "while button down" command =1 then you do not have to program the reset of the bit.

    I would imagine that the bit would goto 0 when you lööoose the connection to the HMI system???

    You could also use a normal Digital output PID controller, you connect the DO:s to the pulse outputs for increase and decrease the signal. Then you just insert the desired value and the control does the rest.

    This sort of control is widely used for thís kind of position/temperature and so on.. similar controls were you do not have AO for controlling the position/rate/...

    I can´t remember if DV has this block built in?? But the general idea is to use a e.g. rate block or splitter (depending if you would like to use pulsing or just ON/OFF signal) after the normal PID block.

    You configure the output limits to e.g. -100% and 100%.. the splitter/rate block have the input-limit set to -100%-0  and 0-100%, then you will get control in bouth ways..

    In ventilation applications we used a splitter three ways. -100%-0% (cooling) ->0-100% (heat recovery) and 100-200% (heating), the you only need this one PID block Cool

    Niklas Flykt 

    Klinkmann Oy

    Key Account Manager safety products

    nikfly@gmail.com

  • In reply to Niklas Flykt:

    Niklas,

    you mention the principle of using a do-while loop for the button control, but without a complimentary reset action in either the HMI logic or the contol module logic, the open command will persist until it is explicitly deactivated.    The impulse from the HMI isn't a closed circuit that becomes open if the HMI loses connection.

    I haven't had much luck with do-while loops, as they tend to use up the entire CPU while waiting for the while condition to end (even with 'do events' command).  Timer API's can be employed for better periodic event management, but like I said before, I wouldn't want the HMI to be responsible for de-energizing the open impulse.

  • In reply to Youssef.El-Bahtimy:

    HI Youssef,

    I see your point that the controller propably doesn´t recognize when the connection is lost without adittional programming.

    Just got a new laptop and haevn´t had the time to install a virtualmachine on it so I could test stuff..Stick out tongue

    Don´t remember if there is a "whilePresssed"  ObjectEvent in DV visual basic, I might have used the MouseDown/ MouseUp function..?

    It would be "quite" simple to write a feedback commmunication between the HMI that is writing the command, like a heartbeat monitor.. but if you have several HMI/OP places what then??

    You just have to trust your system, there are propably tens, hundred or even thousend places in a system that solely can be controlled from the HMI.

    Niklas Flykt 

    Klinkmann Oy

    Key Account Manager safety products

    nikfly@gmail.com

  • In reply to Niklas Flykt:

    Hi,

    You can create OPEN / CLOSE / STOP buttons on the HMI. The OPEN/CLOSE buttons will initiate movement towards desired direction. STOP button will reset it. Also, you can add the timeout / extreme feedback position reached status to activate the STOP logic in the module.

    If you 'Have to' fit everything in OPEN / CLOSE buttons only, then you can use MouseUp, MouseDown, MouseMove events alongwith a movement timer object on the faceplate. The same trick is used in standard PID faceplate "LOOP_fp" with the slider function for output or setpoint.

    Unfortunately this faceplate uses frsz.... (frsztimMoveEvent, etc...) functions so debugging use of these functions is not easy....

    Best Regadrs,

    Amod.

  • In reply to amodbobade:

    Just out of academic curiocity..... What if one operator on one HMI keeps OPEN button pressed, while the other operator on another HMI keeps CLOSE button pressed??

  • In reply to amodbobade:

    You have to program interlocking on both sides (inputs/outputs), if both are ON ->nothing happens..

    Niklas Flykt 

    Klinkmann Oy

    Key Account Manager safety products

    nikfly@gmail.com

  • In reply to amodbobade:

    Amod, I would say this is not just academic curiousity; it should be listed in the requirements spec.

    I 'd start by configuring a visibility or enable/disable animations on the OPEN and CLOSE buttons such that OPEN is disabled when the CLOSE impulse is active and vice-versa.  The STOP button you suggest to de-energize both outputs is a fantastic idea as well.

    As Niklas mentions, it is also probably wise to configure interlocking module code to prevent both impulses being energized at the same time.  Using a DC block to handle energizing the outputs based on a state mask that prohibits the AND condition is probably the best way to go on this. The OPEN/CLOSE/STOP commands would exist as the 3 configurable DC states, ACTIVE1/ACTIVE2/PASSIVE, respectively.

    I would configure the impulses in the control module to be of a maximum pulse width, say 1 or 2 seconds, that is reset to passive automatically. Then configure the OPEN and CLOSE buttons so that each pulse requires a click, and no comlimentary release.   If the passive on release is really required, I would configure a Timer API call in the mousedown event of the button to fire every few seconds to re-write the command if the button is still clicked.

  • In reply to Youssef.El-Bahtimy:

    Look at www2.emersonprocess.com/.../Interactive.aspx in the DeltaV application exchange.  This is an example of how to use motorized actuators for PID control.  Something similair could be done with this.  Instead of the operator holding an open or close button until they get the choke in the desired position, they could just give a setpoint for the choke postion and let the PID-type module take over.  I had a previous co-worker setup similar type control using a MOV on a steam line and it worked pretty well.

  • In reply to David Nelson:

    Dear Experts,

    Thanks for all your support.

    Based on your inputs,

    I have implemented the logic using 2 DO blocks and Filed DOs will be Momentary type.

    Wriiten a logic in a CALC block, This CALC block will receive the input from Display.

    In Display Have two buttons one for OPEN and One for CLOSE. with good amount of script ing :) to allow the operator to push and hold untill he wants that.

    Tested it works.

    Once again thanks for your tremendous support.

    Thanks,

    Manik

  • This sounds similar to the operation of an MOV (Motorized Valve), we have the same AI position indication, however, we use three buttons.  OPEN, CLOSE, STOP.
     
    The problem with your scenario is tracking an event when the button is continuously pressed, you would have to do some special code on the faceplate, behind the button while the mouse button was pressed.  Using three buttons eliminates the special code and you can just use a DC block with passive, active 1 and active 2 states.  This is all standard stuff and will give you less hassles when troubleshooting.
     
    Hope that helps.
     
    From: manik [mailto:bounce-manik@community.emerson.com]
    Sent: Monday, September 15, 2014 10:42 PM
    To: DeltaV@community.emerson.com
    Subject: [EE365 DeltaV Track] Cyclider Position Control
     

    Dear Experts, 

    We have following requirement in our project. 

    There are some cylinders to control the choke of a machinery. 

    We have two DO signals in DCS to open and Close. One AI signal for Position indication. 

    From the operator Display they need two Buttons OPEN  and CLOSE. One Analog indicator to indicate the position. 

    From the Display, If operator Keep Pressing the OPEN button then the Cylinder should open continuously. He can see the position indication in the AI indicator. 

    If he releases the OPEN button then it should hold  in the same position. 

    Likewise if he keep pressing the CLOSE button then the Cylinder to close  from the position where it got hold. 

    I have searched in PCSD for this application , I could not find any. 

    If anybody has used this application please share with me.

    Thanks,

    Manik

  • Something like this:
     
     
    From: manik [mailto:bounce-manik@community.emerson.com]
    Sent: Monday, September 15, 2014 10:42 PM
    To: DeltaV@community.emerson.com
    Subject: [EE365 DeltaV Track] Cyclider Position Control
     

    Dear Experts, 

    We have following requirement in our project. 

    There are some cylinders to control the choke of a machinery. 

    We have two DO signals in DCS to open and Close. One AI signal for Position indication. 

    From the operator Display they need two Buttons OPEN  and CLOSE. One Analog indicator to indicate the position. 

    From the Display, If operator Keep Pressing the OPEN button then the Cylinder should open continuously. He can see the position indication in the AI indicator. 

    If he releases the OPEN button then it should hold  in the same position. 

    Likewise if he keep pressing the CLOSE button then the Cylinder to close  from the position where it got hold. 

    I have searched in PCSD for this application , I could not find any. 

    If anybody has used this application please share with me.

    Thanks,

    Manik

  • That’s exactly the issue I was referring too, we use a similar case for an MOV with the following FP.
     
     
    From: Youssef.El-Bahtimy [mailto:bounce-YoussefEl-Bahtimy@community.emerson.com]
    Sent: Monday, September 15, 2014 11:32 PM
    To: DeltaV@community.emerson.com
    Subject: RE: [EE365 DeltaV Track] Cyclider Position Control
     

    I think the only tricky part of this requirement is the user interface.  Typically, a click writes a value, but it is not usual to tie releasing the click to stopping or resetting the write action.  There are probably safety reasons as to why this might not be a good idea to implement through software.

    Additionally, I would imagine a safeguard at the control module level to only send the Open impulse in short bursts would be practiced to prevent full open in the event that HMI communication with the controller was interrupted.  

    On your open button, the mousedown (click)  event could be tied to your button to write a "1" to the setpoint of the DO of the Open impulse and "0" to the DO of the  Close impulse.  A complimentary mouseup (release click) event would then write a "0" to the setpoint of the Open impulse DO.

    However, if your mouseup event or the HMI communications failed before releasing the button, your Open impulse would stay energized.  

    There are various ways to ensure the Open impulse is limited; configure the DO channel as momentary output, then reset the DO SP through logic every time the Open button is clicked, or by configuring a timed pulse function block to control the DO SP.

    Bottom line, I wouldn't rely on a mouseup event to de-energize your equipment.