... I still cringe at the idea of teaching PLCs to people that do not already have some background in digital logic. It's like trying to be a concert piano player without playing the scales. I'm working with a customer now who wants to learn how to enter rungs but he doesn't yet understand the difference between a bool, a real, and an integer. ...
... The company will provide what is needed for the takers of the course, ...
... I'm not being rude but the saying 'you can't put in what God left out' is true. ...
We still do not know the audience. One of the reasons I've been able make the meager progress I have in PLC programming is a one-week course I took in microcontrollers* nearly four decades ago. What tools will they bring to the course?
In the syllabus from your bosses, I don't see things like bits, integers, and floats. I also don't see a place where understanding the scan cycle would fit in, and the scan cycle is crucial to understanding PLC programming. I'll bet any Unix-head who knows the AWK program could pick up PLC programming quickly, because AWK has a built-in scan cycle that is essentially the same as a PLC. Perhaps the audience already knows that stuff; if not, I cringe with @Corsair. To program, as with any language, we need to know both vocabulary (bits, bytes, words, etc.), and grammar/syntax (rungs, instructions i.e. modifiers, etc.).
One of the sweetest places to cover some of that knowledge is @Ron Beaufort's bootcamp video series (cf.
this link), which I recommend here about once or twice a month, along with the ladder logic patterns (cf.
this link) that are used over and over. It comprises about a dozen videos and takes less than 2h to watch. The concepts of "bit box" and scan cycle covered in just the first handful provide a solid foundation for the student to build a model in their head for how a PLC works and what it does, because that is what one needs to program. Making sure everyone coming to the class has watched those videos, so they come to class with either understanding or useful questions, would be a prerequisite of any course I would teach.
The only content I would add, on a poster with large letters, is this:
Always assume
(A) that the PLC cares not a whit what you want it to do, and
(B) that the PLC is faithfully, inexorably and mercilessly doing exactly what you told it to do.
The sport of programming is nothing if not humbling, and anyone who attempts programming without those assumptions as the central tenets of their journey is doomed to eternal confusion. They may not sink in right away, but once first contact with them occurs in practice
and is recognized, it will not be forgotten.
* my resume says it was an 8085; I remember the machine code program and data had to fit in 256 bytes, and the teacher's comment on my final project was "Compact as hell" (which explains a lot
).