another epic ... part 1 ...
Greetings to all ...
standard disclaimer: first of all let me say that I always feel slightly “uncomfortable” whenever I use Phil’s excellent forum to discuss the PLC training that I do - because I’m sure that there are some who consider any comments that I make to be “advertising” ... on the other hand, occasionally my PLC courses do get mentioned by others, and in many of those situations I feel that I should make SOME type of personal response ... I can assure you that my feelings will NOT be hurt if Phil decides to edit (or even completely remove) anything that follows ...
also I’ve been away for a few days of vacation – or I would have responded earlier to this thread ...
from AGENTTINFOIL:
I want to get more in depth on the code side of things. That is why I want to be careful of my choice I do not want to waste company money on a course that I may not benefit from.
based on that statement, let me start out by saying that the PLC “boot camp” courses that I normally teach are NOT what you’re looking for ... as others have said, most of my classes are geared towards maintenance technicians who work on systems that are controlled by PLCs ... specifically, these are not intended to be “programming” classes ...
now let me go a step further and say that occassionally I do teach classes for programmers ... at the risk of sounding like “advertising” I’m going to describe a little bit about how these are set up ... but stay tuned – because at the end of this post I’m still going to recommend that you NOT take one of these “programming” classes either ...
one of the main reasons that I don’t teach more of the “programming” type classes is that my boss hates them ... specifically, he doesn’t like the fact that I won’t let any more than two students sign up at a time – and naturally this severely limits his “bottom line” income ... the fact is that teaching “programming” takes a LOT more instructor attention and involvement than other types of classes require ... putting anything more than one or two students in a programming class is a recipe for disaster – at least in my personal opinion ... so although I feel comfortable with up to six (maximum) students in a “troubleshooting” class, I won’t take on more than two (maximum) students at a time in a “programming” class ... and that’s the main reason that you won’t find the specifications listed for a “programming” class on our company website ... the boss doesn’t want to advertise them – because he doesn’t really make enough money when he sells one ...
now what I’m going to do for the rest of this post is simply try to help AGENTTINFOIL nail down the best way to get the training that he’s looking for ...
so just for discussion, let’s suppose that my boss has given us the go-ahead and that you’ve decided to sign up for a “programming” course ... here’s the next step – and this is taken directly from a course description that I recently wrote up for a very good training customer of ours ...
IMPORTANT: In order to optimize the use of classroom time and to insure the effectiveness of this course, students are required to submit a “programming project” to the instructor a minimum of two weeks before the class meets. Subject to the instructor’s final approval, the application specified by this project will serve as the primary focus of the students’ programming exercises. The application may consist of any reasonable type of machinery (real, imaginary, existing, or proposed) which incorporates the programming techniques and objectives of this course. Students may use text, pseudo‑code, outlines, flowcharts, or any combination of these or other methods in detailing the specifications of the application. The project must include detailed sketches of the machinery layout to be used in the HMI/SCADA development phase of the class. A detailed I/O listing is also required. Students are invited to contact the instructor for guidance during this stage of the training.
the basic idea here is that YOU have to tell ME what type of program you want to learn how to write ... and there are MANY different kinds of programs – simply because there are MANY different kinds of systems that PLCs can be used to control ... for example: suppose that we spent all of our class time learning to write a program for something like a conveyor system ... some (many? most?) of the skills that we covered might be of very little use if your first back-at-work assignment turned out to be programming something like an oven application with analog signals and PID control ...
now once I’ve received the “programming project” that you’ve written up, I’ll take a close look at it and decide whether there’s enough “meat-and-potatoes” material there to make a decent class out of ... if there’s not enough substance there, I’ll send it back and suggest that you add something a little bit more challenging ... and if there’s too much stuff to cover in the allotted class time, then I’ll send it back and recommend that you make some cuts here and there ... and here’s a very important part of this particular step in the process: we’ll get your boss involved in the specification of this “project” too ... since he’s the one who’s going to pay the bill, he should definitely have a say-so in the specific type of “programming” skills that you’re supposed to be learning ... once he signs-off on the “programming project” then we'll know that we're on the right track ...
although it’s not completely necessary, one thing that really helps during this stage of the proceedings is for me to take a look at any existing programs that your company might already have in use ... if anything along those lines is available then we might put something like this in the “course objectives” statement:
... cover the skills required to design and write ladder logic programs for Allen‑Bradley PLC‑5 controllers consistent with the layout and complexity of the existing programs LINE2.RSP and LINE4.RSP currently in use in the Acme plant at Anytown, PA ...
the part about “consistent with the layout and complexity” is very important ... that statement helps give us a definite target to shoot for in the area of “format” ... of course in some cases a customer might not have any existing programs to serve as “samples” of form and layout ... but in those cases we’ll come up with some other way of determining just how “simple” or how “sophisticated” a programming approach we’re trying to achieve ...
and here’s where we stand so far ... you, your boss, and I have finally come up with a specific programming project for you to tackle during the class that you’re going to take ... as nearly as possible, this project reflects the specific types of skills that you’ll need to learn during the course ...
now when the class starts on Monday morning, we’ve got our goals laid out and we should be ready to get started ... the main idea is that I’m NOT going to try to teach you “how-to-program-a-PLC” in a one week class ... not even two, three, or four weeks would be enough time to cover that subject properly ... but what we SHOULD be able to do is to work through the techniques and the skills that will be required for you to do the “programming project” that we’ve specified ... and those are the same skills that you will need as you continue in your programming career ...
here’s an analogy:
first suppose that you want to learn a new language – Spanish for example ... so you walk into the classroom on Monday morning armed with a document written in English ... what I’m going to do throughout the class is help you learn how to convert that English document into the equivalent document in Spanish ...
now suppose that you want to learn a new language – Ladder Logic for example ... so you walk into the classroom on Monday morning armed with a document written in English ... what I’m going to do throughout the class is help you learn how to convert that English document into the equivalent document in Ladder Logic ...
that’s my personal approach to teaching “programming” in a nutshell ... when you stop and think about it, there’s quite a difference between this method and the canned projects (traffic light/garage door/etc.) that are used in most other “PLC programming” classes ... but ... I would STRONGLY recommend (in fact almost insist) that a student work through a full series of those types of projects BEFORE coming to my programming class ... the basic skills that can be learned that way are extremely valuable – and they MUST be learned somewhere along the way ... it would be much better to learn them BEFORE the class starts – rather than take up expensive classroom time that could be put to more important use ...
and back to our story ...
now that the “programming project” has been properly specified, one of two outcomes are possible ...
(1) you learn the skills and techniques that you signed up for ... the class will be a success – and my boss will expect your boss to pay the bill ... or ...
(2) you don’t learn those skills and techniques ... the class will be a failure – and your boss pays nothing ... that’s the “money-back” guarantee ...
just be sure to bring your “A” game - this will NOT be a walk in the park ...
continued in the next post ...