不幸的是,答案将取决于您使用的PLC供应商。它们中的大多数以专有文件格式存储其代码,因此很难使用常规的源代码控制。
如果您使用的是Allen-Bradley,则Rockwell将提供FactoryTalk AssetCenter。我没有定价,但可能很贵。但是,它所做的不只是源代码控制。
我对Beckhoff TwinCAT PLC文件使用了常规(Mercurial)源代码控制。看来工作正常,但我从未与任何人合并。他们的新版TwinCAT(3)将于今年晚些时候发布,应该基于Visual Studio 2010构建,并且我认为它将具有更好的现成产品来进行版本控制集成。手指交叉。
开始编辑
我只是想补充一点,我现在已经使用了新的TwinCAT 3产品,并且正在使用Mercurial(TortoiseHg和Visual Studio的VisualHg加载项)。运行良好。首先,VisualHg使它感觉非常集成到TwinCAT 3使用的Visual Studio 2010 IDE中。但是,TwinCAT 3程序的源代码通常存储在XML文件中。与我使用的其他供应商专有的二进制格式相比,这是一个巨大的改进,但合并效果仍然不佳。有些文件在XML中没有任何换行符(我已经写给Beckhoff了),这意味着逐行的源代码控制系统没有做太多事情。另外,由于它是XML,因此即使没有进行任何更改,XML文件中节点的顺序似乎也是随机变化的。也,我认为有时它会在不需要时为某些节点生成新的ID,这会导致Hg进行不必要的更改。这实际上使不可能由2个程序员同时对TwinCAT 3程序进行更改,然后合并更改。这是TwinCAT 3开发人员的不幸监督,他们无疑在自己的工作中定期使用源代码控制,并且没有看到我们的自动化程度低的程序员可以使用功能相似的强大工具的优势。:( 毫无疑问,他们在自己的工作中经常使用源代码控制,并且没有看到我们的自动化程度低的程序员能够使用类似功能强大的工具的优势。:( 毫无疑问,他们在自己的工作中经常使用源代码控制,并且没有看到我们的自动化程度低的程序员能够使用类似功能强大的工具的优势。:(
结束编辑
开始编辑#2
我想指出的是,TwinCAT 3.1现在具有更适合源代码控制的文件格式,尤其是结构化文本语言文件。实际上,我相信该产品现在已构建为支持与Team Foundation Server集成。
结束编辑#2
另一种选择是可以将大多数PLC程序导出为文本文件。例如,RSLogix 5000将其项目导出到L5K文件中,该文件只是文本。我以前对那些文件运行过脚本-它们很容易解析。他们将与源代码管理一起很好地工作。当然,这意味着每次都要导出,这很糟糕。
如果要使用任何标准版本控制,我强烈建议使用分布式VCS,例如Git或Mercurial,因为使用PLC时,您有一半的时间在现场并且无法连接到家庭服务器,因此可以进行本地提交是真正的奖励。
您必须意识到的另一件事是,某些PLC编程环境(例如RSLogix)已经包含一个diff工具,因此您可以对两个版本的项目运行diff。这与每天使用今天的日期保存一个新文件相结合,是大多数自动化商店似乎都无法做到的。