Pin Installation Machine

Lancie said...

"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."

Yes, that is correct. That was the "oops" I referred to at the top of my post. I was in a hurry and didn't have time to fix it. I was only able to add the "oops" before I had to go.

All that's needed is to fix one rung and add another.

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 Clamp
Extended Part
-----| |-----+------------------| |----( ) Drill Cycle Completed
|
Drill Cycle |
Completed |
-----| |-----+


Drill-Cycle Drill Clamp
Completed Retracted Part
-----| |------------| |----+-----| |----( ) Extend Table
|
Extend |
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 Driver
Cycle Done Retracted
-----| |---------| |--------| |-------( ) Whole Cycle Completed




Paula,

Mike is right about considering the DRUM. This is the kind of process that drums accel in.

My point about "think like a people" was meant to encourage you to re-think how you were looking at the process.

When you develop a process like this you just need to consider what YOU would have to say to be bunch of guys that were actually controlling the particular devices.

For example... oh hell, I'll go through the whole thing...


Rung-1:

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


.
Your scheme requires an operator to load a part and then press the Start Button.

So, Rung-1 says... If the Table is at Home and the Operator presses Start, then the part is clamped until the Cycle is Done. The assumption is that the operator just inserted a part for processing.

Rung-2:

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


.
You should have a sensor that indicates that the clamp is closed, thus indicating that the part really is clamped. A Timer will not do!

Rung-2 says... If Part is Clamped then Do the Drill Cycle until Drill Cycle is Done (or until Clamp Part goes OFF).

If you include your E-Stop and Light Curtain in Rung-1, then if either is activated, the Clamp Part signal goes OFF and the Drill Cycle is aborted.

You indicated that the "Start Drill" signal only needs to exist for a moment in order to start a cycle. However, there is nothing wrong with keeping the signal ON until the full extention is done.

Rung-3:

Drill Clamp
Extended Part
-----| |-----+------------------| |----( ) Drill Cycle Completed
|
Drill Cycle |
Completed |
-----| |-----+


.
In Rung-2, Do Drill Cycle extends the Drill. You should have a sensor that indicates that the drill is really extended. A Timer will not do!

Rung-3 says... if the Drill is extended then maintain Drill Cycle is Done until the part is unclamped. Once the Drill Cycle is Done, the drill is retracted in Rung-2.

Rung-4:

Drill-Cycle Drill Clamp
Completed Retracted Part
-----| |-----------| |----+-----| |----( ) Extend Table
|
Extend |
Table |
-----| |------------------+


Rung-4 says... If the Drill Cycle is Done AND the Drill is Retracted, and of course, if we are Clamping the Part (meaning that we are in Cycle), then, Extend the Table until we are out of cycle (that is, until Clamp Part is turned OFF).

Rung-5:

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


.
Rung-5 says... the Table is Extended and we are in cycle (Clamp Part) so... Do the Pin Cycle until the clamp is released (Clamp Part goes OFF).

Rung-6:

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


.
Rung-6 says... If we are Doing the Pin Cycle, then Extend the Pin Pusher until the Pin Delay is Done.

Rung-7:

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


.
In Rung-6 you are extending the Pin Driver. You should have a sensor to indicate that full extenstion has occurred. A Timer will not do!

Rung-7 says... If we are doing the Pin Cycle (as initiated and controlled in Rung-5) and the Pin Driver is Extended, then run a timer... the need for the timer is because you indicated a need for a hesitation at full extention. (I find this troublesome... do you have a sensor for full extention???) At any rate, the timer is a delay before the full extention is "really done".

Once the Timer times out, the Pin Delay Done bit goes ON. This is used to self-seal itself (redundant? Well, maybe). The Pin Delay Done bit needs to be maintained until the Pin Driver is fully Retracted in the next rung.

Rung-8:

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


.
Rung-8 says... If we are Doing the Pin Cycle, and the Pin Delay is Done, and the Pin Driver has been fully retracted then... we are done with the cycle!

Once this bit goes ON, the output in Rung-1 is turned OFF and the entire section of code is disabled until the next time that the Table is at Home and the Start Button is pressed.

The whole point of that was to show that the entire control scheme can be handled simply by using carefully considered "human-speak", that is, normal, everyday language.

Ergo... "Think like a people."

The unspoken part of my "Be the Computer" concept is, do so, but think like a people!

Now... there are other considerations...
- what if the drill bit is broken? It will not bore very far, if at all.
- what if the Table Extender fails?
- what if the Pin Driver somehow ends up mis-aligned? And doesn't complete the function?

You only have a few driving devices... it should be pretty simple to monitor all of the what-ifs.
 
Originally posted by Terry Woods:

Paula,

Mike is right about considering the DRUM. This is the kind of process that drums accel in.

(emphasis added)

Does this mean the drum will execute faster and faster until the whole process bumps up against the speed of light? o_O
 
Ron,

Looking at your latest version of the program... very helpful!

One thing that needs to be addressed, in case you missed the initial discussion, is that LS3 (which detects that the part is clamped) is by necessity a pressure switch. The gives rise to a situation where the system pressure drop from the drill starting causes the signal to drop out. Though not the best solution, it was decided to just make this contact self-sealing. The reason for the pressure switch was to acommodate parts of various heights without the need to adjust the switch detecting the clamps extended position, or, worse yet, using a timer. At this point, I see no better alternative than the contact seal-in.

Regarding the "drill pulse" timer, I only went this route because the drill manufacturer suggests it. Basically, the air pulse is pressurizing a pilot circuit that holds the drill's internal valve in for the duration of the cycle. I think it would work the way you have it, since the pilot circuit would have to be pressureized for LS9 to change state, and it's a cleaner design (no timer).

What I am considering for the pin feed sequence is using an SP1 contact to monitor the state of LS8 (pin present), and LS6 (driver retracted) whenever the control system is on. When the two necessary conditions are met -- no pin in driver, AND the driver retracted -- then the pin feed sequence would be triggered. This could be placed in a sub-routine, and be more-or-less independent of the main program, which doesn't care about the pin feed sequence except to make sure that a pin is present before the driver extends. I think this would be an elegant way to structure the program, and the pin feed would be accomplished whilst the operator is unloading/loading the part.

Paula
 
Last edited:
kamenges said:
Does this mean the drum will execute faster and faster until the whole process bumps up against the speed of light?

You ludicrous popinjay! Your homage to the speed of light as some kind of ultimate cosmic speed limit is so Old School Physics.
smilewinkgrin.gif
 
One thing that needs to be addressed, in case you missed the initial discussion, is that LS3 (which detects that the part is clamped) is by necessity a pressure switch. The gives rise to a situation where the system pressure drop from the drill starting causes the signal to drop out. Though not the best solution, it was decided to just make this contact self-sealing. The reason for the pressure switch was to acommodate parts of various heights without the need to adjust the switch detecting the clamps extended position, or, worse yet, using a timer. At this point, I see no better alternative than the contact seal-in.

NOTE: Your home compressor may just be 3-4 SCFM which can cause issues with maintaining system pressure on demand. A factory system should be capable of 50 SCFM or so on demand, maybe more. I would not worry too much about the pressure switch dropping out until tested on site and verify the SCFM, on demand, of the plant air system.

What I am considering for the pin feed sequence is using an SP1 contact to monitor the state of LS8 (pin present), and LS6 (driver retracted) whenever the control system is on. When the two necessary conditions are met -- no pin in driver, AND the driver retracted -- then the pin feed sequence would be triggered. This could be placed in a sub-routine, and be more-or-less independent of the main program, which doesn't care about the pin feed sequence except to make sure that a pin is present before the driver extends. I think this would be an elegant way to structure the program, and the pin feed would be accomplished whilst the operator is unloading/loading the part.

I am not sure a sub-routine is needed. You have a "dwell" time for the pin seat so those conditions may be possible for pin loading in a ladder routine...as I addressed in my latest version.

This appears to be a simple machine, in fact so simple I am sure I could do it with ease, and I am not good. This machine appears not to require many rungs of ladder therefore I do not think a "drum" or "subroutine" is necessary, but I could be wrong. It is hard to determine without the machine.

Note; a subroutine is not independent of the main program, it INTERRUPTS the main program to run its cycle. It does not run simulataneously or parallel to the main program. It is just as easy, in some cases not high speed, to incorporate what is needed in the main program.

What would be nice, since I do not have the machine, is you using my program and telling me what happens. I know you do not have alot of time for experimenting but if you do I would appreciate it.
 
If your sequence is programmed as Terry or I suggested, it is very easy to make it tolerate a change of state of LS3. You won't be depending on it alone, but also the "knowledge" that you are "in step n", and you put on that step transition rung only the things that you care about for that step.

I didn't want to bring up drum sequencers just yet. This process is really too simple for that level of complexity, and no, it won't run faster than straight forward step by step relay logic. It will probably be slower since word instructions execute slower than bit instructions (at least in my experience with AB). But we're talking micro seconds difference. I love sequencers, but only for complicated assembly machines. Remember the KISS principle...

Boy I wish I had some PLC software here...Maybe I'll try out that simulator...by then, Ron will have it all ironed out.

Good Luck Paula.
 
Regarding the "drill pulse" timer, I only went this route because the drill manufacturer suggests it. Basically, the air pulse is pressurizing a pilot circuit that holds the drill's internal valve in for the duration of the cycle. I think it would work the way you have it, since the pilot circuit would have to be pressureized for LS9 to change state, and it's a cleaner design (no timer).

Accredit that to something Terry taught me, it is called a "WAS" i.e. X was at ON and now X is OFF or vice versa. It is just recording the actions of the program and manipulating them for your use.

As an example of "WAS" is this page for flip flop; http://www.patchn.com/flipflop.htm
 
WAS...that's beautiful Ron, Terry

A WAS.

I love it. That is so much easier to explain than the way I have done it in the past. Any one can "get" that.

You guys never cease to entertain me. My TV is now just a nitelite with a separate monthly bill.
 
I didn't want to bring up drum sequencers just yet. This process is really too simple for that level of complexity, and no, it won't run faster than straight forward step by step relay logic.
A strong second for that, Okie, and Ron. Have a heart, you other guys. You all know drums and sequencers and such will do the job, and probably for many of you, that would be the easy solution, but you know too that they are NOT the best solution for this project, considering ALL factors. This is a straight-forward little sequential machine, and Paula does not need the extra complexity at this point. The problem with a drum sequencer for Paula will be that it will obscure how the program works. Is that what YOU really think she needs?
 
Last edited:
Lancie1 said:
The problem with a drum sequencer for Paula will be that it will obscure how the program works. Is that what YOU really think she needs?
I think it is obvious what the program is doing with AD's EDRUM. It eliminates the nightmares of trying to write a sequencer in straight ladder. Some of the problems she had would have never occured with a drum, or State for that matter.
State may obscure what the actual ladder is doing, but not the drum instruction. The only downside I see is it's difficult to add a step in the middle.
This isn't a learning exercise. She wants to get the job done.
If she started with a drum, it wouldn't have taken 3 pages to get to the solution.
If you need a sequencer, then start with a sequencer (drum) instruction.
 
I will bite

Peter Nachtwey said:
I am surprise that no one is using Phil's PLC simulator.
A state machine should execute only one state per scan. Why?

First and foremost please do not start a discussion that will deviate from helping Paula. IF anyone sees any discrepancies or problems with the program I have offered please feel free to correct them.

I used DirectSoft because that is what is used to program the plc Paula has.

Please inform us what you mean by state machine.

I am not sure what you mean by execute one state per scan but if you mean execute one action per scan...then no machine is/should be limited to that.
 
I've never used it, so this reply is subject to correction!
State programming is a type of flowchart. In it's simplest form, you do State 1, then State 2, etc. Events (outputs, etc.) are only active during the current State. Sort of writing the entire program with subroutines. You write the State logic, and the actual ladder is written by the software.
 
Peter Nachtwey said:
A state machine should execute only one state per scan. Why?

Not sure I follow. I'd state it that a state machine should execute only one state at a time. Perhaps redundant but it might also be worth noting that all states are mutually exclusive.

For my IEC 61131 friends, a state machine is like a single path Sequential Function Chart (SFC). However, SFC's can have parallel paths. But then again, even in ladder you likely would only have your state machine as a subroutine call. For things like error checking, HMI updates and communications, you would want to put somewhere where they would run all the time.

Other info: http://en.wikipedia.org/wiki/State_machine
 

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