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