图形只需很少的培训,即可由控制工程师和工厂技术人员使用OOIP
2021-06-09
您应该买入还是卖出广告股票?赶快下载这个炒股神器,智能提示买卖点!
工业控制软件工程对于高度可靠且易于广泛使用的用户有独特的要求。这就是为什么图形语言一直是工控编程的主体,而工控工程师往往在采用它们之前成熟了计算机科学的最新趋势(例如,符号寻址和数据结构在进入工控之前已经成熟。年)更多信息可在真工链获取。
面向对象编程(OOP)在 1990 年代开始被计算机科学家使用,但由于其复杂性和缺乏支持的图形语言环境,其在工业控制领域的应用一直很缓慢。幸运的是,工业软件供应商已经开始解决这些问题,并在没有任何复杂性的情况下为控制领域提供了许多 OOP 的好处。
本文将展示其中一个工具的示例,展示工程师如何通过掌握一小部分 OOP 概念来利用这些优势,并展示使用对象进行编程如何成为控制基于对象的自然而直观的技术。物理世界。
工业控制中OOP的定义
在“面向对象编程(OOP)”一词的解释中,工业控制界和计算机科学界往往是不同的。为了避免本文中的混淆,我们将工业控制解释为面向对象的工业编程(OOIP),并区分如下:
面向对象编程 (OOP)
包括完整的计算机科学 OOP 功能
主要基于文本
通常是受过高等教育的计算机科学家领域
面向对象的工业编程 (OOIP)
使用封装、实例化和抽象概念将功能块 (FB) 实例化为其他 FB 的能力
以图形为主
控制工程师和工厂技术人员只需很少的培训即可使用。
OOIP的演变
在工业自动化的早期,编程是固定的。我们读取输入,缩放输入,对输入生成警报,执行控制算法以生成输出,对输出执行警报,缩放输出,并使用内存映射 I/O 写入输出(如图所示)图1)。后来有空了,我们合并了一些重复的代码,但其实过程还是很简单的。
广告明星服务人山人海!砍10次,3分钟打到极致,只等你!图 1:原始扁平化编程风格
当控制软件开始适应多个任务时,工业程序员采用了集中式面向任务的方法。这种方法将操作划分为单独的任务,然后一系列集中处理对程序中的标签执行每个单独的操作。第一个任务将读取所有输入,第二个任务将缩放所有输入,下一个任务将在缩放点上执行警报,依此类推,如图 2 所示。
图 2:面向任务的编程风格
这种集中的面向任务的方法比平面方法有很大的改进,但是在向程序添加新功能时,它需要修改每个任务。此外数据结构用面向对象方法与c++描述,面向任务的编程常常使得在控制代码中查看信息流和理解因果关系变得困难。这些缺点使得程序设计更加困难,工厂技术人员也难以维护(尤其是年轻的团队成员,他们在OOP中学习,对面向任务的编程不满意)。
图 3:面向对象的编程风格
OOIP,如图3 所示,转变了面向任务的流程。这个函数不是分散在许多任务中,而是包含在“对象”中。由于工业控制工厂是由对象(例如:电机、传送带、阀门和传感器)组成的,面向对象的编程是工业控制的自然选择……甚至可能比最初为 OOP 创建的计算机编程还要多!实际上,可以将控件的对象设计成与工厂中的对象相对应,使控制程序开始看起来与工厂设计非常相似,如图4所示。 使用正确的控制图编辑器,工厂设计图和控制图可以在同一张图中!
图 4:在 OOIP 中,控制设计是根据与物理工厂或设备设计中的对象相匹配的对象构建的。
要实现OOIP,控制工程师只需要掌握两个关键的OOP概念:封装和实例化。
包装形式
封装允许创建对象,其中包含控制其匹配工厂对象所需的所有函数和数据。用户不需要知道或理解底层实现......他们只是使用它!一个很好的比喻是汽车发动机。发动机封装了活塞、阀门、轴承和许多其他物体和复杂的功能。驾驶员不需要知道发动机是如何工作的,他们只需要了解发动机的界面并与之交互:启动按钮和油门踏板。
出现在图 4 左下方并在图 5 中有详细说明的模块是 OOIP 封装的一个很好的例子。该模块封装了模拟输入的所有复杂性,包括缩放、钳位、滤波、放大、变化率报警和高/低报警。程序员只关心块的配置(_CI左端的输入)和程序的输出(和)。程序员不需要理解或担心底层的复杂性。放下它并使用它......就像汽车中的发动机一样。
图 5:模拟输入功能块
实例化
实例化是声明和使用一个对象的多个副本而不制作对象副本的能力。在-3 中,这些对象被称为“功能块”。功能块是数据类型,就像整数或实数是数据类型一样。通过以与声明整数实例完全相同的方式声明它们来创建功能块的“实例”。在幕后,编译器为功能块的每个实例中的变量分配唯一的内存,其方式与为实例分配内存的方式完全相同。而且,正如您可以声明无限数量的整数(最大存储容量)一样,您也可以声明无限数量的特定功能块实例。
图 6:在连续函数图编辑器中实例化对象
我喜欢在培训课程中使用的类比是福特野马,如图 7 所示。1964 年的福特野马是车辆的“类型”(完全相同)整数是日期“类型” )。在创建它的实例之前,您无法驾驶 1964 年福特“Type”(以完全相同的方式,除非您声明它,否则您无法使用它)。因此,指示福特装配线为您创建 1964 年福特野马实例的工单类似于指示编译器为您分配内存的语句。这样数据结构用面向对象方法与c++描述,您车道上的 1964 年 Ford 就成为这种数据类型的实例。
图 7:功能块
但是正如您可以声明(并且编译器可以为其分配内存)许多整数一样,工厂可以制造“车辆”类型“的许多实例。这样,您的邻居就可以拥有自己的 1964 年 Ford ,它完全独立于您的。它们的功能完全封装在物体的每一个实例中(无法承受潜在的量子纠缠)。
接下来是
本系列的第 2 部分将展示如何使用其他三个概念:抽象、接口和嵌套将较低级别的对象组装成更复杂的对象,以及如何重用这些概念从一组对象构建整个工厂或机器。基本构建块。它还将展示如何将 I/O 映射到分布在整个设计中的对象,如何向对象添加参数输入以增强其可重用性,以及如何创建中央配置服务以允许从单个 CSV 管理这些参数。文件或 SQL 数据库。
总结
工具供应商开始向控制工程师提供OOIP的优势。为了利用这些好处,控制工程师只需要掌握两个关键的 OOP 概念:封装和实例化。有了这些知识,控制工程师就可以将工厂对象的功能封装成匹配的控制对象,然后将这些对象实例化,创建一个类似于工厂设计的控制设计。 OOIP 不仅使设计易于构建,还使工厂技术人员可以轻松地对设计进行故障排除,并便于未来的控制工程师进行维护。正如工业控制领域采用了其他最好的通用软件进步一样,面向对象的工业编程也遵循相同的模式。 OOIP显然是控制工程的未来,振工链的工业自动化平台。