My cover story this month provides ample evidence of how machine builders can benefit from using a more modular software approach. Here's a look at another such company.
CMD in Appleton, Wis., builds plastic converting machinery ranging from film rewinders, slitters and sealing units to entire bag and pouch-making systems. CMD also designs systems for end-of-line product automation such as conveyor control, diverters, convergers, and Cartesian and SCARA robot modules.
CMD has customers worldwide, and uses automation components from a variety of vendors. The company also must easily accommodate customer requests for custom equipment or, as electrical engineer Mitchell Hein puts it, "a twist on an existing machine."
To accomplish this, CMD uses modular function blocks for programming its automation components. "We've developed an entire library of proprietary function blocks that we use in our machine control application software," Hein explains. "Function blocks allow us to copy and paste an entire temperature control system, a tension control loop, servo motor control, or any of hundreds of other subsystems, into a new machine's control software."
If a company is smart about modularizing its code, it can "drop in" an entire pre-tested control subsystem by simply inserting one function block, Hein says.
Reusing modular function blocks greatly reduces the risk of programming errors because each block has tens of thousands of hours of in-field test time in other machines. The machine builder is assured that the code works, and that the method of control is proven. Version control and library maintenance can be handled with a minimum of effort, as long as all programmers adhere to established procedures and guidelines.
CMD didn't develop all of these software modules itself, as some were supplied by its vendors. "In recent years, many of our control system vendors have begun to supply us with function blocks, as a part of their programming packages," Hein notes. "Many of our vendors offer pre-defined modular code to handle complex functions."
Modular code allows a large team of engineers and programmers to share work with each other. "We have several product development groups, including one that focuses on intermittent-motion machinery; one for rotary, continuous-motion machinery; and another that specializes in general automation," Hein says.
Modular code also cuts development time. "Function blocks that are well-designed and properly commented allow hundreds of hours of development to be stored in such a way that a new team member can learn everything needed about that block or subsection in just a few minutes of review," Hein adds.
Being able to drop in an entire pre-packaged block of code takes far less time than developing that code from scratch. "Less time is required to develop and test software changes, which saves time and money," Hein continues. "Reducing the leadtimes of software development is a large benefit to our customer, makes us more competitive in our quotation process, and saves much of the cost associated with engineering, development and testing."
Modular code also is easier to debug. Blocks of code can be examined for errors, as opposed to the entire program. "When a machine isn't behaving as expected, function blocks make the overall code simpler and easier to understand," Hein says. "This speeds up the diagnostic process, and gets the machine back up to full operation that much quicker."
The "look and feel" of a product is very important to CMD's customers. "We've developed a library of operator interface HMI objects, built from vendor-supplied tools," Hein explains. "When you offer as many different models of machinery as we do, it's important to our customers that the operator control screens have a consistent look and design. Because we use a standard library of HMI objects, machine operators know what a given control object will look like, even if they haven't worked on that particular model of machine before. This simplifies their learning curve, and makes them more effective and efficient that much sooner."