PLC版本控制
我需要为 PLC 代码提出一个 CM 流程。
目前,该系统是使用RSLogix 5000开发的。构建产品是一个整体文件,可以加载到PLC上执行并直接在开发环境中编辑。对于多个开发人员来说,这已成为一个问题。他们正在践踏彼此的改变。
打个比方,就好像在进行 Java 开发时,编辑和保存源代码的唯一方法是将 *.jar 文件加载到 IDE 中,进行更改,然后将其保存回 jar 文件。这不太理想。
如何协调使用 PLC 的多个开发人员之间的变更?
I need to come up with a CM process for PLC code.
Currently, the system is developed using RSLogix 5000. The build product is a monolithic file that can be loaded onto a PLC for execution and edited directly in the development environment. With multiple developers, this has become a problem. They're stepping on each others changes.
As an analogy, it's as if, when doing Java development, the only wway to edit and save the source would be to load up a *.jar file into your IDE, make the change, and then save it back to the jar file. This is less than ideal.
How can I coordinate changes between multiple developers working with PLC's?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
如果我们谈论的是一个大的二进制文件,那么 VCS(集中式或分散式)并不是完成这项工作的最佳工具。
最好使用外部参考(例如共享磁盘),其中批处理将复制并标记当前 PCL 状态。
请参阅“跟踪软件历史记录”
话虽这么说,当您有来自多个开发人员的多项更改时,您需要一个集成环境,在将其推送到实际服务器之前,可以在其中完成并验证首次交付。
另请参阅这篇文章。
If we are talking about one big binary files, then a VCS (centralized or decentralized) is not the best tool for the job.
An external referencial (a shared disk for instance) where a batch will copy and label the current PCL state is better.
See "Tracking Software History"
That being said, when you have multiple changes from multiple developers, you need an integration environment where a first delivery can be done and validated, before pushing it to the actual server.
See also this post.
我使用 Unity Pro,因此这可能不适用于其他品牌。
Unity 可以导出一个“存档”文件,该文件是 XML,它完整地描述了 PLC 程序和 IO 设置。调试更改后,我创建一个导出并将其签入我的本地 Git 存储库。这让我获得了带注释的变化历史,但没有视觉比较。我总是可以使用 UnityDiff 进行比较。
另请查看 http://www.mdtsoft.com/
I use Unity Pro, so this may not apply for other brands.
Unity can export an "archive" file which is XML which describes the PLC program and IO setup in its entirety. After commissioning changes, I create an export and check it in to my local Git repo. This gets me an annotated history of changes, but no visual comparison. I can always use UnityDiff for comparison.
Check out http://www.mdtsoft.com/ also
您需要专门的 PLC 版本控制系统,例如 VersionDog。
来自制造商:
更新:这是显示阶梯版本比较。我想这就是大多数 PLC 人员感兴趣的。如果 PLC 离线和在线应用程序版本匹配,我们还使用它来安排电子邮件报告,作为 PLC 中某些内容已更改但未放入版本控制服务器的警报。
You need specialized versioning system for PLCs like VersionDog.
From the manufacturer:
Update: Here is a screenshot showing ladder version compare. I guess that's what most PLC folks are interested in. We also use it to schedule e-mail report if PLC offline and online application versions are a match, as an alarm that something has been changed in PLC but not put into version control server.
具体来说,关于 RSLogix5000,我看到开发人员使用模拟 PLC 并在线进行更改。最终产品一旦开发出来,就会与所有评论放在一起(因为它们不包含在 PLC 中),然后进行调试。有些更改无法在线完成,例如 AOI。有一些工具可以阻止两个人同时在线编辑相同的逻辑并获得部分的所有权。备份可以以上传的形式完成,但没有任何方法可以跟踪更改。
这是一个混乱的问题,当你维护一个系统时,更混乱,因为你想要一个可以上网的 .ACD,除非你以某种方式使用 RSLogix 比较工具进行比较,否则你只会看到不可读的机器代码,如“+” |Éû3´‚ÙÆW×晵‚>Ù,”
我见过的最常见的版本控制(遗憾的是)只是保存最新的文件,然后复制一份并将当前日期添加到文件名中,例如推荐的control.com帖子描述了。
About RSLogix5000 specifically, I have seen developers use an emulated PLC and make their changes online. The final product once developed is then put together with all the comments (as they are not contained in the PLC) and then commissioned. There are issues with changes that cannot be done online, such as AOIs. There are tools in place to stop two people editing the same logic online at once and to take ownership of sections. Backups can be done in the form of uploads, but there isn't any way to track changes.
It is a messy problem, messier still for when you are maintaining a system as you want an .ACD that you can go online with, as unless you are somehow doing a diff with the RSLogix compare tool you just see unreadable machine code like "+|Éû³´¬ÙÆW×晵‚>Ù,"
The most common revision control I have seen (sadly) is just saving the the latest file, then taking a copy and adding the current date to the file name, like the recommended control.com post described.
RSLogix5000始终禁止多个用户同时打开和编辑同一个.ACD。但是,如果多个用户具有相同的 .ACD 文件,打开它们,并且全部连接到同一目标控制器,则他们每个人都可以同时在控制器上进行编辑,但前提是他们正在处理不同的例程。如果其他程序员要查看其他程序员的例程,他们的编辑会自动出现。
请注意,像这样的在线工作通常是在 PLC 运行的情况下完成的,甚至有时是在目标系统(某种机器)运行的情况下完成的。这种安排的目的是为了更快地完成工作,或者在某些情况下是因为系统庞大。没有人像这样开发,因为它实际上是一种调试工具,对于重大更改来说不切实际。
如果一个程序员完成了,而另一个程序员没有完成,则另一个程序员未完成的工作将在保存时保存到第一个程序员的.ACD 中。谁最后存钱,谁就分得大家的工作。
就像其他人在这个线程中提到的那样,使用文件日期是相当合理的。一些公司使用通常显示在连接的 HMI 上的版本控制变量。其他公司使用单独的文档来记录谁以及什么内容发生了变化。有时版本注释被放置在主例程中的冗长的梯级注释中。
我的公司使用单独的更改日志,并维护注明日期的存档副本。多个程序员仅在最极端的情况下使用。总是指定某人来维护离线文件的完整性,通常是工作时间最长的人或项目经理。
值得注意的是,在 RSLogix5000 v21 之前,梯级注释不会从一个用户传递到另一个用户,因为以前的版本不在控制器上存储注释。
综上所述,您可能正在尝试管理离线开发。我还没有看到任何复杂的方法。通常程序员单独编写所需的例程,然后项目经理将它们组装成一个项目。我见过的最干净的方法是项目经理创建一个具有全局功能的架构,并将日常工作分配给其他人,给他们一份 .ACD 的副本以供使用。他们返回带有更改的 .ACD,项目经理将其例程复制并粘贴到“主”项目中。
RSLogix5000 has always prohibited multiple users from opening and editing on the same .ACD simultaneously. However, if multiple users have identical .ACD files, open them, and all make connections to the same target controller, they each can edit on the controller simultaneously, but only if they are working on different routines. Other's edits appear automatically, if they were to look at another programmers routine.
Note that working online like this is usually done with the PLC running, even sometimes with the target system (some kind of machine) operating. This kind of arrangement for the purpose of completing work faster, or in some cases because the system is huge. No one develops like this, as it is really a debug tool and impractical for significant changes.
If one programmer finishes, and another is not done, the unfinished work of the other will be saved to the first programmer's .ACD when they save. Whoever saves last will have everyone's work.
Like others have mentioned in this thread, using file date is fairly reasonable. Some companies use a version control variable that is usually displayed on a connected HMI. Other companies use a separate document that documents who and what changes. Sometimes version notes are placed in a lengthy rung comment in the main routine.
My company uses a separate change log, and dated archive copies are maintained. Multiple programmers are only used in the most extreme cases. Someone is always designated to maintain the offline file integrity, usually the person who will be working the longest, or the project manager.
It is important to note that rung comments are not carried from one user to another before RSLogix5000 v21 because previous versions didn't store comments on the controller.
All this said, you might be trying to manage offline development. I haven't seen any sophisticated methods for this. Usually programmers write the needed routines separately, and a project manager will assemble them into a single project. The cleanest approach I've seen is where a project manager will create an architecture with global functionality, and assign routine work to others, giving them a copy of the .ACD to work with. They return the .ACD with changes, and the project manager copies and pastes their routines into the "master" project.
这是一个非常好的问题,这实际上取决于您想要它做什么。
如果您只使用 Rockwell 设备,查看他们的解决方案可能会有所帮助,我认为它称为 FactoryTalk AssetCentre。
目前我正在考虑使用 Canonical 的 Bazaar。
VonC 指出的一件事是,一款可以询问 PLC 的软件是一个明确的优势,在我看来不是必须的,但它确实有帮助。
我是否正确阅读了您的问题,并且您有多个开发人员同时处理相同的 PLC 代码?这是一个可怕的想法,但我知道有时需要发生这种情况,西门子 PLC 更容易与多个开发人员一起编程,但我会指派一个人在提交给 PLC 之前巩固和测试所有更改。任何 CVS 系统都可以让您为每个开发人员创建分支,但如何让他们整合他们的更改是一个价值百万美元的问题。
巴特.
This is a very good question and it really depends on what you want it to do.
If you are only using Rockwell equipment it might be helpfull to look at their solution, I think it's called FactoryTalk AssetCentre.
Currently I am looking into using Bazaar from Canonical.
One thing that VonC pointed out is that a piece of software that can interogate the PLC is a deffinate plus, not a must in my oppinion but it sure as hell helps.
Am I reading your question properly and you have multiple developers working on the same PLC code at the same time? It's a scary thought but I know it sometimes needs to happen, Siemens PLC's are a bit easier to program with multiple developers but I would assign one person to consolidate and test all the changes before committing to the PLC. Any CVS system will let you create branches for every developer but how you would get them to consolidate their changes is the million dolar question.
Bart.
一个简单的方法是对 .l5k 文件进行文本比较,这样您就可以轻松查看开发人员是否弄乱了超出其范围的文件部分。
A simple thing to do would be to do a text diff on the .l5k files so you can easily see whether a developer has been messing with part of the file that is outside of their scope.
我刚刚从堆栈交换的链接中看到了这个问题:对于梯形逻辑程序的源代码控制有现实/有用的解决方案。我不会只提供链接答案,而是在这里欺骗我的答案:
实际上有一个固定的解决方案 - 来自所有地方的 GE-IP。查看 Proficy 变更管理。该产品从 PLC 控制系统的角度进行版本控制,而不是从文件的角度进行纯粹的版本控制 - 它作为位于 VCS 之上的一层(可怕的是,最初这个 VCS 是 Visual SourceSafe)并处理权限管理、报告和签出/签入。
虽然该产品来自 GE-IP,但它旨在支持各种开箱即用的 PLC 和 HMI 系统。
坦白说,我曾在一家销售和安装 PCM 的公司工作过(但那是 7 年前的事了)。因此,如果你问我当时的情况如何,我很可能会告诉你哪里出了问题!
I saw this question just now from a link at stack exchange: Are There Realistic/Useful Solutions for Source Control for Ladder Logic Programs. Rather than have a link only answer, I'll dupe my answer here:
There is actually a canned solution - from GE-IP of all places. Check out Proficy Change Management. This product does version control from a PLC control systems point of view, rather than a pure version control of files point of view - it works as a layer sitting on top of a VCS (the scary part is that originally this VCS was Visual SourceSafe) and handles rights management, reporting and checkout/checkin.
While the product is from GE-IP, it is designed to support a variety of PLC and HMI systems out of the box.
Full disclosure, I used for work for a company selling and installing PCM (but that was 7 years ago). So if you ask me what it was like back then I'm likely to tell you where it all went wrong!
在我的公司,我们刚刚开始试用 Copia.io
一探究竟。我们的第一次测试看起来非常有希望!
它为多个 PLC 平台(Rockwell、Siemens、Codesys)带来了分支、合并、梯形差异等...
PS。我在一家制造机器的公司工作,我们正在寻找类似版本狗的解决方案,在协作和差异功能方面有更多的能力。我在过去的公司中使用过 Mercurial、Git、Tortoise 等工具(但不适用于 PLC)。
In my company we just started a trial with Copia.io
Check it out. Our first tests look very promising!
It brings, branching, merging, ladder diff etc... for multiple PLC platforms (Rockwell, Siemens, Codesys)..
PS. I work for a company that builds machines, we were looking for version-dog alike solutions with a bit more power in collaboration and diffing capabilities. I used tools like Mercurial, Git, Tortoise in past companies (not for PLC though).