Conveyor Positioning

KentuckyMark

Member
Join Date
May 2007
Location
Georgia
Posts
7
Long time member temporarily using different screen name.

ControlLogix platform, high speed counter and incremental encoder.

I have a carousel typed system I am desiging the logix for.
It has 10 stations. The part gets loaded at station 1 and eventually arrives back at station 1 again where it is unloaded.
The parts are carried around with a overhead conveyor using a chain drive. Turn the motor on, it starts the chain moving the parts. The motor is only on when we are moving the parts.

I was planning on zeroing out the high speed counter at each station and counting up to a predermined number of pulses.

I could also keep track of total pulses counting all the way around, use some math and divide by and use that to track the parts. Once again resetting the HSC back to zero when it arrives back at station 1.

The chain may stretch over time hince the problem.
What we are going to do is add 2 prox's, 1 at station 5 and 1 at 6.

I was planning on capturing the pulse count when the first prox makes and then subtract the difference when the second prox makes. Then I could use this from now on as my target position.

I will probably only run this routine once a day to check pulse diviation or may end up checking each time the prox's get triggered.

If I zero the counter at each station, I may end up with some subtraction problems when computing the pulses between the prox's at stations 5 and 6. It would depend on if my counter got reset before or after the prox.

I am thinking about keeping track of the total pulses around the carousel and leaving just the process to the division thing. Total Pulses / Station Count (1 to 10) * (Pulse Count between station).

I am stuck with 1 encoder and only 2 prox's. I would have put prox's at each station myself.

Has anyone here had some similair experience on the best way to do it or which one of my methods would be best.















 
Just a wild idea but if you put the 2 prox sensors a set distance apart you could use the known distance to calculate the streach in the chain. Then just comp your scale factor each cycle to make up the difference.

If all 10 locations were the same distance you could put one at each end. Then track the counts between and /10
 
Why not reset the count at each of the additional proxes. They are fixed so it should be the same each time. Have come across this before but the fitter decided to shift the adjustable bracket one day and it caused all sorts of problems! New bracket isn't adjustable.
 
I was thinking that I would zero the HSC at each station, then start counting, if I do get the prox signal #1 before the pulses reach their setpoint, call that "part in position" and rezero the HSC. The next time the conveyor moves, I move till prox #2 and count the pulses and then use the new pulses as my reference pulses.

Charles,
The centerline of each station is the same all around the machine.

What they basically want is some type of self-calibrating system for the conveyor.

Still hoping other members can advise me on how they might have done a system like this from their past experience.

I guess GIT and rs are out having a beer.
 
couple of things from when I have done these systems

1) IF your encoder is mounted on the back of the motor then chain stretch is not your problem it's the fitters.
reason: The Chain is a continous fixed length loop. To get the chain to index exactly 10 stations the chain-gear must move a fixed number of links every time - programmers don't care if the links are stretched.
2) From your posts it look's that you are using a Direct Online motor - I find it easier with a two speed VSD. Move a low speed on power up until the "OnStation" prox is made. "Next Move" - run at high speed looking at the counts until you want low speed then again stop on the Prox.
Adjustment of the stop position is number of counts from when the "OnStation" prox turns on. Want the "OnStation" Prox to be on before and during the centerline.


Things that make life easier
- Lots of counts per index (look at a minimum 10000, more is better up to the limit of the HSC input)
- PX must turn on once for each station. ie the Chain has 10 targets on it.
- I sometimes find that a find that a diagonal PE that is blocked by the chain "bucket" is a good Home switch.
- If the PX turns on every station then reset the count when stopped every time. (My preference would be to set the counter to rollover every 40 cycles and store the start position - it allow me to code to verify the target movements)
- Fix the Prox, the stop position is change using the PLC offset
Part 2 is the product tracking
Simplest is an array Parts[11] and use the home px to advance the array once per cycle
 COP 
Parts[1]
parts[0]
10

Set parts[10].0 when a part is picked up and when parts[0].0 is set remove the part

I am thinking about keeping track of the total pulses around the carousel and leaving just the process to the division thing. Total Pulses / Station Count (1 to 10) * (Pulse Count between station).
This is the correct method for systems that have irregular counts per station that do not reset the counter. eg 10 stations and 33 counts per 10 stations - Move 3.3 counts, moves to 3 count. Next position target is 6.3 (3 + 3.3) and you go to 6 counts you are 0.6 of a count out of position, Next target position is 9.3 (6 + 3.3) and you go to 9. Out by one count. (In a real world system if the number of counts is not an integer then you must use this method ie a cycle move of 100000.001 counts has an one count error every 1000 moves) By resetting the counter (or start position) using the PX every cycle you are getting away from this problem.

P.S. This all depends on how accurate you must position the centerline. If you want 0.0001mm accuracy then you will not get it with chain (due to link slop). If you just want repeatable within 5mm then this will work. Especially if the counts per cycle are high.

whoops maybe too big a post
 
I would avoid resetting the counter. Just store it's value at critical positions in order to calculate the distance travelled, and add some logic to properly deal with rollover. Resetting the counter can result in cumulative errors.
 
Thanks for all of your input. It go me thinking how to do it.

What I am going to do is keep the pulses counting when the conveyor is moving till it gets back around to the beginning. For example it may be 50000 pulses from start till all the way back around.

If I have a preset of 5000 starting off. When I first start I will use the HSC and count to 5000 (In Position). After this I increment a counter (Preset of 10) to the next position which is 2. I take the 2 (Counter.ACC) and multiply by 5000 which gives me a new sepoint of 10000. The next time I start I move the conveyor to the new setpoint of 10000.
Each time I get in position, I will keep incrementing the counter till I get all the way back around. When I get the counter done, I will reset the HSC back to zero and my counter back to 1.

As for as the prox's go, I will take a snapshot of the HSC for prox #1. When prox #2 makes, I will subtract the difference. This will give me the new distance setpoint.

When my counter resets at the beginning, I will then use this new distance setpoint as my preset the next time the conveyor moves.

I was going to try to use the prox's as a in position but I think this way I just recalibrate at the beginning of each new cycle.

I am not worried about a rollover in the ControlLogix 5000, it can count up to millions which will be a lot more than I ever need. I also will be adding error checking and alarms later on.

1. Start Cycle
2. Count to Setpoint of 5000 = 5000 * Counter.ACC)
3. 5000 reached (In Position, Increment Counter, New Setpoint of 5000 * Counter.ACC.
4. Go to Step 1. If Done Bit of Counter, reset and use new distance setpoint.

Edit. This logic took 4 or 5 hours to figure out. Once I had it all testing and verified by simulating it, it ended up only being 11 rungs. I was using a pulse generator into the HSC to test it but could have easily used a free running RTO timer instead.
My point is for you teachers out there, this might be a good logix problem for students instead of that traffic light.
 
Last edited:

Similar Topics

Does anyone have sample logic with conveyors that start and stop according to product on the line?
Replies
1
Views
90
Good Afternoon, I’m limited with a skilled maintenance staff to design and build Load Cell , Rollers , etc. for conveyor sections . Do...
Replies
11
Views
652
Hello everyone, I need to create a belt conveyor with an AFM60 encoder on board that detects the position of the glass (too small to be detected...
Replies
5
Views
702
"Hello, I am a beginner learning about PLC. Could you please give me some advice? I want to write PLC instructions as follows: When the sensor...
Replies
18
Views
3,383
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,376
Back
Top Bottom