西門子代理6ES7214-2BD23-0XB8PLC模塊 西門子代理6ES7214-2BD23-0XB8PLC模塊
FB運行時需要調(diào)用各種參數(shù),于是就產(chǎn)生了背景數(shù)據(jù)塊DB。例如用FB41來作PID控制,則它的PID控制參數(shù)就要存在DB里面。FB具有儲存功能
系統(tǒng)功能塊(SFB)和系統(tǒng)功能(SFC)也是相當(dāng)于子程序,只不過SFB和SFC是集成在S7 CPU中的功能塊,用戶能直接調(diào)用不需自已寫程序。
SFC與FC不具有儲存功能,FB和SFB具有儲存功能 。
OB模塊相當(dāng)于子程序,負責(zé)調(diào)用其他模塊。如果程序簡單只需要OB就可以實現(xiàn)。
用西門子PLC編程時,可以用到功能塊FB和功能FC(FB、FC都是組織塊)資料上說FB與FC都可以作為用戶編寫的子程序,但是我不明白這兩個組織塊之間到底有什么區(qū)別阿?在應(yīng)用上到底有什么不同之處嗎?
FB--功能塊,帶背景數(shù)據(jù)塊
FC--功能,相當(dāng)于函數(shù)
他們之間的主要區(qū)別是:FC使用的是共享數(shù)據(jù)塊,F(xiàn)B使用的是背景數(shù)據(jù)塊
舉個例子,如果您要對3個參數(shù)相同的電機進行控制,那么只需要使用FB編程外加3個背景數(shù)據(jù)塊就可以了,但是,如果您使用FC,那么您需要不斷的修改共享數(shù)據(jù)塊,否則會導(dǎo)致數(shù)據(jù)丟失。FB確保了3個電機的參數(shù)互不干擾。
FB,FC本質(zhì)都是一樣的,都相當(dāng)于子程序,可以被其他程序調(diào)用(也可以調(diào)用其他子程序)。他們的大區(qū)別是,FB與DB配合使用,DB中保存著FB使用的數(shù)據(jù),即使FB退出后也會一直保留。FC就沒有一個的數(shù)據(jù)塊來存放數(shù)據(jù),只在運行期間會被分配一個臨時的數(shù)據(jù)區(qū)。在實際編程中,是使用FB還是FC,要看實際的需要決定。
FB與FC沒有太大的差別,FB帶有背景數(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)用又重新更換。這是一般的理解;FB需要背景數(shù)據(jù)塊,而FC是沒有的;參數(shù)的傳遞方式不同,FB的輸入輸出對應(yīng)著背景數(shù)據(jù)塊地址,而FC的輸入輸出是沒有實際地址對應(yīng)的,只有的程序調(diào)用時,才會和實際的地址產(chǎn)生對應(yīng)關(guān)系。FB參數(shù)傳遞的是數(shù)據(jù),FC參數(shù)傳遞的是數(shù)據(jù)的地址。
FB(功能塊)的處理方式是圍繞著數(shù)據(jù)塊處理數(shù)據(jù),他的入口參數(shù)和出口參數(shù)都是數(shù)據(jù)塊里的數(shù)據(jù),以及STAT的數(shù)據(jù)都是數(shù)據(jù)塊里,入口參數(shù)和出口參數(shù)、STAT可以認為是靜態(tài)數(shù)據(jù),這些數(shù)據(jù)不會因為函數(shù)消失而逝去,他會一直保存在數(shù)據(jù)塊里。FB里的變量與他的背景數(shù)據(jù)塊是一一對應(yīng)的,而他的對應(yīng)并不是一層不變的。更確切的說,FB里的變量在調(diào)用時將根據(jù)AR2的值當(dāng)作偏移量與背景數(shù)據(jù)塊是一一對應(yīng)。如果一個FB功能塊里沒有入口參數(shù)、出口參數(shù)及STAT數(shù)據(jù),他將不需要背景數(shù)據(jù)塊,這時的FB和沒有入口出口參數(shù)的FC就沒有什么區(qū)別了,就只能使用臨時變量和全局變量了。用很多人認為,FB的背景數(shù)據(jù)塊必須由FB生成、FB里的*個變量對應(yīng)著背景數(shù)據(jù)塊的*個變量,還有就是由FB生成的數(shù)據(jù)塊只能作為FB的背景數(shù)據(jù)塊使用。其實這些理解是錯誤的,FB的背景數(shù)據(jù)塊不一定是通過FB生成的,可以像生成共享數(shù)據(jù)塊一樣生成FB的背景數(shù)據(jù)塊,換句話說,普通的數(shù)據(jù)塊也可以作為FB的背景數(shù)據(jù)塊,不過這種做法是有一定前提的,就是這個數(shù)據(jù)塊的字節(jié)數(shù)必須大于等于FB所需的字節(jié)數(shù),如果小于FB所需的字節(jié)數(shù)時,FB訪問到超出背景數(shù)據(jù)塊的變量時就會找不到變量的地址,肯定會出錯了。FB里的*個變量對應(yīng)可以對應(yīng)數(shù)據(jù)塊字節(jié)數(shù)減去FB所需背景數(shù)據(jù)塊字節(jié)數(shù)里的任意位置的變量,我覺得這個比較好理解,在多重背景里不就是這樣嗎。談到這里我得說點別的,好像這種情況下,FB里不可以有多重背景,在S7里,多重背景好像是不允許嵌套的,說道這里我馬上在S7做了測試,證明我的想法是錯誤的,多重背景是可以嵌套的。話回正題,由FB生成的數(shù)據(jù)塊也是可以像訪問普通數(shù)據(jù)塊一樣通過共享數(shù)據(jù)塊方式訪問,不信,你可以自己試一試。說說如何使用普通的數(shù)據(jù)塊作為FB的背景數(shù)據(jù)塊,會不會有人現(xiàn)在就開始自己試了,怎么不行呢,一調(diào)用程序就程序紅色,有錯誤啊。告訴你,使用CALL指令編寫時SETP7會自動檢查DB塊和FB的關(guān)系,要是時間標記和大小不*就會報錯。在這里我們可以使用UC指令調(diào)用FB,UC指令是不傳遞參數(shù)的(對于這個說法,我不太認同,我將會在使用UC調(diào)用FC時是如何傳遞參數(shù)一節(jié)講述),那么我們?nèi)绾螌?shù)傳遞給FB呢?又如何將FB的輸出讀出來呢?
西門子300輸入模塊與模擬量的連接問題:當(dāng)331與熱電偶,壓力傳感無件.位置傳感元件連接時,怎么處理數(shù)值的呢?這方面的資料能給小點*一下嗎?PLC程序里面的字等的處理我會的,但是怎么知道比如說:50度是相對于字是多少?還是,我用壓力傳感器,那字又得不同了呀.哎,說不清
A)你看這樣說對你有幫助沒:如果是熱電偶或熱電阻,你就把PIW的值除以10;如果是4-20mA信號,你就用這個公式轉(zhuǎn)換:PV=(OV-OSL)*(PH-PL)/(OSH-OSL)+PL注:PV為你要顯示的測量值,PH、PL為儀表的上、下限。OV為通道測量得出的值,OSH=27648,OSL=0。又一般情況下,儀表下限為0,即PL=0,所以此公式可以簡化為PV=OV*PH/27648.0。
B)上面說的沒有錯,關(guān)于壓力等信號,你可以用FC105實現(xiàn)。
C)你看看PLC模版說明就明白了
D)可以使用標準信號轉(zhuǎn)換模塊,把多種信號轉(zhuǎn)換成標準的4-20mA或0-5V,這樣還可以解決信號不穩(wěn)定引起的系統(tǒng)問題,有效的保護PLC.
E)如果是S7-300/400系統(tǒng),。可以采用FC105,也可以自己編程,首先整數(shù)轉(zhuǎn)換為雙整數(shù),雙整數(shù)轉(zhuǎn)換為實數(shù),然后實數(shù)除,實數(shù)乘。