
adccommunitymod (AutomationDirect) asked a question.
Proportional Control With no PID
Created Date: July 10,2019
Created By: Chefjay
**** This post has been imported from our legacy forum. Information in this post may be outdated and links contained in the post may no longer work.****
I am writing a program for a boil kettle that i want to run with proportional control without a PID loop. I just want to enter a time period for the heater cycle and then be able to run a user entered percentage of the time period for the heater to be on. Is this possible with the productivity 1000. Thanks Jason
Created Date: July 10,2019
Created by: Chefjay
I am writing a program for a boil kettle that i want to run with proportional control without a PID loop. I just want to enter a time period for the heater cycle and then be able to run a user entered percentage of the time period for the heater to be on. Is this possible with the productivity 1000.
Thanks
Jason
Created Date: July 10,2019
Created by: Garry
https://accautomation.ca/productivity-1000-series-plc-pid-instruction/
I would still use the PID instruction and not set the I and D.
The above thread will go through the steps required to set this up.
https://accautomation.ca/series/productivity-1000-plc/
I hope this helps you out.
Regards,
Garry
Created Date: July 10,2019
Created by: Chefjay
Do I just leave these set to zero? Will the P represent the percentage of the time base?
Created Date: July 10,2019
Created by: Tinker
I don't know the Productivity instruction set, but the DoMore has a TIMEPROP instruction that would do what you want, if there isn't a similar instruction on the Productivity, one can always do it with a couple of timers.
Created Date: July 11,2019
Created by: bcarlton
your first rung create a timer (not 'simple timer '). Choose a timebase, try milliseconds first, which will give at least 100 counts during your cycle. Choose the 'reset when timer reaches preset value ' option. Make sure to provide a current value tag.
In a math block calculate the on to off point in the cycle by using (CycleTime * PercentOnTime) / 100. Set the result as OnTime
Finally create a rung which tests if the current value of the timer is less than the OnTime. If so turn on the output.
I'm sure your program will be much more extensive than this but this should be a start. I'm having trouble saving a program in the Productivity package so sorry I can't provide a more detailed example.(Edit - found problem, had to delete 'god mode ' control)
Created Date: July 11,2019
Created by: kewakl
Nice work - as always, Garry!
Is there any benefit to unchecking Use Structure in your example?
I understand why you used the structure, just not following the reason for unchecking it after having it create/assign tags.
Thank you.
Created Date: July 11,2019
Created by: z28z34man
Nice work - as always, Garry!
Is there any benefit to unchecking Use Structure in your example?
I understand why you used the structure, just not following the reason for unchecking it after having it create/assign tags.
Thank you.
from what i can see he wanted to change the process variable tag to the tag auto generated by the thermocouple input card.
Created Date: July 11,2019
Created by: kewakl
Will have to review the example again.
Thx z##z##man!
Created Date: July 11,2019
Created by: Alexandru
If I were to do it, assuming is just a kettle that needs heating and when temperature reaches a set value heating needs to stop, I would keep it simple with a proportional controller.
Proportional control means you provide a response that is proportional to the difference between your set value and the process value. You don’t need a time base for it. If you use a time base, that is not a proportional control anymore but an integral control (with a longer time) or differential( with a very short time base.
since proportional doesn’t account for time, it doesn’t have a determined effect in time. The means of proportional response is to react faster than derivative so for this reason proportional is inhibited when derivative is already high.
my point being that proportional only has effect at times when derivative can not be calculated: at start or at a sudden turn.
if you set a heating cycle time as base for your duty cycle, then every cycle you can have a proportional response. But if you compute the change of temperature between two cycles, you can also have the derivative. So you know not only how far you are from set value, but also how fast you’re moving and in which direction.
you may go one step forward as to compute the average level over 100 cycles, as well as the overall direction and change. so the level of complexity and detail in monitoring your process exceeds the simplistic interpretation of PID.
heating is hardly a linear process. You have times when you heat 100% and the temperature doesn’t change and times when the heater is off and the temperature climbs fast. For this reason, you need to compute the amount of heat you have inserted and know that if your temperature reading doesn’t verify the computed heat transfer, then the temperature reading must be wrong.
most heaters that overheat or enter opposite response cycles do that because they don’t compute the heat transfer.
Created Date: July 14,2019
Created by: bcarlton
Maybe I'm missing something. The OP in his two posts did not mention a specific feedback, though some type of feedback is implied by using 'Proportional Control '. He mentioned a 'user entered percentage '. A 'user ' to me implies manual control. I may be wrong but are we reading too much into his question?