[西门子] 西门子PLC1200中OB、FB、FC、DB概念详解(二)

[复制链接]
查看117 | 回复0 | 2024-4-30 21:50:36 | 显示全部楼层 |阅读模式
本文对函数FC、函数块FB做对比介绍,FB、FC就相当于子程序,既可以调用其它FB,FC块,也可以被OB,FB,FC块调用。学生在学习中有一个疑问,到底是该用FB还是FC,其实使用原则很简单:如果处理的数据已经在全局数据块中创建好了,那就用FC;如果想程序和数据打包在一起使用,那就用FB。控制对象类功能块建议使用FB,调用的时候可以包含程序和数据,层次感更清晰。例如:伺服FB块、模拟量FB块、扫码枪FB块、空压机FB块等等。

一、FC是不带专用存储区的代码块。编写在FC中的程序,需要在其他代码块调用时才会执行。

■没有背景数据块;

■调用块时将参数传递给 FC;

■如果要永久保存数据,需使用全局数据块或存储器。

二、FB是有专门存储区(背景数据块)的代码块,编写在FB中的程序,需要在其他代码块调用时才会执行。

■FB有背景数据块;

■调用块时将参数传递给 FB;

■更改背景 DB 可实现使用一个通用 FB 控制一组设备的运行。

三、FC、FB块的接口区





Input:输入参数

变量是外部输入的,只能被本程序块读,不能被本程序块写。实参可以为常数。

Output:输出参数

是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写。实参不能为常数。

IN_OUT:输入/输出参数

输入输出变量 本程序块和其他程序都可以读写这个引脚的值。实参不能为常数。

TEMP:临时局部参数

临时变量,顾名思义是暂时存储数据的变量。这些临时的数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。

Static:静态局部参数

在PLC运行期间始终被存储。S7 将静态变量定义在背景数据块(仅对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中。

Constant:常量

在块中使用且带有声明符号名的常量。

Return:返回值

返回到调用块的值。

四、应用举例

1、无形式参数的FC

作为子程序使用的FC可以不带形式参数,即调用程序与FC之间没有数据交换,只运行FC中的程序。每个作为子程序的FC只能在主程序中被调用一次。

举例:按下启动,电机和散热风扇同时运行,当按下停止,电机立即停止,散热风扇再运行5秒钟后停止。

步骤:

(1)创建FC;



(2)在FC中编写顺序启动程序;



(3)在OB中调用FC。



2、带形式参数的FC

需要多次调用的FC一般制作成带形式参数的FC,以实现结构化编程。

举例:三相异步电动机的星三角降压启动。

步骤一:创建FC,并定义接口变量



步骤二:在FC中创建程序





步骤三:在0B中调用FC,并给接口创建实参。



给定时器创建DB





带形式参数的FC可多次调用,注意需要再创建一个定时器接口的DB块!!!如下图:





3、


第一步:建立FB,在FB接口区定义接口变量



第二步:在FB中创建程序



第三步:调用FB,在调用FB1时,系统会自动分配一个背景数据块DB。





第四步:在OB1中,给a、b、c编写赋值程序。



免责声明:本文中部分文字描述来自网络,如有侵权,请联系作者删除!


本帖子中包含更多资源

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

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

本版积分规则