Shift Work Schedules

Is it possible to make A, B, C, D type shifts? Most of our users work on a two week rotating shift. 6am to 6pm, 2 days on, 2 days off, 3 days on, 2 days off, 2 days on, 3 days off.

It seems that schedules can only repeat on a weekly basis, is this true?

Itā€™s absolutely possible, and schedules can skip any number of weeks. It will take a little bit of configuring, but itā€™s not hard.

Schedule A is a basic schedule of 2 days on, and in the ā€˜Repeatingā€™ section turn on ā€œAlternateā€, set to weekly, with one week on, one off, starting in week 1. Schedule B is also a basic schedule, 3 days on, repeats alternate weeks, starting in week 1. Schedule C is again a basic schedule, 2 days on, repeats alternate weeks, but starting in week 2, not week 1.

Now youā€™ll need to make a composite of these schedules. Since a composite can have only two other schedules, weā€™ll first make a composite AB which is schedules A and B. Then weā€™ll make a composite ABC, which is a composite of the composite AB and the basic schedule C. Your employees then get this composite ABC as their schedule.

2 Likes

Amazing! Thank you! I completely forgot about composite schedules since I was making them from the HMI.

1 Like

Can composite schedules only be created in the Gateway console? It doesnā€™t seem possible to create or edit them from the Schedule Management component.

Yeah, still Gateway only AFAIK.

Iā€™ve been asked to create an operator scheduling solution in Ignition. They do have four shift rotations so will need to build composite schedules. The scheduler will be the Plant Manager so Iā€™m not sure I want to deliver them a solution that requires them to modify schedules in the Gateway page, then switch to the Ignition Schedule Management component and finally to my custom screens to complete the schedule. It doesnā€™t seem elegant enough.

Canā€™t imagine Iā€™m the only one who has tried to implement this. Has anyone else found a solution that isnā€™t so scattered?

Reach out to your sales rep or support and let them know you need this. We have a ticket for it, and you can help move it up in priority. (If you talk to support, tell them ā€œFB15543ā€)

Hi Kathy, I have a very similar schedule as the one you helped john.furby with. Do you know if your solution fixed his problem? Has the Schedule function has changed any since this post in 2018? I am using Version 8.0.

Creating schedules in the web interface hasnā€™t changed, but in 8.0.11 we added system.user.addCompositeSchedule(), which lets you create a new composite schedule from two existing schedules.

Is there a way to see the ā€œActive Now?ā€ Status of each schedule? I have looked for tag but none to be found. It seems like all the other information about the schedules have a a system tag. We are currently using Basic schedules and Composite schedules. Sometimes they change incorrectly and I was hoping to trend the Active Status in Historical form to find my problem.

Iā€™m using 7.9 still, but +1 for having tags displaying active schedules. Currently, the way I track it is kind of hacky, but it works. I have 3 CNC router schedules, and for each schedule I created a generic user. Then I run a gateway timer script to determine if the user is scheduled and write that to a memory tag.

shifts = ['1','2','3']
for value in shifts:
	username = 'router_Shift' + value
	user = system.user.getUser('default',username)
	shiftBool = system.user.isUserScheduled(user)
	tagPath = 'CNC_Global/Schedules/router_Shift%s' % (value)
	system.tag.write(tagPath, shiftBool)
1 Like

So your shift names are 1,2,3 and your user is router_Shift I believe.

This will return the shift value when the shift changes?

I would set my gateway script timer to a small value and record it historically.

I think my shifts are switching on and off periodically going from Sunday to Monday on the 5P - 5A shift.

Did you use this to find a similar problem?

The shift names do not matter, because they are assigned to a user, in my case, router_Shift1. My tags are named the same and are Boolean type memory tags. The gateway timer is set at 3000 ms. On my shift tags are value change scripts.

if currentValue.value:  #This fires when shift changes from inactive to active
	time = system.date.now()
	system.tag.write("[.]start_Shift1",time)

image

EDIT This system has worked flawlessly for me in 7.9, no problems with wrong shift changes

Thank you for the suggestion. I will try it soonā€¦

For the record, I ended up just not using the schedules. I just wrote a script to determine what shifts it was currently. I still used the Userā€™s schedule to determine what schedule they should be on. It was far easier than trying to deal with Ignitionā€™s scheduling system, especially if you have multiple servers.

I am trying to update composite schedules via scripting in perspective but am having trouble. I can add new schedules just fine, but specifically am having trouble figuring out how to update an existing composite schedule. I don't see anything in the documentation for CompositeScheduleModel on how to update the schedules that make up the composite schedule. Some time has passed since the original post, but was hoping maybe this has been added since. Anyone have any ideas?