修理或替换:工业编程中需要考虑的问题

即使在最好的情况下,工业编程也是一个具有挑战性的项目。了解情况可以帮助确定项目是否需要修复或大修。

通过大卫·布林 2020年3月25日

我有一个最近这个项目在我到之前已经完成了95%问题是它超出了预算,一直被推迟,最初的开发团队也不想继续开发它了。我被叫来提供完成这项工作的估计。

我所遇到的w是我遇到过的最混乱的程序之一。硬件是一个相对简单的传送系统;一系列重复的组件。该代码是阶梯例程的集合,每个单独的输送机一个,其中的逻辑是主要是用重命名的标签复制/粘贴。

听起来还不算太糟,对吧?这就是剩余工作的细节变得相关的地方。每个输送程序都需要根据其预期功能进行定制所以每个动作都有点不同我必须弄清楚为什么现有的实现在1%的情况下失败了。这相当于100台传送带,100台例行程序年代和五十个梯级,每个梯级结构简陋,重复而且容易出错的逻辑。

这是工业编程中的一个常见问题:可维护性。除非你已经熟悉代码了,在你准备好做出改变之前,可能需要几个小时来感受和理解。工业编程中常见的组织和结构的限制使这样的大型项目变得混乱。

与可维护性相关的一个类似问题是可伸缩性。这个项目的升级计划之一是将系统的大小扩大一倍。也许三倍。在当前的实现中,这可能意味着200个新程序。当然,复制/粘贴可以帮到你一半在那里,但是你必须编辑每一个标签。这段代码不太好- - - - - -适合扩展。

总结:代码不能很好地扩展,并且不容易被下一个程序员(你)维护。,这并不完全有效。然而,几个人已经辛苦了好几个月才走到这一步,这表明完全重写需要大量的工作。

那么我们该怎么办呢?调试和改进当前代码可能比重做代码要快一些。考虑到变化的范围,这并不是一个保证,但很有可能。然而,这仍然留给我们一个混乱的结果,不会很好地配合未来的扩展。

约翰·伍兹(John Woods)是一名老牌PC程序员,他有一句很有用的话在这里非常适用编写代码时,要把维护你代码的人想象成一个知道你住在哪里的暴力精神病患者。

照现在的情况,我们有义务重做。如果问题需要一夜之间解决我们可能会发现自己的处境不同但这需要付出巨大的努力不管做出什么决定.不妨做对了,把事情留给下一个人,不管是不是精神病。

我们考虑了很多不同的因素才做出这个决定。在另一个时间,另一个地点,我们可能会发现自己做出了不同的选择。重要的是要意识到每个选择的利弊,并能够证明我们的行为是正确的。

我最终保留了很多更好的东西。硬件连接得很好所以I/O通常是独立的。安全程序运行得很好,也没有复杂到让人无法理解的地步——没有必要瞎折腾。控制自动控制和手动控制的逻辑都很好。尽管是我自己选择的重做核心传送带控制并不意味着我们找不到很多值得保留的梯级。记住那句古老的格言:“如果它没坏,就不要修理它。.”

对于这种特定的情况,重新编写的决定是成功的。三千年梯子梯级被替换为约500人。这是更清洁,更易于维护d仍然该做的都做了。我花了将近三周的时间重新做了一遍但这包括未来扩建的大部分工作也通过改变仅仅两个标签,整个系统i年代准备好放大一倍。

就我个人而言,我觉得灵活性的升级几乎每次都是值得的。当你的客户需要帮助时,他们不应该特别依赖你,因为你写了不可读的代码。除非努力太多或者时间轴不可接受的是,大多数项目都可能在某个时候重做。在以正确的方式进行修补之前,你只能打这么多补丁。

本文最初发表于布林机器自动化服务的博客布林机器自动化服务有限公司是CFE Media的内容合作伙伴。由副主编克里斯·瓦夫拉编辑,控制工程, CFE媒体与技术,cvavra@cfemedia.com

更多的答案

关键词:工业编程,梯形逻辑,机器编程

可维护性对工业机器编程可能是个问题。

在某些情况下,最好在短期内修复程序;有时需要彻底检修。

除非成本是太多了,去大修往往是最好的。

考虑一下这个

最大的是什么?考虑当你决定维修或更换一个工业项目时,你有什么想法?


作者简介:David Breen, Breen Machine Automation Services, LLC的首席程序员。