FA-92173 / PLC ladder logic scan cycles / Member archive
FIFO shift duplicates the last element into the vacated slot · case 03
Stale data remains visible in the file beyond the valid position.
Case contract
FIFO load (FFL) and unload (FFU) pair on one file of the given length. ops is a list of [op, value], one triggered instruction per scan. Load stores value at the position and increments it; when full (position == length) the load is ignored. Unload moves element 0 to dest, shifts the file toward 0 and zeroes the vacated last element; unloading an empty FIFO leaves dest unchanged. DN is position >= length and EM is position == 0. Return [position, dest, DN, EM, file] per scan.
Why this case matters
Ladder programs are executed as repeated scans; each defect here changes what a rung, timer, counter or data-table instruction reports on a particular scan, which is how commissioning and field faults are actually observed.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: scenario 1 | [[0, 0, false, true, [0, 0]], [1, 0, false, false, [30, 0]], [2, 0, true, false, [30, 44]], [2, 0, true, false, [30, 44]], [1, 30, false, false, [44, 44]], [2, 30, true, false, [44, 20]], [1, 44, false, false, [20, 20]], [2, 44, true, false, [20, 34]], [1, 20, false, false, [34, 34]], [0, 34, false, true, [34, 34]], [1, 34, false, false, [90, 34]], [0, 90, false, true, [34, 34]]] | [[0, 0, false, true, [0, 0]], [1, 0, false, false, [30, 0]], [2, 0, true, false, [30, 44]], [2, 0, true, false, [30, 44]], [1, 30, false, false, [44, 0]], [2, 30, true, false, [44, 20]], [1, 44, false, false, [20, 0]], [2, 44, true, false, [20, 34]], [1, 20, false, false, [34, 0]], [0, 34, false, true, [0, 0]], [1, 34, false, false, [90, 0]], [0, 90, false, true, [0, 0]]] | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗