Ron, you are the man! Thanks for taking the time to write that program! It will take me some time to study it and compare it to my version, but I can already see some improvements in your approach.
Addressing some of your other points...
I did not incorporate the pin loader part because I was not sure how it was accomplished.
The pins will be fed on demand from a vibratory feeder bowl. (I went to pick it up from the vendor this morning to deliver it to the fabricator.) The sequence to feed a pin is quite simple: A solenoid valve is triggered (approx. 1/2 sec. duration) to actuate the escapemant mechanism. This releases a single pin into a chamber. After a short delay (approx 1/2 sec.), another valve opens to blow the pin thru a tube into the driver's nosepiece. LS8(X11) senses when the pin is present in the driver, and shuts the valve off. I am currently attempting to incorporate this operation in a subroutine (per Lancie's suggestion), such that the pin-feed sequence is run whenever the PLC sees that the driver is empty and retracted. Thus, it will only subtract minimal time from the cycle.
...the ESTOP is using a normally closed contact, its my personal opinion the ESTOP should use a hardwired normally closed contact, therefore the plc should use a normally open contact.
The E-stop button (maintained-type) has both N.O. and N.C. contacts. The N.C. contact ("normal" being when the E-stop button is pulled out) is hardwired to the MCR, which interrupts the feed to the output commons. The N.O. contact is wired to an input, for the purpose of zeroing-out the program when the E-stop is pushed. This is to prevent unanticipated movements when the MCR is reset (with a separate pushbutton).
The light curtain I also believe should be done the same way, i.e. the plc inputs should be looking for power ON condition as an OK.
The safety light curtain (type 4) may be overkill on this machine, but another customer had ordered one for a machine that never got used, and offered it for a good price. It has a separate relay with two pairs of force-guided contacts, which are hardwired in series with the output commons. It also has an auxiliary output that I've wired to the X13 PLC input, to function like the auxiliary N.O. E-stop contact, namely to zero-out the program whenever the light curtain is breached.
Thanks again for your help, Ron. I will examine your program further.
Paula