- This topic has 4 replies, 2 voices, and was last updated 5 years ago by soolocks5779.
- February 15, 2019 at 10:43 am #3736soolocks5779ParticipantKarma: 171Rank: Jedi
Hey guys I saw all the posts about PID issues so I thought I would add my own. RS5000 V.20.04
So I have a PID loop using P and I on a burner control. I have 2 identical units (air handlers) that are using basically the same program. It would probably be easier telling you what I want to see. How do I keep the PID from “winding up” behind the scenes for want of a better way to describe it. It will go to 100% output without me seeing it until the rung it’s on comes true, then it’s at 100%. The other unit will start out at zero. I’ve got them set up identically the same. I move a zero into .SO, .OUT and the control variable which is PID_GasValve_Percent until certain conditions are met then those instructions go false and I give it loop control. So for instance my PV may be well below the SP, but I want the burner valve to ramp open slowly. The other unit does this and I cannot figure out why. The problem I’m having is that if the burner valve wings itself open to 100% the unit will trip on high temp cutout before the gains can close it. That cutout has to be manually reset. So a question: Does the PID need to be “on” in other words even though I don’t want the loop to run, does it have to be active (with an XIO for example when it’s not trying to modulate–at zero output)? Or do I keep the PID disabled until I want it, which at the same time I would disable moving zeros into the above mentioned parameters. I would really appreciate some input (ha) from you guys. I just don’t see why identical logic and control would do it for one instance and not the other. PID is on Dependent, SP-PV, .5 second update time coming from a free-running timer. I can attach a snip if it’s necessary, but I have done no attachments on this forum. Thanks folks.February 25, 2019 at 4:25 pm #3763AnonymousKarma: 0Rank: Padawan
For all of the application I work on when you write anything to the .SO you need to keep the .SWM triggered for that duration you want it written for.February 25, 2019 at 4:48 pm #3766soolocks5779ParticipantKarma: 171Rank: Jedi
Thanks for the reply. OK so I may not need to write anything to .SO. I will only write to .OUT and then the percent out for the CV. I made a few changes while I was waiting for some replies:
1) I put the PID on a free running rung with the only condition being the .DN bit from the update timer.
2) When I no longer want any output, I run a timer for about 7 seconds that moves a low setpoint into the PID.SP, much lower than the PV, and since it is a heat PID, then it wants to ramp down, then I move a 2.0 gain into the PID.KP so it will go to zero output really quick; all this from that timer .TT bit. and then a zero into the output %. This seems to be doing OK now, and when it calls for heat again (the burner enable bit enables this timer along with other things), then a higher setpoint gets written back in and the loop returns to normal. I’ve watched it and the setpoint is re-entered higher than the PV and so the PID starts out SLOWLY from zero like I want it. May be a little clunky, but it works. I use a temp setpoint sequencing routine that raises and lowers the setpoints automatically based on a certain temp. Those are from the supply air that is heated by the burner. Thanks for all your help, and if you can think of anything else that would help me, I appreciate it
GeorgeFebruary 25, 2019 at 10:54 pm #3769AnonymousKarma: 0Rank: Padawan
Do you have a measured/controlled variable that works in tandem with this PID? In my application we have a feed level PID, feed temperature PID and a evaporator pressure PID. When the level drops during the start up of the equipment the temperature and pressure need to react quicker then the tunning allows, we tune for steady state running. Since the startup only last about 5 minutes we did not want to set up tunning parameters for such a short duration. We use the .BAIS (feed forward) of the PID to speed up the CV response, I calculate the percent error of the process variable vs the set point for the level and pressure loops then use the greater of the two to speed up the temperature loop. The error of the level loop is used to speed up the pressure loop. The .BAIS is a -100 to +100 scaled value that is outside the CV tuning calculation so if it’s a large positive number it has a positive effect on the associated loop if negative then a negative effect ignoring the slow or fast tuning parameters of the PID. I don’t know if you application can benefit from using the .BAIS of the loop but if you do have a measured disruption that affects your application it can be very useful.February 25, 2019 at 11:06 pm #3770AnonymousKarma: 0Rank: Padawan
22667 is without using the .BAIS, 22669 is with the .BAIS as you can see there is much less oscillation of the CV and PV when using the feed forward from the level loop.
- You must be logged in to reply to this topic.