A couple years back, I was working on the logic for a collection of about a dozen small machines. Most of these were tooling with Amphenol connectors to the cell, with no local safety circuit. The Toolbar PLC just used a set of discrete IO to handshake with the weld cell PLC. The issue here came in-to play with one of the standalone tools next to the weld line. We were building a press to assemble exhaust components (I use the term lightly, two 4in bore pneumatic cylinders shoving a cone into the end of a muffler) with load cells for force recording. Everything appeared to be functional, everything stopped when you hit an E-Stop or breached the light curtain.
Fast forward a week and the customer comes in to buy off on the line. Their corporate headquarters happens to be nearby, so the Controls Manager for all of North and South America decided to come by himself. He’s a German transplant, and probably the most meticulous Controls Engineer I’ve ever met. He found the usual issues of a missing label here and there, open up clearance around sensors for easier maintenance, and such. When we got to the press though he wanted us to do something interesting. Jumper the Estop OK and Light Screen OK inputs to the PLC to verify that logic wasn’t stopping the machine. No big deal right? When we hit the e-stop, everything stopped as intended. Next we broke the light screen. The machine kept going! We took a look at the contacts. The PLC feedback was using a spare NO contact on the Pilz relays, so following the wiring we found that the 24vdc power that was supposed to be chained from the e-stop relay output to the light screen channel input was swapped with the direct 24vdc power from the feedback wire. If you hit an e-stop, we actually had both the e-stop and light screen signals dropping. Nobody noticed it because the e-stop message had priority on the HMI, and the stacklight was just a warning anyway. We quickly swapped those two wires to where they were supposed to go, and everything worked as intended. Following that, we also pulled those inputs one at a time to ensure that logic caught the machine as well. That worked as intended, otherwise the wiring issue would have been found days ago!