功能块和功能的区别

功能块和功能的区别

ID:33331161

大小:49.83 KB

页数:14页

时间:2019-02-24

功能块和功能的区别_第1页
功能块和功能的区别_第2页
功能块和功能的区别_第3页
功能块和功能的区别_第4页
功能块和功能的区别_第5页
资源描述:

《功能块和功能的区别》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、功能: Function   ,  简称 FC功能块: Function Block  ,  简称 FBFB和FC根本的区别是:FB支持静态变量,而FC只支持临时变量。静态变量:是调用FB返回时,仍然要为FB保留此变量区,因此不会改变这一区域的数据值。临时变量却没有这样的特*。所以在FC中如果在对临时数据变量处写入确定的数据前,就去读时就可能产生不可预见的结果,而对于静态变量却不会,因为它会保留你上次写入的结果。另外,楼下的某位大侠的回答也很详细,你可以看看——“   我简单的说说FB和FC的区别,FB是具有存储功能的,FC没有存储功能,这是一般

2、的理解;FB需要背景数据块,而FC是没有的;参数的传递方式不同,FB的输入输出对应着背景数据块地址,而FC的输入输出是没有实际地址对应的,只有的程序调用时,才会和实际的地址产生对应关系。FB参数传递的是数据,FC参数传递的是数据的地址。FB(功能块)的处理方式是围绕着数据块处理数据,他的入口参数和出口参数都是数据块里的数据,以及STAT的数据都是数据块里,入口参数和出口参数、STAT可以认为是静态数据,这些数据不会因为函数消失而逝去,他会一直保存在数据块里。FB里的变量与他的背景数据块是一一对应的,而他的对应并不是一层不变的。更确切的说,FB里的

3、变量在调用时将根据AR2的值当作偏移量与背景数据块是一一对应。如果一个FB功能块里没有入口参数、出口参数及STAT数据,他将不需要背景数据块,这时的FB和没有入口出口参数的FC就没有什么区别了,就只能使用临时变量和全局变量了。用很多人认为,FB的背景数据块必须由FB生成、FB里的第一个变量对应着背景数据块的第一个变量,还有就是由FB生成的数据块只能作为FB的背景数据块使用。其实这些理解是错误的,FB的背景数据块不一定是通过FB生成的,可以像生成共享数据块一样生成FB的背景数据块,换句话说,普通的数据块也可以作为FB的背景数据块,不过这种做法是有一

4、定前提的,就是这个数据块的字节数必须大于等于FB所需的字节数,如果小于FB所需的字节数时,FB访问到超出背景数据块的变量时就会找不到变量的地址,肯定会出错了。FB里的第一个变量对应可以对应数据块字节数减去FB所需背景数据块字节数里的任意位置的变量,我觉得这个比较好理解,在多重背景里不就是这样吗。谈到这里我得说点别的,好像这种情况下,FB里不可以有多重背景,在S7里,多重背景好像是不允许嵌套的,说道这里我马上在S7做了测试,证明我的想法是错误的,多重背景是可以嵌套的。话回正题,由FB生成的数据块也是可以像访问普通数据块一样通过共享数据块方式访问,不

5、信,你可以自己试一试。说说如何使用普通的数据块作为FB的背景数据块,会不会有人现在就开始自己试了,怎么不行呢,一调用程序就程序红色,有错误啊。告诉你,使用CALL指令编写时SETP7会自动检查DB块和FB的关系,要是时间标记和大小不一致就会报错。在这里我们可以使用UC指令调用FB,UC指令是不传递参数的(对于这个说法,我不太认同,我将会在使用UC调用FC时是如何传递参数一节讲述),那么我们如何将参数传递给FB呢?又如何将FB的输出读出来呢?我在前面说过,背景数据块是可以像访问普通数据块一样使用共享数据块访问,这就解决了我们参数传递的问题。下面我给

6、出一个例子大家看看:使用UC调用FBL PIW 290T "tDIPd".PV_PER //"tDIPd"是"TCONT_CP"的背景数据块,我们在这里使用共享数据块方式对数据块写入数据L MD 4T DBD 34A M 8.0A DBX 42.0A M 8.1= DBX 42.1//以上的是参数输入部分LAR2 P#0.0 //该语句指名了FB和背景数据块的对应关系,就是FB的第一个参数对应背景数据的地址CDB //交换共享数据块和背景数据块,将当前的共享数据块变为背景数据块UC "TCONT_CP" //使用UC调用FB,FB的背景数据块就是

7、上面打开的数据块即"tDIPd"CDB //交换共享数据块和背景数据块,将当前的背景数据块变为共享数据块//以下是参数输出部分A DBX 42.0= M 8.0A DBX 42.1= M 8.1L DBW 22T PQW 306L DBD 34T MD 4//从上面我们可以看出DBX42.0、DBX42.1和DBD34是输入输出行数据下面这段程序是使用传统的方法CALL调用FBCALL "TCONT_CP" , "tDIPd"PV_IN :=PV_PER :=PIW290DISV :=INT_HPOS:=INT_HNEG:=SELECT :=PV

8、 :=LMN :=LMN_PER :=PQW306QPULSE :=QLMN_HLM:=QLMN_LLM:=QC_ACT :=CYCLE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。