西門子S7-200PLC在流量計量方麵的應用
發布日期:
2022-07-15

目前,PLC已經廣泛應用於(yu) 鋼鐵、石油、化工、電力、建材、機械製造、汽車、輕紡、交通運輸、環保及文化娛樂(le) 等各個(ge) 行業(ye) 。它具有高可靠性、抗幹擾能力強、功能強大、靈活、易學易用、體(ti) 積小、重量輕、價(jia) 格便宜的特點,在流量計量方麵也有著廣泛的用途,在用於(yu) 流量累積時又有其編程的之處。下麵進行詳細的分析和論述,包括在西門子S7-200 CPU上編程的例子。

使用PLC顯示流量和計算累積量

流量計輸出的信號一般是脈衝(chong) 信號或4~20mA電流信號,這兩(liang) 種信號輸出的都是瞬時流量,我們(men) 的目的是在西門子S7-200PLC中計算和顯示瞬時流量值和計算累積量值,當輸入信號是脈衝(chong) 信號時,在計算瞬時流量的時候,必須按照嚴(yan) 格的時間間隔計算才能保證瞬時流量的準確性。因此,計算瞬時流量的時候必須用定時中斷來進行。而且,在PLC係統中隻能運行這一個(ge) 中斷程序,不允許再產(chan) 生其它中斷(即使是低優(you) 先級的中斷也不允許運行),以防止幹擾定時中斷的時間間隔的準確性,計算瞬時流量就是將這個(ge) 時間段的累計脈衝(chong) 個(ge) 數換算成累計流量,再除以時間就是瞬時流量。對於(yu) 4~20mA輸入隻需按照其對應的量程進行換算就可以直接得到瞬時流量,而累積流量就是將每個(ge) 時間段內(nei) 的累積流量累加起來,在實際使用西門子S7-200PLC編程的過程中必須注意以下幾個(ge) 問題:

(1) 輸入脈衝(chong) 頻率範圍是否超出PLC的接收範圍;

(2) PLC高速計數器在達到更大計數值時如何保證計算正確;

(3) 如何保證定時中斷不受幹擾;

(4) 如何避免計算累積量的誤差;

(5) 累積量的更大累積位數;

(6) 如何複位累積量。

下麵就更關(guan) 鍵的2、4、6問題進行詳細的敘述,以西門子S7-200 CPU224為(wei) 例,S7-200的CPU224具有6個(ge) 單相更大30kHz的高速計數器,但PLC內(nei) 部沒有提供相應的算法來計算頻率,需要使用者自行編程計算,這就需要在PLC高速計數器在達到更大計數值時要保證計算的正確性。實際編程時,對高速計數器初始化以後就使之連續計數,不再對其進行任何幹預,其高速計數器的初始化程序如圖1所示(此段程序應放到PLC第一個(ge) 掃描周期執行的程序中執行)。

對於(yu) 高速計數器是否達到更大計數值時需要判斷,S7-200CPU的高速計數器是可以周而複始地進行累計的,更高位為(wei) 符號位,更小值為(wei) 7FFFFFFF。由於(yu) 計數器是一直累加的,不可能出現本次讀取的計數值小於(yu) 上次計數值的情況,因此判斷計數器當前值是否小於(yu) 前一次的計數值,就可以判斷計數是否達到更大值的拐點(7FFFFFFF),如果達到,則執行特殊的計算以便消除計算錯誤。

當當前計數值大於(yu) 等於(yu) 上次計數值時,兩(liang) 個(ge) 計數值做差,就得到程序兩(liang) 次掃描時間間隔內(nei) 的計數差值,同時將當前計數值賦值到上次計數值上;當當前計數值小於(yu) 上次計數值時,計算上次計數值與(yu) 7FFFFFFF之間的差值(用減法),以及當前計數值和7FFFFFFF之間的差值(用加法,此時寄存器溢出,數位前移),然後將兩(liang) 個(ge) 結果相加就是程序兩(liang) 次掃描時間間隔內(nei) 的計數差值,從(cong) 而實現對累計計數值達到拐點時的正確計算。

實際上,在現場應用中定時中斷子程序是采用250ms中斷一次執行的,使用SMB34進行控製的。需要注意的是,係統中必須隻保證這個(ge) 中斷是存在的,不會(hui) 受到其他中斷的影響,否則可能會(hui) 因其它中斷的影響使周期性中斷不準時,從(cong) 而影響精度。

通過以上計算就得到了250ms內(nei) 流量計發過來的脈衝(chong) 個(ge) 數,這個(ge) 數值乘以脈衝(chong) 當量就是250ms內(nei) 的流量值,再除以時間就是瞬時流量。另外,在250ms內(nei) 再執行累加程序就可以計算累積流量了。在計算累積流量過程中需要避免累積過程的計算誤差,我們(men) 知道,流量累積量是一直累積的一個(ge) 數值,一般會(hui) 累積到8位數,而plc內(nei) 部浮點數的有效位數是6位,當累積量數值很大的時候就會(hui) 造成一個(ge) 大數和一個(ge) 小數相加,勢必導致小數的有效位數丟(diu) 失,造成很大的累積誤差,因此,要避免大數和小數相加的情況出現。解決(jue) 方法是采用多個(ge) 流量累積器,隻允許同數量級的數值相加,從(cong) 而避免數值有效位數損失,實際編程中采用了5個(ge) 累積器,根據常用流量情況下,在周期中斷時間間隔(250ms)內(nei) 流過的流量乘以15作為(wei) 第一個(ge) 累積器的上限,當達到這個(ge) 累積器的上限值後,將這個(ge) 累積器的值累加到第2個(ge) 累積器中,並把第一個(ge) 累積器清零,對於(yu) 第三個(ge) 累積器也同樣處理,第4個(ge) 累積器用於(yu) 保存累積量小數部分數值,第5個(ge) 累積器用於(yu) 保存累積量整數部分數值,這樣在顯示總累積量時隻需顯示整數部分和小數部分就可以了,整個(ge) 過程充分避免了累積過程中大數與(yu) 小數相加的情況出現。在實際工程中,需根據流量的大小、周期中斷的時間間隔來確定所用累積器的個(ge) 數,而累積器的整數部分用雙整數來表示,雙整數的範圍是-2,147,483,648到+2,147,483,647,可以使累積器的整數位數達到9位。這樣,在顯示累積量時就可以更多顯示9位整數的累積量和6位小數的累積量,總計15位,從(cong) 而省略累積器倍乘係數,使讀數更簡便。

對累積器需要在一定條件下複位,累積到更大數值或手動複位,在中斷程序中判斷累積量是否達到或超過更大位數,當超過更大數值時,將各個(ge) 累積器清零,清零的觸發信號也可以是手動觸發。

聲明:部分內(nei) 容來源於(yu) 網絡,如侵權請後台留言聯係刪除。