Adding New PID Block to Mark V HMI


Thread Starter



I'm a new control engineer. I have to realize a project on Mark v on DOS. I have to add a new PID block for a temperature control loop. I added BBL block (XPID01) using MSE, but i didn't know how to add the limit array (max/min) to clamp the output.

Please if any one can guide me to do it

Thanks :)

Have you consulted the Mark V Maintenance Manual (GEH-5980) and the Mark V Application Manual (GEH-6195) to see examples of sequencing modifications, and of how blocks are to be programmed?

It always helps when doing something like this for the first time if you can find an existing example of what you're trying to do in the CSP and then "duplicate" that.

You're going to need to create Control Constants/Arrays; have you done that yet?
Thank you CSA For the answer,

yes I consulted GEH 5980/6195 to see how to create or modify a block. my question is how to add the control constant/array?


You have to manually edit SITE.ASG using the convention dictated. You will have to choose names for the second column as you're creating the signals from spares (?VQCC is the mnemonic for a spare Control Constant variable in <Q>). I don't know why you'd need an array, but I'm not exactly clear what you're trying to do. You can look in FACTORY.ASG for other examples of similar types of Control Constants, and I believe editing SITE.ASG is covered in one of the manuals.

Then you need to edit CONST_Q.SRC to add the Control Constant names and specify the values for the new Control Constants.

You'll then need to run MK5MAKE.BAT, but don't compile the CSP this time. You'll need to resolve any warnings or errors and re-run the batch file.

Then you need to edit the selected CSP segment source file and pass the new Control Constants to the proper parameter inputs. Then re-run MK5MAKE.BAT and this time compile the CSP. Resolve any errors or warnings.

Then you're going to need to download the USER partitions to <C> AND <Q>--ONE at a time, rebooting each of them one at a time and waiting about two minutes before re-booting the next processor until they are all rebooted. Then you need to re-start the operator interface to load the new information into the operator interface RAM.

Then you can check your work, and you should be able to see and change Control Constant values from the operat interface.

This is NOT for the faint of heart and should you have trouble you need to get someone knowledgeable in Mark V to help. If the site has multiple operator interfaces you'll need to copy files to the other operator interfaces as appropriate (beyond the scope of this forum). But these are the basic steps--and having backups is critical to recovering from any problems.

Best of luck--and write back to let us know how you fare.
Hello CSA,

thank you for your answer & I'm sorry to be late. This was my final project which is a proposition to regulate the lube oil temperature with a PID controller on MKV in the place of the pneumatic regulator (TIC 01) actually used.

I tried to put inputs/outputs, constants and BBL .. etc on a spare HMI.
In the GEH 6195 pages C-121/122 the clamp of the output is done with a limit array with contains 2 elements min & max, my question is how can I define this array in the BBL?

Thank you

Hmmmm, ...., TIC 01 is not a device name I'm familiar with, but if it's pneumatically-operated then I presume it has an I/P positioner of some sort which implies it has some kind of input (RTD; T/C; 4-20 mA) and some kind of feedback (RTD; T/C; 4-20). It's not clear if the device is positioned/controlled by the Mark V, or if it's independent of the Mark V.

Other than finding another usage of a PID block elsewhere in the CSP and using it as an example for the rest of the assignment, this is all that can be added. This is what all programmers/coders do in the beginning, or when trying to learn a new "language." They look at other programming/code and find similar examples and copy them until they develop their own best practices.

It doesn't seem you really had a read of the header of FACTORY.ASG, because every FACTORY.ASG header includes the following information:<pre>;Arrays of points may be assigned by using an
;asterisk followed by the number
;of points. The array signal names must be
;separated by commas. Signal names
;may span multiple lines if the end of the line
;is a comma. Comments are
;allowed following the scaling definition.</pre><pre> ex:

["ex:" means Example]

So, the line defining an array would begin with ?VQCC *n, where "n" is the number of values in the array, followed by the point names, followed by the Scale Code/Type.

And, I found this example of an actual factory-assigned array further down in the FACTORY.ASG I was looking in:<pre>?VQCC *4 TTKGVC_1,TTKGVC_2,TTKGVC_3,TTKGVC_4 PRESS ;IGV Tx Ctrl CPD</pre>