直播课堂
HOME
直播课堂
正文内容
PLC编程FC规划 S7-1200 PLC FB和FC的建立和使用
发布时间 : 2024-11-25
作者 : 小编
访问数量 : 23
扫码分享至微信

S7-1200 PLC FB和FC的建立和使用

之前我们了解过S7-1200 PLC的程序结构,分为OB块、FB块、FC块、DB块,OB1 相当于主程序,FB/FC相当于子程序。

在S7-200/200 SMART PLC中,子程序是需要被调用才执行的,在S7-1200 PLC中也是一样的,我们的FB块或FC块需要在OB1中调用后才执行,当然FB中也可以调用FC,或者FC中也可以调用FB,这就是嵌套调用。对于S7-1200 PLC,最多可以支持16层的嵌套调用。

FB或FC在使用时,都可以使用带形式参数与不带形式参数的FB/FC,带参数的FB/FC可以实现重复调用,也很方便进行程序的移植。这篇文章就不再重复基础,我们重点介绍一下带参数的FB和FC如何建立以及如何使用。

1、函数FC的生成和调用

FC是不含存储区的代码块,主要是用于执行特定的运算,或者是使用位逻辑指令执行的独立控制,FC可以在程序的不同位置进行多次调用,对于重复发生的任务或动作中利用FC可以实现简化程序的效果。FC的建立可以建立带形式参数的FC,也可以建立不带形式参数的FC。我们需要知道的是FC是没有相关的背景数据块的,没有可以存储参数值的寄存器,所以我们在调用函数FC时,必须要给所有形参分配实参哦。

添加函数FC的方法如下:

在项目树中找到“PLC_1”文件夹,双击“添加新块”,然后选择FC块,就可以新增一个FC块了,我们可以对这个块进行命名,选择块中程序的设计语言,以及分配这个块的编号,当然这个块编号可以系统自动分配,也可以我们自己手动分配。

我们要建立带形式参数的FC,还需要在添加的FC块接口区中建立相应的变量,这些变量我们就称之为形式参数。

我们在程序接口区定义变量。在FC的接口参数中主要有五种变量,分别是INPUT、OUTPUT、INOUT、TEMP和常量Constant。

如下图,我们建立好变量并编写FC内部的程序,最后在OB1中调用这个数据运算的FC块,我们可以看到在调用时是有分配实参的,是吧?

2、函数块FB的生成和调用

FB块跟FC块相比,不同的地方在于我们在调用函数块FB时是需要为它分配背景DB块的,主要用于存储块的参数。因为FB在调用时会分配对应的DB块,所以对于带形式参数的FB,在调用时可以不对FB上的管脚赋予实参。

添加函数块FB的方法如下:

在项目树中找到“PLC_1”文件夹,双击“添加新块”,然后选择FB块,就可以新增一个FB块了,我们可以对这个块进行命名,选择块中程序的设计语言,以及分配这个块的编号,当然这个块编号可以系统自动分配,也可以我们自己手动分配。

我们要建立带形式参数的FB块,同样的需要建立相应的变量,在FB的接口参数中主要有六种变量,分别是INPUT、OUTPUT、INOUT、TEMP、Constant和Static变量,我们可以看到这相对比于FC块多增了一个静态变量Static。

对于静态变量可以用于存储前一个扫描周期的运算结果,如果前一扫描周期的运算结果,在下次运算还需要使用时,就可以把这个变量建立为静态变量Static。

下图是我们创建接口区的变量,然后编写FB内部的程序,然后在OB1中进行调用,调用时使用单个实例DB的情况。

以上就是FB和FC的建立和使用的方法,你掌握了吗?这也是我们编程中会应用的比较多的功能,希望大家还是可以掌握一下哦!

下一篇文章我们讲解一个实际的例子——电机启动和调速的控制,会利用FB和FC的编写方法分别给大家详细讲解,欢迎大家继续关注哦~

(技成培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究)

从零开始学PLC之逻辑块(FC和FB)的结构及编程

逻辑块(FC和FB)的结构及编程

功能(FC)、功能块(FB)和组织块(OB)统称为逻辑块(或程序块)。功能块(FB)有一个数据结构与该功能块的参数完全相同的数据块,称为背景数据块,背景数据块依附于功能块,它随着功能块的调用而打开,随着功能块的结束而关闭。存放在背景数据块中的数据在功能块结束时继续保持。而功能(FC)则不需要背景数据块,功能调用结束后数据不能保持。组织块(OB)是由操作系统直接调用的逻辑块。

逻辑块(FC和FB)的结构

逻辑块(OB、FB、FC)由变量声明表、代码段及其属性等几部分组成。

局部变量声明表

每个逻辑块前部都有一个变量声明表,称为局部变量声明表。

局部数据分为参数和局部变量两大类,局部变量又包括静态变量和临时变量(暂态变量)两种。

对于功能块(FB),操作系统为参数及静态变量分配的存储空间是背景数据块。这样参数变量在背景数据块中留有运行结果备份。在调用FB时,若没有提供实参,则功能块使用背景数据块中的数值。操作系统在L堆栈中给FB的临时变量分配存储空间。

对于功能(FC),操作系统在L堆栈中给FC的临时变量分配存储空间。由于没有背景数据块,因而FC不能使用静态变量。输入、输出、I/O参数以指向实参的指针形式存储在操作系统为参数传递而保留的额外空间中。

对于组织块(OB)来说,其调用是由操作系统管理的,用户不能参与。因此,OB只有定义在L堆栈中的临时变量。

逻辑块局部变量的数据类型

局部变量可以是基本数据类型或复式数据类型,也可以是专门用于参数传递的所谓的“参数类型”。参数类型包括定时器、计数器、块的地址或指针等。

逻辑块的调用过程及内存分配

CPU提供块堆栈(B堆栈)来存储与处理被中断块的有关信息

用户程序使用的堆栈

局部数据堆栈简称L堆栈,是CPU中单独的存储器区,可用来存储逻辑块的局部变量(包括OB的起始信息)、调用功能(FC)时要传递的实际参数、梯形图程序中的中间逻辑结果等。可以按位、字节、字和双字来存取。

块堆栈简称B堆栈,是CPU系统内存中的一部分,用来存储被中断的块的类型、编号、优先级和返回地址;中断时打开的共享数据块和背景数据块的编号;临时变量的指针(被中断块的L堆栈地址)。

中断堆栈简称I堆栈,用来存储当前累加器和地址寄存器的内容、数据块寄存器DB和DI的内容、局域数据的指针、状态字、MCR(主控继电器)寄存器和B堆栈的指针。

当调用功能块(FB)时,会有以下事件发生:

①调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈;②数据块DB寄存器内容与DI寄存器内容交换;③新的数据块地址装入DI寄存器;④被调用块的实参装入DB和L堆栈上部;⑤当功能块FB结束时,先前块的现场信息从块堆栈中弹出,临时变量弹出L堆栈;⑥DB和DI寄存器内容交换。当调用功能块(FB)时,STEP 7并不一定要求给FB形参赋予实参,除非参数是复式数据类型的I/O形参或参数类型形参。如果没有给FB的形参赋予实参,则功能块(FB)就调用背景数据块内的数值,该数值是在功能块(FB)的变量声明表或背景数据块内为形参所设置初始数值。

当调用功能(FC)时会有以下事件发生:

功能(FC)实参的指针存到调用块的L堆栈;调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈;功能(FC)存储临时变量的L堆栈区被推入L堆栈上部;当被调用功能(FC)结束时,先前块的信息存储在块堆栈中,临时变量弹出L堆栈。 因为功能(FC)不用背景数据块,不能分配初始数值给功能(FC)的局部数据,所以必须给功能(FC)提供实参。

调用功能(FC)时的堆栈操作

以功能(FC)调用为例,L堆栈操作示意如图所示。

逻辑块(FC和FB)的编程

对逻辑块编程时必须编辑下列三个部分:

变量声明:分别定义形参、静态变量和临时变量(FC块中不包括静态变量);确定各变量的声明类型(Decl.)、变量名(Name)和数据类型(Data Type),还要为变量设置初始值(Initial Value)。如果需要还可为变量注释(Comment)。在增量编程模式下,STEP 7将自动产生局部变量地址(Address)。

代码段:对将要由PLC进行处理的块代码进行编程。

块属性:块属性包含了其它附加的信息,例如由系统输入的时间标志或路径。此外,也可输入相关详细资料。

临时变量的定义和使用

查看局部数据堆栈的占用

查看块所需字节数

定义形式参数

编写控制程序

编写逻辑块(FC和FB)程序时,可以用以下两种方式使用局部变量:

①使用变量名,此时变量名前加前缀“#”,以区别于在符号表中定义的符号地址。增量方式下,前缀会自动产生。

②直接使用局部变量的地址,这种方式只对背景数据块和L堆栈有效。

在调用FB块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。

今天就到这里吧,关注达达老师,每天进步一点点。

相关问答

1200plcfb和fc怎么用?

1200plcfb和fc按以下步骤用1、数据块不同:FC使用的是共享数据块,FB使用的是背景数据块举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编...

plc中fc怎么设置输出变量?

1、无参数调用与有参数调用对于功能的使用我们可以分为无参数调用和有参数调用,无参数调用就是FC块不从外部或者说是主调程序中接收参数,也不向外部发出...

ob块和fc块怎么调用?

OB块和FC块是指OpenBlocks(开源建筑工具)中的两种不同类型的方块。调用OB块:1.打开OpenBlocks软件,创建一个新项目。2.在“库”中找到OB块并将其拖动到工...

fc函数的意义?

在PLC编程软件中的'FC'是指函数的意思,它是用户自己编写的程序块。在函数(FC)中是没有数据存储器的,它是可以通过调用使用,在调用时要给它的形式参数送一个...

plc中FC功能块的介绍?

FC功能块相当于一个独立的子程序,直接PLC地址编程。OB块调用。FB则不同,使用临时变量编程,OB调用时需要给各个变量赋值,可在相同的用途处多次调用,赋予不...

怎样提高PLC编程能力?

怎样提高PLC编程能力?所谓“天下文章一大抄”,想要提高PLC的编程能力,除了基础知识掌握以外,最有有效直接的方法,就是多去看看别人的程序,或者别的公司的...怎...

plc中使用fb与fc的区别?

FB和FC在PLC中相当于一个计算式,FC是功能,可以调用共享数据,由于其调用接口和被调用的共享数据是不变的,因此FC执行的结果是不变的;而FB有专属自己的1到N个...

PLC300中FC105模块怎么用?

如果我没猜错的话,两个都是有flash的,但是没有能够自行调用对方内存或者寄存器的操作系统块,你只能通过外部接线吧,我没用过机器手臂,应该是可以接外部输入...

plc主程序和子程序是怎么运行的?

PLC运行时,主程序是一直按照频率顺序执行的。比如西门子PLC的主程序就是OB1,OB1就是一直运行的。在主程序里来根据不同的条件调用不同的子程序,从而实现在不...

西门子FB和FC区别?

西门子的FB和FC都是PLC编程中的数据类型,但是它们有一些区别:1.FB(FunctionBlock)是一种函数块,它可以被重复使用。FB可以包含多个输入和输出,可以用于...

 朴槿惠下台  阿瑞安妮-赛莱斯特 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部