Array (File)/Shift Instructions

This section only applies when the instructions are modifying controller-scoped data. When there are interruptions to Array (File)/Shift instructions by a task with the same or higher priority and then a switchover event occurs, it could result in an incomplete data shift and corrupted data.
These Array (File)/Shift instructions can result in corrupt data if there is a switchover:
  • Bit Shift Left (BSL)
  • Bit Shift Right (BSR)
  • FIFO Unload (FFU)
  • File Arithmetic and Logic (FAL)
  • File Bit Comparison (FBC)
  • Diagnostic Detect (DDT)
  • File Sort (SRT)
If Array (File)/Shift Instructions are used, these system behaviors can occur:
  • If a higher priority task interrupts an Array (File)/Shift instruction, the partially shifted array values are crossloaded to the secondary controller.
  • If a switchover occurs before the instruction completes its execution, data remains only partially shifted.
  • After a switchover, the secondary controller starts executing at the beginning of the program. When it reaches the partially executed instruction, it shifts the data again.

Buffering Critical Data

If you cannot place Array (File)/Shift instructions that modify controller-scoped data in the highest-priority task, consider using a buffer with Copy File (COP) and Synchronous Copy File (CPS) instructions to maintain the integrity of the array of data.
The programming example that is shown here shows the use of a COP instruction to move data into a buffer array. The BSL instruction uses the data in that buffer array. The CPS instruction updates the array tag and maintains data integrity because a higher priority task cannot interrupt it. If a switchover occurs, the source data (array tag) remains unaffected.
Buffer to Maintain Data During Shift
Buffer to Maintain Data During Shift
For more information about BSL, BSR, COP, CPS, DDT, FAL, FBC, FFU, and SRT instructions, see the Logix 5000 Controllers General Instructions Reference Manual, publication 1756-RM003.
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.
Normal