These are just my thoughts so dont get too excited. I think you may have overcomplicated the code by being too redundant, many of the bits are used I think when not needed. Its good to cover bases but many time the KISS principle gives you a good start and makes it easier to troubleshoot/modify as needed.
Please explain the machine process and in what order you want the stacker and seal to fire....ie stacker fire, seal fire, stacker fire, seal fire OR ???? fire both same time twice??? OR ????
What is I:0/15?
I see the main code simpler but will have to study it some, I am a little slow in my old age.
An example of simplifying it would be remove the home position sensors from Rung 0, they arent really necessary and dont use the self latch.
On rung 1 remove estop and light curtain and put B3:0 in there place
The pass or fail light outputs should not be needed on other rungs, some bit (B3) , probably already there is turning them on. The pass/fail lite outputs are for info normally and not part of the actual process.
Use the home/extend sensors in the actual process of extending or returning home, shouldnt be needed prior to the cylinders use.
It is possible to make the cylinders loop and add
a counter for mulitple firings, in that case the extend/home sensor may be needed.
More later.