In several of my previous posts I have touched on this subject indirectly. As I finish up on my current project I am reminded of how every system has its own challenges and seems different from every other machine or line I have worked on before.
The fact is most of the machines and lines I work on have more similarities than differences to previous projects. The brand of component may be different but at this point in my career I have seen at least some version of the components and test equipment used on some previous project. This particular project has leak testers (Cincinnatti Test Systems or CTS), mass flow testers (Sierra), Vision (Cognex), Torque Drivers (Bosch), Servos (Allen-Bradley and Intelligent Actuator), barcode readers (Keyence), PLCs and HMIs (Allen-Bradley), torque transducers, LVDTs, and load cell vs. motion press systems (Kistler). On several of the sections of code I have gone back to old projects and pulled in reusable code from other templates. Since this project uses a customer-provided template there were also several subroutines that just needed to be tweaked a little such as for the barcode readers and leak testers. So on this project there is really nothing new or particularly different.
Still it seems like I end up “reinventing the wheel” to some degree on every project. When I was at Wright Industries we had a pretty good template for Allen-Bradley’s ControlLogix platform that all of the controls engineers used. Since probably 90+% of our projects there were A-B the process was pretty standard. Of course customers had their own preferences for certain tags and naming conventions, but in general the systems were pretty uniform.
On this project The template provided was from a New York machine-builder called Calvary Automation. The template is pretty good though it took a bit of getting used to. The problem is that if you are not familiar with the layout and don’t have an outline or description of the intent of the template it is easy to “step on” a lot of the tags and functionality without knowing it until its too late. It would be nice to have the luxury of spending a week or so at the beginning of the project outlining the code and developing some of the template tools that I am sure were used by the original programmers, unfortunately by the time I got involved the machines were already powered up.
This process has reinforced how important it is to standardize as much as possible when designing a system. Reusable code is a major time saver as is familiarity with a template or coding procedure. This also applies to the mechanical design, quoting, and even the parts procurement and project management processes. This is an advantage OEMs sometimes have where they build essentially the same thing many times over and over again although you’d be surprised how many of them still treat even their standard products in different ways each time. Its really a matter of efficiency, anything that can be standardized and prevents a reinvestment of time on something that has already been developed should be used if possible.