Pin Installation Machine

pstephens

Member
Join Date
Sep 2004
Location
Indiana
Posts
342
Hi guys,

I’m writing a program for a small machine that I designed to install a roll-pin in a brass valve body, and I could really use a bit of help. Though it seems a very simple sequence, this is only my second PLC program, and I’m finding myself quite stuck at the moment.

At this point, I have the panel built and wired, and the various machine components hooked up on the bench, so that the program can be tested prior to actually assembling the machine. The PLC is an Automation Direct DL-06 (D0-06DR), using DirectSOFT32 (version 4) software.

Here is a crude layout of the process:

LAYOUT.jpg


Here is a basic operational sequence:

1) A part is placed in the fixture.

2) The operator presses “Start”.

3) An air-powered clamp extends to clamp the part in the fixture.

4) When the clamp is fully extended, a self-feed air drill starts, and a hole is drilled for the roll pin.

5) When the drill cycle is completed, the table indexes, and a driver (fed from a feeder bowl system) presses a pin into the drilled hole.

6) Once the pin is seated, the driver retracts.

7) When the driver is fully retracted, the index table and clamp are retracted, completing the cycle.

Here’s my program, so far:

60323.jpg


Some general notes:

1) The self-feed air drill has a built in valve system, and requires only a momentary air signal (approx 1 sec.) to start the cycle. This is what I’ve attempted to accomplish in the program with the “Drill Pulse” timer (T3). The drill also provides a “finished” signal when the drill cycle is complete. It uses air pressure, but I’m using a pressure switch to convert it to a usable input (X12).

2) It was deemed necessary to have the driver “dwell” for a brief period when completely extended, to insure that the pin is fully seated, and that the driver doesn’t prematurely retract when LS7 (X10) is made. This is the reason for the “Pin Seat” timer (T4).

The problem I’m having is that, once the drill completes its cycle, it simply starts another. I’ve got a feeling that I can’t accomplish what I want using the Drill Pulse timer. It seems that it resets sooner than I need. Would it be possible to use Set/Reset outputs to accomplish this? I apologize if this seems ridiculously simple to many of you, but I’m still very much in the “learning” mode with this project.

Any/all comments or suggestions are much appreciated.

Paula

PS - A related question: I also need to provide logic within this program to sequence a couple of valves for feeding the pin to the driver from a vibratory bowl system. Is it possible for the program to do this while the “main” program is running, such that it doesn’t subtract from the total cycle time? It only takes few seconds for the sequence, but that is still a significant time increase for this application.
 
Last edited:
Hey, Paula,

It is good to have you back again! We really enjoyed your wire-cutting project.

Right off, I think it is possible to control the drill, because it has both a "start" and "finished" signal. In Rung 3, you need to relocate the normally closed T3 timer contact to just before the Y3 Drill Start Output (between the T3 Timer branch leg and Y3). You want to allow the drill to be activated one time and one time only, until the next cycle. Moving the T3 contact will cause timer 3 to deactivate Y3 after 1 second, but the TIMER WILL STAY ENABLED, preventing the T3 contact from reclosing and restarting the drill. (In your program, T3 does deactive the drill start signal, but then it also deactivates itself, and guess what, it immediatley restarts itself and the drill!) Now it may be necessary to add another contact or two to make sure T3 does not get deactivated until the beginning of the next cycle. More later.

Edit: It is now later. Is your X12 input closed except when the drill sends a "finished" signal? I think maybe it is sort of "cart-before-horse". Logically, should not X12 be used to first deactivate or lock out the "drill start" signal. And only then, to deactive the clamp? (Sequence, lock out drill, then unclamp part?)

Also, the vibratory bowl feeder should be no problem whatsoever. A few rungs dedicated to the feeder will not add very much scan time, hardly detectable to the human eye, and the machine doesn't care in this case. It will be a separate routine, but in the same program, controlling a different machine. No problem!
 
Last edited:
Hi Lancie,

Thanks for your quick response!

Is your X12 input closed except when the drill sends a "finished" signal?

I probably could have been clearer about this. What this signal amounts to is an auxiliary port on the drill which is pressurized except when the drill is running. In other words, it's pressurized before the drill cycle is started, goes to zero pressure during the drill cycle, and goes back to being pressurized when the cycle is completed.

I am still digesting your comments, but I thought I should clarify this one point a bit.

Paula
 
Paula,

Okay, because the "drill finished" pressure signal will be continuously ON AFTER the drill is finished, you could use it to lock out the Y3 Drill Start signal, thus insuring that there is no way it could restart until needed. However, if you move the T3 Timer contact, I think that the drill will work with no other changes.
 
Greetings Paula,



I’m just wondering about something ... have you ever looked at the “stage programming” concept? ... I don’t have the time to check the catalog right now, but I’m pretty sure that the processor model that you’re using supports it ...



just skim through this post and see if the concept sounds interesting ... I’m betting that once you try it, you’ll never want to go back to “straight” ladder logic programming again ...



and to answer your specific question, yes, you can execute a separate line of logic “simultaneously” ... and in stage programming, this could easily be done by “jumping” to two independent “target” stages at the same time ... sort of like a “GOTO both THERE and THERE” construction ... basically you can just put two jump instructions in parallel at the output end of a rung ...



anyway, if you like the “stage” idea, then we’ll help you get a handle on it ... (and my bet is that you won’t need any help at all) ... believe me, it’s well worth the short amount of time that it takes to master ... and it looks like the project that you’re working on is an ideal example of a “getting-started-with-stage” application ...

and incidentally, if you don't want to go the "stage" route this time around, you owe it to yourself to at least experiment with it at some time in the future ... an hour or two should be more than enough to convince you ...

good luck with your project ...
 
Paula,

Also, I bet with the current program, once the drill starts, it then starts again, and the next step, Table Indexing, never gets done. That would be because T3 Timer is in an infinite loop, starting and restarting over and over again, and the Drill Start signal keeps going on and off, and the drill completed signal may go on, but only for 1 scan, not long enough to cause the table to index.

Paula, you have given us an easy one this time!
 
Ron,

Stage Programming is useful, but the way DirectSoft implements stage programming is unnecessarily complex. When I set up stages in Direct Soft, I simply set create my own Stage Relays and I do not use the internal program Stage Relays. The reason is that I do not have complete control over them, and cannot easily turn a stage on or off with one command.

Paula, you could divide your program into stages, but I think it is over-kill for this program. Stage Programming is best used where you have one process with several complicated sequential steps, one following another, in 1-2-3 fashion.

In your case, you have two separate machines running at the same time. The bowl feeder routine will not add more than a few miliseconds to your DL-06 scan time. Simply add a section at the end of your current program, and put a big bold comment on the first rung: "VIBRATORY BOWL FEEDER ROUTINE STARTS HERE". That is all!
 
Last edited:
Oops... there are some issues here... but...

Think like a "people". (Add your E-Stop stuff etc.)

Start Table Whole-Cycle
Cycle Retracted Completed
-----| |-------| |-----+-----|/|--------( ) Clamp Part (This is equal to "DO CYCLE")
|
Clamp |
Part |
-----| |---------------+


Part Drill-Cycle Clamp
Clamped Completed Part
-----| |-----+-----|/|----------| |----( ) Do Drill Cycle
|
Do Drill |
Cycle |
-----| |-----+


Drill-Cycle Whole-Cycle Clamp
Completed Completed Part
-----| |-----+-----|/|----------| |----( ) Extend Table
|
Index |
Table |
-----| |-----+


Table Clamp
Extended Part
-----| |-----+-----| |--------( ) Do Pin Cycle
|
Do Pin |
Cycle |
-----| |-----+


Do Pin Pin-Delay
Cycle Done
-----| |-----+-----|/|--------( ) Extend Pin Driver
|
Extend |
Pin Driver |
-----| |-----+


Do Pin Pin-Driver +----------------+
Cycle Extended | TIMER |
-----| |----+------| |-----+---+ Pin Delay Done |
| | +----------------+
| Pin Delay |
| Done |
+------| |-----+


Do Pin Pin-Delay Pin Pusher
Cycle Done Retracted
-----| |---------| |--------| |-------( ) Whole Cycle Completed




It was quick and probably a little dirty... but, food for thought, no?
 
Last edited:
Terry,

The idea and straight-forward logic is great, but your rung for Drill Cycle would not work in this case, if Paula uses the X12 Drill Finished bit for your Drill Cycle Complete. It would cause the drill to stop, then restart, then stop ad infinitum.
 
Well, I'm afraid that re-locating the T3 contact made no difference. It's like you said, Lancie, it seems to be in an infinite loop. Well, not exactly infinite... my hobby-shop grade compressor runs out of air somewhere during the third drill cycle. Here's how it looks now:

60323D.jpg


...because the "drill finished" pressure signal will be continuously ON AFTER the drill is finished, you could use it to lock out the Y3 Drill Start signal, thus insuring that there is no way it could restart until needed.

Thanks, I'll try this next.

Ron, thanks for the suggestion and link on Stage Programming. DirectSoft does have this capability -- I just finished reading a section in the manual called, "Overcoming Stage Fright" (hee hee), but I'm not sure it's something that I can get up to speed on soon enough to get this project completed on time. (This machine is supposed to be assembled and running by Thursday!) Definitely something to look into for the future, as much difficulty as I have comprehending ladder logic.

Thanks all, for your help!

Paula
 
Okay, we are narrowing it down here. T3 looks correct now. That leaves LS3 and LS4, either of which could be opening up and reseting Timer T3 to 0 and starting the drill cycle again. I bet on LS4 being the culprit. Does the table Extended limit switch open up after the drill is finished?

Edit:
Answer: Okay it is LS3, goes off, the timer restarts! You must use LS3 to START the Timer, but then LS3 must not be allowed to de-energize the timer T3. Something else further down in the cycle must be used to reset T3. It can be left locked in until just before you need to drill again. You cold use C0 to unlock and reset the timer when the cycle is done.

As a test, use T3 to lock itself on. Put a T3 NO contact and a C0 NC in parallel with LS3 and LS4, like this.
 
| LS3 LS4 |
|---||-----||--+-- (rest of rung here) |
| | |
| C0 T3 | |
|---|/|----||--+ |



When you get the drill to stop restarting, then you will have to figure some way to reset T3 with another added contact, because T3 will now be locked on and will not reset when the LS4 contact resets. You can use C0 as above to do that.
 
Last edited:
I am not familiar with AD, so I may be way out in left field, but why couldn't you just let the timer stay enabled and timed out until the start button is pressed again. Can you just seal it in with it's enable contact in series with the start button?

This is a quick bandaid. A more organized approach like Terry's or state logic will be cleaner.

You realize that the majority of the cycle will operate each and every time the clamp switch is made and the table is retracted? What if somebody flips the lever or flags the prox switch with a tool?

Just something to think about for future sequential logic programming.

Paul
 
Well...

It's LS3(X4) that is dropping out, causing T3 to reset.

Since the length of the part varies, LS3 is supposed to sense the pressure buildup on the cap end of the clamp cylinder to tell the PLC that the part is clamped. Have you guessed the problem? That's right, when the drill starts up, it drops the system pressure enough to allow LS3 to drop out almost immediately.

I may have to resort to some kind of adjustable-height sensor to detect the clamped position, or perhaps use a timer (not the best solution, obviously).

You realize that the majority of the cycle will operate each and every time the clamp switch is made and the table is retracted? What if somebody flips the lever or flags the prox switch with a tool?

Though not strictly called for in this application, the entire hazard envelope will be protected with a safety light curtain. It uses a relay with a pair of force-guided contacts in series with the output commons. The X13 contact shown in rung 2 is just an auxiliary output that I'm using to stop the program at the same time.

This is turning into a mess. :(
 
Paula,

No,no, it is not a mess. Buck up, matey, and hang in there. I have seen messes and this is not one!

Just put a T3 normally open and and a C0 normally closed contact in parallel with LS3 and LS4. Then it will not matter if LS3 drops out after starting the drill.

As for the Clamp, if it is still holding position when the drill starts, then you can also put a "seal-in" contact around it, so that it shows "clamped", even if the pressure drops off and LS3 opens. Try this new rung:

 
Clamp Extended Clamp Extended Seal-In
LS3 C10
|--+---||-------+------( )----------------|
| | | |
| | C10 C0 | |
| +--||---|/|--+ |



If you add this rung, then you could substitute C10 everywhere that you have LS3 now, and everything is hunky-dory.

Good luck, I have to go now. Wifey is waiting for me in the hot tub.
 
Last edited:
This is turning into a mess.

Oh no, it's not that bad at all. My point in the last post was not about safety, but about just reading the logic and looking at what it takes to make each thing happen.

You quickly realize that there may be many quirks and bugs that could crop up if an input device goes flaky.

You don't want that, and you are a little disappointed with the look of the program right?

Well, again I can only give AB type examples, but to go from a list of english steps to a functioning program should be very similar.

Can you address an integer in AD and also address each of its bits?

If so, do something like this (see post #7):
http://www.plctalk.net/qanda/showthread.php?t=14782&highlight=simple+sequence

only instead of the PB1shot contact in each branch, you will have all of the required conditions for each step to advance.

This is a clean structured way to do any simple sequence and it is easy to add multiple branches so you could go from step 4 to step 7 or whatever you may need for various operations/products.

Maybe this approach will generate a bigger program, but if it is more clear and easier to modify, it is worth it.

Again, I don't know the AD addressing capabilities, so some variation of these instructions will be necessary.

Hope this helps.
Paul
 
Last edited:

Similar Topics

Hello: I have to connect a RS232 Modbus RTU slave that only has Tx, Rx and GND signals to a Modbus RTU master. However, all RS232 to RS485...
Replies
3
Views
204
Hi All, I came up with this for ramping the PWM pin on the micro 820. I'm new to ladder logic so I am not sure if this will even work? Once...
Replies
6
Views
323
MELSEC A RS422 (25pin) <> iQR C24 Serial RS232 (9pin) - Simple PLC Communication Communication from a MELSEC-A Series CPU (RS-422 – DB 25 Pin)...
Replies
4
Views
1,003
M12 sensor plugs are widely used. I'm about making my own CAD symbols for sensor connections, and I'm not sure about including pin #5, which is...
Replies
6
Views
1,452
In my FC I use an inout variable for the memory of a Set/reset. When i call the FC i have the pin at the entry side of the block while i would...
Replies
4
Views
1,888
Back
Top Bottom