咱們編制的控制程序,F(xiàn)B極少用到。所說的用FB來替代FC實(shí)用的情況,更是少見,有誰曾經(jīng)把
FC全部用光啦?恐怕系統(tǒng)都不能負(fù)擔(dān)了。
提供的標(biāo)準(zhǔn)庫中,F(xiàn)B倒是不少的。
如果你要編制的函數(shù)沒有用到靜態(tài)變量,恐怕沒有必要使用FB吧?我看高級語言中,雖然靜態(tài)
變量使用很容易,但實(shí)際用也很少啊。
俠客:我和zane的觀點(diǎn)一樣,我工作中也是把相同功能的工作編制成FB,然后在FC里調(diào)用,程
序修改起來方便,舉個例子:如果你有10臺電機(jī),一般我們都要給他編制啟動,停止邏輯,報
警,復(fù)位邏輯。如果我編一個FB把這些邏輯都做好了,為每一個電機(jī)分配一個背景數(shù)據(jù)塊的話
,我在FC調(diào)用這些電機(jī)時,我只要把這些電機(jī)對應(yīng)的I/O點(diǎn)添到FB的管腳上就可以了,*不再
用考慮他里面的邏輯了,如果你全是用FC編這些邏輯的話,1、你要寫10遍,2、如果你用粘貼
和復(fù)制的話,有可能有的I/O點(diǎn)忘記修改或其他一些錯誤,3、程序的結(jié)構(gòu)性不強(qiáng),維護(hù)起來浪費(fèi)
時間。
所以,F(xiàn)B和FC結(jié)合起來用是的。
建議大家試試FB,當(dāng)你理解了FB后,你會感到驚喜的
Zane:關(guān)于FB,F(xiàn)C的使用,我也是在具體的應(yīng)用中一步一步地體會過來的,不過這僅是我個人
的看法與體會,并沒有說一定要這樣用,各位可以做不同的嘗試。但有一點(diǎn)是肯定的,就是在
動手寫程序之前,事先對整個項(xiàng)目要有一個很好的規(guī)劃。
看老外的程序通常都是在FC里直接編程,而國內(nèi)的多是在FB里編程然后再在FC里調(diào)用。這兩種
方法各有什么優(yōu)缺點(diǎn)呢?
用FC能實(shí)現(xiàn)的任務(wù),就沒必要用FB。
FCFB本質(zhì)上一樣
調(diào)用FB相當(dāng)于在FC里opndi,并使用ar2來索引變量
FB的優(yōu)點(diǎn)是數(shù)據(jù)塊里的變量可按名字使用,僅僅是顯示而已,執(zhí)行效率和fc一樣
補(bǔ)充:
實(shí)際上FC更加靈活,在fc里可以多次調(diào)用opndi訪問多個背景塊,ar2也可以做多種用途
而fb里的ar2原則上是不能使用了,調(diào)用fb還要數(shù)據(jù)塊,麻煩
補(bǔ)充2:
FB實(shí)際上是編程環(huán)境玩的一個魔法而已
PLC的程序指令上實(shí)際是沒有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好了,簡單。
如果大家對計算機(jī)編程有點(diǎn)了解的話,我覺得可以這樣理解:
1、FC象程序里的“函數(shù)”,直接調(diào)用,針對過程編程;
2、FB則象是“類”,具有接口、屬性以及方法,用于對“控制對象”編程,而FB的DB就象是一個具體的“控制對象”的實(shí)例。
西門子S7-200PLC具有脈沖輸出功能,在運(yùn)動控制系統(tǒng)中,伺服電機(jī)和步進(jìn)電機(jī)是很重要的精確定位裝置,而控制伺服電機(jī)和步進(jìn)電機(jī)需要使用脈沖輸出。S7-200系列PLC可以輸出20--100KHz的脈沖。使用PTO和PWM指令可以輸出普通脈沖和脈寬調(diào)制輸出。通過smb66-75,smb166-175來控制Q0.0的輸出,通過smb76-85,smb176-185來控制Q0.1的脈沖輸出。