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
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.
Then on the site add 4 tags below:
currentStage (numeric) - set this to 1 for now (this will be dynamic and controlled by the site program)
maxStages (numeric) - set this to 1 for now (this will be dynamic and controlled by the site program)
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.
scheduleRef (ref) - set this to the schedule in which the units currently assigned to.
Program 1 - Equip Staging
Create a program that runs on the equips to be staggered when schedule is active. It can be something like 'equip and stageOrder'.
Add the point to be controlled, stageOrder (tag on equip), and currentStage (tag on site) to the program as variables
Create the logic to be like below.
Logic Flow:
Set occSchedule (point to be controlled) to UnOccupied IF currentStage is less than or equal to stageOrder, else null.
Program 2 - Stage Commanding
Create a program that runs on the site. It can be something like 'site'.
Add equipStaging bundle, currentStage, maxStages, stageTimer, and scheduleCurVal to the program as variables.
Also create a new number variable called 'maxStagesVar' in the program and set it to 0.
Create the logic to be like below.
Logic Flow:
Set maxStages as equipStaging bundle > gridSize + addBlock to add 1.
Next Set currentStages as scheduleCurVal = Occupied -> stageUp + stageTimer -> stageUpDelay + maxStagesVar -> maxStages (all linked to stagingBlock)
Next IF scheduleCurVal is not equal to Occupied, Set maxStagesVar to 0, else Set as maxStages.