How can I change the PID block in the control options within the control strategy itself. I showed the control options parameter but there has to be a number that will check mark or uncheck the direct action, also I see that you have to put the PID block out of service to do this is that correct?
1.) Put the PID block in OOS mode
2.) Write the correct integer value for the desired option bitstring to the PID’s Control Options parameter
3.) Put the PID block back in MAN mode.
In reply to AdrianOffield:
yep those are both valid methods for deciphering and even writing to the control options word but I really want to know the same thing that Deb is asking. Where in your process do you want a controller to be able to change from reverse to direct acting on the fly? Just wondering what process control problem we're actually trying to solve here. Sounds interesting.
dewey
In reply to Deb Colclazier:
Let me see if I can paint a picture here! We may have a project where we have 2 tanks, tank 1 has a sg of lets say 65 and tank 2 has a sg of 40. So what the objective is is to side stream blend the two together to get a sg of say 50. This is how the control system is layed out. Tank 1 will feed a pump and the then goto a main meter where we will measure the target sg, tank 2 will feed a pump and then a meter where we will measure tank 2's sg and then T into the piping from tank 1 before the main meter but after the pump. So my thinking was to monitor tank 2's sg and if it was greater then the main meters sg I knew I would have to be in reverse acting for a loop to work to have the main sg to come out right. Now the tricky part if for some reason they swap tanks and have it the other way I could still monitor tank 2's but I was thinking to automatically have the control stragey switch it to direct acting. Oh and by the way we are going to use a VFD on the pump for tank 2. Hope that helps, maybe there is a better way this is just what I came up with so far. Still working on the Auto/man for the loop.
By the way great site there are tons of people on here who have great info. I am still learning alot about this DeltaV stuff.
In reply to Bill Sayers:
I don't like writing just an integer value to the CONTROL_OPTS because people will change options at some later point which will be lost if writing just an integer value from logic.
I like to use logic like this to turn Direct Acting on:
'//LOOP/PID1/CONTROL_OPTS.CV' := STBT('//LOOP/PID1/CONTROL_OPTS.CV',1,10);
And this to turn Direct Acting off:
'//LOOP/PID1/CONTROL_OPTS.CV' := STBT('//LOOP/PID1/CONTROL_OPTS.CV',0,10);
This logic allows any changes to be done to CONTROL_OPTS at a later time and won't be lost because the logic is only setting/clearing the appropriate bit for Direct Acting.
Regards,
Matt
In reply to Matt Stoner:
Nice Matt! Is there an equivalent read function? For example if you wanted to evaluate one of the bits in a PID BAD_ACTIVE, or CONTROL_OPTS.
Thanks,
Travis
In reply to Travis Neale:
Travis,
It isn't as easy as a RDBT command (which doesn't exist) but it can be done.
IF
( '//LOOP/PID1/CONTROL_OPTS.CV' & EXPT(2,10))
THEN
rem Direct Acting Logic
ELSE
rem Reverse Acting Logic
ENDIF;
I used the EXPT(2,10) command because it would be easy to take the BitstringTranslantion.txt file under the DeltaV\bin directory and use the number shown (CONTROL_OPTS.OPTION10 = CONTROL_OPTS.DirectActing) for the option needed but you could also use what the integer number is which in this case is 1024.
Thanks Matt. It took me a little bit to see what you were getting at.
Yes. It wasn't obvious to me at first so I had to make a little test module and play with it. Clever. I still want an RDBT command though.
Thanks again!
-Travis