首先,我們以IEC61131來闡述一下FB與FC的不同:
在61131標準中:
1、FB具有獨立的存儲空間,而FC不具備。
2、FB允許使用靜態變量,而FC不允許。
3、FB允許使用輸入輸出變量,而FC僅具有輸入或者輸出變量。
4、FC中不允許讀寫全局變量。
嗯,大致也就是以上4點。
這是針對于IEC61131標準而言,但是西門子雖然號稱支持IEC61131標準,但不是一個聽話的孩子。
1、FB具有背景數據塊DI,FC沒有,但是,FC可以通過獨享的共享數據塊(DB)來達到類似的功能。在其他廠牌的PLC中,FB具有的專屬空間有PLC的操作系統進行內存分配,而在西門子中,這個工作是通過用戶建立數據塊來實現自我分配。
2、在西門子中,FC與FB均具有靜態變量的能力。
3、FB通過讀寫DI來實現對變量的讀寫,而FC則通過讀寫共享數據塊來實現。
4、共享數據塊也可以理解為全局變量,因此,在西門子中,FC可以讀寫全局變量。
西門子在FB,FC的編寫中給予了用戶極大的靈活性,但是也同時增加了編程出錯的幾率,另一方面,由于編程中的靈活而導致程序上使用的不規范,從而使得在西門子PLC編寫的程序向其他品牌PLC編寫的程序移植困難。這對于用戶來說,其為西門子編寫的FB,FC,當使用其他品牌時,不得不重新編寫。
而對于SFC,SFB來說,只不過這些功能塊由西門子提供并固化在PLC的ROM中,因此,其根本區別與FB,FC的區別相同。
以上僅表示個人見解。
Good Luck~