使用PLC對(duì)模擬量處理是在項(xiàng)目開發(fā)過程中,經(jīng)常會(huì)遇到的問題。PLC運(yùn)行過程中使用的是AD轉(zhuǎn)換后的數(shù)字?jǐn)?shù)據(jù),實(shí)際工程值使用的是表達(dá)現(xiàn)場物理現(xiàn)狀的數(shù)據(jù),那這兩種數(shù)據(jù)直徑的對(duì)應(yīng)轉(zhuǎn)換是如何進(jìn)行的?PLC編程又如何對(duì)這樣的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理?
PLC對(duì)電壓/電流模擬量的處理
因?yàn)锳/D(模/數(shù))、D/A(數(shù)/模)轉(zhuǎn)換之間的對(duì)應(yīng)關(guān)系,S7-200 CPU內(nèi)部用數(shù)值表示外部的模擬量信號(hào),兩者之間有一定的數(shù)學(xué)關(guān)系。這個(gè)關(guān)系就是模擬量/數(shù)值量的換算關(guān)系。例如,使用一個(gè)0 - 20mA的模擬量信號(hào)輸入,在S7-200 CPU內(nèi)部,0 - 20mA對(duì)應(yīng)于數(shù)值范圍0 - 32000;對(duì)于4 - 20mA的信號(hào),對(duì)應(yīng)的內(nèi)部數(shù)值為6400 - 32000。
如果有兩個(gè)傳感器,量程都是0 - 16MPa,但是一個(gè)是0 - 20mA輸出,另一個(gè)是4 - 20mA輸出。它們?cè)谙嗤膲毫ο拢兯偷哪M量電流大小不同,在S7-200內(nèi)部的數(shù)值表示也不同。顯然兩者之間存在比例換算關(guān)系。模擬量輸出的情況也大致相同。
上面談到的是0 - 20mA與4 - 20mA之間換算關(guān)系,但模擬量轉(zhuǎn)換的目的顯然不是在S7-200 CPU中得到一個(gè)0 - 32000之類的數(shù)值;對(duì)于編程和操作人員來說,得到具體的物理量數(shù)值(如壓力值、流量值),或者對(duì)應(yīng)物理量占量程的百分比數(shù)值要更方便,這才是換算的最終目標(biāo)。
PLC內(nèi)部數(shù)據(jù)轉(zhuǎn)換為物理量值的計(jì)算
以下為模擬量輸入信號(hào)與PLC讀取值之間的轉(zhuǎn)換關(guān)系。
模擬量的輸入/輸出都可以用下列的通用換算公式換算:
Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl
- Ov:換算結(jié)果
- Iv:換算對(duì)象
- Osh:換算結(jié)果的高限
- Osl:換算結(jié)果的低限
- Ish:換算對(duì)象的高限
- Ish:換算對(duì)象的低限
在進(jìn)行程序的處理的時(shí)候,依照以上對(duì)應(yīng)轉(zhuǎn)換關(guān)系,進(jìn)行線性轉(zhuǎn)換,即可達(dá)到實(shí)際的物理量或者百分比值。
實(shí)例程序?qū)崿F(xiàn)
以下程序?yàn)樽x取模擬量數(shù)值,并將其按照實(shí)際工況轉(zhuǎn)換為實(shí)際的物理值,其中轉(zhuǎn)換系數(shù)常數(shù)手動(dòng)計(jì)算設(shè)置,轉(zhuǎn)換常數(shù)的計(jì)算方法上面的對(duì)應(yīng)轉(zhuǎn)換關(guān)系得出。
以上網(wǎng)絡(luò)功能為,將模擬量輸入數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)數(shù),以便進(jìn)行數(shù)據(jù)處理。
以上程序網(wǎng)絡(luò)實(shí)現(xiàn)了PLC模擬量輸入讀取數(shù)據(jù)到實(shí)際物理值之間的轉(zhuǎn)換。