Prosolid asks a good question. I believe this is a problem we all face each time we start a new project as a member of a team where other designers and we are not the “lead”. Heck, even then we face that problem.
Anyway, lets start with some assumptions. First, lets assume that your PLC programmer is locked away in a little room somewhere and you are going to slide some written directions to him under the door and then expect a working PLC program to be slid back out the same way. Second, lets assume that his programming skills are so advanced that there will be no errors and, thus, he should never be involved again.
Now obviously this is way stringent. And obviously we all know that the more involved each individual is in a project, the better his or her performance will be. But I am trying for worst-case here.
1. All PLC technical information
2. All I/O information – Wiring, type, terminations, etc.
3. Power Up Conditions – What should (and must not) happen when power is applied.
4. Power Down Conditions – What should (and must not) happen when power is lost.
5. E-stop Conditions – What must (and must not) happen when an Emergency Stop is initiated.
6. Movement Limitations – Soft and Hard limits
7. Automatic Cycle (assuming one or more exists):
_ a. Required Starting Conditions
_ b. How “Auto Start” is initiated
_ c. Actions required in a Step-by-step fashion
_ d. Actions required when an Interrupt condition exists (if any)
_ e. Actions required to continue after an Interrupt (if any)
_ f. Definition of Cycle Complete Conditions
_ g. Actions required to Cycle is Done
8. Manual Mode
_ a. Definition of what “Manual” mode means (is each machine movement “jog” only or something else?)
_ b. How a “Manual” Command is issued and actions required
_ c. Actions required when an Interrupt condition exists (if any)
_ d. Actions required to continue after an Interrupt (if any)
9. Recipes (if any):
_ a. List of all recipe information
_ b. Description of how it is to be accessed
_ c. Detail of who can (or cannot) accesses it
_ d. State if it to be stored or not
_ e. Description of where each field of recipe information is to be used
I know I left out a lot of things but I think this is a good start.
In the end, I think it comes down to this: The programmer has to know the expectations of the machine. The more he knows about it the better. If he is not going to be involved in the machine’s mechanical design from the ground-up and have a hand in the decision making process (mechanical guys really have problems with this), you will have to go into great detail when describing your expectations of his program. You need to describe the program, step-by-step, before you ask him to write it.
Steve