在PLC5/40C中實現高精度流量累積運算的方法
1 引言
中國石化股份有限公司廣州分公司6號罐區監控系統于2001年由常規儀表改造為PLC系統。其中工藝要求在監控系統中對瞬時流量FI101進行累積顯示。經過對該流量累積的運算方法的多次測試,找到了在運算中最大限度減少誤差的方法,并在邏輯梯形圖成功實現累積運算。
2 監控系統簡介
廣州石化6#罐區監控系統采用ROCKWELL公司的可編程控制器和人機界面軟件,用于實現對該液態烴罐區的24個球罐的各種工藝參數的實時監控、報警、聯鎖等功能。該系統從2000年10月開始設計,2001年4月系統安裝、組態、調試工作全面完工。
該系統人機界面采用Rockwell software公司開發的RSView32軟件。RSView32基于Microsoft Windows NT和Windows 95/98平臺設計,是一種易用的、可集成的,基于組件的人機對話系統,在編制人機交互界面方面具有極大的靈活性和極強的功能。
控制器采用ControlNet PLC-5/40C處理器熱備系統。ControlNet PLC-5/40C處理器是PLC5系列中的新技術產品,處理器及I/O系統可以通過Redundant ControlNet總線交換數據。6#罐區監控系統將1號PLC和2號PLC配置為冗余控制器。在正常狀態下,只有主處理器的輸出數據對I/O系統進行控制,主從處理器通過ControlNet交換數據及狀態保持同步,如果主處理器出錯,從處理器將接替主處理器對網絡及對I/O系統進行控制。
該PLC系統DI點采用1771-IBD開關量輸入模塊,DO點采用1771-OW16開關量輸出模塊,AI點采用1771-IFE模擬量輸入模塊,16點單邊輸入。采用1785-CHBM作為處理器熱備模塊,1771-ACNR15為帶冗余網口的ControlNet適配器模塊。
本系統有3臺上位機,其中2臺為操作站,1臺為工程師站。每一臺上位機都能通過ControlNet單獨對PLC進行數據采集和控制。上位機還通過以太網實現文件和其他數據的共享。
ControlNet的組態使用軟件RSNetWorx,PLC系統組態及控制邏輯組態使用軟件RSLogix5。在ControlNet 網絡中,可以組態預定的數據傳送操作。這樣要實現在處理器和外部設備之間的數據交換,如在1771-IFE卡和處理器之間,主備處理器之間的數據交換,并不需要在邏輯梯形圖中使用塊傳送指令。
圖1 6#罐區監控系統結構圖概貌
3 FIQ101的累積實
3.1 流量FIQ101概述
廣州石化6#罐區需要對進出罐的液化氣流量FI101進行計量。就地儀表采用Micro Motion質量流量計。該流量計準確度±0.12%,除了可以就地顯示外,同時可以將瞬時流量值輸出為4-20mA信號。該信號接入PLC系統的1771-IFE模擬量輸入模塊,經過12bit 的模數轉換后轉換為0-4095的值。在1771-IFE中,還可以將0-4095的值定標為-9999到+9999的工程單位值。工藝要求在操作室除了可以監視瞬時流量值外,還要求有準確的流量累積值顯示。我們在PLC中用梯形邏輯來實現流量累積的運算。
3.2 流量累積的原理
如何把瞬時流量(又稱流率)經過累加運算為總流量,一般有如下一個公式:
瞬時流量×時間=總流量
我們知道,假設一個流量值為5m3/s在1min內不變化,則在這1min內的的總流量為:
(5m3/s) * 60s = 300m3
現在假設流量變化如下:
4m3/s有 30 s
5m3/s有 10 s
6m3/s有 20 s
則在這1min內的的總流量為:
(4m3/s)*30s+(5m3/s)*10 s+(6m3/s)*20s=290m3
假設流量隨時都可能變化,那么就不能用上面的公式來計算總流量了。我們可以按一定的時間間隔采樣流量值,然后計算這些值的總和。流量的采樣時間越短,計算的結果就越準確。請看圖2和圖3。
在上面2個例子中,曲線下面的區域就是總流量。采樣間隔時間越短,計算誤差就越小。
在實際應用中,由于PLC計時器的限制,最短的時間間隔只有0.01s。然而采樣間隔時間越短,計算次數就越多,這樣就增加了PLC的程序掃描時間。
圖3 短的采樣間隔時間
3.3 在PLC 5/40C中流量累積運算的方法
我們用梯形邏輯來實現流量累積的運算時可以采用“可選定時中斷子程序”來處理,這樣采樣間隔時間就是固定的了。但是在PLC 5/40C中只有一個可選定時中斷子程序,其定時中斷時間一般較難同時滿足幾種邏輯功能的需要。
我們也可以計時器指令來來作為采樣間隔時間,每次計時器到了設定值就采樣一次。計時器的精度不可能高于它的時基,因此每次計時器超時和再次開始計時的時候,都要產生一個時基的正或負的誤差。例如,10ms為一個時基的計時器預定計10次,其時間計算將是100ms正或負10ms。
我們也可以采用一種技巧來減少因計時器精度帶來的誤差。我們采用長的時間計時來作。例如,10ms為一個時基的計時器預定計30000次(PLC 5/40C的計時器的預置值范圍為0-32767),其時間計算將是300s正或負10ms。在這其中,我們可以預定一個采樣間隔時間為10個時基(100ms)以上。每次程序掃描,處理器判斷如果自從上次累積運算起,時間間隔超過預定時間(例如:100ms),就將這段時間乘以當前的瞬時流量值作為累加量。在這種算法中,采樣間隔時間就不是固定的了。
另外要考慮的是運算所用到的數據格式。PLC 5/40C數據表按不同的格式和范圍來存儲不同類型的數據。有兩種文件格式可以選擇,一是N文件(整數型文件),值的范圍為-32768到+32767,占1個16位字;因為在累積運算過程中,數的乘積和多次累加值一般都會超出+32767,所以我們盡量不用N文件。
另外是F文件(浮點數文件),值的范圍為±1.175494e-38到 3.402823e+38,占1個32位字。浮點數在寄存器中32位的空間表示為:
S xxxxxxxx mmmmm
上面: s=符號 x=指數 m=尾數
可見用浮點數表示的值的十進制有效位數只有7位。因此,必須考慮有效位數問題。舉例如下:
假設A代表計算的總流量,F代表計算上一次累加的流量,把F加到A上就會計算出一個新的總流量。在控制器的存儲器中,A和F使用浮點數文件格式,有效數字是7位。一旦A比F大很多時,那么A和F的加數將會產生誤差。
請看計算過程:
A=3.632523E+9
F=4.978E+3
3,632,523,000
+ 4,978
3,632,527,978
因為這個結果只能保留7個有效位,所以舍去最后幾位數,寫成3.632527E+9或3,632,527,000,數值978被丟失。為了避免出現這個問題,我們可以想辦法使A和F在整個運算過程中不出現小數,數值不超過7個有效位。4 結束語
流量累積的運算,要盡量避免計算過程中的誤差,一是要選擇正確的文件存儲格式,二是要避免運算值超出數值范圍和有效位數范圍,三是盡可能減少采樣時間的定時器帶來的誤差。在上面PLC5/40C的梯形邏輯中,我們按照以上幾個原則,經過細致的考慮和計算,使用長預置值的參考定時器,并使所有被用到的浮點數文件的值的有效位數不超出范圍,不出現小數,避免了丟失小的數值,從而實現高精度的累積運算,滿足了工藝要求。
文章版權歸西部工控xbgk所有,未經許可不得轉載。