[西门子] 西门子博途函数块FB

[复制链接]
查看42783 | 回复0 | 2024-5-23 17:10:43 | 显示全部楼层 |阅读模式
函数块是将自身的值永久存储在背景数据块中的代码块,从而在块执行后这些值仍然可用。



定义

函数块是一种代码块,它将输入、输出和输入/输出参数永久地存储在背景数据块中,从而在执行块之后,这些值依然有效、。 所以函数块也称为“有存储器”的块。

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

应用

函数块包含总是在其它代码块调用该函数块时执行的子例程。 可以在程序中的不同位置多次调用同一个函数块。 因此,函数块简化了对重复发生的函数的编程。

函数块的实例

函数块的调用称为实例。函数块的每个实例都需要一个背景数据块;其中包含函数块中所声明的形参的实例特定值。

函数块可以将实例特定的数据存储在自己的背景数据块中,也可以存储在调用块的背景数据块中。

访问模式

S7-1200 和 S7-1500 提供两种不同的背景数据块访问选项,可在调用函数块时分配给函数块:

·可优化访问的数据块

可优化访问的数据块无固定定义的存储器结构。在声明中,数据元素仅包含一个符号名,因此在块中没有固定的地址。

·可一般访问的数据块(与 S7-300/400 兼容)

可一般访问的数据块具有固定的存储器结构。声明元素在声明中包含一个符号名,并且在块中有固定地址。

如何创建一个函数块FB

首先新建一个项目工程,添加PLC型号及基本设定(参考之前的01西门子新建项目设定)然后在项目中双击“添加新块”,如下图所示:



函数块名称可自行修改,支持中文,可命名为我们容易记和理解的名字,如上图3位置,编程语言可自行修改,在4位置一定要选择自动编号防止记忆错误,最后点击5位置即可添加一个函数块。

下面以电机正反转为例进行解析:

如下图所示:可以看到名字为“电机正反转[FB1]”函数块,名字我们进行了自定义,编号为自动生成的FB1,在4的位置我们可以展开或收起端口参数区,也可以将鼠标放在3位置进行拉伸端口参数区的大小。



下面我们编写程序:

首先定义接口,这里有一点需要注意:因为电机正反转涉及到自锁电路,所以我们在添加输入/输出端口时需要将输出“电机正转”和“电机反转”定义为“InOut”否则在编程时会出错。



编写程序如下所示:



现在我们就编写好了一个函数块“电机正反转[FB1]”,现在还无法执行程序,需要将函数块添加到主程序Main[OB1]中,如下图所示:



有图中可以看到,我们定义的端口没有实际的参数,但是也可以不用设置,程序在运行时也可以正常通过,只是没有实际意义。这时就需要我们将各个功能口指定实际的参数(这也是函数块FB与函数FC的主要区别),另外一个就是有专属的背景数据块,如下图所示:



这时如果我们按此I/O点接线,就可实现电机的正反转控制功能。当我们有多个电机有同样的控制要求时,就可以直接拖入多个“电机正反转”函数块即可,自动编号。如下图所示:



以上就是函数块FB的总结。

==END

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则