I just got done doing a small upgrade to a program running on an Omron CS1G-H PLC. It was a very simple program change but ended up taking me a good two to three hours to find out why it wasn't working.
All I had to do was put a contact in a single rung, addressed to an input, so the output coil would not turn on if the input was off.
So I begin an edit, insert my contact, address my input, send changes. I go to test out the new program, and I turn off the input. The rung goes false, but the output coil remains energized in the program (illuminated green). Confused, I tested out many things. If I turned off the input physically, the rung would go false but the coil would remain energized. If I forced the input off in the program, the output coil would de-energize.
After a while of researching, troubleshooting, searching the program for duplicate coils, etc. I decided to search for the input in the program. Turns out someone before me had made an Always true Output coil addressed to this input.
So while monitoring the program with CX-Programmer, the state of monitor would follow the physical input, but the logic would follow that the input was always on because of the output coil addressed to it. CX-Programmer would show the input go false, and any rungs with that input as a permissive also go false, but the PLC itself would actually make it true, and keep the output coils true.
Very confusing little bug.
All I had to do was put a contact in a single rung, addressed to an input, so the output coil would not turn on if the input was off.
So I begin an edit, insert my contact, address my input, send changes. I go to test out the new program, and I turn off the input. The rung goes false, but the output coil remains energized in the program (illuminated green). Confused, I tested out many things. If I turned off the input physically, the rung would go false but the coil would remain energized. If I forced the input off in the program, the output coil would de-energize.
After a while of researching, troubleshooting, searching the program for duplicate coils, etc. I decided to search for the input in the program. Turns out someone before me had made an Always true Output coil addressed to this input.
So while monitoring the program with CX-Programmer, the state of monitor would follow the physical input, but the logic would follow that the input was always on because of the output coil addressed to it. CX-Programmer would show the input go false, and any rungs with that input as a permissive also go false, but the PLC itself would actually make it true, and keep the output coils true.
Very confusing little bug.