PLC Programming Version Control

Hi All,

Does anyone use a version control system and if so which ones? Some exmaples: Git/github, Rockwell's Asset Centre, SVN, Azure DevOps (formally TFS)...

I included a Reddit discussion about the same topic
https://www.reddit.com/r/PLC/comments/51m2vd/anyone_else_out_there_using_version_control/

We .. use Rockwell's asset center .. sort of.

It's installed, and does a backup of all 51 PLCs once per week. We don't check out the software before changes are made ... at least not yet. At least we have a checked-in version once a week!

The checkout/checkin process is slow as heck. And it does not appear to work very well to have multiple people logged into a PLC at the same time ... there are a lot of options to look through ... perhaps we don't have it set up quite right just yet :(

We have not used any of the other packages.

I have a substantial archive (directory) of dated backups for each PLC. But that's hardly a 'system'
 
I use SVN, but unofficially, for my own sanity. Nothing fancy and nothing integrated with the programming software, just saving ("commiting") my files at the end of each day.
 
Git and github.

Also Gitlab/Bitbucket/Jira/whatever when collaborating. Although I would guess most of the folks here are independent contributors, so anything more than git+github for hourly/daily backups to the cloud is overkill. Kinda makes me wonder what was so bad about [;VERSION] in VAX/VMS.

"git gets easier once you get the basic idea that branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space."

The non-ASCII nature of most PLC files eliminates the excellent differencing capabilities of git.

A good guts-of-git is [Git for ages 4 and up]; I've never watched the whole thing because my understanding jumped by a couple of orders of magnitude after the first few minutes; plus I can call my daughter when I need to do some obscure operation.
 
We used to use SNV and used "Tortise" ( https://tortoisesvn.net as the front end.

I found it was easy enough to check in and check out .ZIP files once we got our heads round it.... Tags were used as "Releases" and never bothered really with branches.

We set up a central machine in the office as an SVN server and all the SW developers had a copy of Tortise installed.
 
I've posted this in the Past, but I'll do this again from this thread. Been using this for a year now, works for collaboration as well as individuals:


Book A guide to GIT.
Here it is:
I have this quick start guide that I made to use a version control system we have control over ourselves.
Here it is:
Hello PLCs.net!

I have Git up and running within my team. Git is a way to chronologically save stuff over time, so you don’t lose work which hasn’t been saved as a new copy of the old program. A repository is supposed to be an easy to maneuver location where code (Ladder logic woot woot!) and artifacts (E.G: HMI files) are stored.

The following is a small tutorial on how to use git, as well as an advanced in depth way of working with Rockwell tools and Git at the same time. You can make a personal repo just for yourself, or a combined repo for yourself as well as your teammates in a shared location. Both add value to my workflow personally.
We have the following code storage structure in our team:
-> Remote directory on a shared drive
-> Local directory per team-member

Tools used: -
- Windows 7 Pro(Home should do too, I think)
- Git Extensions 3.00.00.4433 : GUI which simplifies GIT for users.
- Git 2.19.2.windows.1 : Latest git release I could find.
- Studio 5000 Logix Designer V16-28 : All the different PLC firmwares we use in our plant. Haven't tested on all of them, but seems to be working fine with any I use.
- Logix Designer Compare v7.00.00 : Latest compare tool I could get my hands on.


OK, so here is what I did on the config side:

1) Make sure you have GitExtensions and Git installed on your machine.
2) If you want the capability of comparing, make sure you have LogixCompare installed on your machine as well.
3) Make an empty directory in a local location(Somewhere on your computer), then right click in windows explorer, and click GitExt Create new repository> Personal Repo> Create.
4) Once you have this empty repository, right click in windows explorer, and then GitExt Open repository.
5) In GitExt, click repository on the top right> Edit .gitignore > Add default ignores.
6) Then paste the following in there:
#Ignore useless packages created by RSLogix.
*.bak*acd
*.acd.recovery
*.sem
*.wrk
This would stop the temporary files from being backed up, and will declutter your system.
7) Hit save.
8) Now go to Tools> Settings>Git>Config. Enter your username and email. Hit save.
9) At this point, start moving your PLC code into this repository. which is logically and wisely created, so it's easy to maneuver through the programs you have.
10) Once you have them in the repo, it the Commit button at the top, it’ll pull up a commit dialog.
11) Hit commit, and then there you have it, the first node of your first git branch is now created.
At this point, you can start using git as a simple chronological way. It’s widely used in the code development industry, so you can look up anything from tutorials to error questions directly on google. Stack Overflow is my favorite resource.
12) Now comes the interesting part about how to merge Rockwell with Git. Make sure you have Logix Compare installed.
13) Bring back the Config menu from the earlier step. Now:
• Here, you’ll find an option to fill in your username, email, etc.
• In MergeTool: Type in something like RSLogixMerge, which defines a new mergetool in Git.
• My path to mergetool was: C:/Program Files (x86)/Rockwell Software/Logix Designer Tools/Logix Designer Compare Tool/RSLCompare.exe
• The mergetool command was: "C:/Program Files (x86)/Rockwell Software/Logix Designer Tools/Logix Designer Compare Tool/RSLCompare.exe" -m "$LOCAL" "$REMOTE" -PM FastestCompare
o This follows the syntax of the RSLogix command line switches.
• In Difftool type in something like RSLogixDiff, which defines a new difftool in git.
• My path to difftool was: C:/Program Files (x86)/Rockwell Software/Logix Designer Tools/Logix Designer Compare Tool/RSLCompare.exe
• My difftool command was: 'C:/Program Files (x86)/Rockwell Software/Logix Designer Tools/Logix Designer Compare Tool/RSLCompare.exe' "$LOCAL" "$REMOTE" -PM FastestCompare
• Line endings: Not Set.
Hit apply, and you are set! Now, if you commit an ACD file, make a change, save it, and then commit another file.
You can use any youtube video to learn about how to use git-extensions further after that. But that should follow the standard process at that point.
 
I have been tasked with looking in to Version Control for our PLC and HMI stuff.


Oh and We use SkyCad for ECAD (but they have their own version control.



We used RS 500, Studio 5000, Wonderware/AVEVA Edge, Weintek EBPro, Ignition, and Codesys


We are an OEM So we have a few Main Branches and then from there we branch our code for each project.



I looked in to VersionDog in early 2019 but it seems pretty geared toward Plants and not OEMs.

Any other suggestions?


P.S. I would have no problem with git for the most part but I am going to get push back because I am going to be the only one that is competent enough to maintain the whole thing.
 
I looked in to VersionDog in early 2019 but it seems pretty geared toward Plants and not OEMs.


You can try MDT Autosave, they are the other main vendor of industrial version control software. Similar to VersionDog, I've mostly heard of them in the context of plants, but I've seen an MDT sales guy popping into one of these discussions in the past saying "We can do OEM too, i swear". So, grain of salt.
 
I looked in to VersionDog in early 2019 but it seems pretty geared toward Plants and not OEMs.


Hey, I work for versiondog here in the US. You’re right - versiondog is not geared explicitly toward OEMs (ex. branching/merging is possible but not supported). Nevertheless, many OEMs and engineering companies use versiondog internally and to create new business models.

We have a free demo available here https://auvesy.com/en/test-now if you want to try it out and get in touch with me.
 
Update VersionDog and MDT AutoSave are completly worthless for OEMs and Machine builders everything they have is geared toward version controlling code that is actually on PLCs in a plant.

They'll talk about there Universal tool, but really there are half a dozen other free tools on the internet that do the same thing and don't cost $5000.




There is good news though. There is a start up that has contacted me. They are gonna be a game changed for the PLC world but they aren't ready for public release yet.
 

Similar Topics

Hello colleagues, Some time ago I started my adventure with programming. With your help and the courses, things are starting to come together...
Replies
13
Views
594
Dear All, I need a sample PLC program to count the output pulse of a mass flow meter so that a specific amount of mass (for example 100gm)can be...
Replies
2
Views
82
Hi Please I have zeilo smart relay #SR2A201BD but I don't have it's programming cable. Can I use any general usb/rs232 converter? Or need...
Replies
2
Views
80
Hi, Does anyone have thoughts or know of, can point in the right direction any published materials with a plumbing centric point of you explaining...
Replies
1
Views
126
@ All: what is your best guess on a potential range in increase in efficiency in % (i.e. saved programming hours, greater output, etc.) when...
Replies
5
Views
291
Back
Top Bottom