I need to create a page where the operator can setup a schedule for a valve to open.
Is there a tag/property in the “schedule” control that becomes active when the current time and date is within the added schedules?
What is the best way to do this?
are you trying to turn the valve on/off at a certain time each day or different times for different days?
It could be at any time. the operator has to be free to select whatever date and times for the valve to open.
Im not familiar enough with the equipment schedule component to give you any good info there.
I would suggest maybe using 2 calender components and saving the date range to a table in the database. then you could have a global timer script running say every minute that looks at the rows in the database and checks to see if the start datetime is >= to the current time. If it is then check the status of your valve control tag. If the tag is 1 do nothing, if it is 0 write it to `1(assuming 1 = on and 0 = off). Then you could do the same for the end datetime. Have the global timer script check to see if the end date time is past the current time, if it is then have it write the valve to 0. You could even build in a column that you could write a 1 to that would let you know that the sequence has been performed and which could also be used to filter out any events that have been run already in your query.
It is a pity that having developed a schedule control that looks so good there are not a few properties on it that would allow a bit of interaction with it such as knowing when something that has been scheduled is currently active.
I’ll try your suggestion see how I get on.
you may very well be able to do some of those things with the schedule component. I just dont have any experience with it. regardless, you would still need to run some kind of script on the gateway side to actually turn the valve on and off.
The equipment schedule component is not meant to be used as an actual scheduling engine. It is just supposed to be a UI to view a schedule, not execute one.
That said, the control does tell you what the selected event id is, and it should be a trivial exercize to see if any event’s time range straddles the current time - it’s just two comparisons (start < now and end > now)
Realise this is a few years old but … Carl, could you please elaborate on how you set up the binding for this? For example, the user has created a weekly, repeating schedule and now I want to bind that to electrics (valves, pumps, motors, espresso machine, etc.). What specifically are the bindable properties from the schedule itself? I’ve tried using “propertyChange” from the script builder in the Schedule component to set expression and memory tags but they never seem to fire anything (Ignition 7.6). Can I use alarming features to connect an active schedule to tags?
Again - that’s not what the equipment schedule component is. It is not an “active schedule”. It is certainly not an engine for a scheduled control system - it’s just a view.
Maybe SFCs would help you write a schedule engine that actually controlled your devices? Ignition doesn’t really have a “turn these things on/off at these times” kind of control schedule feature built-in.