Automated Conveyor Control Problem


Thread Starter

Graeme Hodgson

I am looking for a Allen Bradley PLC solution to an automated conveyor assembly line problem.
There are two sensors on the conveyor the first checks that the components have been assembled correctly, the second further down the conveyor detects and either accepts or rejects the assembly based on the information received from
the first sensor. My problem is, there may be three/four assemblies between the first and second
sensors. I need to make sure that the assemblies which are rejected are the ones, which were detected as incomplete by the first sensor. Can somebody help me to find a way of keeping track of them?
Simple is beautiful...

Doesn't look that a PLC is required

For a simple process like this one a smart relay such as Easy (Moeller), Zelio (telemecanique) or other make would do the job. They can be
easily programmed by the keypad or by an inexpensive software and cable package.

Good Luck


Eduardo Manuel C. Cipriano

I say
It's simple why do'nt you place the 1st sensor after the three/four assemblies to make it sure that you dont missed any of the rejects,

your question is just a matter of where and sometimes how many sensors you need to distinguise the rejects in your conveyor it will depend on your application and specifically on the strategy of the PLC programmer to do the right task for the right job...............

[email protected]

Eduardo Manuel C. Cipriano
Sr. Systems Engr.
Yokogawa Phils. Inc.

David Hughes

You need to set up a small shift register block, the simplest way is to use the same number of contiguous words as locations on the system.
Each time the first sensor is actuated, load the first word with the data you need, and shift the previous data down the table. When the
part reaches the second sensor, the table entry for that location will have the shifted data for that part. I'm not sure if AB have a first
in-first out (FIFO) instruction in the PLC model you are using, but if so this is exactly what you need. I have used the same thing before
with Modicon, AB and Omron.
Regards, David. ([email protected])
One solution is to use shift registers. First register indicates that a piece is prensent on the conveyor. The second register indicates
that a piece has to be rejected downstream (ex. 1:piece to reject, 0: piece OK). Both registers have to be synchronized with conveyor speed.
Downstream, your PLC will read bits from each register. If both synchronized bits are 1, PLC takes action to reject the piece. If not, piece
is OK and not rejected.

Reg1 100000100101 (1: bad 0: good)
Reg2 111000111111 (1:piece on conveyor 0:no piece on conveyor, no action to take)

Good luck.

Joshua Dalzell

My conveyor controll is a little rusty, but here's my first pass. It should at least be a kernel for an idea.

Two count down counters. The setpoints are memory values that can have math performed on them (registers or some such). Use a counter for
"Accepted" packages and a counter for "Rejected" packages. The second sensor can act as the decrement trigger for whichever counter is
active. Switch states on Counter Done and different package condition on the line, such as CTD DN = 1 and Accepted Counter SP > 0.

Increase the "Accept" set point for each good package and the "Reject" set point for each bad package at the first sensor. The second
sensor will act as the decrement trigger. When the counter has reached 0 (zero) you should be at a change in package status or no package

This doesn't take into account jams on the line and hand removal of product, so keep that in mind. Like I said, it's a rough idea that is
being typed as it's forming.

I realize that this isn't a step by step formula, and it's more than a little choppy, but I hope this helps. I'd be happy to see if I could
help more if you need it. Just email me with any questions. I can't answer in depth Allen-Bradley questions anymore, though, I've not
worked with them in a couple of years.

Joshua Dalzell
jd-info (at)

Darran Weissenborn


Does your solution have to be based on AB?

We have implemented a similar system to track microwaves on a production line, but using Opto22 IO systems.


Darran Weissenborn
Try using FFL (First IN First OUT Load) and FFU (First IN First OUT Unload) instructions.

***From RSLogix instruction HELP***
FFL and FFU output instructions are used in pairs. The FFL loads words into a user-created file called a FIFO stack on successive false-to-true transitions of the rungs controlling input logic. The FFU (FIFO Unload) unloads words from
the FIFO stack in the same order as they were entered.

This instruction is helpful in applications where it is necessary to load and unload values in the same order. An example might be tracking parts through an assembly line where parts are represented by values that have a part number and
assembly code.
Is it just a conveyor or a shuttle conveyor?
A conveyor will probably have a few interlocks and start and stop and in some rare cases speed control (speed control encountered in theory only).

Heres what I would do
You'll need some sort of Pulse from the conveyor to measure its travel, every foot or so(or what ever the required accuracy is)
The pulse shifts a shift register.
I do Shift registers like this, use a Integer file, say N12:0 - 10 (10steps)
for the shift register and a buffer integer say N13:0-10
On the pulse, oneshot a COP N12:0 to N13:0 len 10
Branch this with COP N13:0 N12:1 len 10
this has the effect on moving every thing down 1 word

To use it either move in numbers or latch bits into N12;1 and watch then move though the shift reg

Use either EQU or XICs to examine at different points in the register

Hope this helps

Terence B. Creevan

You could use a FIFO queue to hold product data. A product enters, actuates your first sensor, and your application adds its data to the queue with an Allen Bradley FIFO Load (FFL) instruction. Further down stream a product actuates the second sensor and your application removes the oldest product's data with a FIFO Unload (FFU) instruction.

You must now decide what to do about tracking errors, the differences between the PLC's tracking data and the real world conveyor. You should address questions like "what is the probability of a tracking error" and how does
one reconcile these errors. [Tracking errors are probably more likely to occur than you would think, especially in a production environment with human operators]. You can reduce tracking errors by combining your sensors with other input like conveyor encoders, barcodes, and even RF tags. You might also consider a human machine interface (HMI) or an operator control station (OCS) to allow the manual change of PLC tracking data.
In my opinion, the right strategy is to reject the incomplete unit immediately. That is to move sensor#2 to next to sensor#1, or vise versa, or you may combine them into one station. This is based on my assumption that there is nothing
done to the assembly between sensor#1 and sensor#2. But if it is not possible, you may use SHIFT REGISTER as others already mentioned.

However, even with shift register, things can go wrong. Prerequisite conditions, at the startup there must have nothing on the conveyor between those 2 sensors. During the normal operation, there must not be any manual take-out or add-in
between the sensors. And if either of these 2 sensors fail to detect sometimes, it will mess up the rejection too.


Alan Rimmington

If you send me your email address to [email protected] I will send you some AB
code that will do what you want. This example does not use FFO type instructions because of the variable number of components between the two
sensors. Also let me know the processor you are using so I can mod the example to suit.
I saw your response. I have some questions, if I may. What Opto22 are you using. Reliability? Any Data Transfer being done with a host database or bar code scanners or printers etc.?

Any info would be greatly appreciated.