- This topic has 4 replies, 4 voices, and was last updated 3 years, 7 months ago by Alex Rosa.
- June 17, 2019 at 10:58 pm #5384Alex RosaParticipantKarma: 16Rank: Padawan
I am working on a small project and need a little help on the code I am writing. The project involves a stand alone machine that uses an electric heating element to keep product within a temperature range. I am using a Micrologix 1400 with a thermal couple expansion module. In the code I am using a PID however the control device is a Solid state relay and so I am needing to do “time proportioning control” logic to get this to work. I’ve never used this control method before any ideas. ThanksJune 18, 2019 at 6:29 am #5402George BarnetteParticipantKarma: 171Rank: Jedi
Morning and welcome to the forum!! I’m not real familiar with the term “time proportioning control”, however, I’ve done quite a few temp controls. Also Fred, the forum guru, has a lot of videos on PID control.
Anyway, you have a feedback for temp from your process. I would use an “on-off” type of control and not so much a PID loop. Since you have a solid state relay, that is either on or off, doesn’t modulate, so to speak, like a gas valve or a steam valve for heating and burner control. I would have the code control the relay with a limit instruction or maybe compare instructions, and with a little tweaking you could program in logic to anticipate overshoot and basically have a stable process. Hope this helps, and again, welcome!June 18, 2019 at 8:51 am #5407PLCGuruKeymaster
I agree with what George is saying. If the process is such that it can tolerate some variation in temperature, say +/- 5 degree C, then a simple ON/OFF control would certainly be adequate. These types of processes typically have a pretty slow response, meaning if you can tolerate a reasonable deadband so you’re not constantly switching (not as big a deal since you are using solid state devices), and then when the temperature drops below your programmed limit call for heat and drive it to the positive allowable programmable temperature limit and let it drift back down.
To do a true Time Proportioned or Split-time Time Proportioned PID control in the micro/SLC environment may pose challenges. However, since as George says you’re using an ON/OFF or a discrete Final Control Element anyway, any “cooked up” time proportioned PID control will be reduced to an ON/OFF type anyway.
Hope that helps.June 18, 2019 at 10:04 pm #5441Jeff JordanParticipantKarma: 16Rank: Padawan
Fred is right that a simple ON/OFF control for heating could work. This is called thermostatic control. However if the heater is large in respect to the load, meaning that if only 20% of the heater capacity was necessary to maintain temperature, ON/OFF control will probably be too unstable. Do time proportioning control like this. You start with what “update time” your PID loop needs to run. The update time is part of the PID loop configuration. This means that the PID loop will perform its calculations every update time period. Here’s an example. Lets say a PID loop updates every 10 seconds. The loop output would be scaled to a value between 0 and 1000. This scaled output then would be moved to the preset value of a timer. If one uses a TOF timer with a .01 timebase, then by enabling the TOF rung with a one shot every time the PID loop updates, then the timer will time out with the correct time proportioning control. That is, if the PID output was 50%, then the scaled output would be 500 which is also the preset of the TOF. When the TOF time rung is pulsed, then the .TT bit of the timer would be on for 5 seconds and off for 5 seconds, or 50% of the time base. Control the contactor output with the .TT bit. Also be careful with using solid state relays or contactors with heating. These devices can fail in the shorted state thus making a run away heating situation possible. Hopes this helps. If you would like some sample code I could send it to you. I have used this technique for decades on over 500 PID loop applications.
- You must be logged in to reply to this topic.