楊秋賢+李佳瑩+吳大強
摘 要流量累積作為工業(yè)數(shù)據(jù)一個重要參數(shù)數(shù)據(jù),對統(tǒng)計工業(yè)一些原料用量具有重要意義。所以如何保證流量累積數(shù)據(jù)的精確性是一個重要的工作。本文主要探討如何編寫精確的流量累積算法。
【關(guān)鍵詞】流量累積 精確度 PLC
流量的檢測環(huán)節(jié)是流量累積的基礎(chǔ),其精確度取決于檢測的方法。而累積流量的精確度除了需要準確的瞬時流量值支撐,也在很大程度上受后續(xù)的計算方式影響。在由PLC控制的流量累積系統(tǒng)中,編寫的程序便會影響最終累積流量的精確度。
1 流量累積常用方法簡介
在PLC中,定義一個單精度32位REAL類型的浮點數(shù)變量FQ作為流量累積變量,并在指定周期時間累積。積分過程中可以近似認為在周期時間內(nèi)瞬時流量是線性的,故周期時間越短精度越高。根據(jù)經(jīng)驗,周期為100MS即可獲得較為精確的累積值。
定義F1為周期首處瞬時流量,F(xiàn)2為周期尾處瞬時流量,F(xiàn)1和F2均為浮點數(shù)變量。每次周期更新時的瞬時流量分別f1,f2,f3……
則初始周期內(nèi)的累積流量FQ=(F1+F2)/2=(f1+f2)/2;在下個周期將f2賦值給F1,新獲取的瞬時流量f3賦值給F2,累積流量FQ在原有基礎(chǔ)上增加(F1+F2)/2即(f2+f3)/2,使FQ=(f1+f2)/2+(f2+f3)/2;如此循環(huán)來計算流量的累積值。
2 常用方法例程
以西門子S7-300 CPU為例,配置一個S7-300站,添加一個模擬量輸入模塊,采用OB35循環(huán)中斷,設置周期為100MS,確保累積值的精確度。累積器在累積到最大數(shù)值或手動條件下復位。
現(xiàn)場流量經(jīng)變送器轉(zhuǎn)換為4~20mA信號,傳入PLC的模擬量輸入模塊。經(jīng)PLC的FC105計算,將瞬時流量換算成m3/s后進行每秒累加,并將瞬時流量與累積流量傳由計算機顯示。
3 實際流量累積出現(xiàn)的問題
按照上述方法,將流量累積值放入單精度浮點數(shù)存儲來進行流量累積,理論是正確的。但實際上,平均流量為3000m3/h的某介質(zhì)管道,流量累積值從105m3開始,單周期流量值會只有第一位小數(shù)有效;累積值達到106m3(不到15d),周期流量值的小數(shù)部分被舍棄,誤差增大;累積值達到107m3(不到半年)后,其值就基本不再增加。顯然,單精度浮點數(shù)的定義和運算舍入原則會造成該方法的誤差甚至錯誤。
在生產(chǎn)過程中,操作員為觀察生產(chǎn)和設備狀況,通常需要較長時間的累積值(如半年或更久),而按照上述方法得到的累積值僅能保證在前某段時間的準確性。
4 更精確和正確的流量累積計算方法
比較簡便可行的方法是使用DINT型即雙字整型數(shù)據(jù)來存儲流量累積值:分別定義3個DINT型數(shù)據(jù),用以存儲千位以內(nèi)(L)、千位至百萬位(T)、百萬位以上(M)的數(shù)值。將各數(shù)值乘以相應的數(shù)量級并求和,即可得到較為精確和正確的流量累積值。
下面以西門子Step7-300梯形圖語言為例實現(xiàn)流量累積程序(程序至于OB35中,循環(huán)中斷周期為100MS)。如圖1所示。
5 結(jié)論
流量累積的運算,要盡量避免計算過程中的誤差,一是要選擇正確的運算方式,二是要避免運算值超出數(shù)值范圍和有效位數(shù)范圍,三是盡可能減少采樣時間的定時器帶來的誤差。在上面程序邏輯中,使用長預置值的參考循環(huán)中斷,并使所有被用到的浮點數(shù)的有效位數(shù)不超出范圍,不出現(xiàn)大數(shù)加小數(shù),避免了丟失小的數(shù)值,從而實現(xiàn)高精度的累積運算。此流量累積方式相當于采用串級方式依次對累積存儲地址進行賦值,然后清零累加,最后得到精確的累積結(jié)果。
參考文獻
[1]廖長初,陳曉東.PLC應用技術(shù)[M].2版.北京:機械工業(yè)出版社,2005.
[2]IEEE.Standards Board.IEEEStd 754-1985:IEEEStandard forBinary-Point Arithmetic[Z].1985,3:3-6.
[3]林春方.可編程控制器原理及其應用[M].上海:上海交通大學出版社,2004:23-43.
作者單位
1.吉林化工學院信息與控制工程學院 吉林省吉林市 132022
2.中國石油吉林石化公司丙烯腈廠儀表車間 吉林省吉林市 132022