Is the PID control in the main task ?
in the Logix 5000 the PID controls must be in parodic task recommended 10ms or longer
the main task runs to fast for it to work the output will go full scale either full on 100% or full off 0% with nothing in between
I have run into that myself before
Also, the PID instruction has a parameter "xxx.IPD" that needs to be set to the same time period (in mS) as the PID instruction gets executed.
The PID instruction is a calculation based on time elapsed since the last calculation, so it needs to be executed at a fixed time interval, and it needs to be told what that interval is.
Some people do this with a self-resetting timer in the continuous task, some people do it by putting the PID instructions into a Periodic Task.
EDIT : In my experience, most PIDs, unless they need to be fast acting, dont need to be executed at a rate faster than 100's of mS, and many that I have successfully programmed and tuned 1 or 2 seconds interval. Also, if you are controlling VFDs, remove any "ramping" from the drives, this interferes with the feedback parameters you get.
I prefer to put PID instructions into periodic tasks, so that I can programmatically read the Periodic Task execution interval, and programmatically load those same values into the corresponding "xxxx.UPD" parameters. That way, if someone changes the periodic task execution rate, the PID instructions will automatically compensate. Also periodic task execution interval is more deterministic than a self resetting timer. On large programs your "interval" will not be totally constant.
So long as each PID instruction is told the rate at which it is being executed, retuning is rarely necessary if that rate changes.
You only need the actual PID instructions in the Periodic Task(s), there is no need to put any of the "control" logic, such as auto/manual controls, or bunpless transfer data swaps.
I have done many jobs with many PIDs in (30+), getting them set up so they know their execution rate will mean you rarely have to revisit them, and if they are not controlling as well as they used to, suspect the external hardware first, I/O seoond, and code last.
Also remember you do not need to do any Analog Input/Output module configuration if you swap them out. the controller downloads the "C" (configuration) tag when it makes its "connection" to the module. This makes I/O modules essentially "plug and play".