我是一个新手。对于fb和fc块理解不清楚。知道差别就在存储和不储存数剧。在书上有是这们说的,大家看一下我的理解是不是对的。1在功能块中,当访问参数时使用背景数据块中的实际参数的拷贝参数。这一句我的理解就是当在fb块中。比如检查输入信号时,访问的不是印向存储区的数据,而是访问fb块相对应的DB数据块中的数据。还有这个访问参数是指什么了??、2当调用FB时,如果没有传送输入参数和没有写输出参数,则背景数据块中将使用以前有值。这个没有传送输入参数和没有写输出参数是什么意思了,???请大家说通俗一些,不要用书上的话,谢谢了
问题补充:
理解了一些,哪个说个简单的程序让我比较一下,这样比较直观一些
产品版区:SIMATIC S7-300(F)/S7-400(F/H/FH)
悬赏分:5 | 解决时间:2012-03-15 14:31:36 | 提问者: 华华的 - 新生  第1级
最佳答案
回答者:
阳光灿烂
-
毕业实践员  第4级
2011-08-03 14:08:51
提问者对于答案的评价:
很好
FB可以保存中间变量。
FC就是一个函数,不能保存中间计算的结果!
FB必须有个DB来保存中间变量。FB可以当做FC用,但FC不能当做FB用。
FB大于等于FC!!
回答者: YHKingKong - 高级工程师  第11级
2011-07-27 19:40:28
在这里参数分为实参和形参,形参就是在变量声明表中的输入、输出、输入/输出、静态变量、临时变量,实参是在调用FB或FC时的实际地址。例如:在FB的变量声明表中IN里定义QIDONG(BOOL)(IN)然后在OB1中调用,将启动按钮的地址I0.0赋值给
QIDONG=I0,0
则QIDONG就是形参,I0.0就是实参。
FB有自己的数据块,它的局部数据放在自己的背景数据块中,而FC不用,FB和FC另外一个不同是,在调用时,FC每一定义的局部变量都要赋值,而FB根据需要不一定都赋值。
回答者: liujian1121 - 中级工程师  第10级
2011-07-27 19:53:02
FC就是一个功能函数,FB是功能块,它可以保存中间变量的值,而FC不行
回答者: 龙在工控 - 学长  第2级
2011-07-28 08:36:32
首先功能FC是用户编写的没有固定参数存储区的块,其临时变量存储在局部数据堆栈中,功能执行结束后,这些数据就被其他数据覆盖了,可以用共享数据区来存储那些在功能执行结束后需要保留的数据,不能对功能的参数分配初始值;而功能块FB是用户编写的有固定参数存储区(背景数据块DI)的逻辑块,在每次调用FB时,要给FB提供各种不同的数据,这些数据以静态变量STAT的形式存放在指定的背景数据块中,临时变量(TEMP)存储在局部数据堆栈中。
从以上分析,我们可以看出FB和FC都可以存储数据,只不过FB有自动生成的专用背景数据块(DI),可以在调用FB结束后可以把数据以静态变量STAT的形式保存在背景数据块中,而FC必须借助共享数据块(DB)存储在FC执行后需要保留的数据,否则保存在局部数据堆栈中数据在FC调用结束后丢失。
在调用FB时,对于大多数类型的参数,可以赋实参,也可以不赋值。如果不给FB的形参,则自动读取当前背景数据块DB中的参数值。当调用FB时,首先检查是否指定背景数据块中对应的实参,如果你指定FB中形式参数的实参值(指针值),就不会读取FB背景数据块中的数据。
你在给功能块(FB、FC)编程时使用的是行参,调用它时需要使用实参来为形参赋值,所以访问参数就是指调用FB时读写形式参数时自动取出保存当前背景数据块中对应的实际参数值。一般操作系统在编译FB时,将自动生成与FB对应的背景数据块中的数据,其变量与对应的FB中的变量声明表中的变量相同。
当调用FB时,如果没有传送输入参数是指没有给FB的形式参数赋值的意义,即没有给相应的参数给实际值;没有输出参数是指在程序调用FB结束后没有指定输出参数值的保存位置。总之没有传送输入参数和没有写输出参数是针对FB的背景数据块而言的,即在调用FB时如果没有指定FB形式参数的实际数据和输出数据的存储器的位置,将自动由FB的背景数据块提供实际参数和调用FB结束还自动保存到背景数据块中。
回答者: Bob Wu - 顶级工程师  第12级
2011-07-28 21:27:50
1. FB,FC本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。他们的最大区别是,FB与DB配合使用,DB中保存着FB使用的数据,即使FB退出后也会一直保留。FC就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。在实际编程中,是使用FB还是FC,要看实际的需要决定。
2. FB与FC没有太大的差别,FB带有背景数据块,而FC使用的是共享数据块。所以FB带上不同的数据块,就可以带上不同的参数值。这样就可以用同一FB和不同的背景数据块,被多个对象调用。
3. FC和FB像C中的函数,只不过FB可以生成静态变量,在下次函数调用时数据可以保留,而FC的变量只在调用期内有效,下次调用又重新更换。
回答者: WANGLQ - 中级技术员  第6级
2011-07-31 20:29:48
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!