PLC编程大项目很难?掌握了这一点就很简单
PLC结构化编程 是对应于典型的控制要求,将过程要求中的类似或相关的任务归类,在功能或功能块中编写通用的程序块,这些程序块可以反复被调用,以控制不同的目标,形成通用的解决方案。这些的通用的程序块就称为结构,利用各种结构组成程序就称为结构化编程。可以通过不同的参数调用相同的功能或通过不同的背景数据块调用相同的功能块。结构化编程过程中通用的数据和代码可以共享,其特点是,编写通用程序块,对不同的控制任务代入不同的地址和数据,使更多的控制任务可以使用此通用程序块,因此具有很高的编程和编程调试效率,并且编程结构清晰,适合于复杂的控制任务。
在块调用时,调用者可以是各种逻辑块,包括用户编写的组织块(OB)、FB、FC和系统提供的SFB和SFC,被调用的块是除OB1外的所有逻辑块。调用功能块时需要为其指定一个背景数据块,背景数据块在功能块调用的同时被打开,在调用结束时被关闭。
在给功能块编程时使用的是形参,调用它时需要使用实参来为形参赋值。在一个项目中,可以多次调用同一个块,如在调用控制电动机的块时,将不同的实参赋值给形参,就可以实现对类似但不完全相同的被控对象(如直流电动机和交流电动机)的控制。
块及子程序的调用,可以嵌套调用,即被调用的块同时还可以调用其他的块。嵌套调用的嵌套深度与CPU的型号相关。
嵌套调用的深度同时还与局部数据堆栈(L堆栈)有关。每个OB需要至少20 B的L内存。当块A调用块B时,块A的临时变量将被压入L堆栈进行现场保护。
程序被分为不同的逻辑块,每个块包含了完成部分控制任务所需的逻辑指令。 组织块OB1(主程序)中的指令决定在什么情况下调用哪一个块,功能和功能块(子程序)用来完成不同的过程任务。被调用的块执行完后,返回到OB的调用点,继续执行OB1。模块化编程,将一个较大的程序分成若干块,易于实现多人同时对一个项目编程。由于只在需要时执行相关的指令,因此提高了CPU的执行效率。
线性化编程是将整个系统的控制程序放在主循环控制组织块OB1(主程序)中,每一次循环扫描都要不断地顺序执行OB1中的全部指令。 这种方法的程序结构简单,不涉及功能、功能块、数据块、局部变量和中断等比较复杂的概念。
由于所有的指令都集中在一个块中,即使程序中的某些部分在大多数时候都不需要执行,但每个扫描周期都需要执行所有指令,CPU的执行效率比较低。此外如果需要多次执行相同或相似的程序就需要重复编写程序。因此,这种编程方法,一般只在编写简单的控制系统程序时使用。
模块化程序的执行
模块化编程中OB1起着主程序的作用,FC或FB控制着不同的过程任务,相当于主循环程序的子程序。模块化编程中被调用块不向调用块返回数据。
模块化编程实例
1.模块化编程实例1 - 液位监视
• 监视一个慢变得过程不需要每次扫描都进行。如果过程每隔一定时间或根据需要进行处理,程序将更有效。• 在OB1循环扫描处理时,可以按照一定的周期对液位进行监视。
设计方法:
• 确定液位监视的组成部分和它们的关系;
• 设计完成所要求控制任务的功能;
• 规划从OB中调用块完成功能的程序执行
过程;
• 对程序块的每个段加上文字注释和标题。
解决方案:
• 建立一个功能FC,可以监视和控制任务;
• 建立一个OB,其中每隔一定时间调用块
(功能)。
2.模块化编程实例2
有两台电动机,控制模式是相同的,按下启动按钮(电动机1为I0.0,电动机2为I1.0),电动机起动运行(电动机1为Q4.0,电动机2为Q4.1);按下停止按钮(电动机1为I0.1,电动机2为I1.1),电动机停止运行。
分析:
这是典型的起保停电路,采用模块化编程的思想,分别在FC1和FC2中编写电机的控制程序,在主程序OB1中进行FC1和FC2的调用。
结构化编程
Ø 将复杂的任务分解成一些能够反映过程的工艺、功能或可以反复使用的单独解决的小任务,这些任务由相应的程序块来表示;
Ø 某些程序块可以用来实现相同或相似的功能;
Ø 调用者可以是各种逻辑块,包括用户编写的OB、FB、FC和系统提供的SFB与SFC;
Ø 被调用的块是OB之外的逻辑块;
Ø 通用的数据和代码可以共享。
结构化编程
结构化编程的优点:
1各单个任务块的创建和测试可以相互独立地进行;
2通过使用参数,可将块设计得十分灵活;
3块可以根据需要在不同的地方以不同的参数数据记录进行调用;
4在预先设计的库中,能够提供用于特殊任务的“可重用”块。
结构化编程实例-油漆调制
1选择产品添加剂,需要决定哪个罐的成分要加到混合罐内。
2在选择开关的选择基础上,组织块调用相应的程序块,分配当前的参数,控制混合罐的流入量。
设计方法:
1. 确定哪些部件和操作可以应用于所有的罐和相关的控制;
2. 建立功能或功能块,完成所要求的控制;
3. 建立块的变量定义表,以便于对要操作的罐和控制进行地址分配;
4. 设计一个程序来根据选择开关调用功能或功能块。
解决方案:
1. 建立一个功能块或功能控制罐的流出量;
2. 为相关的块建立变量定义表;
3. 建立一个OB块来根据选择开关调用功能或功能块。
结构体变量与功能块的综合使用,带你体会PLC结构化编程的实现
前面几篇文章小编给大家介绍了三菱FX系列PLC的结构化编程,介绍了结构体变量和功能块的使用,对于习惯了三菱PLC简单工程的朋友们可能很不适应,而且文章写的都比较笼统,今天就介绍一个简单的实例。
现在有十个三相异步电动机,要求编程实现电机的启动停止。
传统的控制方式一定是这样的
图一
相信大家对这样的三菱PLC一定不会陌生,限于篇幅,我只写了四个电机的控制。三菱PLC的这种简单工程模式,直观易懂,非常傻瓜化,只要智商正常,都能看得懂,因此被冠以直观易懂,符合东方人思维的特点(但小编我觉得这是在侮辱国人的智商)。这种编程方式繁琐,而且浪费纸,对于大型工程或是复杂工艺计算,以及运动控制,那可是要死人的。那么用结构化编程怎么实现呢?
分析: 控制十台电机的启停,那么启停控制就是十台电机都要用到的,我们可以做成功能块,反复调用。
每台电机都有启动,停止两个操作,我们可以定义为结构体变量。
首先,我们先创建一个电机控制的功能块 Motot_Control
图二
如 图二所示,就是创建好的功能块Motot_Control。在这里,小编是用ST语言编写的。关于ST语言在PLC编程中的好处,小编不再重复,希望大家多多体会。
接下来,我们就要在程序中调用功能块了,由于是十台电机,因此需要调用十次
图三
如图三所示,这就是我们在程序中调用的功能块,同样限于篇幅,小编我就只调用了四个。和图一的简单工程梯形图相比,是不是简洁多了?注意看黄色荧光笔部分,这部分称之为功能块的实例名,是什么意思呢?因为在IEC61131-3标准中,功能块也当做是一种变量类型,也是需要定义的,也就是俗称的功能块型变量,在西门子博途中称之为背景数据块。
图四
如图四所示,我们在程序中插入的四个功能块,都被自动定义成了变量。
接下来,我们就建立结构体变量了
图五
如图五所示,这就是建立好的结构体变量Motor,注意看,它是支持中文的!是不是很赞!
建立好了结构体变量,我们就可以在全局变量中定义并使用了
图六
如图六所示,我们定义了四个结构体型变量,名字分别为 电机1,电机2,电机3,电机4.注意看它们的类型,都是Motor型。接下来,我们就可以直接使用定义好的变量了
图 七
如图七所示,这就是最终的程序,和使用简单工程相比的图一,是不是更简单明了,而且更加的高效?
总结:本文所举的例子比较简单,可能还体现不出结构化编程的优势,本文旨在让大家体会结构化编程的思维方式。毕竟,基于IEC61131-3标准是PLC的发展方向,是大势所趋。台达PLC,欧姆龙PLC,松下PLC,三菱PLC,富士PLC这些日系PLC都推出了基于ICE61131-3标准的PLC产品,可见,连小日本都觉得简单工程的方式已经没了前途,如果你还抱残守缺,故步自封,不思进取,天天以入门简单来麻醉自己,你也就基本看不懂手表了。
相关问答
PLC编程提高效率和准确率的方法?
系统判断该提问价值不高,回答后预期流量较低!!呵呵,这种问题判断价值不高?那什么问题判断价值高??是零基础如何快速学会PLC,还是本人精通S7-1200,多久能...既...
plc结构化编程与普通梯形图区别?
PLC(可编程逻辑控制器)的结构化编程和普通梯形图(LadderDiagram)之间有以下几个区别:1.编程语言:结构化编程使用的是结构化文本语言,如结构化文本编程...P...
plc用一体机和分体的哪个好?
plc用一体机更好。一体式PLC一般体积重量较小,集成的IO数量以及种类都比较有限。因为无法进行扩展,所以用户的选择余地就比较小,仅能应对控制内容不是很复杂...
学了机械原理,又学了模拟电路和数字电路,再去学plc编程有前途吗?
多学技术固然是好的,但是规在的产品研发和服务都需要有高精尖的技术,才有竞争优势,何不把一门学科学精,人称十年磨一剑,一行做十年才能成为行业内专家。听...多...
PLC工程师出路?
作为PLC工程师,你有许多就业和发展机会。PLC(可编程逻辑控制器)是工业自动化领域中常用的控制设备,因此你可以在各种行业找到工作。首先,你可以在制造业工...
现在学plc有前途吗?(分析详细点)?
你知道为什么那么多电工学PLC吗?因为动脑的工作比动手的工作轻松,而且赚的更多。20岁你动手可以,有体力。30岁动手可以,差不多了。40岁还要动手?你脑子呢...
PLC结构化编程中,EN和ENO是什么意思?
EN:使能信号。这是一个控制信号,用于控制程序执行。当EN信号为ON(高电平)时,PLC认为程序正在运行,从而执行相应的控制任务。在梯形图或其他类似的编程语言...
现在学PLC编程还需要学变频器吗?
当你问这个问题的时候,说明你还没有入门,需要加强学习!首先,plc是什么?从学术上来讲,PLC=是ProgrammableLogicController的简称,又叫可编程逻辑控制器...
plc程序分段的意义?
便于分类还查找。我们可以为每个分段程序命名,注意不能向结构化编程使用汉字进行命名,只能用数字和字母来命名。这样我们就能在每个分段程序中编程程...Plc,...
plc结构文本。ST语言。台达PLC不支持吗?
2、梯形图(LAD-LAdderDiagram)3、语句表(STL-STatementList)4、功能块图(FBD-FunctionBlockDiagram)5、结构化文本(ST-St...