資源描述:
《FB與FC塊的區(qū)別及其實(shí)際的工程運(yùn)用.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、FB與FC塊的區(qū)別及其實(shí)際的工程運(yùn)用【工控老鬼】?(2012-11-1615:21:21)轉(zhuǎn)載▼標(biāo)簽:?plc培訓(xùn)?s7-200?s7-300plc培訓(xùn)?感悟人生?工控老鬼?雜談分類:?PLC?簡(jiǎn)單的說FB是具有存儲(chǔ)功能的,F(xiàn)C沒有存儲(chǔ)功能,這是一般的理解:FB需要背景數(shù)據(jù)塊,而FC是沒有的;參數(shù)的傳遞方式不同,F(xiàn)B的輸入輸出對(duì)應(yīng)背景DB地址,而FC的輸入輸出沒有實(shí)際地址對(duì)應(yīng)的,只有程序調(diào)用時(shí),才會(huì)和實(shí)際的地址產(chǎn)生關(guān)系。FB參數(shù)傳遞的是數(shù)據(jù),F(xiàn)C參數(shù)傳遞的是數(shù)據(jù)的地址。FB功能塊的處理方式是圍繞著數(shù)據(jù)塊處理數(shù)據(jù),它的輸入輸出參數(shù)都是數(shù)據(jù)塊
2、里的數(shù)據(jù),以及STAT的數(shù)據(jù)都是數(shù)據(jù)塊里的,入口參數(shù)和出口參數(shù),這些數(shù)據(jù)不會(huì)因?yàn)楹瘮?shù)消失而消失,它會(huì)一直保持在數(shù)據(jù)塊里。FB里的變量與它的背景數(shù)據(jù)塊是一一對(duì)應(yīng)的,而它的對(duì)應(yīng)并不是一層不變的,更確切的說,F(xiàn)B里的變量在調(diào)用時(shí)將根據(jù)AR2的值當(dāng)作偏移量與背景數(shù)據(jù)塊是一一對(duì)應(yīng)的。如果一個(gè)FB功能塊沒有入口參數(shù)、出口參數(shù)及STAT數(shù)據(jù),它將不需要背景數(shù)據(jù)塊,這時(shí)的FB塊和沒有出、入口參數(shù)的FC就沒什么區(qū)別了,也就只能使用臨時(shí)變量和全局變量,當(dāng)然這時(shí)的FB塊是沒有實(shí)際作用了。有人會(huì)認(rèn)為,F(xiàn)B的背景數(shù)據(jù)塊必須由FB生成、FB的第一個(gè)變量對(duì)應(yīng)背景數(shù)據(jù)塊
3、的第一個(gè)變量,還有就是由FB塊生成的數(shù)據(jù)塊只能作FB的背景數(shù)據(jù)塊使用。其實(shí)這些理解都是錯(cuò)誤的,F(xiàn)B的背景數(shù)據(jù)塊不一定是通過FB生成的,可以像生成共享數(shù)據(jù)塊一樣生成FB的背景數(shù)據(jù)塊,換句話說,普通的數(shù)據(jù)塊也可以作為FB的背景數(shù)據(jù)塊使用,只是這種做發(fā)是有前提的:就是這個(gè)數(shù)據(jù)塊的字節(jié)數(shù)必須大于或等于FB所需的字節(jié)數(shù),如果小于FB所需的字節(jié)數(shù),F(xiàn)B訪問到超出背景數(shù)據(jù)塊的變量時(shí)就會(huì)找不到變量的地址,當(dāng)然也就出錯(cuò)了。FC功能塊里的參數(shù)沒有實(shí)際的地址,都是使形參數(shù),只有在調(diào)用時(shí)才會(huì)把實(shí)際的參數(shù)地址傳送到FC的參數(shù)里。FC是沒有存儲(chǔ)能力的,這是一班的說法
4、,給定入口參數(shù),執(zhí)行完了,從出口參數(shù)讀出數(shù)據(jù),F(xiàn)C的功能就消失。如果在FC里使用全局變量,也可以達(dá)到FB塊一樣的效果,但是這樣的FC塊是沒有可移植性的。下面,我將介紹我根據(jù)實(shí)際工程,編寫的FC與FB塊?實(shí)例1:FC塊(這是一個(gè)用于西門子PLC向直流裝置6RA70寫過程數(shù)據(jù)的FC塊)?A(?????????L?????#in0??????L?????#in1??????>R?????????)??????????JNB???_001??????L?????#in1??????T?????#temp0_001:NOP???0A(???????
5、???L?????#in0??????L?????#in2???????????????)??????????JNB???_002??????L?????#in2??????T?????#temp0_002:NOP???0L?????#in0??????L?????#in1??????<=R????????=?????#temp5L?????#in0??????L?????#in2??????>=R????????=?????#temp5A?????#temp5??????A?????#temp5??????JNB???_003?????
6、?L?????#in0??????T?????#temp0_003:NOP???0L?????#in0??????L?????0.e+000???????????????=?????#out1L?????#temp0??????ABS????????T?????#temp1??????NOP???0??A(?????????L?????#temp1??????L?????1.e+004??????*R?????????T?????#temp2??????AN????OV??????SAVE???????CLR????????A?????B
7、R??????)??????????JNB???_004??????L?????#temp2??????L?????#in1??????/R?????????T?????#temp3_004:NOP???0??A(?????????L?????#temp3??????RND????????T?????#TEMP4??????AN????OV??????SAVE???????CLR????????A?????BR??????)??????????JNB???_005??????L?????#TEMP4??????T?????#out0_00
8、5:NOP???0?在FC塊中調(diào)用FC?CALL??FC????30???????in0:=DB3.DBD2090???????in1:=6.e+002???????in2:=0.e+000?