Leadfoot said:
I...when programming time is about 2 times the actual amount built into the job, the head scratching starts...
There are also several things that you can do that will improve your efficiency as well. Efficiency improvements are extra gravy on the job when you did a good job with the estimate, or when you do blow the estimate (which I've done a few times), they help make the taste more palatable while eating your shorts.
For starters, use Excel to pre-define the tag names and descriptions for all your IO points as well as any known internal registers. Everything that is known before you start the actual programming should be included. Then use a CSV import to bring all the tag names/symbols and descriptions into the PLC program file. If the database if predefined then you don't have to waste time looking up the next availalbe address or looking up what IO address a sensor/actuator is connected to. This is a gigantic time saver - I wouldn't program without it now. I sometimes do several imports over the course of a project as each part of the code is developed.
If the program authoring software supports auto-complete with symbolic addressing, turn on this feature. That way you only need to type the first few characters of the tag and the software will fill in the rest from the database.
If you use a consistent nomenclature with an imported tag database this can also be a huge timeaver. For example, flow switch symbols might always start with FS. In RSLogix with autocomplete, entering FS for the instruction address will drop down a list of all symbols that start with the first couple of letters you enter, so I could pick between FS_line1 or FS_line3 or whatever without bothering to look up the IO address again.
Employ top down programming design. Take the time ahead of time to decide how you are going to break down the job into smaller tasks, define the task, and create a subroutine for that task.
Develop re-usable code libraries
I program on a desktop. The lap top is for field work, but development happens on the desktop with a full sized keyboard, normal mouse, and large monitor. It makes a difference.