1、PLC系統中實現流量積算的方法
首先必須明確,用PLC做流量累計的精度遠不如電磁流量計等本身自帶累計功能的流量計和流量積算儀。對有累積功能的流量計轉換器,一般流量轉換器的流量累積輸出是脈沖輸出,可通過PLC的高速脈沖輸入端進行高速計數,從而得出累積流量。
對只有瞬時流量輸出的流量計,才考慮在PLC中進行流量累積加法運算。在PLC內做流量累積的時候,不應使用定時器來做,因為定時器受到PLC掃描周期的影響,沒法做到十分精確,累加出來數據的誤差很大。
目前,一般的中大型PLC都直接或者間接提供了“Totalizer”功能塊,實質都是把每個采集周期的瞬時流量進行簡單累加。昌暉儀表提供一種將定積分計算引入到流量累積的具體方法,以供參考。
2、定積分計算法引入流量積算的幾何意義
設瞬時流量q=q(t)在時間段t的[a,b]區間連續,那么流量累積計算公式為:
圖1 瞬時流量
有定積分的幾何意義,求時間a到時間b區間內的總流量Q,只需要計算曲線q=q(t),直線t=a,直線t=b和時間軸t所圍成的曲邊梯形面積。在區間a,b內插入若干個平分點:a=t0<t1<t2<…<tn-1<tn=b,把區間[a,b]分成n個小區間:[ti-1,ti],求每個區間長度Δt上的區間累積流量,只需求第i個小曲邊梯形的面積。我們可以把每個小曲邊梯形近似看作是小梯形,見圖2:
圖2 瞬時流量分割圖
面積計算:
如果分割無限加細,區間個數n趨向于無窮(n→∞)時,總流量計算為:
3、TIA Portal V15具體實現積分累積流量的方法
以下以Siemens PLC系統的TIA Portal V15為例,實現積分累積流量的方法:
①在程序目錄下添加新的FB函數塊,確定名稱如“Totalizer”,為了實現數值計算的簡單性,這個功能塊的編程語言選擇結構化文本語言SCL。

②打開新建功能塊,并建立臨時變量,如下圖所示

變量定義
◆變量名:Reset,數據類型:Bool,分組:Input,作用:FB接收外部傳遞的累積清零命令;
◆變量名:Value,數據類型:Real,分組:Input,作用:FB接受外部傳遞的瞬時流量數據,需要注意的是:一般流量計瞬時流量單位是m3/h,這里需要統一換算成m3/s,即PLC接收的瞬時流量除以3600后再輸入此處;
◆變量名:Cycle,數據類型:TIME,分組:Input,作用:FB接受程序循環時間,單位:秒,
在這里,Cycle值為0B30中斷循環塊的循環時間。
◆變量名:Last_Value,數據類型:Real,分組:Static,作用:靜態存儲上一掃描周期的瞬時流量值;
◆變量名:Accum,數據類型:Real,分組:Static,作用:靜態存儲流量累積值;
◆變量名:Cycle_DInt,數據類型:Dint,分組:Temp,作用:在FB中零時存儲Cycle轉換為Dint數據類型后的值;
◆變量名:Cycle_Real,數據類型:Real,分組:Temp,作用:在FB中臨時存儲Cycle_DInt轉換為Real數據類型后的值;
◆變量名:Total,數據類型:Real,分組:Output,作用:FB向外部傳送流量累積值。
③程序編寫,如下圖所示:

程序編寫完成后,進行編譯,編譯沒有錯誤時,可供調用。
④在流量計算功能的FC中調用名字為“Totalizer”的FB塊,并對輸入輸出參數賦值,如下圖所示:

⑤在OB30中調用流量計算FC功能塊,OB30中斷塊是循環中斷塊,循環時間設置為100ms,如下圖所示:

⑥程序解讀

4、PLC系統中流量計算的其它問題
上述程序只是簡單示例,實際應用中,需要根據實際情況考慮更復雜的問題,比如:
◆對于積分算法,取小的矩形對流量進行累計,肯定是矩形劃分越細(也就是OB30的循環時間越短),誤差越小,不存在誤差是不可能的。
◆流量計本身有累計流量功能,同時可以把瞬時流量以模擬量的方式(例如4-20mA)輸出,但無法將累計流量數值送出。那么,流量計本身累積流量的數值,最后很有可能與PLC的累計流量數值相差很大,原因可能是多方面造成的,除去系統累計流量誤差的因素,如果PLC系統停電檢修或者更換相關模塊時,流量計還在計量,則PLC無法累積這部分流量。
◆累積數值的自動和手動清零,以免數據溢出。其中自動清零的時機要結合程序考慮好。
◆在流量累積編程時應避免數量級相差太多的浮點數之間進行運算。如果沒有適時清零,流量累積程序在運行之初是正常的,因為累計流量初始值及流量瞬時值都為一個很小的浮點數,兩數相加后,結果正確。但是當一段時間后,累計流量的數值逐漸增大,當它與瞬時流量的數值相差很遠的時候,兩者執行加法操作后,瞬時流量的數值將被忽略掉(如9999990.0與0.2做加法操作)。其實具備計算機常識的人都應當清楚這一點,這是由于浮點數的存儲機制造成的,這個問題可以通過使用二級累加或多級別累加的方法來解決,比如每一級累加器只能進行規定級別大小的數據累加,當一級累加器的累積數據大到一定程度時,立刻把數據傳送到二級累加器,然后把一級累加器清零。
下面是昌暉儀表生產的高精度高性能智能流量積算儀

相關閱讀
◆YR-GFK流量積算儀校準方法及流量積算儀接線
◆不同品牌流量積算儀Modbus通訊的一些小問題
◆蒸汽流量測量為什么要用帶溫壓補償流量積算儀