FC--功能,相當(dāng)于函數(shù)
FB--功能塊,帶背景數(shù)據(jù)塊
他們之間的主要區(qū)別是:FC使用的是共享數(shù)據(jù)塊,F(xiàn)B使用的是背景
數(shù)據(jù)塊
FC可以干兩個(gè)事:
第一,實(shí)現(xiàn)功能化編程。比如,我們有大車,小車,起升3個(gè)結(jié)構(gòu)。我
們就可以定義3個(gè)FC,跟這3個(gè)機(jī)構(gòu)一一對應(yīng),然后用OB1依次調(diào)用。為
什么這樣做,為什么不都放在OB1里。你也可以放OB1里,對段數(shù)比較少
,很簡單的項(xiàng)目就把代碼都放在OB1里。如果功能,機(jī)構(gòu)多了,最好還
是分開來,這樣有利于程序的可讀可調(diào),更符合規(guī)范。否則一個(gè)小故障
都會導(dǎo)致你把OB1翻個(gè)遍,會很麻煩的。找準(zhǔn)故障機(jī)構(gòu),在相應(yīng)的FC里
再去找會少看很多代碼。這個(gè)道理比較簡單。
第二個(gè)事,就是我上面說的模塊化編程,我的描述不是很準(zhǔn)確,因?yàn)槭?/span>
自己的總結(jié)。這個(gè)意思就是我們平常討論說的,把所有功能都寫到一個(gè)
塊里,然后去調(diào)用整個(gè)塊。FC可以干這個(gè)事(當(dāng)然,F(xiàn)B也可以干,區(qū)別
后面說),新建好FC,確定好輸入,輸出接口,然后編寫邏輯,一個(gè)FC
就搞定了。大家可以寫一些簡單的功能,來感受下FC。寫好FC之后,在
主程序OB1或者其他FC里就可以調(diào)用該塊,程序界面右邊“FC BLOCK”
里就有該塊,相信做到這里的話大家都應(yīng)該知道怎么做了。我這里要說
明其他問題。關(guān)于FC的編寫,這里就不得不說一些概念性的東西,F(xiàn)C是
不帶背景數(shù)據(jù)塊的,就這句話。因?yàn)镕C是不帶背景數(shù)據(jù)塊,所以我們在
調(diào)用FC時(shí),關(guān)于FC這些邏輯的計(jì)算完全靠的是我們輸入輸出接口上的這
些地址位,給FC提供數(shù)據(jù)來源。我們在編寫FC的時(shí)候,需要注意的是,
如果需要中間變量,考慮使用temp,臨時(shí)變量滿足需要。但是使用臨時(shí)
變量需要注意的是,在一個(gè)周期沒有完成掃描時(shí),A段程序調(diào)用FC1,使
用了臨時(shí)變量X,改變了其值。那么B段程序再次調(diào)用FC1時(shí),X的值已經(jīng)
被改變了。在下個(gè)周期,才會釋放。這點(diǎn)要非常小心。這就是跟FB無法
比的,沒有地址來存放數(shù)據(jù)。編程的時(shí)候,盡量多考慮使能。同樣,M
寄存器也要慎用,比如,你FC里用了M2.0這個(gè)位表示中間狀態(tài)?,F(xiàn)在第
一次調(diào)用FC時(shí),改變了M2.0的值,為ON?,F(xiàn)在又第二次調(diào)用FC,M2.0的
值已經(jīng)為ON了,顯然這不是我們想要的。雖然你調(diào)用了兩次,分別賦了
兩組輸入輸出變量,但是你FC內(nèi)的M終究是內(nèi)存里的那個(gè)M,你調(diào)用無數(shù)
次都是跟這個(gè)M打交道。不知道我說清楚了沒。所以一般不要用這樣呀
的中間變量,一定要用時(shí),多考慮通過使能來改變調(diào)用時(shí)序。同樣,像
定時(shí)器啊什么的,如果我們要使用,都需要定義一個(gè)in接口,為FC內(nèi)的
定時(shí)器提供一個(gè)實(shí)實(shí)在在的通道。第一次調(diào)用,我們用T21輸入。第二
次調(diào)用,我們用T22輸入。這樣就不會出錯(cuò)。否則就會像M那樣出錯(cuò)。這
個(gè)部分很重要。如果沒聽懂,不要緊。繼續(xù)聽FB。兩個(gè)比較下,應(yīng)該就
很更清楚了。
FB,功能塊??梢愿傻氖拢褪荈C能干的第二個(gè)事。只能干這個(gè)事,為
什么要特別些呢,干嘛不讓FC一個(gè)人搞定就行了。是因?yàn)镕B功能更強(qiáng)悍
些,每次調(diào)用他都需要一個(gè)DB來供他為邏輯計(jì)算存放數(shù)據(jù)。而不像我之
前說的FC,需要輸入輸出接口地址來作為數(shù)據(jù)來源。每次調(diào)用FB時(shí),需
要指明一個(gè)DB,兩個(gè)相互配合。而DB中存放的數(shù)據(jù),也可以供全局享用
。比如,有一個(gè)電機(jī)的加速功能塊,作用是調(diào)節(jié)電機(jī)的加速。我們需要
輸入的參數(shù)是加速時(shí)間,最高速度兩個(gè)參數(shù),然后計(jì)算得出速度給定。
這個(gè)時(shí)候我們最好用FB?,F(xiàn)有電機(jī)1,輸入加速時(shí)間2,最高速度20。那
么2,20這個(gè)值放在哪呢,我們調(diào)用FB時(shí),就可以放到DB電機(jī)1里去了。
現(xiàn)有電機(jī)2,加速時(shí)間3,最高速度30,。我們?nèi)匀徽{(diào)用這個(gè)FB,3和30放
DB電機(jī)2里就可以了。如果用FC,也可以做這個(gè)塊。但是,沒有DB來存
放這些數(shù)據(jù),就很不方便,也就失去了通用性。

記住一點(diǎn),簡單的功能集合用FC,復(fù)雜的用FB。保準(zhǔn)不錯(cuò)。
山東捷成儀表自動化技術(shù)有限公司是一家主要從事于儀器儀表 ,自控設(shè)備研發(fā),生產(chǎn),銷售為一體的高新技術(shù)企業(yè),同時(shí)作為一家專業(yè)化的自動化系統(tǒng)集成商,參與設(shè)計(jì)、制造的SIS安全儀表系統(tǒng),DCS控制系統(tǒng),PLC控制系統(tǒng)項(xiàng)目上百個(gè),遍及全國各地,受到了客戶的一致好評。
公司成立以來本著"專業(yè)、分享、合作、共贏”的經(jīng)營理念,在石油化工,環(huán)保水處理,冶金等行業(yè)積累了豐富的經(jīng)驗(yàn),公司視質(zhì)量為生命,以信譽(yù)求生存,以科技促發(fā)展,以優(yōu)質(zhì)的品牌為用戶服務(wù),資深的銷售和應(yīng)用工程師,隨時(shí)為您提供廣泛而專業(yè)服務(wù),并一站式解決您的各種問題。
歡迎全國各地的朋友來電洽談合作交流,一個(gè)電話讓您省錢又省心!
聯(lián)系電話 :王經(jīng)理 15689071551 05338133899 QQ:544849099