Apex/Apex EL AOS version 5.03_AB17 and Apex Classic AOS version 4.53_AB17 introduced significant enhancements to Apex programming - the ability to use percentage values in programming. While this new capability was primarily introduced to both enhance and simplify programming used for Neptune Systems' COR pumps, the benefits are wider-reaching; these enhancements are usable for many types of Apex outputs:

  • COR-15 & COR-20 outputs
  • Apex base variable (VarSpd) outputs
  • VDM variable (VarSpd) outputs
  • VDM serial outputs
  • WAV outputs
  • Vortech outputs (WXM-connected and MXM-connected)
  • Nero outputs (MXM-connected)
  • Vectra outputs (MXM-connected)
  • Blade outputs (MXM-connected)
  • LSM lunar outputs


The enhanced syntax using a percent value is not available for programing of:

  • any type of output which can only be ON or OFF: EnergyBar, email/alarm, virtual, AFS, and DC24 outputs
  • DŌS outputs
  • outputs which have multiple color channels: AI (Hydra/Vega) and Radion outputs

These statements now support the use of a percent value (0-100) in programming for the supported types of outputs:

  • Set
  • Fallback
  • If Time
  • If FeedX
  • If probe-name
  • If switch-name
  • If Output output-name
  • If Sun
  • If Moon

For example, the following statements are now valid:

  • Set 100
  • Fallback 20
  • If Time 08:00 to 17:59 Then 85
  • If Swx5 CLOSED Then 0
  • If Output GoSlow = ON Then 5

Important Usage Notes:

  • When specifying percentage, use only a whole number from 0 through 100, such a 25, 77, or 100. The use of a value containing a decimal point, e.g. 99.5, is not supported.
  • The % symbol is not used in programming; use only a number when you wish to specify a percentage.
    Correct:
    Incorrect:
    Set 75
    Set 75%

A key benefit of the new ability to use % is that it makes it very simple to conditionally specify a constant speed or intensity without the use of a profile when programming a variable output. Previously, if not using the Apex Fusion scheduler, it was necessary to use a Ramp type profile having the Start and End Intensity both set to the same value to get a constant speed/intensity.

This image summarizes which statements may be used with a % value in programming for the various supported output types:


A special note about using percent value in programming for Vortechs which are connected through a WXM: If a percentage value of 0 - 20 is used in advanced programming for a Vortech pump, the Vortech will just run at 20%. For this reason, do not use 0 (for example, If FeedA 000 Then 0) to command the Vortech to be stopped. Instead of 0, use OFF, i.e., If FeedA 000 Then OFF. This caveat does not apply to Vortechs controlled through a Mobius Expansion Module (MXM)




Also introduced is a programming keyword, ‘Speed’ which is used in programming to test the current speed of a COR pump and take actions accordingly. It is an enhancement to the If Output statement. The syntax is:
If Output CORname Speed [] % Then [ON/OFF/profile/%]

Example statements:
- If Output COR_8_1 Speed < 50 Then OFF
- If Output COR_8_1 Speed > 90 Then ON
- If Output COR_8_1 Speed > 60 Then RampUp
- If Output COR_8_1 Speed = 0 Then OFF

UPDATE: In Apex/Apex EL AOS 5.04_#### and Apex Classic firmware 5.03_4D19, a further enhancement was made: you may now use the keyword "Percent" instead of "Speed"; if you use 'Speed', the Apex will automatically change it to 'Percent'.

As a practical example, let’s say you wish to have your in-sump skimmer turn off whenever the COR pump is running at less than 95% speed and also desire to have the skimmer startup be delayed, allowing the water level in the sump to normalize after the COR return pump is running again. The programming for your skimmer outlet will be:
[Skimmer]
Fallback OFF
Set ON
If Output COR_8_1 Speed < 95 Then OFF
Defer 3:00 Then ON

The If Output COR_8_1 Speed < 95 Then OFF statement will turn the skimmer off whenever the COR is running at less than 95% speed (or if the COR is turned OFF), and the skimmer will not turn back ON until 3 minutes after the COR is running at a speed of 95 percent or greater.

Apex owners who choose to use this capability in advanced Apex programming should use the < or > operators whenever possible; the = operator will rarely be preferable to use.

The If Output output-name statement may also be used to test the current speed/intensity of outputs other than COR outputs (any output type in which % can be used, as listed at the top of this post). This capability typically will only be used by advanced users. It is important to understand how the evaluation process works when an If Output XXXX Speed statement is used. How an outlet state is evaluated by If Output XXXX Speed % Then... and an If Output XXX = OFF Then... statement is a bit different depending on if that output is ON @ 0% or is OFF.
If an output named Foo is at 0:
If Output Foo Speed < 1 Then... evaluates as TRUE
If Output Foo = OFF Then... evaluates as FALSE, because it is ON @ 0%, not actually OFF)

If an output named Foo is OFF:
If Output Foo Speed < 1 Then... evaluates as TRUE, just like if Foo is at 0
If Output Foo = OFF Then ON... evaluates as TRUE, differently than if Foo is at 0



Lastly, the If Error statement has been enhanced to support the COR-15 and COR-20. See the COR-15 & COR-20 User Guide for full details about using the If Error statement with a COR.



Details about programming enhancements introduced in the previous AOS 5.02 and 4.52 releases may be found here: https://forum.neptunesystems.com/sho...-Firmware-4-52