西門子S7-1200 PLC的FC和FB程序塊功能詳解
王曾
發(fā)布于2023-04-18 10:22
234
8
標簽:西門子PLC
在西門子系列PLC中,從S7-1200PLC開始就有FC和FB程序塊了,但在使用的時候,一些初學(xué)者還是不好理解,以至于不知道該如何選擇。今天,我們就用大白話的方式給大家講解FC與FB的功能。
1.FC與FB的作用
如圖1所示(餐館、廚師與食材圖),有一家餐館,餐館家有廚師、設(shè)備等。廚師只要把“食材”買好,然后做飯菜,做好了之后就有“美味佳肴”享用了。那么軟件中的FC和FB功能與這個“餐館”非常類似。我們把“輸入數(shù)據(jù)”給到FC或者FC程序塊,然后程序塊將數(shù)據(jù)加工,得到了“輸出數(shù)據(jù)”。這個過程我們把“輸入數(shù)據(jù)”比作“食材”,把“代碼”比作“廚師”,把“輸出數(shù)據(jù)”比作“美味佳肴”。
圖1:FC與FB的作用
2. FC與FB的區(qū)別
既然我們把FC和FB都比作餐館的話,那它們的區(qū)別在哪里呢?我們看圖2,分別有“A餐館”和“B餐館”,A餐館沒有儲藏室,所以A餐館的廚師要把食材從儲藏室拿出來進行加工,當加工完了,成為了“美味佳肴”之后,把這道“美味佳肴”放到“儲藏室”去,然后當做菜量比較大,一旦多了起來,每次取食材,端菜放進儲藏室要來回折返好多次,這就比較麻煩了。并且這個儲藏室也是大家公用的,B餐館也可以采用類似的方法進行菜品加工。儲藏室就是“共享DB或者位存儲器”。
B餐館的話,有專門的儲藏室,所以它就不需要折返去公用的儲藏室去拿食材了。并且每新開一家B餐館都自帶儲藏室,這樣話就非常的方便了。B儲藏室就類似于程序中的“背景DB”。
圖2:FC與FB
2. FC函數(shù)
FC是什么呢?函數(shù) (FC) 是不含存儲區(qū)的代碼塊。通過函數(shù)可在用戶程序中傳送參數(shù)。FB或FC在使用時,都可以使用帶形式參數(shù)與不帶形式參數(shù)的FB/FC,帶參數(shù)的FB/FC可以實現(xiàn)重復(fù)調(diào)用。
帶形式參數(shù)與不帶形式參數(shù)的程序塊有什么區(qū)別呢?我們還是以餐館的形式舉例。不帶形式參數(shù)的FC:如圖3所示,有兩家“FC餐館”,它們每天做的菜只能是固定的,不能根據(jù)不同的菜單而做菜。如果要做出不同的菜的話,只能再開一家餐館,這種就是不帶參數(shù)的FC程序。這種方式和我們在OB1主程序塊中編程基本上一樣(使用的都是全局變量),如圖4所示。但是這種不帶參數(shù)的FC編程的話,需要注意是一些狀態(tài)數(shù)據(jù)的值,否則可能會造成數(shù)據(jù)錯誤。比如程序,如圖5,當“FC1風(fēng)機控制”程序塊中的“Q0.4”自鎖了,然后斷開“OB1塊”中的“M0.0”,這個時候的Q0.4是不會為“0”的,它還保持為“1”的狀態(tài)。這個就是相當于我們廚師做好了菜,然后把門關(guān)了,菜仍然是在那里。如果是先把“Q0.4”斷開了,再把“M0.0”斷開,這個時候的“Q0.4”就是為“0”了。
圖3:FC編程
圖4:FC編程
圖5:OB1調(diào)用FC程序
既然我們說了不帶參數(shù)的FC就是不能根據(jù)菜單來做菜就很不方便,所以就用帶參數(shù)的FC來解決這個問題。帶參數(shù)的FC如圖6所示。其中第一個FC3程序中的“I0.0” “I0.1” “IQ0.0”和第二FC3程序“I0.2”“I0.3”“Q0.1”這些就是不同的菜單,根據(jù)不同的輸入菜單就可以很方便的做好菜。
圖6:帶參數(shù)的FC程序
2. 帶參數(shù)的FC
要編寫帶參數(shù)的FC程序,需要先定義一些接口數(shù)據(jù)。其中接口類型主要分為5種,如圖7所示。
圖7:帶參數(shù)的FC接口
1)Input接口類型:類似于餐館往餐館里送食材,只負責(zé)給進去,不需要拿出來。
2)Output接口類型:類似于餐館里做好了菜,然后通過只負責(zé)Output接口往外送出來。
3)Inout接口類型:類似于往餐館里送食材,然后還立即有人給你回復(fù)。
4)Temp接口類型:類似于小餐館里寫好的小單子(上面寫了每桌客人需要做的菜送到廚房),只起中間過渡作用,然后后面的客人的菜單把前面人的菜單覆蓋。
5)Constant接口類型:是常量,可以用符號代替數(shù)值。
①帶參數(shù)的FC編程示例(起保停程序)如圖8:
圖8:帶參數(shù)的FC程序
②使用帶參數(shù)FC編寫星三角啟動程序,如圖9和圖10
圖9
圖10