RuntimeBalancer provides lead-lag control of from 2 to 10 BooleanWritables based upon their accumulated runtimes (elapsed active time). This object balances the active runtime of each of the devices. The number of active loads is determined by the Schedule and Required Loads inputs.
RuntimeBalancer is available in the HVAC folder of the vykonPro palette
Setup of the object involves the following properties, as follows:
Facets
Facets applied to the Out (A-J) slots.
Schedule
A StatusBoolean input that controls whether any control device should be on. If this input is true, at least one of the outputs will be active based on runtime
Load Failed
StatusBoolean property which indicates whether one of the commanded loads failed to start.
Number Outputs
Specifies the number of devices (outputs) that are controlled.
Required Loads
Specifies the number of devices (outputs) that should be active provided the Schedule input is true. This input can be linked to logic which evaluates the need for multiple loads to be energized such as in parallel pumping applications.
Last Rotate Time
The timestamp of the last rotation of the lead load.
Runtime Remaining Until Shift
The amount of runtime left until the lead load will be rotated, if the rotateMode is runtime.
Lead Load
BStatusEnum property which indicates the current lead load in the group.
Lead Runtime At Start
The current accumulated runtime of the lead output recorded when the load is designated as lead
Next Load
The load with the least amount of runtime which is the next load to be started.
Next Lead Load
The load output which will be started next if another load is required.
Rotate Mode
Boolean property which determines the mode of operation. When set to interval the component evaluates load runtimes and potentially switches loads at the frequency defined by the rotate interval. When set to manual load runtime evaluations and potential switching only occurs when manually triggered via the manualRotate action.
Rotate Interval
Specifies the maximum amount of time that a given output will be continuously active before triggering the component to evaluate the runtimes and potentially switch running loads.
Feedback Delay Time
Specifies the delay time used to evaluate the feedback links (if any). If an active load does not indicate a running status via its feeback, then an additional load is started to maintain the number of running loads equal to the required number of loads.
Feedback A-J
A StatusBoolean input, to provide positive feedback that a controlled device actually started. If the feedback value does not show true within the Feedback Delay time, the output will show alarm, and the RuntimeBalancer switches to the next output with the least accumulated runtime. Setting this value to true (and not linking) disables this alarm feature.
Out A-J
StatusBoolean outputs, each typically linked to a BooleanWritable control point with a DiscreteTotalizerExt. Outputs are typically used to control loads of some type.
Runtime A-J
These are RelTime inputs that are used for runtime feedback for the corresponding Out A - J. These inputs will typically be linked to the ElapsedActiveTime property of the DiscreteTotalizerExt that is measuring the runtime of the corresponding Out A - J.
Disable Output
This action prompts the user to select which output to disable. This sets the selected output to false and disabled, effectively removing the load from the rotation. This action could be used to disable a load for maintenance or some other reason.
Enable Output
This action prompts the user to select which output to enable. This restores the selected output from being previously disabled.
Manual Command
This action prompts the user to select which output to command and whether to enable or disable the load. The action performs the same functionality as the "Disable Output" and "Enable Output" commands. The design is to allow linking control logic through a BooleanToBalancerCmd component.
Manual Rotate
This action forces the Runtime Balancer component to analyze the runtime for each available load, and to switch running loads if necessary. If the load with the least runtime is currently running, then it will remain running.