研选课堂
HOME
研选课堂
正文内容
plc fb 块编程 西门子OB块,FC块,FB块,DB块之间有什么关系?如何调用?
发布时间 : 2024-11-25
作者 : 小编
访问数量 : 23
扫码分享至微信

西门子OB块、FC块、FB块、DB块之间有什么关系?如何调用?

我们在用西门子STEP或者TIA等编程程序的时候,必不可少的就是块编程以及调用,那么什么是块?他们之间有什么关系?如何调用?用在什么场合?

首先,建立一个新的文件,创建一个工艺所需的项目,对项目进行硬件组态,选择合适的CPU,CPU型号为CPU 1211C AC/DC/Rly,此CPU有25 KB 工作存储器;120/240VAC 电源,板载 DI6 x 24VDC 漏型/源型,DQ4 x 继电器输出和 AI2;板载 3 个高速计数器(可通过数字量信号板进行扩展)和 2 路脉冲输出;信号板扩展板载式 I/O;多达 3 个可进行串行通信的通信模块;0.1ms/1000 条指令;PROFINET 接口用于编程、HMI 以及 PLC 间通信,符合工艺所需。

再次,打开程序块中,我们就看见有一个Main[OB1]在程序块下方,此程序块为系统自动生成主程序块,用来循环 OB 依次调用一些子程序,必须将我们所编程序放入OB块进行调用才能执行程序。点击添加新块,及出现我们所要编程应用的块有OB FB FC DB等

添加新块画面

1、那么什么是OB块【组织块】?它有什么作用呢?

组织块 (OB) 是用来构成操作系统和用户程序之间的接口,由操作系统调用具有如下作用。

● 自动化系统的启动特性

● 循环程序处理

●中断驱动的程序执行

● 错误处理

可以对组织块进行编程并同时确定 CPU 的特性。 根据使用的 CPU ,提供有各种不同的组

织块。

OB块类别

2、那么什么是FC块【函数】?它有什么作用呢?

函数 (FC) 是不带存储器的代码块。 由于没有可以存储块参数值的数据存储器。 因此,调用函数时,必须给所有形参分配实参。函数可以使用全局数据块永久性存储数据。有以下作用

函数包含一个程序,在其它代码块调用该函数时将执行此程序。

● 将函数值返回给调用块

● 执行工艺功能

可以在程序中的不同位置多次调用同一个函数。 因此,函数块简化了对重复发生的函数的

编程。

3、那么什么是FB块【函数块】?它有什么作用呢?

函数块是一种代码块,它将输入、输出和输入输出参数永久地存储在背景数据块中,从而

在执行块之后,这些值依然有效。 所以函数块也称为有存储器的块。

函数块也可以使用临时变量。 临时变量并不存储在背景数据块中,而用于一个循环。

函数块包含总是在其它代码块调用该函数块时执行的子例程。 可以在程序中的不同位置多

次调用同一个函数块。 因此,函数块可用于对重复发生的函数的编程。

4、那么什么是DB块【数据块】?它有什么作用呢?

数据块用于存储程序数据。 因此,数据块包含由用户程序使用的变量数据。 全局数据块存

储所有其它块都可使用的数据。

数据块包含全局数据块和背景数据块,全局数据块可以在整个项目中重复使用,而背景数据块是伴随FB块的建立而形成的,它是专门为一个FB块服务,FB块被调用一次就会产生一个DB背景数据块,它只用来存储由于被调用而产生它的FB块,用来保存FB块接口数据以及静态变量等

硬件组态

西门子PLC 博途FB入门篇,看这个就够了

概述

在博途环境下编程,可以使用的代码块有 OB ,FC 和 FB 。通常,功能块 (FB) 是从另一个代码块(OB、FB 或 FC)进行调用时执行的子例程。在调用 FB 块时会生成与之相匹配的背景数据块,在背景数据块中可以存储定义的接口参数及静态变量。下面将具体介绍 FB 块的使用,主要包含以下 5 个方面:

FB 块支持的编程语言 FB 块的块接口 FB 块的编程 FB 块的调用 FB 块的背景数据块属性修改

一、FB块支持的编程语言

S7-1200 使用 FB 块编程支持的编程语言有 LAD、FBD、 SCL 以及 CEM (博途 V17 开始支持);S7-1500除了上述编程语言的支持,还支持Graph。这个博主会另开一期,单独细聊。

图 1. FB 块支持的编程语言

二、FB块的接口

FB 块有一个块接口区,可以用来定义块接口。在 FB 的块接口区域中可以定义的接口类型:Input(输入)、Output(输出)、InOut(输入输出)、Static(静态变量)、Temp(临时变量)以及 Constant (常量),如图 2 所示。

图 2. FB 块接口区

对于 FB 块接口访问如表 1 所示:

接口类型

读写访问

描述

Input

只读

调用 FB 块时,将数据传送到 FB 块,实参可以为常数

Output

读写

将 FB 块执行的结果输出,实参不可以为常数

Inout

读写

读取外部实参数值并且将结果返回到实参,实参不可为常数

Static

读写

静态变量存储在背景 DB 块中,不参与对外的参数传递

Temp

读写

-

Constant

只读

-

表 1. FB 块块接口访问

对于带参数的 FB 块,有形参和实参 2 个概念,如图 3 所示。

形参: 块接口区域定义的 Input,Output,InOut 参数;在调用 FB 块时,会以引脚方式出现在 FB 块上。Input 和 InOut 类型的变量出现在 FB 块的左侧;Output 类型的变量出现在 FB 块的右侧。实参: 在调用带参数的 FB 块时,为形参填写的实际变量。

图 3.形参和实参

二、FB块编程

FB 块在编程时可以选择是否在块接口区定义变量。可以主要分为有 两种情况:

(1)情况1:FB 块带参数——定义块接口 ,FB 块中通常不出现任何全局变量(DB、I、Q、M);优点:模块化编程,对于相同的功能/逻辑只需要编写一个 FB 块,无需重复多次编写相同的代码,进行大量重复性工作;还可将 FB 块做成项目库或全局库,以便后续其他项目或其他工程师使用。FB 块编写程序代码,如图 4 所示。

图 4.带参数的 FB 块编程

FB 块调用以及实参参数的填写,参考图 3 。右键打开图 3 中 FB 块的背景数据块 “motor_DB”,显示内容如图 5 所示。在背景数据块中可显示 Input、Output、InOut 及 Static 变量,Temp 和 Constant 变量不会出现在背景数据块中。

图 5. FB 块背景数据块显示内容

编写的带参数的 FB 块,可以多次调用,只需为每次调用的 FB 块填写不同的实参。同样的功能仅需编写一次即可,无需重复编写相同的代码。注意:一般情况下每次调用需要生成不同的背景数据块。对于部分系统 FB 指令,可能有不同要求,详见具体指令说明。

////////////////////////////////////////////////////////////////////////////////

(2)情况2:FB 块不带参数——不定义任何块接口,FB 块编程中,使用全局变量;此种方式不推荐。 如果在 FB 块中编程时不定义任何块接口变量,那么,在 FB 块中编程时只能使用全局变量。FB 块编程如图 6 所示。

图 6.不带参数 FB 块编程

不带参数的 FB 块调用及其背景数据块,如图 7 所示。

图 7.不带参数 FB 块调用及其背景数据块

三、FB块的调用

编写好 FB 块程序后,需要进行调用才可以执行 FB 块中的程序。FB 块可以由 OB 块、FC 块或其他 FB 块调用。被不同的块调用,出现的调用方式也会不同,如图 8-10 所示。

在 OB 中调用 FB 块,仅支持单个实例调用(如图 8 所示)在 FC 块中调用 FB 块,支持单个实例和参数实例调用(如图 9 所示)在 FB 块中调用另外一个 FB 块,支持单个实例,多重背景和参数实例三种方式(如图 10 所示)。

图 8. OB 调用 FB 块

图 9. FC 调用 FB 块

图 10. FB 调用 FB 块

下面针对各个调用选项进行详细说明:

(1)单个实例: 选择单个实例后,系统会自动生成该 FB 块的背景数据块,出现在程序块文件夹下方,并且自动在 FB 上方填写上该背景数据块,如图 11 所示。

图 11.单个实例调用

////////////////////////////////////////////////////////////////////////////////

(2)参数实例: 选择参数实例后,将实例作为调用块的一个 InOut 参数进行传递,需要生成一个背景数据块作为实参填写在形参上。如图 12 所示,FC1 中调用 FB2"motor",并且调用选项选择参数实例,此时 FC1 的块接口中会新增一个 InOut 类型的参数,参数类型为 motor(FB2 的背景数据块)。

图 12.FC1 中参数实例调用 FB2

添加新块,选择 DB 块,类型选择 motor(FB2 的背景数据块),如图 13 所示。

图 13.新建 FB2 背景数据块

如图 14 所示,在 OB1 中调用 FC1 时会出现一个 InOut 形参参数需要填写,此时将图 13 新建的背景数据块填写到 FC1 的 InOut 参数上即可。

图 14.参数实例填写

////////////////////////////////////////////////////////////////////////////////

(3)多重实例: 选择多重实例后,无需为被调用的 FB 块创建单独的背景 DB 块,被调用的 FB 块的背景数据块存储在外层 FB 块的静态变量区域。对于多重实例,还可以以数组形式存在,方便块的多次调用。如图 15 所示,FB1 中调用 2 次 FB2,选择多重实例方式。

图 15.多重实例调用

四、FB块的背景数据块属性修改

FB 块的背景数据块伴随着 FB 块调用出现,在背景数据块中可以存储 Input(输入)、Output(输出)、InOut(输入/输出)以及 Static(静态变量),下面说明 2 点 FB 块背景数据块属性如何修改。

1. 背景数据块的断电保持性的设置: 背景数据块的断电保持性:取决于 FB 块接口中对变量保持性的设置,如图 16 所示(图中左侧为 FB 块接口,右侧为 FB 块的背景数据块)。

图 16. FB 块接口设置保持性

标注 1:保持性有 3 种选项,非保持、保持以及在 IDB 中设置;标注 2:块接口中选择为非保持的变量,背景数据块中为不勾选保持性且不可修改;标注 3:块接口中选择为保持的变量,背景数据块中为勾选保持性且不可修改;标注 4:块接口中选择为在 IDB 中设置的变量,背景数据块中会有复选框预留,由用户自行决定是否勾选保持性,可在背景数据块中操作。此外该功能可以用于优化 FB 块 的 AT 功能的使用,详见链接。

注意:对于非优化 FB 的保持性无法在 FB 接口处设置,只能在背景数据块中设置,并且所有变量参数的保持性是一致的,无法单独设置某一个变量参数的保持性。

////////////////////////////////////////////////////////////////////////////////

2.背景数据块的优化和非优化如何设置: 背景数据块的优化或非优化:由 FB 块属性的“优化的块访问” 设置决定。

FB 块创建后,默认是优化的 FB 块,其背景数据块也默认是优化的。如果需要修改该属性,可以在 FB 块属性中,将”优化的块访问“复选框取消勾选,即修改为非优化,如图 17 所示。

图 17. FB 块属性修改为非优化

对程序进行编译程序后,查看 FB 的背景数据块的属性也随之修改为非优化,如图 18 所示。

图 18. FB 背景数据块非优化

关注我,工控PLC布道师,工控路上与你一路前行。

相关问答

什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么用?

朋友们好,我是电子及工控技术,我来回答这个问题。很多不管是学习西门子PLC的还是学习施耐德或者是三菱的PLC,在PLC的编程软件中我们会常常遇见到“FB”、“FC...

plc中DB模块的作用?

DB块有两种,一种是共享数据块,另一种DB是立即块。我来简要的说一下这些块通常的作用,OB组织块中最普通常用的就是OB1它就像西门子200PLC中的主程序一样,根据...

plc五种编程语言?

plc编程语言如下1、梯形图语言(LD)梯形图语言是PLC程序设计中最常用的编程语言。它是与继电器线路类似的一种编程语言。由于电气设计人员对继电器控制较为熟...

PLC的FG端口是什么?

一般FG为接地,而FG接地并不是为了为通讯口做隔离之用,而是屏蔽干扰的作用,如果您只是测试并非在大干扰设备旁(如:大功率变频器)使用,那么FG不接地也无妨。...

三菱plc扩展l和f啥意思?

三菱plc扩展l和f意思是:X42输入模快上DISPLY开关F/L档意思X42输入点比较多,模块体积小,上面指示灯的位置有限。无法全部显示出来,开关F/L,就是为了切换输...

三菱PLC特殊模块读写指令缓冲区BFM地址怎么定义?

这个指令是写特殊单元模块缓冲器的指令,K0是你这个FX0N-3A单元的编号,K17是FX0N-3A单元中BFM#17(BuFferMemerry缓冲寄存器),你就当它是FX0N-3A单元中D17好了....

OMRON的PLC功能块这么编写呢?

这个问题,我在omrog-CX-programmer里边看了一下,和西门子一边建立自定义块还是很相似的。直接上图来看说吧:新建一个项目,里边是没有功能块的,如下图:如...也...

西门子编程语言有哪些?

目前比较流行的西门子PLC编程语言有如下几类:1.梯形图。最明了最容易上手的PLC编程语言,一般新手上路都是梯形图。特别方便监测。2.STL语言:STL是高手用的,...

三菱plc错误代码f1301怎么解决?

解决方法:三菱FX5U系列PLC、Q系列和L系列PLC都是一样,首次上电使用都会产生报警,是属于正常现象。具体解决办法如下所示:此时需要打开三菱PLC编程软件,然...

请问PLC16F883那脚是“复位”以及他是如何实现复位的,谢谢?

笔误了吧,应该是PIC16F883,就是“RE3/MCLR/VPP”脚复位,低电平复位。因为和VPP脚复用,在线编程的时候必需断开才行,正常工作时加一个电阻、电容复位。笔误了...

 小品打工奇遇  南昌大学 周斌 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

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

热线

188-0000-0000
专属服务热线

微信

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