抖音粉丝群1
『7x24小时有问必答』

创控教育西门子全科班课程介绍
1.jpeg
在工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更复杂的控制对象,面向对象编程是一种高效的方式。先说面向对象编程:

面向对象程序设计是计算机高级语言的一种高级程序设计模式。这种设计思想也可以用在工控系统的PLC程序中,虽然我们无法实现面向对象的“继承”等诸多优秀特性,甚至它根本不具备面向对象编程语言的特性,但是面向对象编程的基本概念是类和类的实例(即对象),我们只需要用到这个概念就OK了。在计算机编程中,我们需要对一些东西进行抽象和归纳,然后才能编写类。在工业控制系统中,电机、阀门等控制对象是明显的控制范畴,不需要抽象就可以明确目标。写一堂课,将使用西门子的Step7编程语言和施耐德的Unity编程语言来讲解PLC的面向对象编程。

一、实现方法

面向对象编程在Step7中使用功能块(即FB)编程。说到这里,大家就会想到西门子提出的模块化编程。没错,这就是模块化编程,但是西门子提出的模块化、后台数据块、多后台等术语并没有让大家清楚地理解和使用这种优秀的设计理念。

如果从面向对象编程的角度来理解,就可以很好地理解这种设计模式。“FB块”看成“类”,可以看成类似控制对象的代码归纳,如MM440变频器的FB块可以写成:MtrMM440,在面向对象编程中称为“类” ,当需要对特定电机进行编程控制时,可以为其分配一个后台DB块,在面向对象编程中称为类的实现(即创建类的实例:object),当需要控制多个电机时,可以为该FB块分配不同的后台DB,即创建该类的多个实例。Step7中还有一种程序块,就是FC块,主要是FC块西门子的编程叫做结构化编程,也可以类比计算机编程中面向过程的编程,即纯粹基于函数的编程。

施耐德的Unity软件编程更能理解面向对象编程。它的DFB定义包括输入/输出参数、私有/公共变量和代码实现,这些是计算机面向对象编程中“类”的基本元素,创建一个类的实例(对象)就像创建一个普通的Just与“布尔”变量一样,只需在“功能块”中定义该“类”的变量即可。

Step7和Unity都可以使用面向过程和面向对象的编程方法。这两种编程方式的区别类似于计算机高级语言中C语言和C++语言编程的区别。

下面的解释将Step7中的FB和Unity中的DFB称为“类”,将Step7中的FB+后台DB实例和Unity中的DFB称为“对象”。

二、面向对象编程架构

以上说明为实现细节,编程思想以程序架构为准。为此编程是面向对象的编程。这种编程需要从以下几个方面入手:

1.电路设计的结构。

这里主要介绍的是自动线。对于单机机床,可以是其简化结构:

<1>.自动线图层:这是最高级别。区域控制<2>,工程层:有独立的配电系统,但没有PLC,只有分布式模块,由自动线控制。顾名思义,它具有更大的独立性,可以作为一个单独的工程项目进行设计和制造。当自动线比较少时,这一级可以省略。

<3>功能组层:按工艺划分,将实现一定工艺功能的段设备划分为一个功能组,属于工程层。省略工程图层时,属于自动线路图层。面向对象编码程序并不一定需要使用上面的结构,但是好的电气结构更有利于面向对象编程。

2. 任何控制对象逻辑都在“类”中实现。

为此,需要分析与控制对象相关的信息。例如,对于电机,需要考虑以下相关信息:

输入信息:

<1>、电路保护信息,如电机的空气开关、热继电器等。

<2>、功能性保护信息,如运动电机限位开关、风机风压开关、油泵油位开关等。

<3>、起始条件和终止条件,以上电路保护和功能保护可能导致电机停止运行,复位也可能引起重启,但这里的条件指的是正常运行的起始条件和终止条件,如Process steps for顺序控制。

<4>、控制方式:如手动、自动。

<5>、故障复位:通过复位信息重新启动。

输出信息:

<1>、控制输出,如控制电机的主接触器。

<2>、状态信息输出

<3>、故障输出

状态存储信息:

用于代码实现的中间变量和人机界面可以使用的读取状态变量等。将以上信息集成到一个类中,并尽量规范类的参数。但是,与高级编程语言仍然存在一些差异。对于Step7,应该遵循的标准是:程序结构用FC实现,对象控制用FB实现。下面的结构体系(其电气结构来自上面的介绍):这只是一个粗略的PLC程序体系结构,好的体系结构应该是比较完整和科学的。

3.规划数据结构

数据结构的定义很重要,尽量统一这些结构。不用担心存储空间。今天的 PLC 内存足以容纳大量数据。需要说明的一点是,在Step7中,尽量不要在类外定义数据结构(UDT),而是在类内部定义。虽然会造成在不同的类中重复定义相同的结构,但是提高了类的独立性。

在接下来的几页中,让我们比较一下这两种编程风格:

面向对象编程的优点 与梯形图逻辑相比,面向对象编程有以下优点:

• 代码可移植且易于重用;

• 易于使用的数学函数、循环等;

• 几乎每门计算机程序设计课程都讲授面向对象程序设计。

• 代码可以在各种硬件平台上运行。

要掌握面向对象编程,首先需要了解对象的概念及其用途。一旦编写了对象或模块类,就可以通过多次调用轻松地对其进行重用。例如,创建一个对象来控制处理所有输入、输出和故障的电机。需要时,可以通过多次实例化该单个控制对象来控制多个电机。这称为按需实例化。当需要控制多个电机时,可以多次使用这个单个对象。它在需要时被调用,并在使用时创建一个实例。

每个电机的每个实例都有自己的特性,例如电机停止、电机运行、电机速度、电机过载等。大多数编程工作是在第一次创建对象时完成的。这是一种不同于梯形逻辑的思维方式,而且更强大,因为一旦构建了一个对象,它就很容易使用和重用。面向对象编程使得执行复杂的数学函数、循环计算、数组和嵌套子程序变得更加容易。几乎每门计算机编程课程都讲授它——无论是在高中、大学还是在网络上讲授。创建的代码是可移植的,可以在各种硬件平台上运行。

“梯形图逻辑遵循继电器控制系统中使用的电气梯形图的格式,大多数人都可以快速学习和掌握。”

但是,同梯形图逻辑相比面向对象编程,面向对象编程有以下缺点:

• 成本较高;

• 更陡峭的学习曲线;

• 故障排除对维护人员来说不是特别容易;

• 上传源代码之后 在进入处理器之前通常需要编译。

面向对象编程往往需要比梯形逻辑更多的内存和更多的处理能力,所以成本甚至更高。面向对象的编程语言可能需要更长的时间来学习。可能需要课堂学习,需要大量时间、练习、测试和应用来掌握核心概念。程序员必须经常学习面向对象的编程,以便使用跟踪器来跟踪代码,或使用调试器来调试逻辑。使用这种高级编程,很难实现实时在线监控功能。

在将源代码下载到控制器之前,必须对其进行编译。通常,源代码不保存在处理器内存中。这意味着必须仔细备份源代码,因为编译后的代码通常是不可编辑的。对于面向对象的编程,库文件必须与编译期间使用的其他资源链接。如果不了解连接和资源,就很难让程序运行。

梯形逻辑优势:

梯形图逻辑是一种如此简单且自我记录的编码方法,以至于有些人甚至怀疑它是否是一种编程语言。它沿袭了继电器控制系统中使用的梯形图格式,大多数人都能很快学会并掌握。它是过去几十年唯一在机器自动化领域大规模使用的编程语言,在可预见的未来,它仍将是自动化行业使用的主要编程语言之一。

2.jpeg

随着时间的推移,不同背景的人从不同的领域进入这个行业,各种编程语言被引入工业自动化工具箱。这些包括功能块编程、结构化文本、状态编程和顺序功能图。这 4 种编程语言与梯形图逻辑一起构成了国际电工委员会 (IEC) IEC61131-3 的标准编程语言。

IEC61131 背后的逻辑是:如果每个供应商都遵循该标准,那么至少在某种程度上,人们可以轻松地在提供的平台之间切换。然而,这种情况并非如此。

基本梯形图逻辑(例如使用继电器触点和线圈)是相同的;但是,在编程时,必须学习每个供应商的语法和用户体验,以及如何使用编程平台的细节。尽管缺乏标准化,但梯形图逻辑与面向对象编程相比具有以下优点:

• 非常适合机器和过程控制;

• 更容易理解,因为它本质上是自我记录的;

• 易于对受控系统进行故障排除;

• 易于调试;

• 源代码通常可以存储在处理器中。

梯形逻辑非常适用于机器和过程控制,尤其是具有大量离散输入和输出 (I/O) 的自动化系统。多年来,梯形逻辑也得到了改进,可以处理模拟 I/O,使其更适合许多过程控制应用。

与机器控制应用程序相比,过程应用程序往往具有更高比例的模拟 I/O。

由于梯形逻辑比面向对象编程更容易使用,许多熟练的技术人员和工程师可以很快学会梯形逻辑。逻辑高度系统化、有序化,加上其自文档化的特性,更容易理解和掌握。在设备启动之前,每一行代码都必须为真。如果要控制5个电机,那么至少需要5行代码,非常简单。

“梯形逻辑程序源代码和描述符通常保存在控制器中而无需访问源代码,这消除了程序员试图理解已编译程序的挫败感。“

对于电气工程师和维护人员来说,梯形图逻辑非常直观。虽然梯形逻辑需要一种不同于面向对象编程的思维方式,但它可以很快学会,而且需要的时间也更少。逻辑什么时候为真,什么时候为假,一目了然。即使是编程经验有限的人也能轻松搞定打开或关闭、给线圈通电、比较变量和常用的数学函数。
3.jpeg
它的易用性简化了故障排除和调试。监控逻辑时,很容易看出发生了什么。不需要软件学位或高级编程技能。使用梯形图逻辑,维护和工程人员很容易跟进流程并了解发生了什么。将梯形逻辑视为真值表。如果左边的逻辑为真,右边的逻辑就会触发。梯形图逻辑源代码和描述符,通常存放在控制器中。这消除了程序员在不访问源代码的情况下试图理解已编译程序的挫败感,面向对象编程也是如此。但是,梯形图逻辑与面向对象编程相比也有以下缺点:• 计算机程序员和IT 人员不熟悉梯形图逻辑;• 数学难点函数、文本和数据处理;• 取决于扫描时间;• 需要专门的硬件来执行,例如可编程逻辑控制器(PLC)。梯形图逻辑是计算机程序员和 IT 人员不熟悉的符号语言,他们在学校没有学过。在梯形逻辑中使用数学函数、文本字符串和数据可能很困难,主要是因为梯形逻辑最初并非设计用于处理这些功能。梯形图逻辑还取决于扫描时间。较大的程序需要更长的时间来扫描和处理逻辑。执行梯形逻辑时,读取输入、扫描逻辑、更新数据表和输出、执行通信,然后循环重复。可以实施中断和其他编程技术等功能,以确保更快地执行某些逻辑。尽管配置了梯形图逻辑的基于软件的 PLC 可以在 PC 上运行,但通常硬件(例如 PLC)与编程软件相匹配,最好是从同一供应商购买。这样可以确保兼容性,但如果要更换供应商,则不是特别方便。除了比较梯形图逻辑和面向对象编程的优劣外,用户还应该评估环境中的使用。如果工厂或设施已经对梯形逻辑进行了标准化,那么即使面向对象的编程更适合应用程序,也不鼓励用面向对象的编程代替梯形逻辑。随着面向对象编程的使用越来越多,预计在未来几十年内它将与梯形图逻辑共存。一个有远见的自动化专业人士,最好掌握这两种语言。
(内容来源网络,版权归原作者)
免责声明:如涉及版权,请联系删除!任何人和机构不承担相关的法律责任。
4.jpeg

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码