PWM Cycle Time for Heaters

Taylor Turner

Member
Join Date
Sep 2020
Location
Midwest
Posts
78
PWM Base Time for Heaters
I may be putting to much importance on what the cycle time of a PWM cycle should be and the answer is probably in the tuning gains, but I still beg the question, what should the base time be?
I have a system that will not always have the same wattage heaters on a TC reference.(Its a rob peter to pay paul routine in maintenance that I am glad/required to stay out of.) I do have an amp meter, analog input and a program to run that will measure the current of each zone one at a time.
Knowing the mass, material, and BTU/amperage, I can estimate degrees/min at 100% duty cycle.
F/min=(I*V*1.732*3.412)/(w*Cp*60)

Are there any rules of thumb on base time and even minimum on-time with BTU as a variable?
 
Last edited:
PWM Base Time for Heaters
I may be putting to much importance on what the cycle time of a PWM cycle should be and the answer is probably in the tuning gains, but I still beg the question, what should the base time be?
I have a system that will not always have the same wattage heaters on a TC reference.(Its a rob peter to pay paul routine in maintenance that I am glad/required to stay out of.) I do have an amp meter, analog input and a program to run that will measure the current of each zone one at a time.
Knowing the mass, material, and BTU/amperage, I can estimate degrees/min at 100% duty cycle.
F/min=(I*V*1.732*3.412)/(w*Cp*60)

Are there any rules of thumb on base time and even minimum on-time with BTU as a variable?


How are you turning on 'zones' for heating? If they are mechanical contactors I would make the minimum on-time 10 minutes or higher.



I would not go below 10% duty cycle on the heaters unless your model is very accurate


How tight do you want your temperature control to be? Within 1 degree of setpoint? 0.5 degrees? 0.1 degrees? As you go lower, you have a more complex model, and you have smaller adjustments to your duty cycle.


Are you running multiple zones at once with one zone controller?


I am having trouble understanding what you are trying to do, what hardware you are using, etc


You mention that the tuning may be more important. So does that mean that your application is a single temperature, and a single temperature controller?
 
I have a discrete SSR per heating zone. There will be 28 zones heating a 15ft^3 area with a density of 460lbs/ft^3.


I am just wondering if a PWM cycle time should change depending on the heater wattage size.


A simple example of the control. *The SP within the error will be ramped.

CV%:=CV%+K*error%;
SSR:=(CV%*CycleTime.PRE)<CycleTime.ACC;


I am not yet considering all zones yet, just one for now. I have three variables considered right now: Kgain, CycleTime.PRE, and the wattage heater. If a smaller heater is installed in a zone does increasing the cycle time help compensate and what should it be?
I am not concerned with the accuracy of the ramp or overshoot, but the steady state. I'm thinking that a larger heater will need a lesser cycle time to hold temp and a smaller heater would need a longer on time. I haven't found many resources on PWM base time at these low frequencies, just motor control and higher frequency applications.
 
CV%:=CV%+K*error%;
SSR:=(CV%*CycleTime.PRE)<CycleTime.ACC;
That is I-only control; Integral-only; no P/Proportional or D/Derivative.

I am not saying it won't work, just sayin' ...

I assume there is, though not shown,

  • something in there to convert the % to a fraction;
  • anti-windup to ensure CV% stays between 0% and 100%;
  • some sort of update time control;
  • etc.
 
drbitboy, you are correct.
The CycleTime.PRE value is what I'm trying to define.


Also, since I have you here. Do the 5069-L306ERM processors have multiple cores to run code and set a defined scan rate? Much like the Beckhoff PLC options.
 
Also, since I have you here. Do the 5069-L306ERM processors have multiple cores to run code and set a defined scan rate? Much like the Beckhoff PLC options.

You can define periodic scan rates and priorities for interrupts. But, it is single thread, so to maintain cycle routines may need to be interrupted and then resume. So, you set priorities for which is most important to least.
 
Phrog30, hey that's a good call. I have yet to look to that, although Rockwell's "Using the PIDE Instruction" has a section on it and I have claimed to have read it...



Is there an efficient way to grab the AB's PLCs clock to create a free running timer? From what I've read grabbing the GSV every scan can be counter productive, due to the bloated request.



This is bleeding into ramping, but I only use a ratio of time to ramp.(Linear,constant velocity)

SPTarget:=SP*(.ACC/.PRE);
With the .PRE calculated from a velocity or rate.
.PRE := abs((SP -InitialPV))/Rate*60*1000;


A free running timer seems more appropriate and maybe look like.
SPTarget:=Rate*Tms;
Where T is the time from .001 to abs((SP -InitialPV))/Rate.


Peter is going to smack my hand for asking this.
 
This is bleeding into ramping, but I only use a ratio of time to ramp.(Linear,constant velocity)


mean scan time is reasonably constant, and can be calibrated every few minutes.

So why not use a count of scans as a pseudo-free-running clock? Is the ramp rate that critical?
 
drbitboy, It's not.

A free running timer would be nice to include with with the closed loop's I & D terms to calculate the delta between measurement times.
That may not even be critical either.
 
drbitboy, It's not.


[Update: whoops, maybe I misinterpreted what "It" referred to: ramp rate or mean scan time?]


***MEAN*** scan time, to within a few percent, I suspect it is. And that may be enough for this application, where the ramp setpoint would not need to be incremented more often than say every 10-20 scans, if scan time was short enough (1-10ms).


That's a lot of ifs, I am aware.
 
Last edited:
I have a discrete SSR per heating zone. There will be 28 zones heating a 15ft^3 area with a density of 460lbs/ft^3.


I am just wondering if a PWM cycle time should change depending on the heater wattage size.


A simple example of the control. *The SP within the error will be ramped.

CV%:=CV%+K*error%;
SSR:=(CV%*CycleTime.PRE)<CycleTime.ACC;


I am not yet considering all zones yet, just one for now. I have three variables considered right now: Kgain, CycleTime.PRE, and the wattage heater. If a smaller heater is installed in a zone does increasing the cycle time help compensate and what should it be?
I am not concerned with the accuracy of the ramp or overshoot, but the steady state. I'm thinking that a larger heater will need a lesser cycle time to hold temp and a smaller heater would need a longer on time. I haven't found many resources on PWM base time at these low frequencies, just motor control and higher frequency applications.


So you are using the output of a PID instruction to turn on a heater of some size for a period of time, I think. And you are looking to figure out what the minimum cycle time should be, right?

With an SSR I would not think a minimum cycle time would be required. The turn on/ramp to steady state on the element for the heater is non-linear and may mess with your ability to model the heater output. If that is the case, setting a minimum cycle time in the range of a few minutes would reduce your model calculation error.

My understanding is that you have an application where there are 28 zones but you are starting with 1. If your heater cycles on for minutes at a time, I would *STRONGLY* advise a large derivative gain on this PID. By the time you measure a temperature change you may have a large overshoot. But perhaps I am completely mis-understanding this set-up.
 
thingstodo, the derivative gain is defiantly something I'll look into.



My biggest concern is that heater size will potentially change. Gains will need tuned obviously, but the PWM cycle time must have an effect as well. Some crude way might look like scaling from heater size to PWM cycle time.

.PRE:=((10sec-1sec)/(20kW-1kW)*XkW)*1000;
 
Phrog30, hey that's a good call. I have yet to look to that, although Rockwell's "Using the PIDE Instruction" has a section on it and I have claimed to have read it...

There's nothing to it...
1. Feed it the 0-100% CV from the PID
2. Set the cycle time
3. Set the min/max time
4. Set the min/max percent, typically 50/100%

Don't make this harder than it should be. Unless you just really want to. :)
 
A ladder-based approach to PWM control of SSR-driven heaters is described in this thread (see post #9):
http://www.plctalk.net/qanda/showthread.php?t=116053

It requires a periodic task scheduled at the pulse-width resolution, which should be at least 100x faster than the PID for a minimum 1% resolution. This fast periodic task could be shared by multiple PID loops with careful data organization.
 

Similar Topics

Hello Friends, I am looking for a way to take my PID Output( it is the result of my PI Algorithm in Real format) and generate a PWM Signal in...
Replies
16
Views
2,475
in micrologix 1400 we have to enter duty cycle to get particular duty cycle.But i want my duty cycle changes according to values coming from pid...
Replies
2
Views
2,619
i have problem in vary pwm duty cycle using pwm instruction in OMRON cq1h PLC.i have value that need to be used to run my motor.the value is from...
Replies
5
Views
4,528
Hi friends... I have a problem about PWM (Pulse Width Modulation) in MRAS design to controlling dc motor. I have the algorithm to get control...
Replies
3
Views
5,410
Good morning! I'm trying to find a DIN rail-mountable 4-0channel PWM amplifier that is capable of accepting a 5VDC PWM with a maximum frequency...
Replies
2
Views
104
Back
Top Bottom