PID instruction parameter fault

kurt.brinker

Member
Join Date
Dec 2006
Location
In Town
Posts
263
I recently put in several PID loops to regulate a few pumps. When i downloaded the program, it faulted and i got the following error.
"an invalid value is being used for a PID instruction parameter"

What are possible causes for this?


I take the readings from 3 rtd's and use the CPT function to average them. I then write that value directly to the PV of the PID. My setpoint comes from the HMI and is rescaled from 0-99 to 0-16383. I use several SCP's to rescale my cv and such in order to display it properly but i don't know where my error is. I am sure its a common error between the pids but i can't find out where.

Any ideas on what causes this?

SLC 5/05
 
Look at the PID control blocks for the PID instructions. You may need to do this while in a faulted state.

Go to RSLogix500 Instruction Help and look at the error codes related to PID. There is a bunch of info there that will help you find out specifically what caused your fault.

Here is a the paragraph that precedes the runtime error details:
PID Runtime Errors:

Error code 0036 appears in the status file when a PID instruction runtime error occurs. Code 0036 covers the following PID error conditions, each of which has been assigned a unique single byte code value that appears in the MSbyte of the second word of the control block.

Rockwell Software 2005

So find out what is in the MSByte of the 2nd word of your control blocks and look at that help file...
 
That happened to me today and the cause was a negative value. I'm not sure which PID value it was but I just went to the data table and wrote zeroes where these values were. (The negative value got there during an HMI download with an incorrect initial value). Everything worked fine after that.
 
Are you using under and overrange protection logic to ensure that your PV never exceeds the 0-16383 boundaries? Even fi you are using a SCL or SCP instruction to scale the result of your compute to 0-16383, if the result of the CPT exceeds the boundaries of your input min/max values for the scaling instruction, you will get a result outside of the 0-16383 range required for the PID; which will result in a fault.
 
Attached is an example of what I mean regarding range limiting; some people use the limit test instruction, but this has always worked for me.
 
sorry i didn't get back sooner. My PV wasn't scaled but now it is.
I take my average temp and put that into an SCP where i take the rtd range and scale it 0-16383. I am still faulting and i can't figure out why.


i am going to go out and dload it again real quick and see what the msbyte error is.

Thanks for all the replies
 
mgvol said:
Are you using under and overrange protection logic to ensure that your PV never exceeds the 0-16383 boundaries? Even fi you are using a SCL or SCP instruction to scale the result of your compute to 0-16383, if the result of the CPT exceeds the boundaries of your input min/max values for the scaling instruction, you will get a result outside of the 0-16383 range required for the PID; which will result in a fault.

i'm not using that but the value is nowhere near the limits. range is from -328F to +1562F and it stays 40-80.


i'll check and see what the value of my cpt is when it faults.

( ( I:1.0 + I:1.1 ) + I:1.2 ) | 3

Thats whats in my cpt
 
It's not just the final scaling for the PV you have to worry about, it's the scaling of any of the operands of your compute statement. For instance, lets's say you are using an SCP to convert a range from 3277-16384 to 0-16383 for the PID PV. If any of the operands in your compute cause the RAW input to be a lot less than the defined input min of 3277 (low enough to return a negative number for instance), the SCP doesn't know what to do with the out of range value, so it just passes it right thru to the output address of the SCP, which in your case can cause the PID to fault.
 
pidsetup.jpg

s2status.jpg
 
0036 An invalid value is being used for a PID instruction parameter. This is recoverable and initiated by a user program instruction error.

WOW. i think i found it. I went to file 10 rung 3 just like it says and all of my pid blocks are empty! I have always checked the first one and thats the one you see posted. i am gonna reset all of those values and give it another whirl.
 
Last edited:

Similar Topics

Hello, there is anyone who have already used hpmont plc? now i am programming for that plc and have " pid autotuning is not working" issue. I have...
Replies
0
Views
978
Hello, Speaking of PID Instuction in RSLogix. What is the difference between Both "Manual" and Software Manual" (.MO versus .SWM) modes and...
Replies
2
Views
1,528
Hai All, Am using GOC35 mitsubishi PLC in that plc i need a pid instruction in ladder format.so i used and i give a process value,set value...
Replies
1
Views
1,736
I am attempting to use the PID instruction in RSLogix 500, with a Micrologix 1400 PLC. I have I:2.3 (4 - 20 mA) scaled for 0 to 10000, and stored...
Replies
7
Views
6,245
Back
Top Bottom