Apex: Virtual Outlet not working correctly for backup heater?

Oberst Hajj

Well-Known Member
View Badges
Joined
Dec 23, 2012
Messages
978
Reaction score
853
Location
Colorado
Rating - 0%
0   0   0
Hello all,

I have two 500w heaters on my system, called HeaterA and HeaterB. I have them setup so that A runs from 12:00 noon to 23:59 and B runs from 00:00 to 11:59. Here is the code I use for them:

HeaterA
Fallback OFF
If Tmp < 77.9 Then ON
If Tmp > 78.1 Then OFF
If Time 12:00 to 23:59 Then OFF
If Output HeatBkUp = ON Then ON
If Tmp < 60.0 Then OFF
If Output Maintenance = ON Then OFF

HeaterB
Fallback OFF
If Tmp < 77.9 Then ON
If Tmp > 78.1 Then OFF
If Time 00:00 to 11:59 Then OFF
If Output HeatBkUp = ON Then ON
If Tmp < 60.0 Then OFF
If Output Maintenance = ON Then OFF

As a safety feature, I have a virtual outlet that will turn the offline heater on in the event the temp drops below 77.7° with the following code:

HeatBkUp
If Tmp < 77.7 Then ON
If Tmp > 78.1 Then OFF

I also have it setup to send me an alarm notification if HeatBkUp is on:

HeatError
Set OFF
If Output HeaterA = ON Then ON
If Output HeaterB = OFF Then OFF
Defer 120:00 Then ON

What I have been seeing is that HeatBkUp will turn on when the temp is above 77.7°, this morning it was when the Apex was showing a temp of 79.9° and HeatBkUp was turned on.

As a result, both heaters getting turned on when they should not be and I'm getting an alarm notification when I should not be getting them. Any ideas on why HeatBkUp is getting triggered at a higher temp than it is set for?
 
That’s odd. There’s nothing in your code that should allow HeatBkUp to be on if the temp is above 78.1. Do you have logging enabled on that output? That would allow you to create a graph showing both the temperature and the virtual output status, and maybe see if there’s some sort of pattern.

My bigger concern is that your code allows the heaters to run even when above the 78.1 limit. You should change the order of the commands to prevent a malfunctioning virtual output from cooking the tank:

Fallback OFF
If Tmp < 77.9 Then ON
If Time 12:00 to 23:59 Then OFF
If Output HeatBkUp = ON Then ON
If Tmp > 78.1 Then OFF
If Tmp < 60.0 Then OFF
If Output Maintenance = ON Then OFF
 
One more thought: Can you post a screenshot of the the HeatBkUp programming? While you posted the text above, it’s possible the actual code has a problem. The Fusion text editor will color-code the program code which can sometimes reveal a hidden problem. If any of the code shows up as gray or black text, that means it’s not recognized as valid code.

5A8159DD-D0D0-4B19-8FB5-9E34ADB7CAE7.jpeg
 
just to make sure, but is the HeatBkUp Outlet set to "AUTO"?
 
That’s odd. There’s nothing in your code that should allow HeatBkUp to be on if the temp is above 78.1. Do you have logging enabled on that output? That would allow you to create a graph showing both the temperature and the virtual output status, and maybe see if there’s some sort of pattern.

My bigger concern is that your code allows the heaters to run even when above the 78.1 limit. You should change the order of the commands to prevent a malfunctioning virtual output from cooking the tank:

Fallback OFF
If Tmp < 77.9 Then ON
If Time 12:00 to 23:59 Then OFF
If Output HeatBkUp = ON Then ON
If Tmp > 78.1 Then OFF
If Tmp < 60.0 Then OFF
If Output Maintenance = ON Then OFF


Good catch on the ordering of my code, I'll make that change now. I did not have logging for HeatBkUp (I normally set everything to log), but I did enable it yesterday so I'll see what it shows me over the next couple of days.

I'm attaching a screenshot of my actual coding, but it does not how any issues.
HeatBkUp.png

just to make sure, but is the HeatBkUp Outlet set to "AUTO"?
It is set to Auto, but that is always good to double check.
 
Since the virtual output code is correct but the output still turns on outside the temperature limits, then the Apex is malfunctioning. This can happen if you have any duplicate names anywhere within your system (such as 2 outlets named "Unused") or even if a module is named the same as an output. Fusion doesn't prevent you from naming things the same, but any duplicates can wreak havoc on the Apex, causing it to malfunction in random ways.

Go through your list of Inputs, Outputs, Modules, and Profiles. If any two things have a matching name, you need to rename one of them. This includes Outputs named the same, if an Output is named the same as a Module, an Input is named the same as a Profile, etc. Any duplicates need to be eliminated. After renaming things, reboot the Apex to reload the corrected config.
 
Thanks for the help on this one @SuncrestReef . With logging on for both HeatBkUp and HeatError, I was able to look through the graphs and determine that HeatBkUp is coming on when the temp drops to 77.9°. The defer statement in my HeatError is delaying the notification two hours (like it should) and by that time both heaters have brought the temp backup above the HeatBkUp setting. Since I do not have anything coded to turn either of those off once the temp starts to go back up, they stay on until 78.1° as the HeatBkUp programs says.

The main purpose of the HeatError was to warn me if a heater was starting to go bad and not able to keep the tank at temp by itself and need the other heater to help. This being the first winter with my new fishroom built into the garage, it looks like at times both heaters are going to be needed at times to maintain the temp.

Any thoughts on the best way to get a notification that both heaters kicked in, but that one is not failing? Maybe putting a temp based OFF statement in the HeatError code? I think that would notify me that both heaters came on at the same time, but that they are both working since the temp was raising?
 

IF YOU HAD TO TAKE A REEFING EXAM, WOULD YOU PASS?

  • Yes!

    Votes: 32 45.7%
  • Not yet, but I have one that I want to buy in mind!

    Votes: 9 12.9%
  • No.

    Votes: 26 37.1%
  • Other (please explain).

    Votes: 3 4.3%
Back
Top