Do you maintain all your equipment yourself or do the customers take over after delivery?
They take it over after delivery (I don't think many of my customers even have Step7). The style I use is pretty much described in the UDT thread, and you can see that it is self-documenting. In the cases where I use pure indirect addressing, it is contained in functions that never have to be troubleshot. And unless it's purely by accident, I don't think anything converts to ladder (I like to put everything in one network and separate the logical sections with comments).
Of course, that might sound kind of scary, so I'll add some caveats:
1. I program in STL because it is much faster to develop (saving the customer a lot of money) and uses far fewer instuctions to perform the same logic.
2. STL is actually quite simple to troubleshoot. I can take a guy who is kicking and screaming about it, sit him in front of my computer, and in ten minutes he understands how to interpret the accumulators and RLO (I've done this with the typical union electrician). I don't see what people make a fuss about.
3. I include tons of diagnostics. Every project I've worked on includes an HMI, and I display everything from a graphical representation of the actual I/O cards to listings of every internal parameter of all the drives. In essence, the HMI displays everything that anyone could ever hope to find by going online with the PLC. Think about it: When someone goes online, what do they usually find? The reason that the machine isn't working or an error in the code? My guess is that they find out what is keeping the machine from working (limit switch not met, drive fault, etc). As long as I display the state of everything on the HMI, they don't need to go online.
4. I do exhaustive testing. I mean,
exhaustive! I know it's hard to anticipate everything, but I try to go the extra mile. After I think I've found all of my bugs, I'll get an untrained operator and tell him, "Do whatever you want. See if you can make it fail", and sure enough, he'll find something I didn't think of. By the time I finally walk out the door though, my code is "hardened".
5. Would I code in the more traditional ladder style if a customer held a gun to my head? Sure, no problem. But after explaining to a customer why I do what I do, they pretty much let me alone. It's a matter of trust and confidence I guess. I haven't screwed anyone over yet.
Sure, I'll have a few bugs show up over time, but since I've given them so much diagnostic data and logging, it's very easy for them to describe the exact conditions, so I can almost always figure out what went wrong and make a fix.
The last major project I finished contained 7 416s, 350 Micromaster drives, thousands of IO points, etc, and they don't even have the source code. It has been over a year and a half, and the system is chugging along 24/7 with only a couple of phone calls from them.
That said, does anyone need a pretty good S7 guy?
My current project is nearing completion, and I am ready to tackle something else.