AB Control logix asynchronous scan problem

As a side note to buffering, the Logix 5000 programming environment has an additional copy instruction called a synchronous copy (CPS). This instruction will guarantee that data being copied will copy in a continuous block.

Keith,
Thanks for pointing out this instruction, I have never used it and wasn't even aware of it. One thing I would like to point out though, this instruction actually guarantees that while it is being executed no other source can modify the data being copied. This is analogous to multithreaded programming in .NET where you "lock" the instruction being executed, preventing other threads to access it.

Going back to the original question, in my designs I always buffer the I/O data by copying all I/O to holding buffers in the beginning of the scan i.e. first task in the main program and then use the bits of the holding buffers to do my I/O. This way you have de-facto preserved the familiar functionality of SLC500/PLC5. The CPS instruction is the way to go.
 
For large systems, I usually buffer all the IO anyway. I find that it's a lot easier to plan out the architecture and then write/debug the logic if IO has been grouped by station, or module, or something. Then, the logical bits and words are contiguous, and the physical layout doesn't matter any more. It also makes the logic a lot more portable to the next machine or job.
 
kamenges said:
... synchronous copy (CPS). This instruction will guarantee that data being copied will copy in a continuous block. This isn't usually an issue ... where only one DINT is involved, although it possibly could be.

I have found (the hard way) that the COP instruction copies one byte at a time and can be interrupted between any two bytes in the INT's or DINT's being copied.
 
My understanding is the Control Logix has a section of shared memory of which the IO is updated into. The processor does not request a read of the IO but accepts the data that is broadcast onto the backplane by the IO modules at their RPI (requested packet interval) Since the IO updates are arriving into this memory at varying times they are transferred into the IO image as they arrive. It is up to the programmer then to decide if this is acceptable or if he wishes to buffer them.
This info is only valid for the Control Logix processor. All other models ie compactlogix etc do the IO update as a periodic task (priority 7)
Regards Alan Case
 

Similar Topics

I am having trouble with getting no control of my analog output signal. I am using the SCL function block to control my analog output. The logic...
Replies
11
Views
254
hi all, i have a plc i need to get info from for a site im working on: I have a 1764 Micro Logix 1500 LSP Series C (See Attached Image) im...
Replies
2
Views
380
I currently have a weird issue involving Ethernet IP communication between a ABB CI873 (EthernetIP Module) and a 1756-L83ES. The Layout is as...
Replies
8
Views
761
Possible for two processors in same rack to have separate motion groups across a single Kinetix Rack using a single EN3TR? One 6500/5700 rack, 8...
Replies
1
Views
426
Hi all! I am hoping to find some help understanding the ABB VFD Connection to my Rockwell PLC. I have set up the VFD parameters based on...
Replies
4
Views
670
Back
Top Bottom