assigning an ordering number and that the lowest numbers are the first to be added.
•Any Available slaves that have a mode of Use First will have the lowest ordering numbers. If two or more Use First boilers exist, they are numbered according to their assigned Slave sequence order or Modbus address if this value is zero, as descibed above.
•Next are slaves that have the mode of Equalize Runtime. When the add boiler routine gets to this group it first invokes the Voluntary Lead Rotation routine (to make sure this is done, but only once) and then selects an Available boiler, if any, ordered according to:
— The first is the lead boiler per the LeadBoilerSeqNum parameter.
— The rest are the other slaves ordered according to the LL
•If this parameter is "Rotate in sequence order", then they are ordered according to their LL – Slave sequence order or Modbus address if this value is zero, as descibed above.
•If this parameter is "Measured run time" then they are ordered according to their reported run time. If two have the same measured run time, then either may be selected.
•Last are any Available slaves that have a mode of Use Last. These will have the highest numbers. If two or more Use Last boilers exist, they are numbered according to their assigned Slave sequence order or Modbus address if this value is zero, as described above.
Voluntary Lead Rotation
The current lead boiler is identified by the LeadBoilerSeqNum value. This value will change when the stager has asked the sequencer for a boiler to add and either:
•the boiler identified by LeadBoilerSeqNum is neither Available nor Firing (i.e. it has a fault or is OnLeave), or
•the LeadBoilerRunTime value exceeds Lead rotation time.
In either of these cases, the algorithm performed is: If the Lead selection method is "Rotate in sequence order", then LeadBoilerSeqNum is incremented, and then new lead boiler is the one that is a slave in Equalize Runtime mode that is responding to the LL master (i.e. not OnLeave or Recovering, but it might be Firing), and:
—has a sequence number equal to LeadBoilerSeqNum, or.
—If no boiler has this then the closest one with
74
Date: 8-4-2010
Revision: 0
Form: 2396
a sequence number greater than this number is used, or
—If no boiler has a greater sequence number, then the one that has the smallest sequence number is used (wrap around).
Otherwise when the Lead selection method is "Measured run time", then the lead boiler is the one having the lowest Measured run time value. If two have the same measured run time, then either may be selected.
The LeadBoilerRunTime value is then set to zero to give the new lead boiler a fresh allotment. Note: if the old lead boiler is the only one, then this process may end up re- designating this as the "new" lead with a fresh time allotment.
Sequencer ordering function
Part of the sequencer is called by the stager just before the stager runs, to give the sequencer a chance to assign order numbers to stages that very recently turned on, and to maintain these in a sequence. It uses the StagingOrder item in the Slave Status table for this purpose.
The sequencer ordering function examines all slaves and sets to zero the StagingOrder of any stage that is not Firing.
This ensures that any stage that has left the Firing condition recently is no longer in the number sequence.
Next, skipping all of those that have 0 values in StagingOrder it finds the lowest numbered StagingOrder and gives it the value 1, the next receive 2, etc.
Thus if gaps have developed due to a slave dropping out these are filled in.
Finally, the ordering function continues on, giving the next numbers to and Firing stages which have a 0 StagingOrder values (i.e. they recently were added, or they recently returned from OnLeave).
Example: Before After Notfiring 3 0 Notfiring 0 0 Firing 2 1 Firing 5 3 Firing 0 4 Firing 4 2
Sequencer Drop Lag boiler selection
When the stager asks the sequencer for a lag boiler to drop the sequencer looks at the