For all PLC manufacturers, is Mass I/O copying the choice for updating outputs?

I found that there is another possible method: the continuous I/O updating.

Can anyone tell me what is the reason for this choice (Mass I/O copying)? Are there any advantages over the continuous I/O updating method?

  • \$\begingroup\$ You should explain what is all about, I do PLC for 15yrs and I never heard about mass and continous I/O update. \$\endgroup\$ Jan 31, 2016 at 11:08
  • \$\begingroup\$ "continous" or "continuous"? \$\endgroup\$
    – Andy aka
    Jan 31, 2016 at 11:34
  • \$\begingroup\$ @MarkoBuršič Here is a link that i found: link. It explains something, but I'm not sure if i understood well. Immediately after an output is evaluated, all references of that output are updated from that rung to the bottom of the Ladder program? It is suppose to take more time than the mass updating method? \$\endgroup\$
    – Hélène
    Jan 31, 2016 at 12:06

2 Answers 2


I had edited my response to your earlier question to cover this lightly. Here's some more detail for a basic PLC.

Task execution order

Typically PLCs task execution order runs as follows:

  • Read the inputs.
  • Execute the logic.
  • Write the outputs.
  • Handle other tasks, etc.

The 'Read the inputs' and 'Write the outputs' stages are the 'mass I/O copying' stages. The reason the logic is executed this way is that it presents a consistent state for the inputs through the program and prevents output strobing during the program scan. It also means that updating of I/O can be handled as a background task.

Problem with direct input read

  UP BUTTON               MOTOR UP
   X1                        Y0
--| |---------+-------------( )-

  UP BUTTON               MOTOR DOWN
   X1                        Y1
--|/|---------+-------------( )-

In the above example if X1 were to turn off between the first read and the second read both MOTOR UP and DOWN outputs would be energised simultaneously. Normal practice is to read all the inputs into an internal register and the program looks at that rather than directly at the inputs. This gives consistent predictable behaviour of the code and avoids race conditions.

Problem with direct output write

  UP BUTTON               MOTOR UP
   X1                        Y0
--| |---------+-------------(L)-

  UP LIMIT SW             MOTOR UP
   X2                        Y0
--| |---------+-------------(U)-

This example might not be the best code but PLC coding allows it and it can prove to be a useful tool when used with skips / jumps. The first rung turns on MOTOR UP using a latching 'relay coil'. The second rung unlatches the coil when the UP LIMIT SW turns on. It should be clear that if X1, UP BUTTON, switch is held on that immediate output writes would cause Y0 to blink briefly on every scan. Writing to the internal output memory and copying the whole lot to the outputs when program execution is complete solves this problem as the state at the end of the logic scan is what gets written to the outputs.

Immediate read

Most PLCs allow an immediate read and write which can be useful to shorten the cycle time of a machine. Others allow a few inputs to be used as interrupts so that program execution can jump to a subroutine and execute immediately.


Let we take into a consideration rack type PLC CPU where other peripheral IO devices are connected trough backplane bus. This bus usualy is a serial communiacation bus like CAN, I2C, RS485,...also the remote IOs can be connected trough a communication processor like DeviceNet, Canopen, Profibus, Modbus, etc... When you want to update the IO process image partition (this is the name of latched IO states in RAM) the CPU has to query R/W the IO module to get the updated value. For this reason it has no sense that at each IO evaluation in ladder program the CPU queries the peripheral IO for the last state - this takes quite long time. Also the ladder program would be inconsitent if at the beginning of the program the IO state is differing from the state in the middle or end of ladder program, this is an unwnated feature. Therefore the CPU first builds up the process image partition (sets outputs, reads inputs) then executes the ladder program.
The only exception is when the ladder program has to execute an time interrupt routine (like PID regulator), in that situation the CPU has to get IO data state at that moment, not a latched value from RAM, so it updates the required IO state (only the interested module, not the entire IO space).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.