|
12/05/2007, 06:07 PM | #1 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
AC3 Best practices
After reading some recent threads I thought that this may be appropriate; a collection of best practices to ensure a health and happy tank.
I'll start with a few that I use: Rule: Program with failure in mind - You should avoid code with open ended conditions Bad: If Temp > 80 Then COL ON If Temp < 77 Then COL OFF Better: If Temp > 80 Then COL ON If Temp > 84 Then COL OFF // Something may be wrong If Temp > 83 Then ALM ON // Notify me If Temp < 77 Then COL OFF Reason and Fix: When a condition is open ended then the sky is the limit on the damage that can be caused. Since, under most conditions a tank should not get so out-of-wack that readings are off-the-scale of what would be reasonable add code to handle the unexpected (e.g., if you keep your tank between 75-77 then it would be VERY unlikley that the temp would ever reach < 72 or > 80 so code as such. Add code to handle the unexpected; (using the above example) if the temp > 80 then it may be more likley that something has failed, shutting down things may be the best solution and let the human figure it out. Rule: Adjust heaters/chillers (if adjustment is possible) to have a threshold slightly more/less than the AC3. Reason and Fix: If a timer gets stuck in the ON state then the device may be able to assist in keping the tank under critical conditions. A stuck heater, set slightly above AC3 setpoint is less likley to cause a problem than a heater set to 90 and stuck on. Rule: Use an alarm timer Reason: An alarm is active notification; something gets turned on (a buzzer, a light, email, pager, etc). An alarm gives that tank an ability to yelling when something may not be quite right. Please add the things that you do to protect from tank meltdown! |
12/06/2007, 12:45 PM | #2 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
greenhut had this idea...
Use a Feed cycles as a method for temporary override a timer's state. For example; if you want to turn on the VHOs for 15 minutes after lights out, say for late feeding or some tank maintenance. You could use a FEEDx timer to do that; after the feed timer expires the lights should revert back to whatever state they should be. Example: If FeedB 000 Then VHO ON |
12/06/2007, 02:02 PM | #3 |
Registered Member
Join Date: Jul 2007
Location: Edmond, OK
Posts: 373
|
Kenargo-If/when I decide to hook my chiller & heater to the AC the program statements you list are what I intend to use. I may add a max change statement, if the temp probe goes bad it can and will bounce around within a few degrees, ie 78-83-85-79.....then all the sudden up to 120. Thanks for posting the program.
|
12/06/2007, 05:16 PM | #4 |
Registered Member
Join Date: Sep 2003
Location: Sydney, AUS
Posts: 2,316
|
Very interesting, and certainly worth incorporating. Thanks!
__________________
~Brandon W. |
12/06/2007, 08:29 PM | #5 |
Registered Member
Join Date: Nov 2003
Location: Concord, MA
Posts: 310
|
Excellent thread Ken!
|
12/09/2007, 09:13 AM | #6 |
ARKSC Founding Member
Join Date: Dec 2004
Location: CT
Posts: 2,823
|
I am not a reefer, but use an AC III to drive a very high tech f/w planted tank. While my code may be different (controlling different systems to different parameters), the principals for coding an AC III should be the same.
I find it helpful to distinguish between something that needs my attention, but is not immediately critical, and those things that indicated a massive problem. So I use both the standard ALM& timer and an additional BAD% timer. This is just a small sample of code showing how I would use that: If pH < 06.00 Then ALM ON \\ Small problem that needs attention If pH < 05.80 Then BAD ON \\ Something has gone very, very wrong! If Temp < 80.0 Then ALM ON \\ Small problem that needs attention If Temp > 85.0 Then ALM ON \\ Small problem that needs attention If Temp > 90.0 Then BAD ON \\ Something has gone very, very wrong! If Timer BAD = ON Then AIR ON \\Something very wrong, revert to minimal systems If Timer BAD = ON Then LT1 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then PM1 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then PM2 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then CO2 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then HT1 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then UV_ OFF \\Something very wrong, revert to minimal systems The idea here is that there are some things that need attention - use the ALM for that, and intervene as needed. But other parameters values can indicate that something has gone WAY beyond anywhere they should ever go - indicating that the unexpected (and unknown) has happened, in all likelihood an equipment malfunction of some form. In which case the best course of action is assume the worst, and revert back to the absolute minimal life support until you can assess the situation and take remedial action. I'm happy to say, my BAD timer has never kicked in. But it's nice to know it's there. |
12/28/2007, 11:49 PM | #7 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
Following a thread on this issue I thought it good to add here....
Be sure to use "If Time > 00:00 Then XXX ON/OFF" correctly. It is very easy to get carried away and use the "If Time" statement to rid your display of "U"s but this may not always produce the output you expect. The following example is a case when you should NOT use the "If Time" statement: If PH > 7.0 Then CO2 ON // CO2 ON when PH > 7.0 If PH < 6.5 Then CO2 OFF // CO2 stays ON until PH < 6.5 Or If Temp > 79.0 Then COL ON // COL ON when Temp > 79.0 If Temp < 78.0 Then COL OFF // COL stays ON until Temp < 78.0 Or If ORP < 300 Then OZN ON If ORP > 350 Then OZN OFF (I think you should get the idea by now). You may be thinking, why can't you use the "If Timer" to initialize CO2, COL and OZN, after all you will get a "U" if the AC3 is updated and the values fall in the middle of the ranges and the timer might be ON or OFF and I won't know. To understand this we need to walk through the logic, placing the initializer there to see why it causes problems... Let's take one: If Time > 00:00 Then COL OFF // Init COL to OFF If Temp > 79.0 Then COL ON // COL ON when Temp > 79 If Temp < 78.0 Then COL OFF // COL OFF when Temp < 78 Hmm, looks like it will work, right..... What will happen in the above is that the COL will turn on when Temp > 79.0 but it will turn off when the Temp drops to 79.0; it wil not stay on until Temp < 78.0. Do you see why, I'll explain... The "If Time" initializes COL to "OFF" and this happens for each evaluation cycle. Next the Temp is tested and if it is 79.1 (which is greater than 79.0) the COL os turned ON (great, just what I wanted). Next evaluation the COL if initialized to "OFF" and the Temp has dropped to 79.0 and since 79.0 is not > 79.0 COL state remains unchanged (OFF, set by the "If Time") and since no other statement affects COL it will be turned off. But what state is my timer in when "U" is displayed. The real answer is that it can be ON or it can be OFF; the "U" says that the AC3 does not if it should turn it ON or OFF (so it does nothing). Wow, that means my heater could be on and I don't know it. The short answer is yes, but if the heater is ON then the tank temp will raise and you should hit the "If Temp" which will turn the heater OFF and remove the "U" until the next time you reset the AC3. A good rule of thumb... * Never use "If Timer > 00:00" to initialize a timer when you have ON and OFF statements for a timer, sooner or later the "U" will go away and the timer state will be known. * Use "If Timer" when a timer can be initialized once, and changed by many conditions (it saves program lines). For example, turn a pump on by default and program feed cycles to turn it off. Hope this makes sense... Enjoy.
__________________
Click on my name to visit my homepage and access a collection of AquaController and Apex software, tips, trick and other Q&A including a link to the 'unofficial Apex new users guide' with loads of helpful information and don't forget to put a pin in my location map. Current Tank Info: 225G, BK 300 Deluxe, Deltec PF601, Precision Marine Kalkreactor, 2-LMIII+6 pumps, SpectraPure UHE, Apex, LunarSim, Tunze 6305s. Mixed reef, clam, fish, etc. |
04/23/2008, 12:38 PM | #8 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
I think this might help some people so I'm bumping it to the top.
Maybe we can get this pinned and add to it over time with more ideas and some code examples for the more challenging operations (e.g., the ones that require dummy timers)?
__________________
Click on my name to visit my homepage and access a collection of AquaController and Apex software, tips, trick and other Q&A including a link to the 'unofficial Apex new users guide' with loads of helpful information and don't forget to put a pin in my location map. Current Tank Info: 225G, BK 300 Deluxe, Deltec PF601, Precision Marine Kalkreactor, 2-LMIII+6 pumps, SpectraPure UHE, Apex, LunarSim, Tunze 6305s. Mixed reef, clam, fish, etc. |
04/23/2008, 01:02 PM | #9 |
Awaiting Email Confirmation
Join Date: Sep 2005
Location: On RC
Posts: 3,609
|
Couldn't these codes also be used on a ACjr?
|
04/23/2008, 01:03 PM | #10 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
Yes, they are also allicable for the Jr
__________________
Click on my name to visit my homepage and access a collection of AquaController and Apex software, tips, trick and other Q&A including a link to the 'unofficial Apex new users guide' with loads of helpful information and don't forget to put a pin in my location map. Current Tank Info: 225G, BK 300 Deluxe, Deltec PF601, Precision Marine Kalkreactor, 2-LMIII+6 pumps, SpectraPure UHE, Apex, LunarSim, Tunze 6305s. Mixed reef, clam, fish, etc. |
04/23/2008, 01:12 PM | #11 |
Awaiting Email Confirmation
Join Date: Sep 2005
Location: On RC
Posts: 3,609
|
Ken, as much as you help out Neptunes customers you really should be employed by Neptune. Thanks again for helping Mike and I the other week with the AC3.
Now back to the coding. I am trying to figure out, and how it can be programed into the ACjr If Timer BAD = ON Then AIR ON \\Something very wrong, revert to minimal systems If Timer BAD = ON Then LT1 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then PM1 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then PM2 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then CO2 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then HT1 OFF \\Something very wrong, revert to minimal systems If Timer BAD = ON Then UV_ OFF \\Something very wrong, revert to minimal systems |
04/23/2008, 01:32 PM | #12 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
'Bad', represents a dummy timer; it is the same as ALM (alarm).
In the example above scolley is suggesting that there are multiple levels of bad. Scolley suggests separating them into 2 categories, 1 turning on the 'ALM' timer and the other turning on the 'BAD' timer. Scolley further describes how you could use the state of these timers to do 'something' which could preempt a full melt down. A tank example might be to have ALM turn on when the temp > 80 but turn BAD on when the temp is over 90. The ALM might only need to send an email but BAD being on you may want to shut down all the lights on the tank and turn on the backup fans. Does this help?
__________________
Click on my name to visit my homepage and access a collection of AquaController and Apex software, tips, trick and other Q&A including a link to the 'unofficial Apex new users guide' with loads of helpful information and don't forget to put a pin in my location map. Current Tank Info: 225G, BK 300 Deluxe, Deltec PF601, Precision Marine Kalkreactor, 2-LMIII+6 pumps, SpectraPure UHE, Apex, LunarSim, Tunze 6305s. Mixed reef, clam, fish, etc. |
04/23/2008, 02:25 PM | #13 |
Awaiting Email Confirmation
Join Date: Sep 2005
Location: On RC
Posts: 3,609
|
Yup. For now, until I get in front of the controller.
|
05/31/2008, 08:55 PM | #14 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
Bringing to the top so it can be more easily found....
__________________
Click on my name to visit my homepage and access a collection of AquaController and Apex software, tips, trick and other Q&A including a link to the 'unofficial Apex new users guide' with loads of helpful information and don't forget to put a pin in my location map. Current Tank Info: 225G, BK 300 Deluxe, Deltec PF601, Precision Marine Kalkreactor, 2-LMIII+6 pumps, SpectraPure UHE, Apex, LunarSim, Tunze 6305s. Mixed reef, clam, fish, etc. |
06/15/2008, 04:35 PM | #15 |
Registered Member
Join Date: Feb 2006
Location: Chicago 60607
Posts: 1,130
|
Someone should sticky this thread...
__________________
...and life spirals into astonishing diversity. Current Tank Info: Hawaiian inspired 109g Miracles Rimless - 100g Prop Tank - 300g total system volume |
06/15/2008, 05:52 PM | #16 |
Registered Member
Join Date: May 2005
Location: Forest Lake, Minnesota
Posts: 17
|
Great ideas
|
06/21/2008, 03:51 PM | #17 |
Registered Member
Join Date: Mar 2002
Location: Oak Creek, Wisconsin
Posts: 2,878
|
Great thread Ken!
__________________
E Malama O Ke Kai ><))))"> 60g Deep Blue Professional Rimless Cube (24x24x24) Trigger Systems Ruby 36S sump; 2-Vortech MP10wes; Reef Octopus 6 skimmer; Radion LED Fixture; Apex Controller. |
06/23/2008, 12:19 PM | #18 |
Premium Member
Join Date: Jan 2007
Location: Redmond, WA
Posts: 8,151
|
Program which uses 2 float switches to fill RO/DI reserve:
If Time > 00:00 Then DM1 OFF // Init dummy timer to off If Switch1 Closed Then DM1 ON // If lower switch closes then turn on dummy timer Max Change 030 M Then DM1 ON // Allow the timer to stay on long enough to fill holding tank If Time > 00:00 Then ROD OFF // RO/DI defaults to OFF If Timer DM1 = ON Then ROD ON // If dummy timer is on (because low water level hit) then turn on RO/DI If Switch2 Closed Then ROD OFF // If high water float hit then turn off RO/DI In short the Max Change should be large enough to allow the holding tank to fill + a little. The Max Change gives you a backup in case Switch2 fails. If the holding tank fills before Max Change time then switch2 will float and turn off RO/DI
__________________
Click on my name to visit my homepage and access a collection of AquaController and Apex software, tips, trick and other Q&A including a link to the 'unofficial Apex new users guide' with loads of helpful information and don't forget to put a pin in my location map. Current Tank Info: 225G, BK 300 Deluxe, Deltec PF601, Precision Marine Kalkreactor, 2-LMIII+6 pumps, SpectraPure UHE, Apex, LunarSim, Tunze 6305s. Mixed reef, clam, fish, etc. |
07/20/2008, 11:20 AM | #19 |
Registered Member
Join Date: Sep 2000
Location: Gaithersburg, MD (D.C. Metro Area)
Posts: 1,970
|
Picking up on Kenargos excellent comments for much the same reason, here is the temp control portion of my program:
If Temp < 78.8 Then HTR ON If Temp > 78.9 Then HTR OFF If Temp > 79.1 Then FAN ON If Temp < 79.0 Then FAN OFF If Temp > 81.0 Then MH1 OFF Max Change 060 M Then MH1 OFF If Temp > 82.0 Then MH2 OFF Max Change 060 M Then MH2 OFF If Temp > 82.5 Then ACT OFF Max Change 060 M Then ACT OFF If Temp < 77.5 Then ALM ON If Temp < 77.5 Then HTR OFF If Temp > 82.5 Then ALM ON I just added the the last three lines the other day. Came home early on Friday and found the tank lights all off and the temp reading 115. Called Neptune and they confirmed that temp probe is bad. (It was a sudden failure; temp was reading steady steady steady on the data log, then all of a sudden it went haywire.) Had it failed "low" and stayed low, the heater would have come on and cooked the tank. By adding the last three lines (second to last one in particular), a failed temp probe should not cause tank to boil. (Note that I only have cooling fans on open top tank, which are not able to "freeze out" the whole tank. If you use a chiller, you should have an analogous statement (a la Kenargo's) to shut off the chiller (and lights, to be on the safe side) in the event temp exceeds some crazy number, e.g., 87, that would not be reached in ordinary real life situation.) |
07/20/2008, 11:38 AM | #20 |
Registered Member
Join Date: Sep 2000
Location: Gaithersburg, MD (D.C. Metro Area)
Posts: 1,970
|
Picking up on Kenargos excellent comments for much the same reason, here is the temp control portion of my program:
If Temp < 78.8 Then HTR ON If Temp > 78.9 Then HTR OFF If Temp > 79.1 Then FAN ON If Temp < 79.0 Then FAN OFF If Temp > 81.0 Then MH1 OFF Max Change 060 M Then MH1 OFF If Temp > 82.0 Then MH2 OFF Max Change 060 M Then MH2 OFF If Temp > 82.5 Then ACT OFF Max Change 060 M Then ACT OFF If Temp < 77.5 Then ALM ON If Temp < 77.5 Then HTR OFF If Temp > 82.5 Then ALM ON I just added the the last three lines the other day. Came home early on Friday and found the tank lights all off and the temp reading 115. Called Neptune and they confirmed that temp probe is bad. (It was a sudden failure; temp was reading steady steady steady on the data log, then all of a sudden it went haywire.) Had it failed "low" and stayed low, the heater would have come on and cooked the tank. By adding the last three lines (second to last one in particular), a failed temp probe should not cause tank to boil. (Note that I only have cooling fans on open top tank, which are not able to "freeze out" the whole tank. If you use a chiller, you should have an analogous statement (a la Kenargo's) to shut off the chiller (and lights, to be on the safe side) in the event temp exceeds some crazy number, e.g., 87, that would not be reached in ordinary real life situation.) |
08/07/2008, 10:34 AM | #21 |
Registered Member
Join Date: Aug 2005
Location: Springfield, VA
Posts: 71
|
Here is the worst thing that has happened to me with my AC3. I have all the over protective statements as mentioned....but a human in the loop can always screw things up...
The heater was on and someone went into my basement to get a bottle of Rum and accidentally pulled out a DC4 plug...unfortunately this was the first DC in a line of many and with no power when the AC3 tried to the heater, plugged into a separate DC8 to shut off it could not...well the tank went up to 88 before I realized the lights had not come back on in the morning and went down to the basement to figure out what was going on..i was very confused as everything was still running until i noticed the heater was in off mode on the AC3 but was still emitting heat and my Refugium powerhead and salt storage pump were off and traced it back to the DC4 being unplugged, well I plugged in an bam, everything started working, lights turned on, which I turned off to keep the heat down as my sump fans worked there asses off to cool the temp down 9 degrees....anyway moral of the story is that a human in the loop can always break good equipment, by the way the alarm did not sound because it was plugged into the same DC8 as the heater and the AC3 could not talk to the DC8. I have the AC3 set up to email my pager now....everything survived and looks good (actually all my soft corals open a lot more know strangely enough) I took temp readings by three different means and determined my AC3 was off by about 5.5 degrees so the tank was running around 75ish when i though it was running around 80. With that fixed the tank is actually in better looking condition than ever. |
08/07/2008, 05:00 PM | #22 |
Registered Member
Join Date: Apr 2004
Location: NJ
Posts: 232
|
So would that be an RUI? Reefing Under the Influence.
__________________
Live and Learn |
08/09/2008, 09:16 AM | #23 |
Registered Member
Join Date: Jun 2003
Location: Salisbury, MD - 2 hrs from DC
Posts: 819
|
Any other best practices? These are great. Also, is there a website where people post their Aquacontroller programs?
__________________
~~~~~ / ^ ^\ | 0 0 | .\ ~ / The Big Mo' - in honor of Trey and Matt Current Tank Info: 360 reef / 700 system with 4xSfiligoi XR6s, Sfiligoi XR4, BubbleKing 300 Deluxe Internal, Deltec PF601s, PM Kalk, Deltec FR616, Deltec FR509, AquaController APEX, Tunze 6305, 2x6205, 2x6101, 6100, 3xDart Golds, Barracuda, Snapper, 2xOceans Motions |
08/30/2008, 01:56 PM | #24 |
ARKSC Founding Member
Join Date: Dec 2004
Location: CT
Posts: 2,823
|
How about this?
Max Change 015 M Then LT1 OFF I've got restrike problems with my MH HQI ballast. They will NOT turn back on anytime within 12-15 minutes after having been turned off. And if you try to turn them on, that 12-15 minute clock just seems to start all over. Having the above statement just keeps me from frustrating myself. If I foolishly try to turn them on too soon, I won't reset the clock. And if I turn them off manually for a few minutes, but have got a timer that will turn them back on soon, this prevents that problem too. They'll stay off as long as needed for the restrike to reset, but no longer. |
08/30/2008, 02:48 PM | #25 |
Registered Member
Join Date: Jun 2003
Location: Salisbury, MD - 2 hrs from DC
Posts: 819
|
I'm not sure if this qualifies as a "best practices" pointer, but if you need to extend the distance between your PX-1000 and the main unit beyond the 15' max OR if you need to extend your DC4 or DC8 beyond the 10' max distance, I have detailed instructions on how to do it on my build thread on page 8. Just click on the little red house on top of my post and go to page 8 of the thread. I extended my DC8 to 100 feet with no problem and my PX-1000 to 45 feet. I'm not sure how much further I could go, since I didn't try, but at least to these lengths the solution works. Cheers and great thread.
__________________
~~~~~ / ^ ^\ | 0 0 | .\ ~ / The Big Mo' - in honor of Trey and Matt Current Tank Info: 360 reef / 700 system with 4xSfiligoi XR6s, Sfiligoi XR4, BubbleKing 300 Deluxe Internal, Deltec PF601s, PM Kalk, Deltec FR616, Deltec FR509, AquaController APEX, Tunze 6305, 2x6205, 2x6101, 6100, 3xDart Golds, Barracuda, Snapper, 2xOceans Motions |
|
|