SIEMENS华北地区河北省衡水市西门子(授权)一级总代理-西门子伺服电机一级总代理
| 更新时间 2025-01-19 09:10:00 价格 请来电询价 变频器 西门子代理商 触摸屏 西门子一级代理 伺服电机 西门子一级总代理 联系电话 18126392341 联系手机 15267534595 联系人 梁涛 立即询价 |
西门子S7-1200编程可以使用的代码块有 OB 块,FC 块和 FB 块。功能块 (FB) 是从另一个代码块(OB、FB 或 FC)进行调用时执行的子例程。在调用 FB 块时会生成与之相匹配的背景数据块,在背景数据块中可以存储定义的接口参数及静态变量。下面将具体介绍 FB 块的使用,主要包含以下 5 个方面:
FB 块支持的编程语言
FB 块的块接口
FB 块的编程
FB 块的调用
FB 块的背景数据块属性修改
对于 FB 块的块接口访问如表 1 所示:
接口类型 | 读写访问 | 描述 |
Input | 只读 | 调用 FB 块时,将数据传送到 FB 块,实参可以为常数 |
Output | 读写 | 将 FB 块执行的结果输出,实参不可以为常数 |
Inout | 读写 | 读取外部实参数值并且将结果返回到实参,实参不可为常数 |
Static | 读写 | 静态变量存储在背景 DB 块中,不参与对外的参数传递 |
Temp | 读写 | - |
Constant | 只读 | - |
对于带参数的 FB 块,有形参和实参 2 个概念,如图 3 所示。
形参:块接口区域定义的 Input,Output,InOut 参数;在调用 FB 块时,会以引脚方式出现在 FB 块上。Input 和 InOut 类型的变量出现在 FB 块的左侧;Output 类型的变量出现在 FB 块的右侧。
实参:在调用带参数的 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 所示)。
(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,选择多重实例方式。联系方式
- 电 话:18126392341
- 联系人:梁涛
- 手 机:15267534595
- 微 信:15267534595