Here's the situation: The production supervisor calls and wants a few basic upgrades to an automated packaging line. No problem. Make a couple of minor logic changes and download the program. You load the program onto the controller at a shift change. Bam. It's good to go. The shift changes over, line starts up and "bam,"but this time not in a good way. There are logic errors caused by the new program. You revert back to the previous version on your hard drive. Still not working. Now you've got the production supervisor breathing down your neck and a nonfunctional production line.
Here's another one: You're at work on the final revisions to an important proposal for your biggest client and email it to a colleague for review. You don't hear back for a while, so you make more changes. Right before you're about to send the proposal, your colleague emails you a marked-up version. You save it to the network drive, inadvertently overwriting your updated version. Worse, you send a version to your customer that has a bunch of comments, some of which you don't want him to see.
These are just a couple of, in some unfortunate cases, not-so-hypothetical situations that could be avoided with basic version-control discipline.
The mistakes mentioned above were, in the scheme of things, rather innocuous. But think of the potential for very costly mistakes if a chemical batch process control system was sequenced incorrectly—some serious safety problems could result.
A good version-control system lets multiple people work on the same project, reduces rework, improves software quality, decreases storage requirements and total number of files and, with change logging, facilitates software documentation. A good version-control system also can provide traceability and accountability, the ability to quickly revert to a known version, to easily compare changes and to provide assurance that you always are using the correct version.
There's no one-size-fits-all solution to all version-control challenges, but the absolute most important thing is to have a process and follow it. The best version-control technology does you no good if you don't have the discipline to follow it consistently.
For PC and Web application development, one of the best tools is free Tortoise SVN. Based on SubVersion, a revision control system in use since 2000, Tortoise SVN allows project updating and change committing directly from the Windows Explorer interface. Its companion program, VisualSVN, a plug-in for Microsoft Visual Studio, extends the source control interface inside the Visual Studio interface.
The proprietary nature of file type and program structure can make standard version-control techniques a challenge for some automation programming environments. In these cases, developers have to store full project archives at periodic intervals, along with some type of tracking mechanism. Tortoise SVN, SharePoint lists, wikis and document management programs, as well as even a manually documented process, are all techniques that can handle version control in these situations. Some automation vendors, such as B&R Automation, have embraced SVN support and included it in their most recent automation studio releases.
Version control of non-software content is a natural extension of software version control. Whether it's for maintaining standard operating procedures, user guides or safety policies, version control is a critical part of manufacturing operations.
For document management, SharePoint has a fantastic system that works across the enterprise. If you're running a Windows server, Microsoft actually doesn't charge for the base level of SharePoint licensing that includes a highly functional document management system. Documentum and FileNet also are great enterprise-level document management tools. There also are many open source programs available.
After you've got a solid version-control process in place and it is consistently followed, if you don't have an equally robust backup-and-restore procedure, get one. Again, no one size fits all, but the important things are that you have automatic backup processes, that there is off-site storage—physical or in the "cloud”—and that your restore process is tested periodically.