PLC版本控制

问题描述 投票:19回答:9

我需要为PLC代码提出一个CM过程。

目前,该系统是使用RSLogix 5000开发的。构建产品是一个单片文件,可以加载到PLC上进行执行,并直接在开发环境中进行编辑。对于多个开发人员来说,这已成为一个问题。他们正在踩着彼此的变化。

作为类比,就像在进行Java开发时,编辑和保存源代码的唯一方法是将* .jar文件加载到IDE中,进行更改,然后将其保存回jar文件。这不太理想。

如何协调使用PLC的多个开发人员之间的更改?

version-control plc
9个回答
6
投票

如果我们谈论的是一个大的二进制文件,那么VCS(集中式或分散式)并不是最好的工具。 批处理将复制并标记当前PCL状态的外部参考(例如共享磁盘)更好。 见“Tracking Software History

为了避免修订历史记录中的不连续性,必须存储旧版本的程序。 “但我们更进一步。使用我们的MDT AutoSave,我们实际上出去询问设备。过夜或以指定的频率,软件读取PLC中的程序,然后将该信息与最后已知的程序进行比较。版本控制软件将复制新程序并存储它,然后将其与最后一个进行比较。

启动版本控制非常简单。必需的是软件安装,然后是硬件配置。 “你需要一台服务器和几周的工程设计,你很高兴,”Perysyn说。然而,他的公司使用“收缩包装方法”,涉及安装软件,然后填写空白的用户进行定制。

话虽这么说,当您从多个开发人员进行多项更改时,您需要一个集成环境,可以在将其推送到实际服务器之前完成第一次交付并进行验证。

另见this post


7
投票

我使用Unity Pro,因此这可能不适用于其他品牌。

Unity可以导出一个“归档”文件,该文件是XML,它完整地描述了PLC程序和IO设置。在调试更改后,我创建了一个导出并将其签入我当地的Git仓库。这给我带来了一个注释的变化历史,但没有视觉比较。我总是可以使用UnityDiff进行比较。

查看http://www.mdtsoft.com/


5
投票

特别是关于RSLogix5000,我看到开发人员使用模拟PLC并在线进行更改。一旦开发出最终产品,然后将所有注释(因为它们不包含在PLC中)放在一起,然后进行调试。存在无法在线完成的更改问题,例如AOI。有一些工具可以阻止两个人同时在线编辑相同的逻辑并获取部分的所有权。备份可以上传的形式完成,但没有任何方法可以跟踪更改。

这是一个麻烦的问题,当你想要一个你可以上网的.ACD维护一个系统时仍然很麻烦,因为除非你以某种方式使用RSLogix比较工具进行差异你只看到不可读的机器代码,如“+ |Éû³'¬ÙÆW×æ™μ,> U,”

我看到的最常见的修订控件(遗憾的是)只是保存最新的文件,然后复制并将当前日期添加到文件名,就像所描述的推荐的control.com帖子一样。


5
投票

您需要专门的版本控制系统,如VersionDog

来自制造商:

“SIMATIC S5,SIMATIC S7,SIMATIC PCS 7,WinCC,WinCC flexible,InTouch,CoDeSys,TwinCAT,Phoenix PC WORX,RSLogix,Schneider Modsoft,Schneider Concept,Schneider Unity,SINUMERIK 840D,Bosch IndraWorks等智能比较的特别支持此外,版本狗还完全支持ABB和Kuka的机器人程序以及Microsoft Word,Microsoft Excel和Adobe PDF等办公相关数据格式。

更新:这是显示ladder version compare的屏幕截图。我猜这就是大多数PLC人员感兴趣的事情。如果PLC离线和在线应用程序版本匹配,我们也会使用它来安排电子邮件报告,因为警报已经在PLC中更改了某些内容但未放入版本控制服务器。


4
投票

这是一个非常好的问题,它实际上取决于你想要它做什么。如果您只使用罗克韦尔设备,那么查看他们的解决方案可能会有所帮助,我认为它叫做FactoryTalk AssetCentre。目前我正在考虑使用Canonical的Bazaar。 VonC指出的一件事是,一个可以与PLC互通的软件是一个deffinate plus,在我的观点中不是必须的,但它肯定会有所帮助。

我是否正确地阅读了您的问题并且您有多个开发人员同时处理相同的PLC代码?这是一个可怕的想法,但我知道它有时需要发生,西门子PLC对于多个开发人员来说更容易编程,但我会指定一个人在提交到PLC之前合并并测试所有更改。任何CVS系统都可以让你为每个开发人员创建分支机构,但是如何让他们整合他们的更改是百万问题。

巴特。


4
投票

一个简单的事情就是在.l5k文件上做一个文本差异,这样你就可以很容易地看到开发人员是否在处理其范围之外的部分文件。


4
投票

RSLogix5000始终禁止多个用户同时在同一个.ACD上打开和编辑。但是,如果多个用户具有相同的.ACD文件,打开它们,并且所有文件都与同一目标控制器建立连接,则它们可以同时在控制器上进行编辑,但前提是它们正在处理不同的例程。如果要查看其他程序员例行程序,其他编辑会自动出现。

请注意,这样在线工作通常在PLC运行时完成,有时甚至在目标系统(某种机器)运行时也是如此。这种安排是为了更快地完成工作,或者在某些情况下因为系统庞大。没有人像这样开发,因为它实际上是一个调试工具,对于重大变化是不切实际的。

如果一个程序员完成,另一个程序员没有完成,另一个程序员的未完成工作将保存到第一个程序员的.ACD。谁最后保存将有每个人的工作。

像其他人在这个帖子中提到的那样,使用文件日期是相当合理的。一些公司使用通常显示在连接的HMI上的版本控制变量。其他公司使用单独的文档来记录谁和什么变化。有时,版本注释会放在主例程中的冗长行注释中。

我公司使用单独的更改日志,并保留过时的存档副本。多个程序员仅用于最极端的情况。始终指定某人维护脱机文件的完整性,通常是工作时间最长的人或项目经理。

值得注意的是,在RSLogix5000 v21之前,梯级注释不会从一个用户传送到另一个用户,因为之前的版本没有在控制器上存储注释。

所有这些说,您可能正在尝试管理离线开发。我还没有看到任何复杂的方法。通常程序员单独编写所需的例程,项目经理将它们组装到一个项目中。我见过的最干净的方法是项目经理将创建一个具有全局功能的架构,并将例行工作分配给其他人,为他们提供一份.ACD的副本。他们返回带有更改的.ACD,项目经理将其例程复制并粘贴到“主”项目中。


3
投票

我刚刚从堆栈交换的链接中看到了这个问题:Are There Realistic/Useful Solutions for Source Control for Ladder Logic Programs。我会在这里欺骗我的答案,而不是只有一个链接回答:

实际上有一个罐装解决方案 - 来自所有地方的GE-IP。查看Proficy变更管理。本产品从PLC控制系统的角度进行版本控制,而不是纯文件控制的文件观点 - 它作为一个层坐在VCS的顶层(可怕的部分是最初这个VCS是Visual SourceSafe)并处理权利管理,报告和结账/签到。

虽然该产品来自GE-IP,但其设计用于支持各种开箱即用的PLC和HMI系统。

完全披露,我用于销售和安装PCM的公司(但那是7年前)。所以,如果你问我那是什么样的话,我很可能会告诉你哪里出了问题!


-1
投票

您可以使用Git进行协作,并确保每个人都使用相同的文件,而不是使用多个文件淹没公共驱动器。

我做了这个关于如何让git与PLC集成的线程。这是right here

即使.acd文件是二进制文件,因为我们可以使用RSLogixCompare作为工具,我们可以使用它来查找ACD文件的差异。另外,Git Ext gui为那些没有看过这么多用户的用户简化了很多工作。

它涵盖了如何像RSLogixCompare和git扩展一样集成。希望这可以帮助一些人!

© www.soinside.com 2019 - 2024. All rights reserved.