Software version control and security

C

Thread Starter

Chris Little

I am responsible for the automation for a small plant of 15 PCs (10 TI 555 and 5 S7). We have several maintenance electricians who need to access the software, plus myself and several contractors. I am looking for a package to implement version control and security for both software PLC files and other documents, and also to be able to use it as a change record system.

Has anyone come across a good package?
 
M

Michael Griffin

I've been through this before, and I don't think that an automated document management system is worth the cost or effort unless you have a much larger plant (at least 10 times the size). There are programs that handle just PLC programs or CAD drawings, but I don't think they are very useful except in special applications as they don't handle all the other files associated with a machine. I would suggest the following:

1) Set up a directory on a file server with you having read/write access and with read-only access for everyone else.

2) Set up one subdirectory for each "machine" (or whatever you decide to call it). I assume that this amounts to 15 machines if there is one PLC per machine. For the purposes of this definition, we will call a "machine" a unit of equipment that can operate independently of any other machine (except for requiring a flow of parts). You might end up designating an entire "line" as a machine if it is all run by a single central PLC.

3) In each "machine" subdirectory, set up further subdirectories for PLC programs, MMI programs, electrical schematics, mechanical drawings, servo programs, OEM data sheets, operating manuals, and anything else that you can scrape up for each machine.

4) Copy all the files you can find to the relevant subdirectories. At this point you may find that a lot of stuff that you thought you had is actually missing or out of date.

5) Each machine directory also needs an "archive" directory. Whenever a change is made, you copy the old files into an archive file (e.g. "zip" file) and move the archive file into the "archive" directory for that machine. Name the archive files with the current date as part of the file name (e.g. 2008-02-08_Machine-A.zip).

The version control system is you because you are the only one able to copy new versions into the directory structure. The change record can be done by setting up a spreadsheet with columns for date, machine, type of change, reason, etc. When you record a change, send out a brief standardised e-mail announcement to anyone who needs to be informed.

I have done the above, and it works fine and isn't too much work even for a much larger plant than you are dealing with. Even if you still wanted to set up an automated system you will still have to do the above first anyway because you have to organise the files before importing them into the document management system.

There are a few points to keep in mind. One is to make sure that your machines actually have unique names and that everyone knows what they are. Another is to make sure not to have any spaces or commas in any file or directory names, as this makes it much harder to do any automated processing of files if you decide to do that later.

You also want to make sure that each directory tree is set up in the same way with the same number of levels. By this I mean for example that level 1 is machines (or lines), level 2 is component subdirectories, level 3 is files, etc. If you have a set of files that doesn't fit that pattern, put them together in a zip file (e.g. a copy of a software disk with various files and subdirectories).

A further thing that I did was to write a short script that made a text file listing of the directory structure and parsed the important information out into a text file that could be imported into a spreadsheet. Think of it as each subdirectory level or file name corresponds to a spreadsheet column, along with the file time stamp and size. This gives a nice summary of the current state of the system. If you were to ever set up an automated document management system by the way, any automated import tools would need to work this way (think of the alternative of typing in the corresponding data for each individual file). If you are interested in scripting simple reports, let me know and I can give you some help.

By the way, if the S7 PLCs you are referring to are the S7-300/400 series, you might have to split up the files into more manageable units. The Step-7 software for these models has a very poorly thought out file system where the files (and there are scores of them in each program) for different machines can get jumbled together such that you can't manage the files for each machine by itself. You have to use the programming software to separate them out if this is the case because you can't tell which file does what by looking at the names. Most people put Step-7 files into a zip (or other) file, but the mess is still there even if it's out of sight. If the S7 PLCs are S7-200, then there's no problem as the program for each machine is in a separate file, with one file for each machine.
 
G

Gustavo A. Valero P.

Hi Chris,

What you need is to use the software called "VersionWorks" from GEPA mbH and you are going to live and sleep without problems.

It is able to work with PLCs, NCs, HMI/SCADAs and Robot apps and generate an automatic Backup/Restore if you want (sending alarms via email if any error/modification is found).

This link will help you: http://www.versionworks.de/?/s,11/&language_id=2

I can see that our friend Michael Griffin has done some kind of work to carry out a Version Control and Archiving manually but I can assure both you that by using VW, this issue will disappear.

Feel free to contact us if you want a demostration

Best regards.

Saludos.

Gustavo A. Valero P.
BIConsulting C.A.
Valencia - Venezuela
gustavo.valero @ biconsulting. com
 
M

Michael Griffin

I looked at programs like VersionWorks. While no doubt they do a wonderful job at what they address, they only handled with a small proportion of what I had to deal with. I would still have to have another system to deal with everything else.

The automated systems have their advantage when you are in a regulated industry where it is desirable when something goes wrong to be able to point the finger of blame at some low level person who "made unauthorised changes". In that case, the software can be part of an overall documented change control system.

There was no indication of a need for this however in the original post. It is more likely in this case that what people really want is to be able to get at back-up copies of programs and drawings at all times without having to find out who has the CD or floppy disk in a box in the back of their desk drawer.

With the present question, there are only 15 PLCs involved. Things should not be changing very often, and if they are then an automated back-up system is just addressing the symptoms rather than the actual problem.
 
G

Gustavo A. Valero P.

Hi again,

I am going to expand a little more the VersionWorks capabilities in order to help to undertstand better its scope and help any PLC/SCADA/IT engineerer with a similar problem:

1) I can dare say that there is no a software able to do 50-60% of what VersionWorks does. Even, neither Siemens, Schneider nor Rockwell has a tool like it able to work with several PLC/SCADA/NC brands at the same time. The Rockwell case is different: months ago, GEPA wanted to include the A-B PLCs in VW's products list and called Rockwell to work and study their product. Rockwell helped them and saw the capabilites/powerfull of VW that decided later buy the whole company!

Now, VW is part (or will be) of RSMACC suite (Rockwell Software Maintenance Automation Control Center). However, if you want, you can talk/buy a VW license directly via GEPA in Germany.

2) VW is able to handle the control version, users access/security, automatic backup, traceability of changes, notification via email of changes/errors found between the saved project (released version) and the project running in PLC/PC, online/offline comparisons of projects, etc, etc.

This applies to PLC/SCADA/NC projects and MS Word doc, Text files, Visual Basic app, VarSpeed Drivers (Danfoss, Indramat), Robots (ABB, Kuka) and others. Soon, they will include CAD files, MS Excel and PDF files.

3) If you want to have and save everything assosiated to a machine or project at an only place, just create a folder on VersionWorks server and classify your project/documents depending on its type (PLC, SCADA, Documents, etc). VW will generate a base version of all this
and this project (version) will be available on all VW clients at any time they connect to VW server.

4) I have to be honest and say that VW (or any software like it) won't avoid an unauthorized change in a PLC/SCADA app if an "smart" user connects a cable directly from his laptop to PC/PLC and modify the current code.

This kind of things can't be detected by the software but you will be sure and calm due to VW will compare this PLC/PC daily (if you set up a backup schedule daily of course) and send you a email with the specific changes found in that PLC/PC. Maybe you won't find the guilty but will have the necessary evidence at least.

5) Most important PLCs brands are supported by VW but to be honest again, the TI PLCs are quite old and aren't supported. However, GEPA can create a special/custom component to work with this PLCs if you negotiate with them the price.

Good luck with decision.

Best Regards.

Saludos.

Gustavo A. Valero P.
BIConsulting C.A.
Valencia - Venezuela
gustavo.valero @ biconsulting. com
 
J

Juan José Denis Corrales

For keeping version history, undoing changes, etc, free sofware hackers use many tools. I'd recommend two (I'm not a free software hacker, but I like good tools):

- GIT . Founded and used by Linus. Built In C.
- BAZAAR. From the Ubuntu team. Built In Python.

They're a little hard to master, but perfect to record every small change you have made.

Also, for security and to store copies of every version of the files, we use UNISON, a program tha keeps syncronized two directories (one of them remote and, for that, secure). It also keeps backups of the version of every file that changes. We use it every day and it never fails.

Remember to, before toying with these applications or any others, save the information in a cd or DVD... :)
 
M

Michael Griffin

In reply to Juan José Denis Corrales: Have you used GIT or BAZAAR for PLC programs, CAD drawings, etc.? Both of these are for distributed version control of mainly text files (computer source code). GIT in particular is very fast for what it is intended for, but it is very specialised to a particular work flow. Both of these are non-typical version control systems.

Some source code control systems don't work well on binary (non-text) files. Code versioning systems typically just store the difference between text file versions. Some do binary files in order to handle things like icons, artwork, etc., but some might choke on too many binary files.

The other thing is that most "document management systems" allow the creation of custom approvals based work flow, or integrate into third party work flow systems. With some of the code versioning systems, people either just have "commit privileges", or they don't. The system just relies on being able to roll back changes if necessary.

I've heard of people trying source code version control software for general purpose document management, but I've never heard of whether these attempts were very successful.
 
J

Juan José Denis Corrales

You are right: GIT and BZR are most intended for text files, they easily show you what is changed with the diff command. I use them with .py and .tex files both in plain text. But I think there should be no problem in using them in coded text files (.dwg).

You can use them in many poweful ways, but I do in a very easy way: just save the state of my projects before I change them, with a commit message, building this way a "history" of the project and having a chance of rolling back.

Also, because of all this, I try to use simple text files for my work. (Try to use .tex instead of .doc, .py instead of .exe, svg instead of dwg, ods instead of xls... I dont always succeed but I try.

Anyway, if keeping a "history" of the project is not the goal, and the only feature needed is not to loose a vital version of a file, corrupted from sometime on, I'd recommend Unison, which can be automated to run, say, every morning, saving every document changed in a backup directory. This has saved my life a few times. It also keeps a backup of the project in some different-remote-secure computer
 
Top