项目二:功能块FB、功能FC和背景数据库DB的创建和使用
FB块的使用方法
1.创建功能块FB1
准备完成如下功能:将“整型”变量转换成“实型”变量
2.打开功能块FB1
3.在功能块FB1中添加入口参数、出口参数、静态变量
入口参数=IN0 ---> 整型(INT) 出口参数=OUT1 ---> 实型(REAL) 静态变量=STAT2 ---> 整型(INT) 局部变量=TEMP3 ---> 长整型(DINT)
4.创建背景数据块DB2
5.打开DB2背景数据块,可以看到系统默认建立了三个数据
IN0 ---> 入口参数(整型)OUT1 ---> 出口参数(实型)STAT2---> 静态变量(整型)
6.打开FB1功能块,编写如下代码,实现将“整型”变量转换成“实型”变量
同时再编写一段静态变量自加1代码
7.打开OB1主程序,添加FB1功能块。
S7-1200 PLC的用户程序结构
2023/10/7
11
5.2 PLC的工作原理——CPU的工作模式
上电后CPU进入STARTUP模式,进行上电诊断和系统初始化, 检查到某些错误时,将禁止CPU进入RUN模式,保持在STOP。
STARTUP:
A 复位I 存储器
B 使用上一次RUN模式最后的值或替换值初始化输出
C 执行启动 OB
D 将物理输入的状态复制到 I 存储器
背景数据块:存储供特定的FB使用的数据。
2023/10/7
8
5.2 PLC的工作原理——操作系统与用户程序
CPU的操作系统用来组织与具体的控制任务无关的所有的CPU功 能,包括:处理暖启动、刷新输入/输出过程映像、调用用户程序、 检测中断事件和调用中断组织块等。
用户程序:处理具体的最大化任务必须的所有功能,包括:
返回值Ret_Val属于输出参数,默认的数据类型为Void,该数据 类型不保存数据,用于功能不需要返回值的情况,在调用FC1时, 看不到Ret_Val。
如果将它设置为Void之外的数据类型,在FC1内部编程时可以使 用该变量,调用FC1时可以在方框的右边看到作为输出参数的 Ret_Val。
2023/10/7
CPU 有三种工作模式: STOP 模式、STARTUP 模式和 RUN 模 式。CPU 前面的状态 LED 指示当前工作模式。
——在 STOP 模式下,CPU 不执行任何程序,而用户可以下载项 目。
——在STARTUP 模式下,执行一次启动OB(如果存在)。在RUN 模式的启动阶段,不处理任何中断事件。
是2功023能/10块/7 ,在调用它们时需要指定配套的背景数据块。
7
5.1 用户程序结构简介——数据块
数据块(Data block,DB)是用于存放执行代码块时所需的数据的 数据区,有两种类型的数据块:
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么用?
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么用?展开全文PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。
FC运行是产生临时变量执行结束后数据就丢失-----不具有储存功能FB运行时需要调用各种参数,于是就产生了背景数据块DB。
例如用FB41来作PID控制,则它的PID控制参数就要存在DB里面。
FB具有储存功能系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。
SFC与FC不具有储存功能,FB和SFB具有储存功能。
OB模块相当于子程序,负责调用其他模块。
如果程序简单只需要OB就可以实现。
用西门子PLC编程时,可以用到功能块FB和功能FC(FB、FC都是组织块)资料上说FB与FC都可以作为用户编写的子程序,但是我不明白这两个组织块之间到底有什么区别阿?在应用上到底有什么不同之处吗?FB--功能块,带背景数据块FC--功能,相当于函数他们之间的主要区别是:FC使用的是共享数据块,FB使用的是背景数据块举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编程外加3个背景数据块就可以了,但是,如果您使用FC,那么您需要不断的修改共享数据块,否则会导致数据丢失。
FB确保了3个电机的参数互不干扰。
FB,FC本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。
他们的最大区别是,FB与DB配合使用,DB中保存着FB使用的数据,即使FB退出后也会一直保留。
FC就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。
在实际编程中,是使用FB还是FC,要看实际的需要决定。
FB与FC没有太大的差别,FB带有背景数据块,而FC没有。
所以FB带上不同的数据块,就可以带上不同的参数值。
这样就可以用同一FB和不同的背景数据块,被多个对象调用。
FB2功能块的使用说明
FB2 GET (可用于读取NC变量功能)FB2功能块可以使PLC程序从NC读取相应的变量,为了能正确的引导NCK变量,所需要通过“NC V AR Selector”软件在数据块中生成源数据块STL。
下面以读取机床轴位置来介绍使用FB2功能,在使用FB2功能时需要现将FB1里面的参数设置为“NCKomm=1”一,打开“NC V AR Selector”软件,新建一个项目。
搜索到一个“SMA”的变量然后“确定”二,找到代号为“988”“actToolbasepos”的选项,双击,出现下图这里面“Unit-No”是将要选着的通道号,Line是所要选着的轴号,单击OK这里我们生成3个项目如下图3图3二,单击菜单Code中的Selection选项,输入最后要生成的数据块号,默认为DB120,即生成DB120块,然后单击保存,找到所要保存到哪里的路径,这是会生成一个后缀名为“.var”的文件,名字可以自由取,这里以“zhoupos”为名三,单击菜单Code中的Generate生成后缀名为“.awl”这里以“zhoupos”为名字。
这个后缀名为“.awl”的文件是将来被PLC所认可的文件四,打开STEP7 在其源文件的跟目录下右键Insert new object—external source 找到刚才保存的文件然后打开,这时就会在STEP7的源文件里生成一个STL的源文件,双击打开,然后编译,如果没有发生错误则会在STEP7里生成一个DB120的数据块,五,在符号表里给DB120数据块定义注释,例如本例为zhoupos DB120 保存六,在OB1里调用FB2块,然后定义背景数据块例如DB121,下面将FB2的各输入输出参数说明如下1)输入参数Req:正向脉冲沿启动任务,只有当Rep端产生一个上升沿变换时,才可以启动它的一个任务,也就是读取NC轴的一个位置变量,布尔型数据类型MunVar:读取的数据数量,范围1—8,整型数据类型Addr1~Addr8:[DBName].[VarName];这是“NC V AR Selector”软件提供的NC变量标识符;数组型数据类型;例如本例为"zhoupos".C0_SMA_actToolBasePos0_2其中"zhoupos"就是刚才在符号表里定义的DB120的注释Unit1~Unit8: 变量地址中的区域地址;在这里就是“所要的通道”是那个,例如本例是通道1,就定义B#16#1, 字节型数据类型Columnl1~Columnl8:变量地址中的列地址,字型数据类型。
从零开始学PLC之逻辑块(FC和FB)的结构及编程
从零开始学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)时要传递的实际参数、梯形图程序中的中间逻辑结果等。
FB块的使用技巧和多重背景数据的使用
FB块的使用技巧和多重背景数据的使用
FB的使用技巧:FB的执行需要专门提供一个数据块DB,背景数据块DB,只能FB块访问使用它我
们先制作一个FB块,这里不在演示制作的过程(和FC一样),具体要求见下图:FB内程序建立完成后,
在OB1中调用(可多次调用 ...
FB的使用技巧:
FB的执行需要专门提供一个数据块DB,背景数据块DB,只能FB块访问使用它
我们先制作一个FB块,这里不在演示制作的过程(和FC一样),具体要求见下图:
FB内程序建立完成后,在OB1中调用(可多次调用)
因为FB可以多次调用,程序在运行的时候会有很多地方在使用FB,当我们需要看着FB内的程序进有很多实际参数给他不同的信号,我们无法看到我们想要的实际参数单独在FB内运行的效果,给用测试操作的功能,对FB内测行单独调试,方法如下图:
OK完成,可以对FB(多次调用的)进行单独的调试了
多重背景数据的使用:
(多重数据就是在一个FB内多次调用另一个FB,以达到减少FB使用数目的目的)
下面举个例子说明多重背景数据的使用:
前面我们建立了一个FB1(电机的启停控制),如果我们想控制很多电然而每个CPU支持调用FB数目是有限的,这边FB1(电机启停功能)用的多,就代表我们其他功
为了解决CPU能调用的FB数目有限这个局限,我们可以把很多FB1一起做成多重背景数据放到F 就解决了,方法入下图:
新建一个FB功能块(FB2)
OK,下面我们在OB1中调用FB2,就可以在不调用FB1的情况下达到多次调用FB1的效果了我们看一下DB102里的数据:
DB102里面集合了FB1的背景数据块的内容
使用小技巧。
西门子PLC中FB和FC区别、管脚定义、临时变量引起的麻烦
西门子PLC中FB和FC区别、管脚定义、临时变量引起的麻烦FB和FC区别FB--功能块,带背景数据块 FC--功能,相当于函数FB,FC块均相当于子程序,既可以调用其它FB,FC块,也可以被OB,FB,FC块调用。
他们之间的主要区别是:1. FB使用背景数据块作为存储区,FC没有独立的存储区,使用全局DB或M区2. FB局部变量有STAT和TEMP,FC由于没有自己的存储区因此不具有STAT,TEMP本身不能设置初始值。
本质上,FB,FC的实现目的是相同的;无论何种逻辑要求,FB,FC均可实现。
只是实现方式效率不同,这也和工程师个人编程习惯有关。
FB块优点:1. 易于移植性,对于相同控制逻辑不同参数的被控对象,只要使用不同的背景DB,同一个FB块就可以方便2. 多重背景,减少重复工作,提高效率3. 多次调用时,参数修改方便4. 有独立的存储区FC块优点:1. 小巧灵活,对于非多次调用的程序更易理解2. 不占用额外的存储资源FB,FC块管脚定义IN---------变量是外部输入的,只能被本程序块读,不能被本程序块写;OUT-------是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写;IN_OUT--- 输入输出变量本程序块和其他程序都可以读写这个引脚的值。
TEMP -----临时变量,顾名思义是暂时存储数据的变量。
这些临时的数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。
STAT-------在PLC运行期间始终被存储。
S7 将静态变量定义在背景数据块(仅对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中。
为何定义的FB,FC块,多次调用后程序混乱?对于,多次调用的程序块,FB块建议更换调用不同的背景DB;FC则需要确保使用的存储地址不重复,即每次调用,块中调用的地址不重复。
为何含有定时器或计数器的FB或FC单次调用ok,多次调用时定时器或计数器混乱?对于多次调用的FB,FC,如为S7定时器,计数器,则需要在IN 接口中定义TIMER或Counter,每调用一次FB或FC,均赋不同的定时器或计数器号。
29-FB块与FC块功能的区别
FB块和FC块FB和FC区别FB,FC块管脚定义临时变量引起的麻烦FB和FC区别FB--功能块,带背景数据块 FC--功能,相当于函数FB,FC块均相当于子程序,既可以调用其它FB,FC块,也可以被OB,FB,FC块调用。
他们之间的主要区别是:1. FB使用背景数据块作为存储区,FC没有独立的存储区,使用全局DB或M区2. FB局部变量有STAT和TEMP,FC由于没有自己的存储区因此不具有STAT,TEMP本身不能设置初始值。
本质上,FB,FC的实现目的是相同的;无论何种逻辑要求,FB,FC均可实现。
只是实现方式效率不同,这也和工程师个人编程习惯有关。
FB块优点:1. 易于移植性,对于相同控制逻辑不同参数的被控对象,只要使用不同的背景DB,同一个FB块就可以方便2. 多重背景,减少重复工作,提高效率3. 多次调用时,参数修改方便4. 有独立的存储区FC块优点:1. 小巧灵活,对于非多次调用的程序更易理解2. 不占用额外的存储资源FB,FC块管脚定义IN---------变量是外部输入的,只能被本程序块读,不能被本程序块写;OUT-------是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写;IN_OUT--- 输入输出变量本程序块和其他程序都可以读写这个引脚的值。
TEMP -----临时变量,顾名思义是暂时存储数据的变量。
这些临时的数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。
STAT-------在PLC运行期间始终被存储。
S7 将静态变量定义在背景数据块(仅对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中。
为何定义的FB,FC块,多次调用后程序混乱?对于,多次调用的程序块,FB块建议更换调用不同的背景DB;FC则需要确保使用的存储地址不重复,即每次调用,块中调用的地址不重复。
为何含有定时器或计数器的FB或FC单次调用ok,多次调用时定时器或计数器混乱?对于多次调用的FB,FC,如为S7定时器,计数器,则需要在IN接口中定义TIMER或Counter,每调用一次FB或FC,均赋不同的定时器或计数器号。
功能FC和功能块FB的使用
功能FC和功能块FB的使用功能(Functional Capabilities,FC)和功能块(Functional Blocks,FB)是软件开发中常用的概念,用于描述系统的功能和实现方式。
这两个概念可以帮助开发人员更好地组织代码和设计系统,并且在软件开发过程中起到了重要的作用。
下面将详细介绍功能FC和功能块FB的使用。
功能(Functional Capabilities,FC)是系统或软件所提供的一种特定功能或行为。
它描述了系统在特定情况下应具备的能力,可以是一个简单的操作或一个复杂的功能。
FC通常是对系统所需功能的高级描述,它不仅仅包括系统的输入和输出,还包括系统的行为和约束。
FC与用户需求息息相关,它是将用户需求转化为系统所需功能的中间步骤。
功能块(Functional Blocks,FB)是实现功能的基本单元。
一个功能块是具有特定功能的代码块,它接收输入,执行一系列操作,并生成输出。
功能块主要用于将系统的功能划分为更小的模块,以便于开发、维护和重用。
一个复杂的系统通常由多个功能块组成,每个功能块负责一个特定的功能或行为。
通过合理的组织和设计功能块,可以使系统更加模块化、可靠和可扩展。
在实际的软件开发过程中,我们通常会先进行功能分析和需求确定,然后将需求转化为功能,再将功能细化为功能块。
这个过程可以通过以下几个步骤实现:步骤一:功能分析和需求确定。
在这个阶段,我们需要与用户进行沟通,了解他们的需求和期望。
通过与用户的交流,我们可以确定系统所需的功能,并将其记录为功能描述。
步骤二:定义功能。
在功能分析阶段完成后,我们需要将功能描述转化为具体的功能。
例如,如果我们的系统需要实现一个登录功能,我们可以将其定义为一个“登录”功能。
步骤三:细化功能。
在细化功能时,我们需要将每个功能进一步分解为更小的功能块。
这些功能块可以是独立的,也可以依赖其他功能块。
通过细化功能,我们可以更好地组织代码,并确保每个功能块的责任清晰明确。
干货!西门子12001500PLC常用术语及FB、FC、DB各功能介绍
干货!西门子12001500PLC常用术语及FB、FC、DB各功能介绍1、块接口由形式参数和本地数据两部分组成:参数解析:输入参数:为调用模块提供数据,输入给逻辑模块输出参数:从逻辑模块输出数据结果输入/输出参数:参数值既可以输入,也可以输出变量解析:临时变量:存储在L堆栈中,块执行结束后,变量消失;静态变量:存储在背景数据块中,块调用结束后,变量被保留;(1)函数(FC)简介① 、函数(FC)是用户编写的程序块,是不带存储器的代码块。
由于没有可以存储块参数值的数据存储器,因此,调用函数时,必须给所有形参分配实参。
②、FC 里有一个局域变量表和块参数。
局域变量表里有:Input(输入参数)、Output(输出参数)、InOut (输入/输出参数)、Temp(临时数据)、Return(返回值 RET_VAL)。
Input(输入参数)将数据传递到被调用的块中进行处理。
Output(输出参数)是将结果传递到调用的块中。
InOut(输入/输出参数)将数据传递到被调用的块中,在被调用的块中处理数据后,再将被调用的块中发送的结果存储在相同的变量中。
Temp(临时数据)是块的本地数据,并且在处理块时将其存储在本地数据堆栈。
关闭并完成处理后,临时数据就变得不再可访问。
Return 包含返回值 RET_VAL。
(2)函数块(FB)的简介函数块(FB)属于编程者自己编程的块。
函数块是一种“带内存”的块。
分配数据块作为其内存(背景数据块)。
传送到FB 的参数和静态变量保存在实例DB 中。
临时变量则保存在本地数据堆栈中。
执行完FB 时,不会丢失DB 中保存的数据。
但执行完FB 时,会丢失保存在本地数据堆栈中的数据。
(3)数据块(DB)简介①、数据块用于存储用户数据及程序中间变量。
新建数据块时,默认状态是优化的存储方式,且数据块中存储的变量是非保持的。
数据块占用 CPU 的装载存储区和工作存储区,与标识存储器的功能类似,都是全局变量,不同的是,M 数据区的大小在 CPU 技术规范中已经定义且不可扩展,而数据块存储区由用户定义,最大不能超过工作存储区或装载存储区。
朗风快学PLC(八)西门子S7-300的程序结构OB,FB,FC,DB
朗风快学PLC(八)西门子S7-300的程序结构OB,FB,FC,DB想要学习西门子PLC,OB,FB,FC和DB是必须要学习的!那么它们在整个程序里面起到什么作用呢?今天带大家了解一下。
OB是西门子300/400里面最重要的组织块,从OB1-OB122它们有很多不同的功能,今天我们将最常用的OB1,OB1是主程序循环,一个程序中90%的指令都是写在OB1里面或者是在OB1里面调用的,那么其他10%写在哪?答案是其他的组织块里面。
PLC采用循环扫描的工作方式。
从OB1的第一行扫描到最后一行。
但是对于300系列PLC,程序都是非常多的。
即使是90%的程序写在OB1里面也是不现实的。
所以需要调用FB和FC。
进而使得程序可看性更强一些。
这也就是结构化编程。
FB和FC块,我们从两者的名字就可以进行区分,可以用一个公式即FB=FC+DB来表示,FB是具有DB背景块的特殊FC,也就是说FB具有FC的功能,同时拥有一个DB块。
FC全称是Function函数。
注:DB块全称DataBlock 数据存储区域,类似数据库中关系表结构。
那首先什么函数呢?函数 f(x)就像机器或黑箱,给予输入值x便产生唯一输出值f (x)。
x是自变量,f(x)是因变量。
我们再看一下FB和FC的内部结构,作为一个块拥有属于自己的管脚,其中包括:IN——变量从外部输入,只能被本程序读,不能被本程序写。
OUT——是由本程序块输出的,可以被本程序块读写,其他程序只能读这个值而不能写。
IN_OUT——输入输出变量,本程序和其他程序都可以读写这个引脚的值。
TEMP——临时变量,顾名思义是暂时存储数据的变量。
这些临时的数据存储在CPU工作储存区的局部数据堆栈(即L区)中。
STAT——在plc运行期间始终被存储,S7将静态变量定义在背景数据块(仅FB拥有静态变量),当被调用时可以读写静态变量,调用结束后静态变量保存在数据块中,静态变量在某种程度上可以作为全局变量来进行使用,但使用时需要注意,这里不建议新手使用。
课题七、功能块FB
①、新建块FB1,定义形式参数如表7-1:
②、使用形式参数在FB1中编写程序如下图7-1所示:
③、在OB1中调用FB1,并赋值实际参数,求得的 平均值存放在MD4中,见图7-2。
上图中DB1为FB1的背景数据块,在输入时若DB1 不存在,则将自动生成该背景数据块。双击打开背 景数据块DB1如下图7-3:
可以看到上图中DB1中保存的正是在FB1的接口 中定义的形式参数。对于背景数据块,无法进行编 辑修改,而只能读写其中的数据。
课题七、功能块FB
一、课题目标: 通过项目教学,让学生掌握功能块FB与 背景数据块IDB的应用。 二、课题要求:
(1)掌握功能块FB 的应用。 (2)了解背景数据块IDB 。
三、知识链接:
功能块FB(Function Block)不同于FC块的是它 带有一个存储区,也就是说,有一个局部数据块被分 配给FB,这个数据块称为背景数据块(Instance Data Block)。当调用FB时,必须指定背景数据块的号码 ,该数据块将自动打开。 背景数据块可以保存静态变量,故静态变量只能 用于FB中,并在其变量声明表中定义。当FB退出时, 静态变量仍然保持。 每次调用FB时可能指定不同的实际参数,实际参 数的值被存储在它的IDB中,当块退出时,背景数据块 中的数据仍然保持。如果在块的调用时,没有实际参 数分配给形式参数,则在程序执行中将采用上一次存 储在IDB中的参数值。
可以看出,FB的优点如下: (1)、当编写FC程序时,必须寻找空的标志区或 数据区来存储需保持的数据,并且要自己编写程序来 保存它们。而FB的静态变量可由STEP 7的软件来自动 保存。 (2)、使用静态变量可避免两次分配同一存储区 的危险。
பைடு நூலகம்
S7-1200PLC多重背景数据块DB使用方法
S7-1200PLC多重背景数据块DB使用方法前两次文章和大家讲解了FB FC块使用方法,其中包含带参数、多次调用、全局库知识点,那么结合前两次内容给大家补充一个技巧,如何通过多次调用FB或FC块并产生一个DB背景数据块,统称为:多重背景数据DB块。
一、创建一个FB块(电机正反转互锁)第一步:(添加FB块,命名为:正反转)二、编写FB块参数与程序第一步:(填写接口参数地址与数据类型)Input(输入接口)正转启动(数据类型BOOL)反转启动(数据类型BOOL)停止按钮(数据类型BOOL)InOut(输入输出接口)正转启动(数据类型BOOL)反转启动(数据类型BOOL)第二步:(编写正反转程序)三、创建一个FB块作为多重背景存放第一步:(创建FB100块,作为多重背景存放区)FB编号可以根据调用的FB多少来确定,当然越大越好。
第二步:(在FB100接口Static(静态变量)参数中创建调用FB 块多重背景名称)根据自己需要调用次数来填写,比如我需要调用三次,那么就创建三个即可,其它以此类推,FB块多重背景名称可以随意定义,没有固定的名称。
四、调用FB块第一步:(在FB100中调用FB1正反转程序)调用时选择多重背景,然后在多重背景接口参数中的名称选择在FB100接口参数中Static(静态变量)创建的名称,通过编号1 2 3排列。
第二步:(填写FB1正反转管脚地址)五、查看背景数据DB块第一步:(创建DB块,命名为:正反转背景DB块)第二步:(调用三次FB块,背景数据块全部集成在一个背景DB 块中)按照正常调用法,每次调用一个FB或FC块都要产生一个DB背景数据块,这样浪费并占地方,一个背景DB块可以存入1万6千多个数据,所以这样很浪费,因此采用多重背景数据DB,把所有数据都放在一个背景数据块中。
六、演示效果第一步:(三个FB正反转块全部同时启动电机正转)它们之间相互互不影响,可以同时启动,同时停止,同时反转。
S7-1200第14讲:扩展指令讲解5-FC和FB编程、DB块讲解、数据记录指令
DataLogClose(关闭数据日志)指令: 关闭打开的数据日志文件。对已关闭的数据日志执行 DataLogWrite 操 作将导致错误。 再次执行DataLogOpen操作之前,禁止对此数据日志 执行写操作。切换到 STOP模式时将关闭所有已打开的数据日志文件。
6. 当写入的条数达到设定的记录条数时,可选择以下两种情况之一再 分别写入数据记录 情况一:打开已有数据日志文件
新建数据日志文件成功后,可按照第4步再写入一条新的数据记录。
DataLogNewFile(在新文件中创建数据日志)指令: 允许程序根据现有数据日志文件创建新的数据日志文件。
借助 S7-1200 的 Web 服务器,用户可经由 Web 页面来访问 CPU 相 关数据以及过程数据。
S7-1200 包含可通过 PC 的 Web 浏览器进行访问或通过移动设备访问 的标准 Web 页面:
DataLogCreate 指令的 DATA 参数: DATA 参数指向用作新日志记录临时缓冲区的存储器,必须将其分配
给 M 或 DB 位置。可以分配整个 DB(源自创建 DB 时分配的 PLC 数据 类型),也可分配部分 DB(指定的DB 元素可以是任何数据类型、数据 类型结构、PLC 数据类型或数据数组)。
可通过修改 DB 块的属性将 DB 块修改为标准 DB 块或优化的 DB 块, 如下图所示:
如 DB 块属性为标准 DB 块,该 DB 块内变量的偏移地址(offset) 被编译后会出现,标准 DB 块与优化的 DB 块对比如下图所示:
标准 DB
优化 DB
数据管理
取决于变量的生明。用户可以 数据被系统管理和优化。用户可以
当写入的条数达到设定的3条记录条数时,如果旧的变量值允许被新 的变量值覆盖,可再调用“DataLogOpen”指令打开这个数据日志文 件,如下图所示:
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么用?
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么⽤?朋友们好,我是电⼦及⼯控技术,我来回答这个问题。
很多不管是学习西门⼦PLC的还是学习施耐德或者是三菱的PLC,在PLC的编程软件中我们会常常遇见到“FB”、“FC”、“DB”、“OB”这样的程序块,以⾄于使初学PLC编程的朋友常常对此很容易产⽣混淆,甚⾄⽤错。
今天利⽤闲暇时间给朋友们梳理⼀下这些程序块到底是是代表什么意思,我们⼜该如何去⽤它们。
学过PLC的朋友都知道,在对软件编写程序的时候我们常常⽤三种编程⽅法,⼀种是结构化编程,另⼀种是线性化编写程序,还有⼀种是模块化的程序编写。
特别是在模块化编程和结构化编程中就会常常⽤到上述⽤户块的功能。
⾸先我们先解答⼀下什么是“块”。
“块”的诞⽣和功能1、“块”的功能在PLC程序中有两种程序,⼀种是⼚家在⽣产PLC时把它固化在PLC内部CPU中的系统程序,还有⼀种就是我们需要⾃⼰编写且能够随意“擦写”和下载的⽤户程序。
我们在编写PLC程序时,为了使我们的程序条理清晰和便于管理维护和阅读,软件制作者给我们规制制作了不同功能的块,我们在编写程序时就把不同功能的程序写在不同的程序块中,当PLC运⾏时,它的CPU就会按照程序需要运⾏的条件去命令相应的“块”来完成特定的控制任务,这就是块的功能。
“FC”函数的意义及使⽤在PLC编程软件中的'FC'是指函数的意思,它是⽤户⾃⼰编写的程序块。
在函数(FC)中是没有数据存储器的,它是可以通过调⽤使⽤,在调⽤时要给它的形式参数送⼀个具体的数值才可以⽤。
另外在这个“FC”函数⾥⾯是有局部变量表和块参数的,⽐如这些变量可以是有输⼊、输出和输⼊/输出和临时变量等。
它有点类似⼀个⼦程序,可以在主程序中调⽤。
举个PLC启停控制的简单例⼦,我们可以在主函数中建⽴⼀个⼦函数“FC”命名为“启停控制FC1”,建⽴好函数后给启动按钮与停⽌按钮以及输出继电器关联⼀个具体的实际参数就可以了。
项目二:功能块FB、功能FC和背景数据库DB的创建和使用
用户在变量声明表中创建本块中专用的变量(即局域变量)。
局域变量分为IN(输入变量)、OUT(输出变量)、IN-OUT(输入/输出变量)、TEMP(临时变量)和STAT(静态变量)五种类型。
·IN(输入变量):为调用它的块提供的输入参数。
·OUT(输出变量):返回给调用它的块的输出参数。
·IN-OUT(输入-输出变量):初值由调用它的块提供,被子程序修改后返回给调用它的块。
·TEMP(临时变量):暂时保存在局域数据区中的变量。
只是在执行块时使用临时变量,执行完后,在主程序中不能再使用该变量。
·STAT(静态变量):在功能块的背景数据块中使用。
关闭功能块后,其静态数据保持不变。
功能( FC)没有静态变量。
IN(输入变量)、OUT(输出变量)和IN-OUT(输入/输出变量)属于程序块的形式参数。
TEMP(临时变量)属于程序块的局域变量,只在它所在的块中有效。
STAT(静态变量)只在FB程序块中存在,也属于程序块的局域变量,在它所在的块中有效,而且PLC掉电后STAT 变量仍然保持。
每一种类型的变量都包括变量名、变量类型和变量注释。
变量声明表的左边给出了该变量表的总体结构,点击某一变量类型,例如“OUT”,在表的右边将显示出该类型局域变量的详细情况。
块中的局域变量名必须以字母开始,只能由英语字母、数字、下划线组成,,但是在符号表中定义的共享数据的符号名可以使用其他字符。
在程序中,操作系统在局域变量前面自动加上“#”号。
如果在块中只使用局域变量,不使用绝对地址或全局符号,易于形成通用子程序块实现结构化编程,并且易于将程序块移植到别的项目中去。
变量声明后在局域数据块中为临时变量( TEMP)保存有效的存储空间。
对于功能块FB,还要为配合使用背景数据块为静态变量(STAT)保存空间。
通过设置IN(输入)、OUT(输出)和IN-OUT(输入/输出)类型变量,声明块调用软件接口(即形式参数)。
实例详解FC与FB的编程及调用
实例详解FC与FB的编程及调用在STEP7的编程中,经常会用到FC功能和FB功能块来简化程序编制,减少程序空间占用。
本文通过现场实例详细介绍了FC功能和FB 功能块的应用1.FC和FB的主要区别FC和FB的主要区别是FB有背景块,能够保存上一次执行的数据,调用一次就需要建立一个DB块。
FC没有背景块,多次调用可以共用一个DB块FC 功能是没有存储能力的,给定入口的参数,执行完毕后,从输出参数读出结果。
FC功能也就完成了。
就像计算机高级编程语言中的子函数。
当然,FC可以访问全局的存储变量,M区,数据块等等。
但是影响程序的可移植性。
FC的参数是没有实际的地址的,只是在调用FC的时候,对应到一个实际的地址来读取参数。
而FB的参数都是有实际对应的地址的,也就是对应的背景数据块的地址。
FB参数传递的是数据。
FB可以生成静态变量,下次调用FB的时候,这些静态变量可以被保留。
而FC的变量只在调用期内有效。
FB与FC的区别在于入口参数,出口参数和使用静态变量。
如果一个FB对入口参数,出口参数和使用静态变量都不需要,那么与使用没有入口参数和出口参数的FC基本一样了。
FB可以和多个背景数据块配合使用,被用来控制多个对象。
例如控制多个电机或者泵的运行。
多个电机之间参数互不干扰。
如果使用FC达成同样功能,就需要不断地修改共享数据块,以避免对象的数据丢失。
FC没有一个永久的数据块来存储数据,只是在被调用的时候,被分配一个临时的数据区。
2.FC功能编程及调用实例:2.1在STEP7中完成硬件组态以后,开始编制PLC程序,插入一个功能FC,如图所示。
将FC设置成为一个模拟量数值超限报警程序,模拟量信号比较后输出报警值。
2.2在FC中创建接口,IN 变量是外部输入的,只能被本程序块读,不能被本程序块写,输入参数只能在功能和功能块中使用,以将数据传送到调用块进行处理。
OUT 是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写,通过它将结果传送到调用块IN_OUT 输入输出变量本程序块和其他程序都可以读写这个引脚的值,输入/输出参数在功能和功能块中使用,以将数据传递到调用块中,在调用块中处理数据,然后再将从调用块中发送的结果存储在相同的变量中。
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么用?
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么
用?
首先FB块功能块,FC功能。
FC里面可以编程不同的程序就是没有共同程式的程序而后被OB块调用,OB是执行,它可以调用你所编的程序的每个块,调用你所编的块之后,然后PLC只能通过扫描OB 块来处理你所编程序,OB块可以调用很多块。
FB块里面主要编的就是一些有共同程式的一些程序,举例,三个电机要分别运行,都是通过星三角启动的,只是他们功率不一样,所以所选择的交流接触器,热保护型号也不一样,包括启动关闭开关形成的电路图都是一样的,所以此时他们三个电路图都是一样的,这就起他们的共同点形成的程式,这个共同的程式也就是电路图就编程在FB里面,每个FB块可以形成不同的DB,DB里面就是没有电机运行的参数。
三个电机就会调用共同的FB三次就形成3个DB块,每个DB对应每组的参数。
这个DB块我们称之为背景数据块,因为它是一个DB相对应一组电机的。
FC在编程的时候也会产生数据。
这个数据在共享数据块里,都可以调用的,公用的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用户在变量声明表中创建本块中专用的变量(即局域变量)。
局域变量分为IN(输入变量)、OUT(输出变量)、IN-OUT(输入/输出变量)、TEMP(临时变量)和STAT(静态变量)五种类型。
⏹·IN(输入变量):为调用它的块提供的输入参数。
⏹·OUT(输出变量):返回给调用它的块的输出参数。
⏹·IN-OUT(输入-输出变量):初值由调用它的块提供,
被子程序修改后返回给调用它的块。
⏹·TEMP(临时变量):暂时保存在局域数据区中的变量。
只是在执行块时使用临时变量,执行完后,在主程序中不能再使用该变量。
⏹·STAT(静态变量):在功能块的背景数据块中使用。
关
闭功能块后,其静态数据保持不变。
功能( FC)没有静态变量。
IN(输入变量)、OUT(输出变量)和IN-OUT(输入/输出变量)属于程序块的形式参数。
TEMP(临时变量)属于程序块的局域变量,只在它所在的块中有效。
STAT(静态变量)只在FB程序块中存在,也属于程序块的局域变量,在它所在的块中有效,而且PLC掉电后STAT变量仍然保持。
每一种类型的变量都包括变量名、变量类型和变量注释。
变量声明表的左边给出了该变量表的总体结构,点击某一变量类型,例如“OUT”,在表的右边将显示出该类型局域变量的详细情况。
块中的局域变量名必须以字母开始,只能由英语字母、数字、下划线组成,,但是在符号表中定义的共享数据的符号名可以使用其他字符。
在程序中,操作系统在局域变量前面自动加上“#”号。
如果在块中只使用局域变量,不使用绝对地址或全局符号,易于形成通用子程序块实现结构化编程,并且易于将程序块移植到别的项目中去。
变量声明后在局域数据块中为临时变量( TEMP)保存有效的存储空间。
对于功能块FB,还要为配合使用背景数据块为静态变量(STAT)保存空间。
通过设置IN(输入)、OUT(输出)和IN-OUT(输入/输出)类型变量,声明块调用软件接口(即形式参数)。
用户在功能块中声明变量时,除了临时变量外,它们将自动出现在功能块对应的背景数据块中。
在变量声明表中赋值时,不需要指定存储器地址;根据各变量的数据类型,程序编辑器自动地为所有局域变量指定存储器地址。
生成功能块FB并调用
生成背景数据块并修改实际值。