Conveyor Belt problem

KCH

Member
Join Date
Mar 2013
Location
edinburgh
Posts
4
Hello,

I'm new to this forum.
I have a problem to solve and I want to ask for some guidance (not a solution).

It's a conveyor belt with small and long baskets. Small ones are to be ejected further along the belt.

My question is: does Siemens S7-300 have any sort of memeory that I can store info that the small basket has been detected and will use this info after some time (when the small basket arrives at the point of ejection), while the detectors are busy surveying another basket?

At the moment, once the small basket is detected and is heading on its way to the ejector, the detectors may detect a long basket and disarm the ejector before small basket arrives. (According to my current logic).

I thought of inserting a shift register and then fire an ejector on timer. But I think it's too difficult for me. I'm a begginer.

So my question is: can it be done just with timers? Or combinantion of timers and counters?

Does it require something called subrutine?

Thanks,
Kch
 
So my question is: can it be done just with timers? Or combinantion of timers and counters?
Yes, IF your conveyor is running at a constant speed and never varies. You must allow the conveyor to start and reach its running speed. Then you could control the boxes with time and a counter.

If your conveyor has an encoder that monitors its position, then using a shift register would be the easiest, most accurate method.

Does it require something called a subroutine?
No, subroutines are a way to organize your logic, often useful, but not normally necessary.

My old worn-out memory is flashing that this student problem has been posted here before and discussed in detail. Do a search and you may find it. Fill out the Student Help Form and you will receive better help.
http://www.plctalk.net/qanda/showthread.php?t=43021&highlight=box+kicker&page=3
 
Last edited:
Thank you for help.

I wished I could understand it quicker...

I think I will follow an advice of one post I have found of setting a couple of timers (as many timers as many objects are between the detector and the ejector). Each timer will have to be triggered by the "next" basket. So latches required. Each detection will start the timer and will close a latch, who would have been placed normally open on the others other rung of another timer.
Seems very very understandable to me.

Tomorrow I will try it.

BTW I've just started having a little feeling for PLC. They seem to do everything as told that I feel like I have to cheat them with latches...

My idea with shift register was the following:
Imagine 4 baskets fit between detector and the ejector in the sequence: long short short long.
Conveyor is going from left to right.
This would be represented as 0110
(There is another sensor by the ejector that can work as a trigger)
The ejector reads to the first bit (first from the right)
So "0" is coming first. Ejector doesn't fire.
Then the fifth short basket is at the detector. The shift register is now loaded as: 1011 (0 is gone).
"1" enables the ejector, sensor triggers it.

Is it ok?
I will have to learn a bit more with this option about working with data.

Anyway, thanks a lot again.
K
 
Last edited:
Look at the SHW_W command to create your own shift register.
Highlight the command and press F1 to bring up the help.
This example shows a move of 6 bits each time.

SHL_W.jpg
 
I think I will follow an advice of one post I have found of setting a couple of timers (as many timers as many objects are between the detector and the ejector)...Imagine 4 baskets fit between detector and the ejector in the sequence...Each timer will have to be triggered by the "next" basket. So latches required. Each detection will start the timer and will close a latch, who would have been placed normally open on the others other rung of another timer.
Seems very very understandable to me.
That might work - given a specific physical set-up where the 1st of 4 baskets reaches the ejector BEFORE the 4th basket reaches the 4th timer start trigger. Otherwise, the 1st basket could still be traveling, but then its timer latch gets reset before the basket reaches the ejector. (You will have to reset each latch before the next basket (for that timer) comes in).

Your best bet is to study how shift registers work (using a moving group of bits of specific length in PLC memory to exactly simulate the MOVEMENT of a group of objects with the same number as the PLC bits), and look at Moggie's post.

One big problem that you have is that your problem is not well-defined. You are not sure how many baskets are (or can be) between the detector sensor and the ejector. You do not seem to find it important to know the speed of the conveyor, or whether you can find the speed given your specifications. You do not seem to be aware that most bit-shift methods depend on a trigger that goes ON every time the conveyor moves a specifiec X distance. Without some type of trigger like that, using a shift register becomes difficult. You may be able to set up a trigger based on time (many student-type problems rely on that method) but you should understand that doesn't work too well for a real conveyor, which varies in speed between STOP and 100% full speed, and can vary slightly even when commanded to run at a constant speed. Therefore the travel time of each basket between the detector and the ejector can vary, making a fixed timer useless.

First, write a good description of the problem, leaving no information that you know out of the sentences. Many times, the solution then becomes obvious. Students love shortcuts, but then wonder why it is taking so long to find the solution.
 
Last edited:
How do you detect the part to eject? (time the part passing a sensor?)

How far is that from the ejection point? (how many parts can be between the detection and ejection? think multiple small parts)

Does it cross between conveyors while tracking it?

Whats the method of timing? (tracking pulse sensor or internal timer?)

Can the conveyors stop/start when tracking?

Whats the ejection method? (Is it important for the part to be in an exact position?)

Is a single bit OK for eject/not eject? (any other information being tracked?)



edit:

What's the difference in size? (the most common method of tracking is to track the leading edge of the object, especially when objects are different sizes. One object could be 4 pulses long another 10)

How important is it that things are not mixed up? simply using a FIFO can lead to errors if someone removes a part. A FIFO can work if the logic allows for correction.
 
Last edited:
Siemens have a number of standard functions like FIFO and SHR, but if its not to big i vould just move a value between diffrent datawords.

When a part is detected on a certain spot on the conveyor belt.

Move code 34 to DB1.DBW1 (code 34 indicate that part, you can use what you whant)

create a time flank when motor is running, if you dont have a pulse from a sensor

At highflank pulse

Move DB1.DBW9 to DB1.DBW10
Move DB1.DBW8 to DB1.DBW9
Move DB1.DBW7 to DB1.DBW8
Move DB1.DBW6 to DB1.DBW7
Move DB1.DBW5 to DB1.DBW6
Move DB1.DBW4 to DB1.DBW5
Move DB1.DBW3 to DB1.DBW4
Move DB1.DBW2 to DB1.DBW3
Move DB1.DBW1 to DB1.DBW2
Move DB1.DBW0 to DB1.DBW1
Move 0 to DB1.DBW0

If the correct ofloading spot is at DBW8
then just

Compare DB1.DBW8 equal to 34
if true offload. Move 0 to DB1.DBW8

If you know that you put something in DB1.DBW1
You start two timers one to soon and one to late.
By doing this you can keep track to your setpoint that your object is still on its place.
 
My solution

All Saturday and Sunday in front of the computer and it paid off. Just 5 (!!!) minutes before the lab was to be closed I must have done something right with defining signals that reset timers and the system seemed to operate fine. It works on timers and latches. I will paste the solution here to share it for a couple of days and then I will remove it.
Any comments are welcome. I am very curious how practical the solution is in a real life. If the shift register is the way to go I want to do it that way as well.
The description of the conveyor belt: Bytronic for students, one speed motor, three optical sensors and a solenoid-ejector . From left to right (in accordance with the conveyor belt direction), 1) 1st sensor with “emitter” and “receiver” on the other side; 2) 2nd sensor “just on one side”, 3) ejector, 4) 3rd sensor “just on one side”.
The short baskets are to be detected and ejected.
The long basket is long enough to activate both 1st and 2nd sensors. The short basket is short enough to fit between sensors 1st and 2nd without activating them. It takes around 1.750s for a short basket to travel along its length. My detection logic is based on that.
The rest can be seen on the provided diagrams.
The signal of positive detection is latched for the duration of the travel to the ejectors. So it will not be affected by the next positive detection. 3.3s timer T10 triggers the ejector and resets the latch.
The signal of positive detection starts a parallel 1.75s timer T20 to be used to set up the system for the 2nd short basket. When this time elapses (this is a time of the short basket travel along its length or in other words: a time for the short basket to fully leave the detection point), the latch is set and is ready waiting for another positive detection to start the next timer T21 (and a parallel T30 to latch and wait for the 3rd basket). The rest is the same as for the 1st short basket.
Third basket “rung” doesn’t have a parallel timer, because before the fourth basket is on the detection place, the first basket would have been ejected and timers reset.
The problems seemed very easy at the beginning when I had been advised that timers and latches would do the job. Then it became a nightmare… Very important thing was to choose proper timers and finding the right signals to reset them.
Thanks again.
K.

conveyor solution.jpg
 
Hi Peter,

How do you detect the part to eject? (time the part passing a sensor?)

Anwered in my previous post
-----------

How far is that from the ejection point? (how many parts can be between the detection and ejection? think multiple small parts)

3
--------------

Does it cross between conveyors while tracking it?

One conveyor only
--------------

Whats the method of timing? (tracking pulse sensor or internal timer?)

I don't know what they are, really, sorry...
-------------

Can the conveyors stop/start when tracking?

I don't know the idead of "tracking". The timer that is used is S_ODTS (Siemens, Step 7). S=1 starts the timer, that runs for TV even if S back =0. When the timer has elapsed then Q=1, even if S=0.
---------------

Whats the ejection method? (Is it important for the part to be in an exact position?)

Not really, anywhere near centre is best.
-----------------

Is a single bit OK for eject/not eject? (any other information being tracked?)

I don't understand the question well enough. The ejector is triggered by boolean input so probably yes...
--------------


edit:

What's the difference in size? (the most common method of tracking is to track the leading edge of the object, especially when objects are different sizes. One object could be 4 pulses long another 10)

I don't know what pulses are.
It takes 1.75 (around) for the short basket to travel its length.
What are the pulses? Is is a time thing or some input like the overall number of items on the conveyor belt?
-------------

How important is it that things are not mixed up? simply using a FIFO can lead to errors if someone removes a part. A FIFO can work if the logic allows for correction.

It's a student's task so probably not too much important. But it's a good point!
 
Last edited:
OK, so its not a real world task.

In a real world environment a timer would not be sufficient unless the distance is very short, if the rejection operated a set time after detection, and the conveyor stops between then the timing is lost. Even halting and restarting the timer would have an error as the conveyor would ramp down and up.

I have only used bit shift when there is a mechanical device controlling separation, like a chain conveyor dragging pots into a filling and enclosure environment.

The most common method of tracking objects along belts is to create tracking pulses, where each pulse is equivalent to a set movement, maybe 2-3 inches, then count the pulses.
 

Similar Topics

Hello, I have a servo motor running a conveyor belt system. I do not have the exact circumference of the head pully and therefore I get some...
Replies
5
Views
1,344
Good Afternoon , I just came out of a meeting , and the subject came up , about static buildup on a conveyor belt causing a metal detector...
Replies
13
Views
2,673
Hello, I'm currently designing a paint mixer for a mechatronics project. I've outlined the basic structure but I had two problems. For the dc...
Replies
2
Views
1,985
First off, I am new to the whole PLC world and was tasked with a project at work. I was given a Click C0-11dre-D, Honeywell 310G barcode scanner...
Replies
4
Views
2,260
I am required to program the system in the picture, but need a little help with maintaining spacing using the conveyor belts. How should I go...
Replies
35
Views
7,210
Back
Top Bottom