10-27-2020 04:07 PM
I am writing a program to control our tempering oven. Currently, the program is working great. I am able to run profiles and update setpoints, read process values, update deadbands, update heating and cooling modes, etc. I am now finalizing the program but have run into an issue. Currently the program is taking a datapoint of the process value every second. Going forward, we only will need a data point every minute. I changed my timing to accommodate this and noticed that it caused my message handler loop to respond slowly as it has to wait 1 minute before the default case executes. Is there a simple way to get data points each minute without heavy modification of this program and without slowing down the message handler loop? Also, any other feedback on this program would be greatly appreciated. Thank you in advance.
Solved! Go to Solution.
10-27-2020 04:46 PM
If your loop runs once per second (good for getting data that you'll use to keep the loop fairly "current"), there's nothing that says you have to save all of that data. Count the points, and save every 60th (or once/minute).
Bob Schor
10-28-2020 09:48 AM
Yes, that was my initial thought. I just wasn't sure how to implement that with my current setup.
10-28-2020 12:31 PM - edited 10-28-2020 12:34 PM
@Cannon_Controls wrote:
Yes, that was my initial thought. I just wasn't sure how to implement that with my current setup.
I think @Bob_Schor described how to implement it.
@Bob_Schor wrote:
Count the points, and save every 60th (or once/minute).
Something like this:
Notes on the case structures.
(I took the liberty of only using a 10 ms wait to make this example easier to see when running.)
Does this make sense?
-joeorbob
10-28-2020 04:27 PM
That makes perfect sense. Thank you so much for your help and the great solution.
10-29-2020 01:29 PM
@Cannon_Controls wrote:
That makes perfect sense. Thank you so much for your help and the great solution.
I just looked at what I posted...If you only need to use it in the "Update UI" case, you can replace the shift register with one of these: