shift register, variable speed machine

ghriver

Member
Join Date
Aug 2002
Location
Earth>North America>US>CA>Hanford
Posts
65
This has been done, im sure, many times. Im looking for some advice on a good way to accomplish the task.

Machine has 40 stations. 1 pulse per station and 1 pulse if the station has product in it.

I am using bit shift left triggered by the station pulse and the product pulse to set the 1 in the shift register.

My problem is that when the machine increases speed i need to energize the output sooner. So if the product pulse comes in, 6 positions later i need to fire the output. Works fine as long as through the speed range except at the upper end the result is later than i would like to see.

To solve this would i always trigger the output at position 5 instead of 6 and use a variable preset timer based on the speed?
 
Last edited:
More info...

Try to post the exact code that you have now. What platform(PLC)?
How fast is the machine indexing when at full speed?
The more details, the better.

You can also use the "search this forum" button with "shift register" as the search word for more help.
 
Last edited:
Try to post the exact code that you have now. What platform(PLC)?
How fast is the machine indexing when at full speed?
The more details, the better.

You can also use the "search this forum" button with "shift register" as the search word for more help.

Compact Logix Plc (everything in local rack)
5ms interrupt routine
speed variable: 200 - 600 per minute (4 - 10 per sec)
machine generally runs with either pockets empty or full, not an actuation per pocket. for example may run 10,000 units then run empty for a few hundread units.

SCREENSHOT.jpg
 
My solution to product tracking is to model in PLC code the actual position of the product(s) rather than use FIFOs or bit shifts. It might be overkill for you to do that, though, but then you can usually set up a position window for certain events that you want to take place based on real measurements rather than the more abstract bit positions you are using now.

The quick and dirty answer would be to simply adjust the offset from 6 to 5 (or other useful value) depending on the speed.
 
It looks like i have to go the quick and dirty way. The money holders say: no encoder, no speed feedback from the vfd, and only one pulse per station. So i have an implied speed that doesn't take vfd accel decel time into consideration.
 
ghriver, your proposed solution from post 1 is probably the best bet given the information you have available. Whether you use the timer method or do your own time delta based on the plc time may be up for debate. It may be easier to do the time delta thing. But I think the concept is valid.

Keith
 
Compact Logix Plc (everything in local rack)
5ms interrupt routine
speed variable: 200 - 600 per minute (4 - 10 per sec)
machine generally runs with either pockets empty or full, not an actuation per pocket. for example may run 10,000 units then run empty for a few hundread units.

If you only see problems at full speed, then you might be running into a reaction time limit somewhere in the system. I would check a couple of things:

1) What is the RPI on your input module providing the pulse input?
2) What is the RPI on the output module firing the solenoid?
3) At one pulse every 100 ms, can your solenoid shift fast enough to accommodate this?

Just my two cents...
 
I see the lag in the travel time of the air cylinder. The cylinder moves at the same speed its just that since the machine is moving faster the cylinder arrives at the same time, just more of the machine has gone by.
 
As long as that cylinder stroke speed (time) is relatively constant, then you should be able to include that in the calculation.

That's another reason I like position based tracking, even when I must estimate based on drive command speeds where there's no feedback, I have had good results. It makes things like adjusting for cylinder travel time and adding new devices much easier in the long run. If the stroke time is 2 seconds and it must be extended by position x, and retracted by position y, and you know how many inches or feet per second the machine is moving then you can easily determine when to fire the solenoids.

I have even gone so far as to calculate using known fixed drive settings to include accel and decel rates when I can't get speed feedback, but it depends on the level of precision you need to do the job...
 
HI,
The money holders say: no encoder, no speed feedback from the vfd, and only one pulse per station. So i have an implied speed that doesn't take vfd accel decel time into consideration.
Can you use a timer to capture the time between pulses to determine machine speed? This would need to be done every scan (while motor in run mode)to account for accel & decel periods. If you determine the exact speed rate then you may be able to accelerate the output pulse accordingly. Just something to think about.

BD
 
yes i can, and thats what i plan on doing. I will trigger the event one pocket early and use a timer with a variable preset using the below formula to calculate the preset.

timer preset = -0.6 * stations per minute + 420
 

Similar Topics

Hi, I have a line where I need my shift register to vary in size depending on the type of product being run. I am using ffu and ffl instructions...
Replies
1
Views
5,149
Hi guys, I am pretty new when it comes to programming. I am working with CX-Programmer and I am having a problem where I have a sensor on my...
Replies
6
Views
623
Hi all, i have a very slow indexing machine where we are looking to make everything as bulletproof as possible, money is not much of a factor...
Replies
12
Views
3,020
Good morning (EST), I am trying to implement the code below in on an S7-1200. It's barely half a dozen instructions, but I am stuck; I have not...
Replies
26
Views
5,535
Hi everyone I am completely new to using shift registers and am a bit stuck, my shift register works as should, it is for an overhead conveyor...
Replies
55
Views
15,359
Back
Top Bottom