0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PLC面向对象编程和梯形图逻辑谁更实用一些

autozhineng 来源:PLC与自控设备 2023-01-29 11:42 次阅读

工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更加复杂的控制对象,面向对象编程不失为一种高效率的方式。下面先来谈谈面向对象编程:

面向对象编程是计算机高级语言的一种先进的编程模式,在工业控制系统的PLC程序中也可以采用这种设计思想,虽然我们无法实现面向对象的很多优秀特点如“继承”,甚至于它根本就不具备面向对象编程语言的特点,但面向对象编程的基本概念就是类和类的实例(即对象),我们只需要使用这种概念就可以了。在计算机编程中我们需要把一些事物抽象和归纳,才能编写类,而在工业控制系统中,控制对象如:电机,阀等等是很明显的控制类别,不需要抽象就可以很明显的针对它们编写类,以下将会用到西门子的Step7编程语言和施奈德的Unity 编程语言来讲解PLC的面向对象编程。

一、 实现方式

面向对象编程在Step7中使用功能块(即FB)编程,一谈到此大家就会想到西门子提出的模块化编程,不错,就是这个模块化编程,但西门子提出的模块化、背景数据块、多重背景等名词并不能让大家很明白的理解和使用这种优秀的设计理念。

如果大家从面向对象编程的角度去理解,则可以很好的理解这种设计模式。“FB块”被看 成“类”,它可以被看成是对相似的控制对象的代码归纳,如对MM440的变频器可以编写FB块:MtrMM440,这在面向对象编程中称为“类”,当需要 编程控制具体的电机时,可以给它分配一个背景DB块,在面向对象编程中称为类的实现(即创建类的实例:对象),当需要控制多个电机时,可以分配不同的背景 DB到这个FB块,即创建类的多个实例。

Step7中有另外一种程序块,即FC块,以FC块为主的编程在西门子中称为结构化编程,这也可以类比于计算机编程中的面向过程编程,即纯粹以函数为主体的编程。

施奈德的Unity软件编程可以更好的理解面向对象编程。它的DFB定义中包含输入/输出参数,私有/共有变量,以及代码实现,而这正是计算机的面向对象 编程中“类”的基本元素,而创建类的实例(对象)就像创建普通的“布尔”变量一样,只需在“Function Blocks”中定义这种“类”的变量即可。

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

以下的讲解将会把Step7中的FB和Unity中的DFB称为“类”,Step7中的FB+背景DB以及Unity中DFB的实例称为“对象”。

二、 面向对象编程架构

以上讲解的是实现细节,而编程思想是建立在程序架构上的,不是某个局部使用了面向对象方式,则可以称之为这种编程就是面向对象编程。这种编程需要从以下方面着手:

1、 电路设计的结构化。

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

<1>、自动线层:这是最高层次,它拥有一个主PLC,对属于它下面的各区域控制<2>、工程层:拥有独立的配送电系统,但没有PLC,只有分布式模块,由自动线控制。顾名思义,它有着较大的独立性,可以作为一个单独的工程项目设计和制造,当自动线比较小时,可以省略该层次。

<3>、功能组层:根据工艺划分,将实现某一个工艺功能的区段设备划分为一个功能组,它隶属于工程层,当工程层被省略时,隶属于自动线层。面向对象编程并不一定要求使用以上的结构,但好的电气结构更利于面向对象编程。

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

为了做到这点,必须分析与控制对象相关的信息,譬如,对于一个电机,有以下相关的信息需要考虑:

输入信息:

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

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

<3>、启动和终止条件,以上的电路保护和功能保护都可能导致电机运转终止,复位也可能导致重启动,但这里的条件指的是正常运行的启动和终止条件,譬如顺序控制的流程步。

<4>、控制模式:如手动和自动等。

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

输出信息:

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

<2>、状态信息输出

<3>、故障输出

状态储存信息:

用于代码实现的中间变量以及可以被人机界面读出的状态变量等。把以上信息都整合到一个类中,并尽量使类的参数标准化。不过,同高级编程语言还是曾在一些差别,针对Step7,应该遵循的标准是:程序结构由FC实现,对象控制由FB实现,如下的一种结构体系(其电气结构来自上面的介绍):这只不过是一个粗略的PLC程序架构体系,好的架构应该更完善和科学。

3、 规划好数据结构

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

在接下来的篇幅中,我们来对比一下这两种编程方式:

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

• 代码可移植,易于重复使用 ;

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

• 几乎在每一门计算机编程课程中,都会教授面向对象编程 ;

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

要掌握面向对象编程,首先需要理解对象的概念及其使用。一旦对象或模块类编写完成, 就很容易通过多次调用来实现重复利用。例如,创建一个对象来控制电机,用来处理所有输入、输出和故障。当需要时,可以通过多次实例化 该单一控制对象,来控制多个电机。这就是所谓的按需实例化。当需要控制多个电动机时, 可以多次使用该单个物体。它在需要时调用,并在使用时创建实例。

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

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

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

• 费用更高 ;

• 更陡峭的学习曲线 ;

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

• 在将源代码上传到处理器之前,通常需要编译。

与梯形图逻辑相比,面向对象编程往往需要更多的内存和更强的处理能力,因此费用就更高。面向对象编程语言的学习时间可能更长。很可能需要课堂学习,需要大量的时间、实践、测试和应用来掌握核心概念。编程人员必须经常研究面向对象编程,以便使用跟踪器来追踪代码,或调试器来调试逻辑。使用这种类型的高级编程,可能很难实现实时在线监视功能。

在将源代码下载控制器之前,必须对其进行编译。通常,源代码并不保存在处理器内存中。这意味着必须小心备份源代码,因为编译过的代码通常是不可编辑的。使用面向对象编程,库文件必须与在编译过程中使用的其它资源相连接。如果不了解连接和资源,将很难使程序运行。

梯形图逻辑优势:

梯形图逻辑是一种简单且自文档化的编码方法,甚至有人怀疑它是否是一种编程语言。它遵循继电器控制系统中使用的梯形电气图的格式,大多数人都可以快速学习并掌握它。它是在过去的数十年来唯一在机器自动化领域中大规模应用的编程语言,并且在可预见的将来, 仍然是自动化行业中使用的主要编程语言之一。

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

IEC61131 背后的逻辑是 :如果每个供应商都遵循该标准,那么至少在某种程度上,一个人只需学习这 5 种编程语言,就可以轻松地在来自不同供应商提供的平台之间进行切换。然而,事实却并非如此。

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

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

• 由于本质上是自文档,因此更易于理解;

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

• 易于调试 ;

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

梯形图逻辑非常适合于机器和过程控制, 特别是具有大量离散输入、输出(I/O)的自动化系统。多年来,梯形图逻辑也在不断改进,以处理模拟量I/O,使其更适合于众多的过程控制应用。

与机器控制应用相比,过程应用中模拟量 I/O 的比例往往较高。

因为梯形图逻辑比面向对象编程更易于使用,因此众多熟练的技术人员和工程人员可以快速学习梯形图逻辑。逻辑高度系统化、有序化,再加上其具有自文档的性质,使其更易于理解和掌握。在启动某个设备之前,每行代码都必须为真。如果有 5 个电机需要控制,那么至少需要 5行代码,实现了高度简化。

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

对电气工程师和维护人员来讲,梯形图逻辑非常直观。虽然梯形图逻辑需要有与面向对象编程不同的思维方式,但通过学习可以快速掌握,并且理解他人编写的代码所需的时间也较少。逻辑何时为真,何时为假,一清二楚。即使编程经验有限的人,也很容易弄清楚开或关、线圈通电、比较变量和常见的数学函数。

81e77660-9f31-11ed-bfe3-dac502259ad0.jpg

它简单易用,简化了故障排除和调试工作。监视逻辑时,可以很容易明白目前正在发生的工况。无需软件学位或高级编程技能。有了梯形图逻辑,维护人员和工程人员就很容易跟踪流程,了解正在发生的事情。可以将梯形图逻辑看作真值表。如果左边的逻辑为真,则右侧的逻辑就会启动。

梯形图逻辑源代码和描述符,通常被保存在控制器中。这可以消除程序员在试图理解编译程序而无法访问源代码时所遭受的挫败,面向对象编程也是如此。

然而,与面向对象编程相比,梯形图逻辑也有如下缺点 :

• 计算机程序员和 IT人员对梯形图逻辑不熟悉 ;

• 难于进行数学函数、文本和数据处理 ;

• 依赖于扫描时间 ;

• 需要专门的硬件来执行, 如可编程逻辑控制器 (PLC) 。

梯形图逻辑是计算机程序员和IT人员所不熟悉的一种符号语言,他们在学校里并没有学习这种语言。在梯形图逻辑中处理数学函数、文本字符串和数据可能会很困难,这主要是因为梯形图逻辑最初并不是为了处理这些函数而设计的。

梯形图逻辑也依赖于扫描时间。较大的程序,需要更长的时间来扫描和处理逻辑。执行梯形 图逻辑时,读取输入、扫描逻辑、 更新数据表和输出、执行通信, 然后循环重复。可以实现中断和其它编程技术等功能,以确保更快地执行某些逻辑。

尽管配置了梯形图逻辑的基于软件的PLC可以在PC上运行, 但通常硬件 ( 如 PLC)要与编程软件相匹配,两者最好都是从同一个供应商处购买的。这样就可以确保兼容性,但如果想要更换供应商,则不是特别方便。

除了比较梯形图逻辑和面向对象编程的利弊外,用户还应该评估这些编程语言在将要部署的环境中的使用情况。如果工厂或设施已实现了梯形图逻辑的标准化,那么即使面向对象编程更适合于该应用,也不鼓励将梯形图逻辑更换为 面向对象编程。随着面向对象编程的使用日益增多,预计在未来几十年内,它将与梯形图逻辑共存。一个有远见的自动化专业人士,最好要掌握这两种语言。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    4975

    文章

    12261

    浏览量

    454964
  • 编程
    +关注

    关注

    88

    文章

    3441

    浏览量

    92418
  • 梯形图
    +关注

    关注

    8

    文章

    191

    浏览量

    21248

原文标题:PLC面向对象编程和梯形图逻辑,到底谁更实用一些?

文章出处:【微信号:PLC与自控设备,微信公众号:PLC与自控设备】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    plc梯形图顺序执行的原则是什么

    PLC(可编程逻辑控制器)梯形图(或称为梯形逻辑图)是用于描述和
    的头像 发表于 02-05 11:13 795次阅读

    plc编程入门基础知识 plc编程语言有几种

    PLC编程语言主要分为五种不同的类型,它们分别是:梯形图、指令列表、功能块图、结构化文本和流程图。每种编程语言都有其自身的特点和适用范围。 梯形
    的头像 发表于 02-04 15:55 530次阅读

    plc梯形图编程的基本原则

    PLC(可编程逻辑控制器)是现代自动化控制领域中广泛应用的一种控制装置。PLC梯形图编程
    的头像 发表于 01-22 10:51 618次阅读

    36张电气控制三菱PLC梯形图编程方法汇总

    PLC为例,介绍一下PLC梯形图编程的方法,希望对大家有所帮助。
    的头像 发表于 01-13 14:30 751次阅读
    36张电气控制三菱<b class='flag-5'>PLC</b><b class='flag-5'>梯形图</b><b class='flag-5'>编程</b>方法汇总

    plc梯形图运行顺序是什么

    一、PLC梯形图概述 PLC梯形图是一种图形化编程语言,用于描述PLC
    的头像 发表于 12-14 11:05 1922次阅读

    编程逻辑控制器 (PLC) 中的梯形逻辑

    编程逻辑控制器或 PLC 是用于执行控制功能的数字计算机,通常用于工业应用。在可用于对 PLC 进行编程的各种语言中,
    发表于 10-04 17:32 464次阅读
    可<b class='flag-5'>编程</b><b class='flag-5'>逻辑</b>控制器 (<b class='flag-5'>PLC</b>) 中的<b class='flag-5'>梯形</b><b class='flag-5'>逻辑</b>

    如何学习PLC编程 PLC梯形图语言的编程原则

    梯形图中的继电器、接点、线圈不是物理的,是PLC存储器中的位(1=0N;0=0FF);编程时常开/常闭接点可无限次引用,线圈输出只能是一次。
    发表于 09-21 14:12 237次阅读
    如何学习<b class='flag-5'>PLC</b><b class='flag-5'>编程</b> <b class='flag-5'>PLC</b><b class='flag-5'>梯形图</b>语言的<b class='flag-5'>编程</b>原则

    SIMATIC S7-1500 PLC梯形图编程的原则

    尽管梯形图与继电器电路图在结构形式、元件符号及逻辑控制功能等方面类似,但它们又有许多不同之处,梯形图有自己的编程规则。
    发表于 09-21 09:43 514次阅读
    SIMATIC S7-1500 <b class='flag-5'>PLC</b><b class='flag-5'>梯形图</b><b class='flag-5'>编程</b>的原则

    PLC编程梯形图绘制规则

    PLC编程梯形图绘制规则,归纳起来主要有以下几条: 1、 梯形图程序应按照自上而下、自左向右的顺序编写。 2、 同一编号的输出元件在一个程序中使用两次或两次以上,即形成所谓的“双线圈
    的头像 发表于 09-18 17:09 2018次阅读

    什么是PLCPLC编程-梯形图逻辑梯形图

    PLC 代表可编程逻辑控制器,是具有计算能力的工业规模设备,用于控制装配线、机器人单元、工业机械和其他制造环境中的生产过程。
    发表于 09-14 17:33 1440次阅读
    什么是<b class='flag-5'>PLC</b>?<b class='flag-5'>PLC</b><b class='flag-5'>编程</b>-<b class='flag-5'>梯形图</b><b class='flag-5'>逻辑</b>和<b class='flag-5'>梯形图</b>

    三菱fx系列plc梯形图编程实例

    初学PLC梯形图编程,应要遵从必定的规则,并养成一个好习惯。下面以三菱FX系列PLC为例,简略介绍一下PLC
    发表于 08-20 09:51 1870次阅读
    三菱fx系列<b class='flag-5'>plc</b><b class='flag-5'>梯形图</b><b class='flag-5'>编程</b>实例

    解析PLC梯形图程序设计

    解析PLC梯形图程序设计
    的头像 发表于 06-30 11:14 1039次阅读
    解析<b class='flag-5'>PLC</b><b class='flag-5'>梯形图</b>程序设计

    PLC梯形图编程的基本规则

    PLC梯形图编程是一种用于计算机控制系统中的图解语言。其主要使用者是工厂广大电气技术人员,为了适应他们的传统习惯和掌握能力,通常PLC不采用微机的
    的头像 发表于 06-26 14:24 2178次阅读
    <b class='flag-5'>PLC</b><b class='flag-5'>梯形图</b><b class='flag-5'>编程</b>的基本规则

    三菱PLC梯形图编程万能模板

    虽然PLC程序编写每个人有每个人的思路,但是最终的模式都是相通的。本文以三菱PLC的简单梯形图编程方法为例,分享一下万能的编写模板。
    的头像 发表于 06-09 09:23 3236次阅读
    三菱<b class='flag-5'>PLC</b><b class='flag-5'>梯形图</b><b class='flag-5'>编程</b>万能模板

    解析四个PLC梯形图编程的基本概念

    |梯形图是使用得最多的图形编程语言,被称为plc的第一编程语言。梯形图与电器控制系统的电路图很相似,具有直观易懂的优点,很容易被工厂电气人员
    的头像 发表于 05-12 16:24 1643次阅读
    解析四个<b class='flag-5'>PLC</b><b class='flag-5'>梯形图</b><b class='flag-5'>编程</b>的基本概念