產(chǎn)品簡介
PLC向兩極發(fā)展性能高的,、大型的PLC響應(yīng)點數(shù)更多 二,、輸出回路的設(shè)計 1、各種輸出方式之間的比較 (1)繼電器輸出: 優(yōu)點是不同公共點之間可帶不同的交,、直流負(fù)載既有導(dǎo)體和絕緣層
詳細(xì)介紹
西門子6ES7 315-2EH14-0AB0
西門子6ES7 315-2EH14-0AB0
S7-300PLC中的FB和FC的分別,?FB帶有自己的背景DB而FC沒有自己的背景DB,用FC和FB有什么分別呢,,他們都能實現(xiàn)控制功能,,到底該用FB還是該用FC,什么時候用FB什么時候用FC,?
FB與FC沒有太大的差別,,F(xiàn)B帶有背景數(shù)據(jù)塊,而FC沒有,。所以FB帶上不同的數(shù)據(jù)塊,,就可以帶上不同的參數(shù)值。這樣就可以用同一FB和不同的背景數(shù)據(jù)塊,,被多個對象調(diào)用,。
FC和FB像C中的函數(shù),只不過FB可以生成靜態(tài)變量,,在下次函數(shù)調(diào)用時數(shù)據(jù)可以保留,,而FC的變量只在調(diào)用期內(nèi)有效,下次調(diào)用又重新更換,。每次調(diào)用FC的I/O區(qū)域必須要自己每次手動輸入,,而FB就不要,省去不少麻煩,如果在上位機控制直接輸入DB控制地址就可以,。
舉個例子來說,,有50臺電機需要控制,這些電機除了參數(shù)不一樣,,控制流程上是一樣的,,每個
電機需要不同的參數(shù)去運行,運行中的過程參數(shù)要參與到下一次的控制過程中。
這個要求,,用FC做的話,,你需要針對不同的電機分配好DB塊,來逐一的確認(rèn)參數(shù)地址,,不能混
淆,,保存和調(diào)用不能出錯,可以想象會有多麻煩,。如果用FB來做呢,?寫好控制過程和定義的參
數(shù)的調(diào)用就可以了。針對電機重復(fù)調(diào)用同一個FB,,每次調(diào)用一個獨立的DB作為背景數(shù)據(jù)塊
,,*不必理會背景DB中的數(shù)據(jù)是怎么存儲的。如果功能需要修改,,只要修改該FB就行了,。
還有其他的例子,比如PID,、比如流量累計等等,。
fc就相當(dāng)于流水線,加工完就過去了,!沒有任何紀(jì)錄,。fb+db不但可以加工,還能記錄數(shù)據(jù)的,。
一般有多個設(shè)備的時候,,我們編寫一個fb然后多次調(diào)用,自動生成相應(yīng)的db,,這樣簡化了我們
的工作,。
FB的變量聲明表中有靜態(tài)變量,并可以進行多級的參數(shù)傳遞,因此在調(diào)用FB時需生成背景數(shù)據(jù)塊,
而FC則沒有這些.FB可以替代FC,反之則不行.
多級的參數(shù)傳遞即所謂的MULTIINSTANCE,你可以把FB,,DB做為另外一個FB中的函數(shù)來調(diào)用,,
如在FB2中可以使用FB1中的參數(shù),而終只生成一個背景數(shù)據(jù)塊,。
Zane:
FB其實不會占用過多的資源,因為一個程序總是有這些變量的,,無論是全局的還是局部變量,。
我現(xiàn)在,大量使用的是FB,,F(xiàn)C只用來編一些邏輯,,及簡單的子程序,或僅僅幾個CALL指令調(diào)用
FB。使用FB及局部變量,更有利于程序的模塊化,增加程序的可移植性,就象西門子公司提供的FB
塊.
其實FB和FC根本的區(qū)別是:FB支持靜態(tài)變量,,而FC只支持臨時變量,。
靜態(tài)變量:是調(diào)用FB返回時,仍然要為FB保留此變量區(qū),,因此不會改變這一區(qū)域的數(shù)據(jù)值,。臨
時變量卻沒有這樣的特性。
所以在FC中如果在對臨時數(shù)據(jù)變量處寫入確定的數(shù)據(jù)前,,就去讀時就可能產(chǎn)生不可預(yù)見的結(jié)果
,,而對于靜態(tài)變量卻不會,因為它會保留你上次寫入的結(jié)果,。
萬泉河:
咱們編制的控制程序,,F(xiàn)B極少用到。所說的用FB來替代FC實用的情況,,更是少見,,有誰曾經(jīng)把
FC全部用光啦?恐怕系統(tǒng)都不能負(fù)擔(dān)了,。
提供的標(biāo)準(zhǔn)庫中,,F(xiàn)B倒是不少的。
如果你要編制的函數(shù)沒有用到靜態(tài)變量,,恐怕沒有必要使用FB吧,?我看高級語言中,雖然靜態(tài)
變量使用很容易,,但實際用也很少啊,。
俠客:我和zane的觀點一樣,我工作中也是把相同功能的工作編制成FB,,然后在FC里調(diào)用,,程
序修改起來方便,舉個例子:如果你有10臺電機,,一般我們都要給他編制啟動,,停止邏輯,報
警,,復(fù)位邏輯,。如果我編一個FB把這些邏輯都做好了,為每一個電機分配一個背景數(shù)據(jù)塊的話
,,我在FC調(diào)用這些電機時,,我只要把這些電機對應(yīng)的I/O點添到FB的管腳上就可以了,*不再
用考慮他里面的邏輯了,,如果你全是用FC編這些邏輯的話,,1、你要寫10遍,2,、如果你用粘貼
和復(fù)制的話,,有可能有的I/O點忘記修改或其他一些錯誤,3,、程序的結(jié)構(gòu)性不強,,維護起來浪費
時間。
所以,,F(xiàn)B和FC結(jié)合起來用是的,。
建議大家試試FB,當(dāng)你理解了FB后,,你會感到驚喜的
Zane:關(guān)于FB,,F(xiàn)C的使用,我也是在具體的應(yīng)用中一步一步地體會過來的,,不過這僅是我個人
的看法與體會,,并沒有說一定要這樣用,各位可以做不同的嘗試,。但有一點是肯定的,,就是在
動手寫程序之前,事先對整個項目要有一個很好的規(guī)劃,。
看老外的程序通常都是在FC里直接編程,,而國內(nèi)的多是在FB里編程然后再在FC里調(diào)用。這兩種
方法各有什么優(yōu)缺點呢,?
用FC能實現(xiàn)的任務(wù),,就沒必要用FB。
FCFB本質(zhì)上一樣
調(diào)用FB相當(dāng)于在FC里opndi,,并使用ar2來索引變量
FB的優(yōu)點是數(shù)據(jù)塊里的變量可按名字使用,,僅僅是顯示而已,執(zhí)行效率和fc一樣
補充:
實際上FC更加靈活,在fc里可以多次調(diào)用opndi訪問多個背景塊,,ar2也可以做多種用途
而fb里的ar2原則上是不能使用了,,調(diào)用fb還要數(shù)據(jù)塊,麻煩
補充2:
FB實際上是編程環(huán)境玩的一個魔法而已
PLC的程序指令上實際是沒有FB和FC的區(qū)別的
調(diào)用FB或者FC終都是轉(zhuǎn)化為UC或CC的調(diào)用指令
要觀察編程環(huán)境的這個魔法,,只需寫一個帶參子程序(FB或FC),并在另一個塊里調(diào)用,,全部
下載后,再更改子程序的參數(shù)接口,,下載該子程序
(此時調(diào)用塊的調(diào)用指令已無效),,然后上載調(diào)用塊
1,一般用FB編寫一些常用的控制程序,,例如閥泵的控制等等,在接口得stat變量里面可以定義一些閥門得開度預(yù)設(shè)值(不通過輸入,直接在HMI上面可以控制的),,并且可以把現(xiàn)場的故障信號寫入stat變量中,,直接送到HMI上面。
2,,而FC一般就是調(diào)用這些FB,,給一些輸入輸出即可。
3,,F(xiàn)C的所有輸入輸出必須賦值,,而FB只要給出背景數(shù)據(jù)塊即可。
4,,當(dāng)然如果說我不需要什么過程的數(shù)值,,那就FC好了,簡單,。
如果大家對計算機編程有點了解的話,,我覺得可以這樣理解:
1、FC象程序里的“函數(shù)”,,直接調(diào)用,,針對過程編程;
2,、FB則象是“類”,,具有接口、屬性以及方法,,用于對“控制對象”編程,,而FB的DB就象是一個具體的“控制對象”的實例。