資源描述:
《西門子-PLC中OB、FC、FB、SFC、SFB中功能塊.docx》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、西門子?PLC中OB、FC、FB、SFC、SFB中功能塊使用概述?(2013-12-0516:13:52)S7-300/400PLC程序采用結構化程序,把程序分成多個模塊,各模塊完成相應的功能。結合起來就能實現一個復雜的控制系統(tǒng)。就像高級語言一樣,用子程序實現特定的功能,再通過主程序調用各子程序,從而能實現復雜的程序。????在S7-300/400PLC中寫在OB1模塊里和程序就是主程序,子程序寫在功能(FC),功能塊(FB)。????FC運行是產生臨時變量執(zhí)行結束后數據就丟失-----不具有儲存功能????FB運行時需要調用各種參數,于是就產生了背景數據
2、塊DB。例如用FB41來作PID控制,則它的PID控制參數就要存在DB里面。FB具有儲存功能????系統(tǒng)功能塊(SFB)和系統(tǒng)功能(SFC)也是相當于子程序,只不過SFB和SFC是集成在S7CPU中的功能塊,用戶能直接調用不需自已寫程序。????SFC與FC不具有儲存功能,FB和SFB具有儲存功能。????OB模塊相當于子程序,負責調用其他模塊。如果程序簡單只需要OB就可以實現。????用西門子PLC編程時,可以用到功能塊FB和功能FC(FB、FC都是組織塊)資料上說FB與FC都可以作為用戶編寫的子程序,但是我不明白這兩個組織塊之間到底有什么區(qū)別阿?在應用
3、上到底有什么不同之處嗎??????FB--功能塊,帶背景數據塊??????FC--功能,相當于函數??????他們之間的主要區(qū)別是:FC使用的是共享數據塊,FB使用的是背景數據塊??????舉個例子,如果您要對3個參數相同的電機進行控制,那么只需要使用FB編程外加3個背景數據塊就可以了,但是,如果您使用FC,那么您需要不斷的修改共享數據塊,否則會導致數據丟失。FB確保了3個電機的參數互不干擾。?????FB,FC本質都是一樣的,都相當于子程序,可以被其他程序調用(也可以調用其他子程序)。他們的最大區(qū)別是,FB與DB配合使用,DB中保存著FB使用的數據,即使
4、FB退出后也會一直保留。FC就沒有一個永久的數據塊來存放數據,只在運行期間會被分配一個臨時的數據區(qū)。????在實際編程中,是使用FB還是FC,要看實際的需要決定。????FB與FC沒有太大的差別,FB帶有背景數據塊,而FC沒有。所以FB帶上不同的數據塊,就可以帶上不同的參數值。這樣就可以用同一FB和不同的背景數據塊,被多個對象調用。????????FC和FB像C中的函數,只不過FB可以生成靜態(tài)變量,在下次函數調用時數據可以保留,而FC的變量只在調用期內有效,下次調用又重新更換。????這是一般的理解;FB需要背景數據塊,而FC是沒有的;參數的傳遞方式不同,
5、FB的輸入輸出對應著背景數據塊地址,而FC的輸入輸出是沒有實際地址對應的,只有的程序調用時,才會和實際的地址產生對應關系。FB參數傳遞的是數據,FC參數傳遞的是數據的地址。?????FB(功能塊)的處理方式是圍繞著數據塊處理數據,他的入口參數和出口參數都是數據塊里的數據,以及STAT的數據都是數據塊里,入口參數和出口參數、STAT可以認為是靜態(tài)數據,這些數據不會因為函數消失而逝去,他會一直保存在數據塊里。FB里的變量與他的背景數據塊是一一對應的,而他的對應并不是一層不變的。更確切的說,FB里的變量在調用時將根據AR2的值當作偏移量與背景數據塊是一一對應。如
6、果一個FB功能塊里沒有入口參數、出口參數及STAT數據,他將不需要背景數據塊,這時的FB和沒有入口出口參數的FC就沒有什么區(qū)別了,就只能使用臨時變量和全局變量了。用很多人認為,FB的背景數據塊必須由FB生成、FB里的第一個變量對應著背景數據塊的第一個變量,還有就是由FB生成的數據塊只能作為FB的背景數據塊使用。其實這些理解是錯誤的,FB的背景數據塊不一定是通過FB生成的,可以像生成共享數據塊一樣生成FB的背景數據塊,換句話說,普通的數據塊也可以作為FB的背景數據塊,不過這種做法是有一定前提的,就是這個數據塊的字節(jié)數必須大于等于FB所需的字節(jié)數,如果小于FB
7、所需的字節(jié)數時,FB訪問到超出背景數據塊的變量時就會找不到變量的地址,肯定會出錯了。FB里的第一個變量對應可以對應數據塊字節(jié)數減去FB所需背景數據塊字節(jié)數里的任意位置的變量,我覺得這個比較好理解,在多重背景里不就是這樣嗎。????談到這里我得說點別的,好像這種情況下,FB里不可以有多重背景,在S7里,多重背景好像是不允許嵌套的,說道這里我馬上在S7做了測試,證明我的想法是錯誤的,多重背景是可以嵌套的。話回正題,由FB生成的數據塊也是可以像訪問普通數據塊一樣通過共享數據塊方式訪問,不信,你可以自己試一試。說說如何使用普通的數據塊作為FB的背景數據塊,會不會有
8、人現在就開始自己試了,怎么不行呢,一調用程序就程序紅色,有錯誤啊。