西門子CPU315T-2DP6ES7315-6TH13-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)變量,并可以進(jìn)行多級的參數(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)性不強,維護(hù)起來浪費
時間。
所以,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就象是一個具體的“控制對象”的實例。
西門子S7-200PLC具有脈沖輸出功能,在運動控制系統(tǒng)中,伺服電機和步進(jìn)電機是很重要的精確定位裝置,而控制伺服電機和步進(jìn)電機需要使用脈沖輸出。S7-200系列PLC可以輸出20--100KHz的脈沖。使用PTO和PWM指令可以輸出普通脈沖和脈寬調(diào)制輸出。通過smb66-75,smb166-175來控制Q0.0的輸出,通過smb76-85,smb176-185來控制Q0.1的脈沖輸出。
控制伺服電機
伺服電機是運動控制中一個很重要的器件,通過它可以進(jìn)行精確的位置控制。它一般帶有編碼器,通過高速計數(shù)功能,中斷功能和脈沖輸出功能,構(gòu)成一個閉環(huán)系統(tǒng),來進(jìn)行精確的位置控制。
PLC的脈沖輸出
由于PLC在進(jìn)行高速輸出時需要使用晶體管輸出。當(dāng)將高速輸出點作為普通輸出而帶電感性負(fù)載時,例如電磁閥,繼電器線圈等,一定要注意,在負(fù)載端加保護(hù),例如并聯(lián)二極管等。以保護(hù)輸出點。
PLC的程序分為主程序、子程序和中斷程序,本文詳細(xì)的介紹了西門子S7-200系列PLC中斷程序的編程方法。具體的講解不同種類的中斷程序的實現(xiàn)方法。熟練的使用中斷程序是PLC編程的一項必要技能。相信本文會對廣大PLC編程人員有所幫助。S7-200的中斷包括定時中斷,IO中斷和通訊中斷。其中IO中斷可以通過外部的IO點來觸發(fā)中斷子程序??梢栽O(shè)置成幾種模式,例如上升沿觸發(fā),下降沿觸發(fā)等。定時中斷是固定時間間隔便觸發(fā)一次中斷程序。通訊中斷可以在數(shù)據(jù)接收或發(fā)送完成時或報文接收完成時觸發(fā)中斷程序。
定時中斷功能
定時中斷是測量周期的一個很重要的工具。在使用編碼器測速度時也要用到定時中斷,即用周期和脈沖數(shù)的比例關(guān)系來計算速度。定時中斷的中斷號為10(定時中斷0),11(定時中斷1),21(定時器T32中斷),22(定時器T96中斷)。
通訊中斷的實現(xiàn)
S7-200的自由口通訊需要設(shè)置相應(yīng)的中斷來判斷通訊是否正常。通訊分為三種即字符發(fā)送和接受完成,報文接受完成。其中斷號為口1為8,9,23,口2為25,26,24。
S7-300
一般步驟
S7-300自動化系統(tǒng)采用模塊化設(shè)計。它擁有豐富的模塊,且這些模塊均可以獨立地組合使用。
一個系統(tǒng)包含下列組件:
CPU:
不同的 CPU 可用于不同的性能范圍,包括具有集成 I/O 和對應(yīng)功能的 CPU 以及具有集成 PROFIBUS DP、PROFINET 和點對點接口的 CPU。
用于數(shù)字量和模擬量輸入/輸出的信號模塊 (SM)。
用于連接總線和點對點連接的通信處理器 (CP)。
用于高速計數(shù)、定位(開環(huán)/閉環(huán))及 PID 控制的功能模塊(FM)。
通信
S7-300 具有不同的通信接口:
連接 AS-Interface、PROFIBUS 和 PROFINET/工業(yè)以太網(wǎng)總線系統(tǒng)的通信處理器。
用于點到點連接的通信處理器
多點接口 (MPI), 集成在 CPU 中;
是一種經(jīng)濟有效的方案,可以同時連接編程器/PC、人機界面系統(tǒng)和其它的 SIMATIC S7/C7 自動化系統(tǒng)。
PROFIBUS DP進(jìn)行過程通信
SIMATIC S7-300 通過通信處理器或通過配備集成 PROFIBUS DP 接口的 CPU 連接到 PROFIBUS DP 總線系統(tǒng)。通過帶有 PROFIBUS DP 主站/從站接口的 CPU,可構(gòu)建一個高速的分布式自動化系統(tǒng),并且使得操作大大簡化。
從用戶的角度來看,PROFIBUS DP 上的分布式I/O處理與集中式I/O處理沒有區(qū)別(相同的組態(tài),編址及編程)。
以下設(shè)備可作為主站連接:
SIMATIC S7-300
(通過帶 PROFIBUS DP 接口的 CPU 或 PROFIBUS DP CP)
SIMATIC S7-400
(通過帶 PROFIBUS DP 接口的 CPU 或 PROFIBUS DP CP)
SIMATIC C7
(通過帶 PROFIBUS DP 接口的 C7 或 PROFIBUS DP CP)
SIMATIC S5-115U/H、S5-135U 和 S5-155U/H,帶IM 308
SIMATIC 505
出于性能原因,每條線路上連接的主站不得超過 2 個。
以下設(shè)備可作為從站連接:
ET 200 分布式 I/O 設(shè)備
S7-300,通過 CP 342-5
CPU 313C-2 DP, CPU 314C-2 DP, CPU 314C-2 PN/DP, CPU 315-2 DP, CPU 315-2 PN/DP, CPU 317-2 DP, CPU 317-2 PN/DP and CPU 319-3 PN/DP
C7-633/P DP, C7-633 DP, C7-634/P DP, C7-634 DP, C7-626 DP, C7-635, C7-636
現(xiàn)場設(shè)備
雖然帶有 STEP 7 的編程器/PC 或 OP 是總線上的主站,但是只使用 MPI 功能,另外通過 PROFIBUS DP 也可部分提供 OP 功能。
設(shè)計
簡單的結(jié)構(gòu)使得 S7-300 使用靈活且易于維護(hù):
安裝模塊:
只需簡單地將模塊掛在安裝導(dǎo)軌上,轉(zhuǎn)動到位然后鎖緊螺釘。
集成的背板總線:
背板總線集成到模塊里。模塊通過總線連接器相連,總線連接器插在外殼的背面。
模塊采用機械編碼,更換極為容易:
更換模塊時,必須擰下模塊的固定螺釘。按下閉鎖機構(gòu),可輕松拔下前連接器。前連接器上的編碼裝置防止將已接線的連接器錯插到其他的模塊上。
現(xiàn)場證明可靠的連接:
對于信號模塊,可以使用螺釘型、彈簧型或絕緣刺破型前連接器。
TOP 連接:
為采用螺釘型接線端子或彈簧型接線端子連接的 1 線 - 3 線連接系統(tǒng)提供預(yù)組裝接線另外還可直接在信號模塊上接線。
規(guī)定的安裝深度:
所有的連接和連接器都在模塊上的凹槽內(nèi),并有前蓋保護(hù)。因此,所有模塊應(yīng)有明確的安裝深度。
無插槽規(guī)則:
信號模塊和通信處理器可以不受限制地以任何方式連接。系統(tǒng)可自行組態(tài)。
西門子CPU315T-2DP6ES7315-6TH13-0AB0