从零开始学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块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。
今天就到这里吧,关注达达老师,每天进步一点点。
PLC初学者不知道什么是FC、FB、OB、DB块,一定要明白
最近经常有初学西门子PLC编程的朋友,对于FC、FB、OB、DB块特别迷茫,一开始的时候可能很多人都会遇到类似的问题
一 . 组织块,组织块是操作系统和用户程序之间的接口。OB 用于执行具体的程序,我们最常用的就是OB1,所有的FB和FC块都需要直接或者间接的接受调用,才能执行,如下图是创建组织块,每个不同组织块是不同的功能
1、在 CPU 启动时;
2、在一个循环或延时时间到达时;
3、当发生硬件中断时;
4、当发生故障时;
5、组织块根据其优先级执行。
初学者先知道OB1的功能如何使用,如下图所示,所有的FB或者FC做成的子程序都需要间接或者直接的接受调用。
二. FC函数和FB函数块的区别在哪里呢,首先FB块有自己的背景数据块,就是专有的存储区,我们什么时候选择建立FB块呢,根据我自己以往的经验来说,就是需要重复使用的标准功能,例如一个项目里面有50个气缸需要控制30个电机需要控制,在这种情况下,我们就可以选择做两个电机和气缸的标准FB块,其余的都可以用FC。
三. FB块优点:1. 易于移植性,对于相同控制逻辑不同参数的被控对象,只要使用不同的背景DB,同一个FB块就可以方便2. 多重背景,减少重复工作,提高效率3. 多次调用时,参数修改方便4. 有独立的存储区
四. FC块优点:1. 小巧灵活,对于非多次调用的程序更易理解2. 不占用额外的存储资源
五. 数据块DB:数据块分为全局数据块和背景数据块,背景数据块即前面提到的FB块的专用存储空间,如下图是建立的背景数据块
全局数据块是建立的存储区域,可以根据需要自己建立数据的各种类型,便于数据的存储和方便调用
在编程时方便我们建立中间变量和数据的存储记忆,并且可以把数据类型归类使用,希望这些说明能够帮助到大家,感谢!
相关问答
1200plcfb和fc怎么用?
1200plcfb和fc按以下步骤用1、数据块不同:FC使用的是共享数据块,FB使用的是背景数据块举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编...
plc200smb37=16#fc什么意思?
就是16进制的意思。等于252HSC0_Reset_LevelSM37.0HSC0复位有效电平控制:0=高电平有效;1=低电平有效HSC0_RateSM37.2HSC0计数速率...
西门子PLC编程中FB和FC的区别?
明确结论:FB与FC都是西门子PLC编程中的函数块,但是它们的使用场景和功能略有不同。FB适用于搭建复杂的控制逻辑,FC适用于实现简单的计算、数据处理和输出等功...
西门子plcfc各个引脚的意思?
西门子PLCFC是一个功能模块,其各个引脚的意思如下:1.电源引脚:用来接入控制器的电源2.信号引脚:用来接收来自传感器或其他控制设备的信号3.输出引脚:用...
300plc的fc块怎么添加指令?
要添加指令,首先需要在STEP7软件中打开FC块的编辑界面。然后,在指令列表中选择要添加的指令,并将其拖放到FC块中。接着,根据需要设置指令的参数和条件,并...
西门子plcs7-1200fc的用法?
一、创建FC块第一步:(添加FC函数块)二、填写FC块第一步:(填写接口参数块)IN---------变量是外部输入的,只能被本程序块读,不能被本程序块写;OUT----...
西门子PLC的FC100怎么用?
西门子PLC的FC100是一个函数块,用于实现特定的功能。要使用FC100,首先需要在PLC编程软件中创建一个函数块实例,并将其与输入和输出变量连接起来。然后,根据...
PLC程序结构怎么搭建,自动流程图怎么才能构思缜密没漏洞?
原图文请查看我头条号文章结合项目的实际情况,选用合适的程序设计结构,注意编程常用技巧,可以事半功倍。题图:西门子S7-1200PLC来源:EVERYPIXELPLC...过...
PLC硬件组态的步骤?
硬件组态:将项目左面的+点开,选中SIMATIC300(1)站,然后选中Hardware并双击/或右键点OPENOBJECT,硬件组态画面即可打开如下!在硬件组态画面右边是硬件...硬...
西门子FB和FC区别?
西门子的FB和FC都是PLC编程中的数据类型,但是它们有一些区别:1.FB(FunctionBlock)是一种函数块,它可以被重复使用。FB可以包含多个输入和输出,可以用于...