信息管理

十个控制系统编程最佳实践

程序员的最佳实践包括定义它们的结构,了解系统资源和工具,一致性以及在项目期间的更改跟踪。

罗比人民,跨公司 2017年9月12日

控制系统编程是艺术和科学。利用多种工具,语言和功能允许工程师生成创意解决方案。但是,由于可用的多种方法和工具,成功的道路可以差异很大程度上取决于所选择的路径。编程标准是编码的方法已被声明可接受,并且通常由控制系统供应商定义和支持。

与编程标准密切相关的是“最佳实践”,其中概述了在申请和部署编程标准时要遵循的推荐方法和策略。最佳实践还可能涉及添加额外的代码段和/或删除未使用的冗余或死码。建议使用代码段的方式提供最佳实践,而编程标准是适用于编码样式和技术的特定规则集。这10个最佳实践可以帮助提供基准,以帮助确保对程序员的一致成功。

1.定义结构

从头开始开发程序或增强现有程序时,程序员必须从详细信息退回并定义一个结构。这提供了如何分割函数,变量和提供逻辑安排的明确计划。函数的分割允许设计可以轻松扩展和后跟其他程序员的设计。

首先,开发代码将如何构造的可视化图表。在某些情况下,程序员可以在实际代码中清楚地概括出这种结构。这类似于在绘图中建立一个图例表,它应该提供一个程序将如何被结构和/或任何分割和开发笔记,以清楚地概述,以便下一个程序员将能够遵循相同的方法。这个结构应该包括控制器代码和HMI编程。

2.支持开发功能的文档

支持功能要求和/或规范的文档对于允许开发功能至关重要。

同样重要的是用于实现规范中定义的目标的编程标准的支持文档。大多数分布式控制系统(dcs)都有一个标准库,概述了每个功能元素将如何配置,如阀门、电机、PID等,并有支持文档。然而,在其他应用程序(如plc)中,这种结构并不存在,必须编写文档并加以开发。

支持文档不需要冗长的正式文件,但必须清楚地概述将遵循的结构和编程标准。简单的电子表格可用于中继此信息。但是,此信息的理想位置是实际的程序本身,以确保标准始终与代码耦合而不是错误的。

3.改变计划

在开发系统时,重要的是计划将来的扩张,变化和减少。当程序员定义结构时,他们应该始终意识到潜在的变化,并确保它们不会进入一个角落。不要概述可能导致战略变化的有限策略。例如,如果程序员分段每个数据类型的存储器位置,则务必在未来几年内有足够的空间进行系统的更改和/或扩展。

此外,概述纸张上的结构始终是一个好主意,以便在视觉上识别如何分割代码并引入某些潜在的变化,以测试设计的组织结构。规划变革很难,因为你不知道你不知道的东西。始终建议审查其他经验丰富的工程师的概念,以确保显而易见的是没有被忽视的。在规划超出范围的未来扩展和满足要求之间存在平衡。允许将来的扩张,但不要将重要资源投入到范围内开发。

4.了解系统资源

系统资源是使软件有效运行的重要组成部分,程序员想要做的最后一件事是覆盖系统的能力,这可能导致延迟甚至崩溃系统。由于内存和处理速度限制,该问题在过去多年来更为普遍。技术已先进,程序员现在在系统中具有更大的能力,以提供更具结构化和组织的代码。但是,资源不是无限的,并且始终是理解局限性以及结构如何影响这些资源的良好做法。

这是通过执行加载测试来实现的,这将有助于程序员对局限性的感受。为此,使用远远超出试图实现的现有范围的额外结构和例程,创建具有广泛加载的应用程序。不这样做是不负责任的。程序员将盲目地添加结构和开销处理要求,而不知道您必须增加多少申请。资源测试可能需要多个应用程序扩展,但查找限制对于成功至关重要。

5.重用代码

控制系统最简单的部分是我们不断重用相同的功能来实现手头的逻辑任务。程序员不想一遍又一遍地硬编码相同的函数,这将导致额外的成本,如增加内存、处理速度和额外的时间,以更改未利用函数调用编写的应用程序。

通过单独编码公共代码,程序员还向道路介绍了错误的机会,因为必须通过手工识别对所有其他实例准确地复制到一个实例的更改。使用的所有功能都应从单个源库引用,并在需要时调用。这将要求程序员在常规级别代码函数,并且在某些情况下,他们可能希望包括其他参数或变量来帮助函数账户的不同或附加属性。这将允许管理这些功能是常见的而不是通过系统要求孤立。含义,您不希望创建现有功能库并最终管理管理无法管理库。

6.保持一致

一致性是许多不同层次成功的共同元素。编程没有什么不同,没有什么比逆向工程一个控制系统更令人沮丧,以遵循设计理念并找到不一致的实践。这在设计中显示了不成熟,并且可以在控制系统的生命周期中引起多个问题。

在某些情况下,可以在初始开发后发现替代方法,并且改变课程的决定应该完全取决于系统性能和附加功能。如果程序员已经识别出一个更聪明的方法,可能对其具有“冷却”因素,但它不会导致性能改进或节省足够的开发时间以覆盖先前在应用程序中花费的所有时间,然后坚持使用原件方法。前进,程序员可能会决定将来利用它,但要实现良好的做法留下课程。

7.了解您的工具

一个好的程序员应该对所有可用的工具有很好的理解。如果程序员不能及时了解当前可用的内容,那么他们就是在欺骗自己,可能会失去一些工作效率。花点时间测试编程工具,以确保编程和部署使用最有效的可用方法。

例如,程序员应该使用“CASE”语句,而不是嵌入多个“IF THEN”语句,以提高效率,并提供更可读的结构。联系其他更有经验的工程师,讨论他们可能不熟悉的替代工具,并建立快速测试以获得必要的经验。

这并不是建议程序员在应用程序中使用多种方法来实现单一目标。这可能会干扰和牺牲之前的一致性概念。这意味着程序员应该在设计应用程序之前了解工具,以确保能够提供适当的解决方案。

8.家务

程序内的良好习惯总是良好的做法。在某些情况下,程序员必须构建功能或事物来帮助管理数据并保持工作区域清洁。如果程序员允许替代工作区域堆积垃圾,这可能会导致混淆并导致妨碍在申请中产生不可预见的后果。所有搁架或游乐区都应划分。意思是,每个应用程序都需要一个定义的区域来处理替代功能或搁置物品以供以后使用,但当这些项目完成时,应清理它们。良好的家政做法是组织的一部分,促进了效率和专业性。

9.评论代码

没有什么比追踪代码更令人沮丧,这些代码很差或更糟糕的不一致评论。含义,程序中使用的术语,标签命名和描述应该与代码本身一样一致。代码本身解释了如何发生某些事情,评论应该反映为什么会发生这种情况。

评论应在每个级别执行。意思,每个功能本身都应该有一个简短的评论,但是每个代码部分应该包括标题评论来解释细分。然后,应评论整个应用程序,以帮助您落后于您的人遵循一致的思路。评论应该简明扼要,一致,在你编程而不是作为事后的时候写的。

一个特别有价值的评论是对程序员没有以特定方式编写的原因的描述。如果有一种标准的编码方式,程序员选择了不同的方式,他们应该解释他们为什么选择在评论中不同地做到不同。这对程序员和其他人一样多 - 当他们问“我为什么这样做?”一年后,答案就在那里。

10.跟踪变化

跟踪应用程序中的更改对于在整个生命周期中维护应用程序非常重要。更改日志应该包含在应用程序中,最好是包含在总体更改的标题部分。但是,如果需要在函数层进行更改,则应该在整个头部以及函数本身的注释层中反映出来。

良好的更改日志包括日志条目或修订号。以及日期和人的变化。该描述应该概述对更改的需要,并明确定义受影响的应用程序的所有方面。最后,更改日志应在应用程序的保留区域中持续列出。

编程方法和策略在一定程度上是主观的,使用多种技术的灵活性为工程师提供了产生解决方案的创造性途径。创造性是一种自我表达形式,必须与良好的实践相平衡,以确保解决方案符合最终用户的总体目标。

最终用户显然具有与开发人员共享的共同目标,而且还具有额外的目标,例如可用性,扩展能力,以及根据需要根据需要进行排除和接收功能以支持生产的功能。在为最终用户提供最终解决方案时,最佳实践应该是主要考虑,以确保编程可交付符合可接受的行业实践。

上面列出的这些方法提供了整体的可用性、灵活性和可维护性,以确保为开发人员和最终用户提供了一个能够承受产品生命周期的有效的质量驱动解决方案。工程师应该努力提供更高标准的编程,以使我们的客户在制造上获得成功。每个项目都应该包含可靠的解决方案,使我们的业务在制造环境中蓬勃发展。

罗比人民是交叉公司集成系统组的集成经理。本文最初出现在交叉公司的创新控制博客。由Chris Vavra编辑,生产编辑,控制工程,CFE媒体,cvavra@cfemedia.com.

跨公司是截至2017/14/14/14/14的CSIA成员。