FANUC multi-path waiting: why reversing the order of the same two wait points prevents progress
The 30i/31i/32i-B waiting rules are illustrated with two participating paths. A normal timing table is compared with circular waiting caused by reversing A and B, separating cycle-time differences from unreachable wait points.
Contents
Both paths stopped at wait commands does not necessarily mean one path is machining too slowly. If each awaits a marker that the other can reach only after passing its current wait point, waiting longer cannot resolve the ordering contradiction.
The wait matches markers, not arbitrary M-function completion
The FANUC 30i/31i/32i-MODEL B descriptions manual B-64482EN/03, §7.5, pages 254–255 (public mirror of the original manual) explains that multi-path waiting matches configured wait M codes on participating paths before subsequent blocks execute. A wait command must occupy its own block. These M codes are not output to the PMC, so they must not always be treated as ordinary auxiliary functions with an M-function completion signal to investigate.
The model uses two participating paths in a multi-path system with the function available. Waiting is assumed active, without a wait-ignore operation and with no other participating paths. A and B are conceptual labels, not M codes that can be entered into a machine.
Normal ordering gives calculable wait times
| Stage | Path 1 | Path 2 | Joint result |
|---|---|---|---|
| Before wait A | Machines for 3 s; reaches A at t=3 | Machines for 5 s; reaches A at t=5 | Matches at t=5; path 1 waits 2 s |
| After A and before B | Machines another 2 s; reaches B at t=7 | Machines another 4 s; reaches B at t=9 | Matches at t=9; path 1 waits another 2 s |
This original timing model ignores command-execution overhead. The joint duration is max(3,5)+max(2,4)=9 s, not the 14 s sum of machining times on both paths. Path 1 spending 4 s waiting does not imply a problem with its own machining speed.
What changes if only one path reverses the order?
Now path 1 executes A→B while path 2 executes B→A. Path 1 stops at A waiting for path 2 to reach A; path 2 stops at B waiting for path 1 to reach B. Each must clear its present wait before it can reach the point required by the other, creating circular waiting.
Unlike the normal example, neither other path will arrive simply by completing a few more seconds of machining. Reducing feed or extending the wait cannot change marker order. This conclusion follows from dependencies between execution sequences, without assuming a timeout alarm must occur.
Inspect both execution positions together
At minimum, correlate the current wait marker, participating paths, the other path's current program position and whether both are in the same machining cycle. A marker appearing somewhere in a program does not prove the current execution can reach it. A conditional branch skipping a wait point also changes the matching relationship.
If one path is still completing a finite machining segment, first analyze cycle timing. If both are stopped at mutually unreachable wait points, inspect program order. Wait relationships often coordinate shared machining space; forcing waits to be ignored is not a way to validate this model. Further program-behavior resources are in the OPTION section.