PLC程序设计|简化程序元素的最佳方式——面向对象编程
摘要
面向对象编程,是一种利用对象、方法和属性,来组织和简化程序元素的最佳方式。
最新发布的IEC-61131-3标准更新包括面向对象编程(OOP)语言。虽然面向对象编程是高大上的术语,但它其实是关于组织和简化的。组织是指程序元素进行分组以及分组所采用的机制。组织良好的程序更直观和更易于使用。面向对象的特征旨在改善和促进健全的组织项目。简化是指向外部世界提供简化的接口。封装之下,对象内部的复杂细节则保留在程序中。
何为对象?
编程中的“对象”,就是将功能和数据整合在一起,用其来实现对实际设备、过程和其它结构的状态和行为的建模。 在IEC 61131-3标准中,对象是带额外特性的功能块。功能块可以定义方法和属性,从而可以进一步划分代码和扩展接口。方法和属性可以使用任何IEC-61131-3语言来实现。语言的选择在每个方法或属性的基础上确定,这使其很容易根据环境来使用最适合的语言。
示例项目包含一个功能块,该功能块实现一个简单的加/减计数器(如图1所示)。在其它面向对象编程(OOP)语言中使用的“类”,是“函数功能块”的同义词。两者的定义都必须在使用前进行实例化。类的实例或功能块被称为“对象”。
图1:该示例工程包含了一个简单的增/减计数器的功能块。图片来源: Mitek 自动化
定义方法
“方法”,是能够访问所定义的函数块内部数据和参数的函数。 它们也可以有输入、输出参数和返回值,这和普通函数一样。
方法,可以用梯形图来定义。 当输入参数为“真”时,计数器递增,最后达到一个最大值。在功能块的主体中,定义PMaxCount和Count参数。由于方法可以访问功能块的数据和参数,方法内部就可以使用PMaxCount和Count参数。返回值被写入到CountUp,它是方法本身的名字。
在方法中定义NotMax变量,并将其分配给方法的调用堆栈。 这意味着,前一个运行周期的变量值不会保持。在功能块主体中定义的变量被分配到内存中,并在不同的运行周期中保持一致。
另一种方法是定义递减计数器,比如使用结构化文本语言来实现。 当输入参数为“真”时,计数器递减,直到减为零为止。Count 是功能块的输出参数,并将返回值写入变量CountDn,这也是方法的名称。此方法提供了一种简单方便的方法,将整个程序分解成更小、更易于管理的程序块。这种设计,更易于匹配不同的语言。
从函数块本体调用这些方法,是很简单的事情(如图2所示)。 由于这些方法是使用关键字“私有”定义的,所以只能在函数中调用它们。使用关键字“公共”定义的方法,也可以在外部调用。
图2:用户可以从功能块本体来调用这些方法,并使用关键词作为方法的防护。
定义属性
“属性”是类似于变量的函数,可以在表达式中使用,与使用变量的方法相同。 不同于绑定到某个存储位置,属性与get()和set()功能绑定。当需要从属性中读取数据时,就需要执行get()功能。当需要向属性写入数据时,就需要执行set()功能。
“公有”与“私有”关键词,也可以用来控制属性的访问权限。 “私有”意味着属性只能在定义的功能块内部使用。“公有”,则意味着该属性可用在外部调用。然而,“公有”与“私有”关键词也可以用于get()和set()函数的定义。这就使得该属性,外部可读,内部可写。
在最基本的形式中,属性从内部变量读取、或写入数据。 它们的附加功能可用于验证数据值或执行其它操作。例如,可在程序中添加MaxCount属性。这允许将最大计数设置为指定的值,且其当前值可读。数据通过MaxCount属性传递给set()和get()函数,就像变量一样。get()函数返回功能块变量PMaxCount的值。set()函数验证输入值,以便在将结果写入PMaxCount之前确保它是一个正数。
图3:重置属性没有潜在读写操作对象。
在图3所示的例子中,在项目中增加了使用梯形图语言实现的复位功能。重置属性没有潜在的读写操作对象变量。当写入“真”时,执行复位操作。当读取属性时,计算表达式的值,并返回结果。
值得一提的是,项目结构和组织如何反映到项目树中。 在项目中,每个程序、函数块、方法和属性都用一个节点表示。双击节点,就会在主窗口的文档页打开一个选项卡。标签可以被移除并以单独的窗口显示。get()和set()功能都可以单独显示,因此可以用于属性定义的显示。
图4:程序可以像功能块一样定义内部数据、参数、方法和属性。
面向对象程序元素的优化
面向对象包括很多,但它最根本的目的就是以一种最优的方式组织程序元素。 对象、方法和属性,是实现这一目标的主要手段,对于理解和掌握这些概念,是最基本的。
项目初期,可采用较小的程序步骤来组织常规程序;基于对象的设计可以稍后进行。熟悉使用这些技术以后,会让你更容易考虑所有其它的可能性。没有理由不做尝试。
本文来自于《控制工程中文版》(CONTROL ENGINEERING China )2017年9月刊《技术进展》栏目,原标题为:PLC程序设计:面向对象编程
国际通用的PLC编程开发标准
IEC61131-3标准的产生
近年来,IEC61131标准已成为工业自动化的基础性国际标准。不仅各类可编程控制器商都提供基于国际标准EC61131的编程体系。(PIC)产品,而且集散控制系统(DCS)、人机界面(HIMI)和现场总线等,这些产品的制造
IEC61131标准将信息技术领域一些先进的思想和技术(如软件工程、结构化编程、模块化编程、面向对象的思想和网络通信技术等)引入工业控制领域,弥补、克服了传统的PIC和DOS等控制系统的弱点(如开放性差、兼容性差、应用软件可维护性差和可再用性差等)。对于符合这一标准的控制器,即使它们由不同制造商生产,其编程语言也是相同的,使用方法也是类似的。因此,工程师们可以做到“一次学习、各处使用”,从而减少了企业在人员培训、技术咨询、系统调试和软件维护等方面的成本。
1993年,国际电工委员会(IEC)正式颁布了可编程控制器的国际标准EC1131(以后改称为IEC61131)。其中的第三部分是关于编程语言的标准EC61131-3,规范了可编程控制器的编程语言及其基本元素。这一标准对于可编程控制器软件技术的发展,乃至整个工业控制软件技术的发展,起到了举足轻重的推动作用。它是全世界控制工业第一次制定的有关数字控制软件技术的编程语言标准。此前,国际上还没有具有实际意义的、为制定通用的控制语言而开展的标准化活动。这显然是注意到,由于DCS等以数字技术为基础的控制装置在发展进程中过于专有化,给用户带来了大量不便。可以说,没有编程语言的标准化,便没有今天PLC走向开放式系统的坚实基础。
相关问答
plc强制对象包括?
plc强制对象主要是开关量和模拟量输入输出口的状态和值。plc强制对象主要是开关量和模拟量输入输出口的状态和值。
wincc画面怎样和plc连接?
要连接WinCC和PLC,首先需要在WinCC中创建一个PLC连接对象。然后,在该对象中配置PLC的通信参数,如IP地址和机架号槽号。接下来,将该PLC连接对象与WinCC画面上...
PLC存储器常见的类型有哪些?
PLC存储器常见的类型:1、输入继电器(I)每个输入继电器都有一个PLC的输入端子对应,它用于接收外部的开关信号。当外部的开关信号闭合,则输入继电器的线圈得电...
三菱plc程序怎么改变类型?
您好,要更改三菱PLC程序中的数据类型,您需要按照以下步骤操作:1.打开三菱PLC编程软件(例如GXWorks2或GXDeveloper)并打开要更改类型的程序。2.在程序...
如何设计PLC?-yol6O3arD的回答-懂得
确定控制对象,确定控制方式,确定控制元件开始出图,并且开始编程。最后进行调试。设计的主要内容1.拟定控制系统设计的技术条件。技术条件一般以设...
有没有关于plc的教程?
你好,很高兴回答你的问题。plc的教程现在网络上有很多,包括文字的和视频的都有,个人建议如果你时间比较充足还是视频教程比较好,比较有人讲解代入感强,但是...
plc插入变量表的操作步骤.?
在SIMATICWinCCV12编程软件中,建立变量的方式一般有如下几种:1,手动输入首先,打开软件的编辑界面,在“HMI变量”中单击“添加新变量表”。在弹出的新窗...
PLC如何控制电机停止?
PLC开关控制中间继电器来控制电机的启停。刚好做过类似的项目,挑几张图纸解说一下吧,看下图M1-M6都是三相电机,拿第一个电机M1举例,控制它的接触器KM1吸合,...
如何设计PLC?-懂得
技术条件一般以设计任务书的形式来确定,它是整个设计的依据;2.选择电气传动形式和电动机、电磁阀等执行机构;3.选定PLC的型号;4.编制PLC的1.详细掌...
想学一下PLC编程,求推荐学习的书籍资料?申请方
闲话就不说了吧,直接推荐下我正在用的教材吧。首先我用的是清华大学出版社王阿根主编的《电气可编程控制原理与应用》这本书,这本书主要是因为日本...