Here's the Apex programming that it looks like I'm finally settling on between my ATO of RO/DI, newsalt water adjustment/backup, and lime water dosing.
I have a couple pH probes and they are referenced in a few spots for a low and high value. So, if I want to adjust my low and high threshold I only have to do it at one virtual outlet instead of searching for and forgetting someplace that's referencing the pH. Kind of a like a global variable in programming or a central config. The virtual outlets also allow for a defer on the pH value incase they are getting interferences and bouncing up and down.
pH High and Low triggers central configs
[ vPH_High_C7 ] ( Cntl_C7 )
Program Type: Advanced
Display Icon: Up/Down Arrows
Logging: Enabled
Program:
Set OFF
If DT_pH > 8.50 Then ON
If BM_pH > 8.50 Then ON
Defer 001:00 Then ON
[ vPH_Low_C8 ] ( Cntl_C8 )
Program Type: Advanced
Display Icon: Up/Down Arrows
Logging: Enabled
Program:
Set OFF
If DT_pH < 7.85 Then ON
If BM_pH < 7.85 Then ON
Defer 001:00 Then ON
kalk/limewater
[ Lime_7_3 ] ( 7_3 )
Program Type: Advanced
Display Icon: Hourglass
Logging: Enabled
Program:
Fallback OFF
Set OFF
OSC 000:59/000:01/000:00 Then ON
If Outlet vPH_High_C7 = ON Then OFF
If FeedD 230 Then OFF
That's very simply saying dose for 1 second every minute 24/7. Unless the pH hit's what I have my vPH_High_C7 virtual outlet to trigger on at. I calculate this out to around 1.5 gallons every day of fully saturated lime water based on the stand alone spectrapure pump that's used. The FeedD timer is for when I fill up the 29g tote and mix up the kalk into the fresh ro/di. I don't want it to dose until it's all settled out. I turn on the feedD which does nothing but make sure this is used for a few hours. Then I don't have to forget to turn off or back on the outlet. It will turn back on automatically.
Now for the ATO components. I have a low and high triggers on top of the tsunami AT1's that I have my pumps plugged into for the ultra high failsafes but those aren't in my apex as they are separate. I like having a few things like that separate in the off chance the apex outlet gets stuck on which is not common.
High virtual outlettriggered by a float switch and backed up by a few Tsunami AT1s. One for each new salt pump, lime water pump, freshwater ato pump, and AWC pumps.
[ vSumpHigh_A7 ] ( Cntl_A7 )
Program Type: Advanced
Display Icon: Up/Down Arrows
Logging: Enabled
Program:
Set OFF
If SmpH_2 OPEN Then ON
If SmpH_2 CLOSED Then OFF
Defer 000:01 Then ON
Low virtual outlettriggered by float switches. I have two setup in serial working together one failsafe higher then the normal operating one. This one triggers the ATO.
[ vSumpLow_A6 ] ( Cntl_A6 )
Program Type: Advanced
Display Icon: Up/Down Arrows
Logging: Enabled
Program:
Set OFF
If SmpL_1 CLOSED Then ON
If SmpL_1 OPEN Then OFF
Defer 000:02 Then ON
Now that I have my lime water split and I have my conductivity probe stabilized I can do a little logic to decide to top off with RO/DI or my new salt mix used in AWC. But I also have a failure to operate override so the opposite will kick in. I'm also more comfortable doing this with the conductivity probe now that my Top off is so much less now. If one or the other is used in error it's not that much at all and will easily catch it as I calculate it would take just over a week of the wrong one being used to switch the salinity by ~.5ppt. Otherwise I would not feel comfortable with using the conductivity probe that can easily be thrown off by something as simple as an air bubble.
The ATO warning that something is wrong with one or the other top of pumps. I have a mj1200 in my 50g brute new saltmix container and a mj1200 in the bottom of the SlimJim ro/di container. (I some how have like 100 mj1200 pumps. )
[ vATOWarn_B8 ] ( Cntl_B8 )
Program Type: Advanced
Display Icon: Hourglass
Logging: Enabled
Program:
Set OFF
If Outlet vSumpLow_A6 = ON Then ON
Defer 034:00 Then ON
That defer is there for a reason which is coming now and where the order of the lines of code really matter. Here's the Fresh RO/DI ATO outlet programming that references the Low/High switches, pH, and ATO warning. And this will need a lot of comments.
[ ATO_6_4 ] ( 6_4 )
Program Type: Advanced
Display Icon: Up/Down Arrows
Logging: Enabled
Program:
Fallback OFF
Set OFF
OSC 015:00/001:00/000:00 Then ON
(I do not like unrestricted continuous flow. It's not needed and 1 minute every 15 minutes should be more then enough time to top off. This is where the ATOWarn virtual outlet kicks in if it's not and will trigger the new salt mix pump to top off. )
If Outlet vSumpLow_A6 = ON Then ON
(Simple enough.)
If Condx9 < 34.5 Then OFF
(Now here is where the order of programming lines come in. This will cause the New Salt pump to kick in to top off.)
If Outlet vATOWarn_B8 = ON Then ON
(IF for some reason there's an issue and the new salt pump doesn't kick on this will turn this pump back on. Look above. vATOWarn has a defer timing of 34 minutes. The ATO and new salt pump outlet are 1 minute every 15 minutes. If that's not enough time to complete for some reason with in two cycles that means there could be something wrong and this ATO pump should kick in to help out regardless of what the conductivity/salinity probe says.)
If Outlet vSumpLow_A6 = OFF Then OFF
(This turns the entire thing off as soon as it's topped off.)
If Outlet vSumpHigh_A7 = ON Then OFF
(High mark failsafe which there's also the Tsunami AT1s in case this even fails. )
If Outlet return_7_1 = OFF Then OFF
(no need to top off as the vSumpHigh will be triggered as well but again incase it does this will turn it off too.)
If Outlet vATOEmpty_B6 = ON Then OFF
(Run Dry protection. I'm looking at the Avast 400ml/m Diaphragm pump to eliminate this worry. Right now I have a ton of spare mj1200s so using those. This is also part of my email alert so I know to top off my top off container. This is a horizontal float switch at the bottom of the SlimJim.)
If Outlet vATOFull_B7 = ON Then OFF
(I also have a horizontal float switch at the top to trigger this and an alert. Basically I can now have my ATO run as normal while I'm filling up the ATO SlimJim container. It has a float valve connected to my RO/DI which has an ASO that will shutdown the RO/DI once the container is full. BUT I do not want the ATO to continue running once full. I don't like the idea of a continuous unlimited supply of water from the water company being available. I also don't want to RO/DI to start/stop continually causing TDS creep wasting away my DI very quickly. So, once this is triggered it will shutdown my ATO and alert me via text and email. I will then manually shutoff the RO/DI unit and turn off the vATOFull virtual outlet resuming the ATO operation. Once the switch is cleared I can turn that virtual outlet back on.)
OK, so now for the new salt mix backup/ salinity adjustment. I would not normally advise this kind of control as the conductivity probe in a sump continuously is susceptible to a lot of different interference from electricity, bubbles, slime, precipitation, bacteria growth, coralline growth, algae growth, etc. etc. BUT like stated above my risk if very very minimal now with the lime water dosing taking up the majority of my top off needs and this is a good backup to incase the pump for the freshwater ATO fails for some reason.
[ NewSalt_6_7 ] ( 6_7 )
Program Type: Advanced
Display Icon: Hourglass
Logging: Enabled
Program:
Fallback OFF
Set OFF
OSC 015:00/001:00/000:00 Then ON
(Just like above this shouldn't need near a minute to top off what's needed. Top off needs are not that often so every 15 minutes should be plenty.)
If Outlet vSumpLow_A6 = ON Then ON
(same as above)
If Condx9 > 35.5 Then OFF
(here is the opposite from the fresh water. If above 35.5 don't run.)
If Outlet vATOWarn_B8 = ON Then ON
(EXCEPT if for some reason the freshwater ATO pump can't keep up or is having problems for some reason. Something is wrong this will be a backup to that regardless of what the salinity is.)
If Outlet vSumpLow_A6 = OFF Then OFF
If Outlet vSumpHigh_A7 = ON Then OFF
If Outlet return_7_1 = OFF Then OFF
(Same as above)
If NSE9_4 OPEN Then OFF
(This is a horizontal float switch in the 50g brute can. I'm also looking to replace the mj1200 in here for the 400ml/m diaphragm pump.)
Defer 000:20 Then ON
(This little defer statement allows the freshwater ATO pump be the primary.)
I also have a ATO fail virtual outlet. Which will shutdown my return pump and in effect my skimmer as well.
[ vATOFail_A5 ] ( Cntl_A5 )
Program Type: Advanced
Display Icon: Hourglass
Logging: Enabled
Program:
Set OFF
If Outlet vSumpLow_A6 = ON Then ON
Defer 102:00 Then ON
[ return_7_1 ] ( 7_1 )
Program Type: Advanced
Display Icon: Spigot
Logging: Enabled
Program:
Fallback ON
Set ON
If DT_Sw1 OPEN Then OFF
If Outlet vfeed_A8 = ON Then OFF
If FeedB 000 Then OFF
If Outlet vATOFail_A5 = ON Then OFF
Defer 015:00 Then ON
The dual inline low and high switches with the pressure switches to tsunami all in behind that nastiness.
another one of the several of the pressure switches in use
redundant failsafe high switch
The SlimJim
All three containers