One important issue we must address prior to starting the development of our program is the buffering of module I/O data. In Chapter 2, Understanding ControlLogix, we briefly looked at the Logix operating cycle and the differences between asynchronous and synchronous execution. Traditionally, PLCs have been synchronous, which means that everything happens in a predictable order every single time a program executes. Synchronous controllers read from inputs, process logic, and finally, write to outputs. In modern asynchronous operating cycles, there are many activities that appear to be happening at the same time. The input and output values could change in the middle of a program scan and put the program in an unpredictable state if the program was written with synchronous operation in mind.
Imagine a program starting a pump in one line of code, and then closing a valve directly in front of that pump in the next line of code because it detected...