我需要为PLC代码提供一个CM过程。
目前,系统是使用RSLogix 5000开发的。构建产品是一个单片文件,可以加载到PLC上进行执行,并直接在开发环境中进行编辑。对于多个开发人员来说,这已成为一个问题。他们正在踩着彼此的变化。
作为类比,就像在进行Java开发时,编辑和保存源代码的唯一方法是将* .jar文件加载到IDE中,进行更改,然后将其保存回jar文件。这不太理想。
如何协调使用PLC的多个开发人员之间的更改?
答案 0 :(得分:7)
我使用Unity Pro,因此这可能不适用于其他品牌。
Unity可以导出一个“归档”文件,该文件是XML,它完整地描述了PLC程序和IO设置。在调试更改后,我创建了一个导出并将其签入我当地的Git仓库。这给我带来了一个注释的变化历史,但没有视觉比较。我总是可以使用UnityDiff进行比较。
答案 1 :(得分:6)
如果我们谈论的是一个大的二进制文件,那么VCS(集中式或分散式)不是最好的工具。
批量复制并标记当前PCL状态的外部参考(例如共享磁盘)更好
请参阅“Tracking Software History”
为了避免修订历史记录中的不连续性,必须存储旧版本的程序 “但我们更进一步。使用我们的 MDT AutoSave ,我们实际上会去询问设备。过夜或以指定的频率,软件读取PLC中的程序,然后将该信息与最后已知的程序进行比较。版本控制软件将复制新程序并将其存储,然后将其与最后一个进行比较。
启动版本控制非常简单。必需的是软件安装,然后是硬件配置。 “你需要一台服务器和几周的工程设计,你很高兴,”Perysyn说。然而,他的公司使用“收缩包装方法”,涉及安装软件,然后填写空白的用户进行定制。
话虽这么说,当您从多个开发人员进行多项更改时,您需要一个集成环境,然后可以在将其推送到实际服务器之前完成并验证第一次交付。
另见this post。
答案 2 :(得分:5)
答案 3 :(得分:5)
您需要专门针对PLC的版本控制系统,例如 VersionDog 。
来自制造商:
“SIMATIC S5,SIMATIC S7的Smart Compares特别支持, 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 by versiondog。
更新:以下是显示 ladder version compare 的屏幕截图。我猜这就是大多数PLC人员感兴趣的事情。如果PLC离线和在线应用程序版本匹配,我们也会使用它来安排电子邮件报告,因为警报已经在PLC中更改了某些内容但未放入版本控制服务器。
答案 4 :(得分:4)
这是一个非常好的问题,它实际上取决于你想要它做什么。 如果您只使用罗克韦尔设备,那么查看他们的解决方案可能会有所帮助,我认为它叫做FactoryTalk AssetCentre。 目前我正在考虑使用Canonical的Bazaar。 VonC指出的一件事是,一个可以与PLC互通的软件是一个deffinate plus,在我的意见中不是必须的,但它肯定会有所帮助。
我是否正确地阅读了您的问题并且您有多个开发人员同时处理相同的PLC代码?这是一个可怕的想法,但我知道它有时需要发生,西门子PLC对于多个开发人员来说更容易编程,但是我会指定一个人在提交到PLC之前合并并测试所有更改。任何CVS系统都可以让你为每个开发人员创建分支机构,但是如何让他们整合他们的更改是百万问题。
巴特。
答案 5 :(得分:4)
一件简单的事情就是在.l5k文件上进行文本差异处理,这样您就可以轻松查看开发人员是否在处理其范围之外的部分文件。
答案 6 :(得分:4)
RSLogix5000始终禁止多个用户同时在同一.ACD上打开和编辑。但是,如果多个用户具有相同的.ACD文件,打开它们,并且所有文件都与同一目标控制器建立连接,则它们可以同时在控制器上进行编辑,但前提是它们正在处理不同的例程。如果他们要查看另一个程序员例程,则会自动显示其他编辑。
请注意,这样在线工作通常在PLC运行时完成,有时甚至在目标系统(某种机器)运行时也是如此。这种安排是为了更快地完成工作,或者在某些情况下因为系统庞大。没有人像这样发展,因为它实际上是一种调试工具,对于重大变化是不切实际的。
如果一个程序员完成,另一个程序员没有完成,另一个程序员的未完成工作将保存到第一个程序员的.ACD。最后保存的人将拥有每个人的工作。
像其他人在这个帖子中提到的那样,使用文件日期是相当合理的。一些公司使用版本控制变量,该变量通常显示在连接的HMI上。其他公司使用单独的文档来记录谁和什么变化。有时,版本注释会放在主例程中的冗长行注释中。我的公司使用单独的更改日志,并保留过时的存档副本。多个程序员仅用于最极端的情况。始终指定某人维护脱机文件的完整性,通常是工作时间最长的人或项目经理。
重要的是要注意,在RSLogix5000 v21之前,梯级注释不会从一个用户传送到另一个用户,因为之前的版本没有在控制器上存储注释。
所有这些说,您可能正在尝试管理离线开发。我还没有看到任何复杂的方法。通常程序员单独编写所需的例程,项目经理将它们组装到一个项目中。我见过的最干净的方法是项目经理将创建一个具有全局功能的架构,并将例行工作分配给其他人,为他们提供一份.ACD的副本。他们返回带有更改的.ACD,项目经理将他们的例程复制并粘贴到“主”项目中。
答案 7 :(得分: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年前)。所以,如果你问我那是什么样的话,我很可能会告诉你哪里出了问题!
答案 8 :(得分:-1)
您可以使用Git进行协作,并确保每个人都在使用相同的文件,而不是用多个文件淹没公共驱动器。
我创建了这个线程,介绍如何使git与PLC集成。是right here
即使.acd文件是二进制文件,由于我们拥有RSLogixCompare作为工具,因此我们可以使用它来查找ACD文件的差异。此外,Git Ext gui可以为那些不太在意的用户提供简化方面的帮助。
它确切地介绍了如何将git扩展与RSLogixCompare集成在一起。希望这可以帮助一些人!