代码之家  ›  专栏  ›  技术社区  ›  Dave

PLC版本控制

  •  19
  • Dave  · 技术社区  · 14 年前

    我需要想出一个可编程逻辑控制器代码的配置管理过程。

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

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

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

    9 回复  |  直到 14 年前
        1
  •  6
  •   VonC    14 年前

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

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

    启动版本控制相当简单。所需的是软件安装,然后是硬件配置。你需要一个服务器和几个星期的工程,你很好去,佩里森说。然而,他的公司使用收缩包装的方法,包括安装软件,然后由用户填写空白。

    也就是说,当您有来自多个开发人员的多个更改时,您需要 集成环境 在将第一次传递推送到实际服务器之前,可以完成并验证它的位置。

    另见 this post .

        2
  •  7
  •   v0n_hydro    13 年前

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

    Unity可以导出一个“存档”文件,该文件是XML,描述了整个PLC程序和IO设置。在调试更改之后,我创建一个导出并将其签入到本地Git repo。这给了我一个有注释的变更历史,但是没有可视化的比较。我总是可以用UnityDiff来比较。

    退房 http://www.mdtsoft.com/

        3
  •  5
  •   Montag451 radai    10 年前

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

    这是一个很混乱的问题,更混乱的是,当你维护一个你想要的.ACD系统的时候,你可以上网,除非你用RSLogix比较工具做了一个diff,否则你只会看到不可读的机器代码,比如“+”

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

        4
  •  5
  •   avra    9 年前

    你需要专门的PLCs版本控制系统,比如 VersionDog .

    制造商:

    “对SIMATIC S5、SIMATIC S7的智能比较的特殊支持, SIMAIC PCS 7、WinCC、WinCC灵活、ItuouCH、CoDESY、TUNCAT、 菲尼克斯PC WORX、RSLogix、施耐德Modsoft、施耐德概念, 施耐德Unity,SINUMERIK 840D,Bosch IndraWorks等。还有机器人 来自ABB和Kuka的程序以及与office相关的数据格式,如 完全支持Microsoft Word、Microsoft Excel和Adobe PDF 版本号。

    更新:这是一张显示 ladder version compare . 我想这是大多数PLC用户感兴趣的。如果PLC脱机和联机应用程序版本匹配,我们还使用它来安排电子邮件报告,作为在PLC中发生更改但未放入版本控制服务器的警报。

        5
  •  4
  •   Bart    14 年前

    这是一个很好的问题,这取决于你想要它做什么。 如果你只使用罗克韦尔设备,看看他们的解决方案可能会有帮助,我认为这就是所谓的FactoryTalk AssetCenter。 目前,我正在研究使用市场从规范。 VonC指出的一件事是,一个可以与PLC互操作的软件是一个definateplus,在我看来这不是必须的,但它确实很有帮助。

    我是否正确地阅读了您的问题,并且您让多个开发人员同时处理同一个PLC代码?这是一个可怕的想法,但我知道有时需要这样做,西门子公司的程序更容易与多个开发人员编程,但我会指派一个人来整合和测试所有更改,然后再提交给PLC。任何CVS系统都允许您为每个开发人员创建分支,但是如何让他们整合他们的更改是一个百万dolar的问题。

    巴特。

        6
  •  4
  •   Matthew WMatthew W    13 年前

    一个简单的方法是对.l5k文件进行文本区分,这样您就可以很容易地看到开发人员是否在处理超出其范围的部分文件。

        7
  •  4
  •   Dennis    9 年前

    RSLogix5000始终禁止多个用户同时打开和编辑同一个.ACD。但是,如果多个用户有相同的.ACD文件,请打开这些文件,并且所有用户都连接到同一个目标控制器,则每个用户都可以同时在控制器上编辑,但前提是他们正在处理不同的例程。如果要查看其他程序员的例程,则其他人的编辑将自动显示。

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

    如果一个程序员完成了,而另一个没有完成,那么另一个程序员的未完成工作将在保存时保存到第一个程序员的.ACD中。谁最后救谁,谁就有谁的活儿。

    就像其他人在这个线程中提到的,使用文件日期是相当合理的。一些公司使用的版本控制变量通常显示在连接的人机界面上。其他公司使用一个单独的文档来记录谁和什么更改。有时版本注释放在主例程的长横档注释中。

    我的公司使用一个单独的变更日志,并保留有日期的存档副本。多个程序员只在最极端的情况下使用。总是指定某人来维护脱机文件的完整性,通常是工作时间最长的人,或者项目经理。

    需要注意的是,在RSLogix5000 v21之前,rung注释不会从一个用户传递到另一个用户,因为以前的版本没有在控制器上存储注释。

    所有这些都表明,您可能正在尝试管理脱机开发。我还没见过任何复杂的方法。通常程序员单独编写所需的例程,项目经理将它们组合成一个项目。我见过的最干净的方法是项目经理创建一个具有全局功能的体系结构,并将日常工作分配给其他人,给他们一个.ACD的副本。它们返回带有更改的.ACD,项目经理将它们的例程复制并粘贴到“主”项目中。

        8
  •  3
  •   Community Lee Campbell    7 年前

    我刚才在stack exchange的一个链接上看到这个问题: Are There Realistic/Useful Solutions for Source Control for Ladder Logic Programs . 与其只有链接的答案,不如在这里重复我的答案:

    实际上有一种罐装的溶液——来自所有地方的GE-IP。查看利润变化管理。本产品从PLC控制系统的角度进行版本控制,而不是从纯文件的角度进行版本控制-它作为一个位于VCS之上的层(可怕的是,最初这个VCS是Visual SourceSafe)工作,并处理权限管理、报告和签出/签入。

    虽然该产品来自GE-IP,但其设计支持各种现成的PLC和HMI系统。

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

        9
  •  -1
  •   BikerDude    5 年前

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

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

    尽管.acd文件是二进制的,但是由于RSLogixCompare是可用的工具,我们可以使用它来查找acd文件的差异。此外,Git Ext图形用户界面在为那些不太了解它的用户简化它方面提供了很多帮助。

    它完全涵盖了如何将RSLogixCompare与git扩展集成在一起。希望这能帮助一些人!