Staging Block

Staging Block

The staging block allows the user to increment/decrement stages up or down after x delay. This block can be used to stagger start units.

The staging block can be found under the Language category or by searching for it by name.

Staging Block Properties

Below are each of the properties and description of each.

  • stageUp (bool or obj) - if true, the block will increment by 1 (make sure stageDn is false for it to work)

  • stageDn (bool or obj) - if true, the block will decrement by 1 (make sure stageUp is false for it to work)

  • holdStage (bool or obj) - if true, the block will hold the current number of stages

  • stageUpDelay (number or obj) - duration number for stage up time delay in seconds (for 1 min put 60)

  • stageDnDelay (number or obj) - duration number for stage down time delay in seconds

  • minStages (number or obj) - minimum number of stages to decrement too

  • maxStages (number or obj) - maximum number of stages to increment too

Staging Block Example

Below is an example of how to stagger units on with 10 second intervals and after the schedule is set to occupied. There are two programs involved. One runs on the equips, which controls the occupancy point based on the stage. Then the second one runs on the site that handles all the staging.

Tag setup

  1. The user would first tag all the equips they wish to include in the staging. They would tag them with a numeric tag called 'stageOrder' and number them accordingly in the order you would want them to turn on.

  2. Then on the site add 4 tags below:

    1. currentStage (numeric) - set this to 1 for now (this will be dynamic and controlled by the site program)

    2. maxStages (numeric) - set this to 1 for now (this will be dynamic and controlled by the site program)

    3. stageTimer (numeric) - set this to however long you would like to delay each unit (its in seconds - put 60 for 1 min etc). This is optional to add, you can set it on the stagingBlock in the program if you prefer. By tagging it you can control it from the site.

    4. scheduleRef (ref) - set this to the schedule in which the units currently assigned to.

Program 1 - Equip Staging

  1. Create a program that runs on the equips to be staggered when schedule is active. It can be something like 'equip and stageOrder'.

  2. Add the point to be controlled, stageOrder (tag on equip), and currentStage (tag on site) to the program as variables

  3. Create the logic to be like below.

Logic Flow:

  1. Set occSchedule (point to be controlled) to UnOccupied IF currentStage is less than or equal to stageOrder, else null.

Program 2 - Stage Commanding

  1. Create a program that runs on the site. It can be something like 'site'.

  2. Add equipStaging bundle, currentStage, maxStages, stageTimer, and scheduleCurVal to the program as variables.

  3. Also create a new number variable called 'maxStagesVar' in the program and set it to 0.

  4. Create the logic to be like below.

Logic Flow:

  1. Set maxStages as equipStaging bundle > gridSize + addBlock to add 1.

  2. Next Set currentStages as scheduleCurVal = Occupied -> stageUp + stageTimer -> stageUpDelay + maxStagesVar -> maxStages (all linked to stagingBlock)

  3. Next IF scheduleCurVal is not equal to Occupied, Set maxStagesVar to 0, else Set as maxStages.

 

Thats it, now if the schedule is occupied, the staging block will increment the currentStage variable until it reaches the maxStages limit + 1. That will turn on the units one after the other until currentStage is past the stageOrder limit on that particular unit, then it'll release the point and let the schedule control it.