欢迎来到天天文库
浏览记录
ID:57742352
大小:101.64 KB
页数:1页
时间:2020-03-27
《浅谈STEP7中FC与FB的区别及应用.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、浅谈STEP7中FC与FB的区别及应用詹晋荣(兰州石化设备维修公司,甘肃兰州730060)摘要:本文介绍了西门子PLc软件sTEP7中的Fc和FB程序块的概念、功能、作用、使用方法以及二者的区别,通过应用实例说明在实际应用中如何合理的选择二者来编写程序,使系统程序运行更优化、合理。关键词:功能;功能块;数据块;参数;变量声明表1FC与FB的作用说明1.1FC的作用说明在STEP7软件程序中,功能(FC)是软件使用者自己编程的块,是“无存储区”的逻辑块。Fc的临时变量存储在局域数据堆栈中。当Fc执行结束后,这
2、些数据就丢失了。要想将这些数据永久存储,功能也可使用共享数据块(DB)。由于FC没有它自己的存储区,所以必须为它指定实际的参数。一个FC包含一个程序部分,当FC被不同的逻辑块调用时,这些程序总会被执行。从Fc的变量表中可以看到Fc块的参数类型有:输入、输出、输入/输出和临时变量,这些变量都是局部变量,只能在该功能块中具有意义且不能赋予初始值。参数存做指针,指向调用FC的逻辑块的实际参数。1.2FB的作用说明功能块(FB)也属于用户自己编程的块,功能块是具有“存储功能”的块。FB在使用时必须有相应的数据块(D
3、B)与之对应,用数据块作为功能块的存储器(背景数据块)。传递给FB的参数和静态变量存在背景数据块中。临时变量存在本地数据堆栈中。当FB执行结束时,存在背景DB中的数据不会丢失。可是,当FB的执行结束时、存在本地数据堆栈中的数据将丢失。FB中所含的程序总是当不同的逻辑块调用该FB时执行。功能块的存在使得对于经常使用的一些控制功能、复杂控制、计算、处理功能的编程变得容易。每次功能块(FB)的调用都将赋给一个背景数据块,用于传递参数。多次调用某一FB,可以有多个背景,用户可以用一个FB控制多台设备。例如,一个用于
4、电机控制的FB,可以通过对每个不同的电机,使用不同的的背景数据块,来控制多台电机。每台电机的数据(例如:转速、爬升、累积运行时间等),可存在一个或多个背景DB中。从FB的变量声明表中可以看到FB块的参数类型有:输出、输入、输入,输出、静态变量和临时变量,除了临时变量,FB块的参数是可以赋予初始值的。2FC与FB的区别2.1FC和FB参数的主要区别从以上说明中可以看出有无静态变量是二者的局部变量的本质区别,功能快的静态变量用背景数据快来保存,功能如果有执行完后需要保存的数据,可以放在全局变量中,但是这样会影响
5、功能的可移植性。如果使用了全局变量,在移植时要考虑是否会产生冲突。在功能块(FB)中访问参数时,使用背景数据块中的实际参数的复制参数。当调用FB时,如果没有传送输入参数或没有写输出参数,则背景数据块中将始终使用以前的值。功能(FC)没有存储器,与FB对比,不可以选择对FC的形参赋值。2.2FC和FB的功能上区别简单的说FB是具有存储功能的,Fc没有存储功能。FB需要背景数据块,而FC是没有的。FB块与FC块不同,FB块带有一个存储区。也就是说,有一个局部数据块被分配给FB块,当调用FB时,必须指定背景数据块
6、的号码,该数据块会自动打开。背景数据块可以保存静态变量,所以静态变量只能用于FB块中,并在其变量声明表中定义。参数的传递方式不同,FB的输入输出对应背景DB地址,而FC的输入输出没有实际地址对应的,只有程序调用时,才会和实际的地址产生关系。FB参数传递的是数据,FC参数传递的是数据的地址。Fc功能块里的参数没有实际的地址,都是形式参数,只有在调用时才会把实际的参数地址传送到Fc的参数里。Fc是没有存储能力的,这是一般的情况,给定入口参数,执行完了,从出口参数读出数据,Fc的功能就消失。如果在Fc里使用全局变
7、量,也可以达到FB块一样的效果,但是这样的FC块是没有可移植性的。下面将介绍根据实际工程,编写的FC与FB块。3FB的应用FB同FC相比的优点是当编写FC的程序时,用户必须寻找空的标志区或数据区来存储需保持的数据,并且要自己编写程序来保存它们。而FB的静态变量可由SrllEP7的软件来自动保存。使用静态变量可避免两次分配同一存储区的危险。如果用户需要编程控制多个功能相同或相近而且控制方案相同的电机时,可以将多个背景数据块分配给一个控制电机的功能块(FB),则用户可用该FB去控制多个不同的电机。描述电机的各项
8、数据(例如:转速、升速时间、整个操作时间),存在不同的数据块中,当FB调用时,相应的DB决定哪个电机被控制。4结语在工程中往往控制多个相同的设备,这时只要做一个FB或一个FC(如果中间数据不要保存的话),如果你使用FB块(不是Fc)只要和相应数量的的DB块(数据块)联系起来就可以,比如要控制3台电机,只要做一个FBl块控制程序,在081中调用FBl时分别于3个电机的数据块DBl,DB2,DB3联系起来就可以。如果
此文档下载收益归作者所有