兼容西門子PLC關(guān)于流量問題
現(xiàn)在上位機系統(tǒng)中很多要求具備流量計的流量累計功能,由此引出的幾個問題,現(xiàn)在深圳市奧越信科技有限公司的技術(shù)工程師來跟大家做個詳細(xì)的介紹。
問題1:自行編寫流量累計程序
自行編寫流量累計程序的原理,其實就是積分的最原始算法概念,把單位小間隔時間內(nèi)的瞬時流量乘以單位間隔時間,得到單位小間隔時間內(nèi)的流量,再把這些小流量累加起來,就的到了累計流量。
在流量累計編程中經(jīng)常會遇到實數(shù)加法問題,實數(shù)加法運算的注意事項也應(yīng)當(dāng)引起編程人員的重視,請看下例程序(假設(shè)其在OB35中被調(diào)用,目的為每隔一定時間間隔就累計一次流量)
L MD0 //累計流量存儲值
L MD4 //流量瞬時值
+R
T MD 0
以上的程序是否存在問題?
很多人會認(rèn)為沒有問題,但實際情況是此程序在運行一段時間后就將出現(xiàn)錯誤。此程序在運行之初是正常的,因為累計流量初始值及流量瞬時值都為一個很小的浮點數(shù),兩數(shù)相加后,結(jié)果正確。但是當(dāng)一段時間后,累計流量的數(shù)值逐漸增大,當(dāng)它與瞬時流量的數(shù)值相差很遠的時候,兩者執(zhí)行加法操作后,瞬時流量的數(shù)值將被忽略掉(如9999990.0與0.2做加法操作)。其實具備計算機常識的人都應(yīng)當(dāng)清楚這一點,這是由于浮點數(shù)的存儲機制造成的,是所有計算機方面編程都需要考慮的問題。這個問題可以通過使用二次累加或多次累加的方法來解決。所以在編程時應(yīng)避免數(shù)量級相差太多的浮點數(shù)之間進行運算。很多人反映“加法指令不好用了”,很有可能就是數(shù)量級相差很多的實數(shù)進行了加法運算。
問題2:累計流量誤差問題
對于積分算法,取小的矩形對流量進行累計,肯定是矩形劃分越細(xì),誤差越小,不存在誤差是不可能的。
問題3:流量計與PLC構(gòu)成的系統(tǒng)的誤差
流量計有多種多樣,下面舉些例子:
1、流量計本身沒有累計流量功能,但可以把瞬時流量以模擬量的方式(例如4-20mA)輸出。
此時累計流量的最大誤差可以估算為:
流量計本身誤差*流量計D/A誤差*模擬量模塊A/D誤差*PLC流量累計算法誤差
假設(shè)上面所有誤差都是1%,則最后的誤差約為:4.06%
1.01*1.01*1.01*1.01=1.0406
對于某些流量計,本身的瞬時流量誤差可能就是3%,所以這樣的系統(tǒng)累計流量的誤差可能還要大些。
2、流量計本身沒有累計流量功能,但可以把瞬時流量以數(shù)字量的方式輸出。
有些流量計提供數(shù)字量接口,可以連接PLC的數(shù)字量輸入模板,流量計每流過一定流量后(例如0.1噸),此輸入點就導(dǎo)通一次,PLC就把累計流量累加0.1噸即可。
此類系統(tǒng)避免了A/D,D/A轉(zhuǎn)化的誤差,以及PLC累計算法誤差。但是會出現(xiàn)一定時間內(nèi)累計流量不變化的情況,實時性不好(每0.1噸累積的時間)。
3、流量計本身有累計流量功能,同時可以把瞬時流量以模擬量的方式(例如4-20mA)輸出,但無法將累計流量數(shù)值送出。
流量計本身累積流量的數(shù)值,最后很有可能與PLC的累計流量數(shù)值相差很大,原因可能是多方面造成的,除去系統(tǒng)累計流量誤差的因素,如果PLC系統(tǒng)檢修時,流量計還計量,則PLC無法累積這部分流量。
4、流量計本身有累計流量功能,同時可以通過通信的方式,把瞬時流量及累計流量數(shù)值送給PLC。這種情況最理想,但系統(tǒng)的成本也最高。