I almost always use an integer value as the control for all my sequences, and have found this to be really flexible, easy to fault find, and easy to read and understand. (sorry can't post an example at the moment)
Basically each rung consists of a sequence permit bit followed by a comparison to the state value then the transistion condition and then the next state value, with trigger bits for the required actions.
This way I just pass the state value to the HMI and know where the program is at, so I display State number, description & condition all from that value.
Normally I use a function block (or subroutine in AB land) as the control for the sequence, ie at the end of the sequence routine, call this subroutine to set the next state value. This lets me take care of all the diagnostics in the background (time in state, state when fail, etc)
Anyway just my thoughts, if interested I can post an example tomorrow
Basically each rung consists of a sequence permit bit followed by a comparison to the state value then the transistion condition and then the next state value, with trigger bits for the required actions.
This way I just pass the state value to the HMI and know where the program is at, so I display State number, description & condition all from that value.
Normally I use a function block (or subroutine in AB land) as the control for the sequence, ie at the end of the sequence routine, call this subroutine to set the next state value. This lets me take care of all the diagnostics in the background (time in state, state when fail, etc)
Anyway just my thoughts, if interested I can post an example tomorrow