梯形逻辑程序的源代码控制是否有现实/有用的解决方案


17

似乎几乎不存在用于可编程逻辑控制器(PLC)的梯形逻辑(LL)程序的版本控制。可能是因为LL是一种视觉语言,并且倾向于存储在二进制文件中,或者可能是因为源代码控制尚未在过程控制工程界“流行”-或今晚我的Google-Fu表现不佳。

您知道用于此类系统的版本控制的任何现实且有用的解决方案吗?

定义:

  • 实际=对程序的更改由用户跟踪,并且可以还原和合并
  • 有用=系统与可视化LL设计器集成在一起,不仅限于单个PLC制造商提供的LL,而且不花费可观的金钱吗?

注意:我听说有人使用SVN或Mercurial等来跟踪二进制文件,但是我不认为diff / merge功能会显示可读性差异。

附录:

最初,我们只需要支持Allen-Bradley PLC。现在,我们还有西门子和MicroLogix PLC。仍在寻找可行的解决方案...



@Stevenalowe,您好,在这个问题上有什么进展吗?
Montag451

@EnmosProje:不是我知道的,对不起!
Steven A. Lowe 2014年

Answers:


13

不幸的是,答案将取决于您使用的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。这与每天使用今天的日期保存一个新文件相结合,是大多数自动化商店似乎都无法做到的。



@blueberryfields:是的,我已经在支持该功能的大多数软件上使用了自动保存功能,是的,它已经保存了几次。但是,将其用作版本控制不是一个好主意。版本控制不仅应具有时间戳,还应具有作者和更改说明。还应该可以在父版本和两个fork之间进行三向合并。
斯科特·惠特洛克

Beckhoff的TwinCAT项目也可以从文本文件导出和导入。这就是我们将它们置于版本控制之下的方式。对于用ST编写的项目来说可以正常工作。虽然还没有尝试使用LL等图形语言。
stmax 2012年

@stmax-我刚刚编辑了答案,以提供最新的经验。就像我说的那样,它行得通,只是效果不尽如人意。
Scott Whitlock

我认为这是“答案”,因为看来导出到文本文件并使用SCC是多家PLC供应商唯一可行的解​​决方案。
史蒂文·劳

4

如果可以,请查看贝加莱自动化。

全面披露...我为贝加莱自动化的销售合作伙伴工作。

现代贝加莱自动化项目可与版本控制软件很好地配合。我目前使用的是GIT(未集成),尽管应该在软件中与SVN集成。所有的HMI源都保存为XML,而它们的所有PLC语言源(包括梯形图)都基于文本而不是二进制(也大多数为XML)保存。如果必须进行手动合并,则必须在某种程度上“弄清楚” XML,但我并不觉得困难。而且,自动合并通常总是使不必要。


3

我只看到了这个问题,实际上有一个固定的解决方案-来自所有地方的GE-IP。结帐Proficy Change Management。该产品从PLC控制系统的角度进行版本控制,而不是从文件的角度进行纯版本控制-它充当位于VCS之上的一层(最恐怖的部分是,该VCS最初是Visual SourceSafe)并处理权限管理,报告和结帐/签到。

该产品来自GE-IP,可立即支持多种PLC和HMI系统。

完全披露后,我曾在一家销售和安装PCM的公司工作(但那是7年前)。因此,如果您问我当时的情况,那么我很可能会告诉您所有问题出在哪里!


1

听起来令人震惊,在一种情况下,我最终使用了梯形逻辑软件的“打印至PDF”功能(在本例中为Horner的CScape),然后使用了免费的图形化PDF差异程序(例如DiffPDF)来比较更改,因为源代码仅以专有的二进制格式提供。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.