西門子PLC中如何解決流量累積問題

2021-10-04 11:34:22 字數 1659 閱讀 5492

現在上位機系統中很多要求具備流量計的流量累計功能,由此引出的幾個問題,期望與大家分享。

問題1:自行編寫流量累計程式

自行編寫流量累計程式的原理,其實就是積分的最原始演算法概念,把單位小間隔時間內的瞬時流量乘以單位間隔時間,得到單位小間隔時間內的流量,再把這些小流量累加起來,就的到了累計流量。

在流量累計程式設計中經常會遇到實數加法問題,實數加法運算的注意事項也應當引起程式設計人員的重視,請看下例程式(假設其在ob35中被呼叫,目的為每隔一定時間間隔就累計一次流量)

l md0 //累計流量儲存值

l md4 //流量瞬時值

+rt md 0 

以上的程式是否存在問題?很多人會認為沒有問題,但實際情況是此程式在執行一段時間後就將出現錯誤。此程式在執行之初是正常的,因為累計流量初始值及流量瞬時值都為乙個很小的浮點數,兩數相加後,結果正確。但是當一段時間後,累計流量的數值逐漸增大,當它與瞬時流量的數值相差很遠的時候,兩者執行加法操作後,瞬時流量的數值將被忽略掉(如9999990.0與0.2做加法操作)。其實具備計算機常識的人都應當清楚這一點,這是由於浮點數的儲存機制造成的,是所有計算機方面程式設計都需要考慮的問題。這個問題可以通過使用二次累加或多次累加的方法來解決。所以在程式設計時應避免數量級相差太多的浮點數之間進行運算。很多人反映「加法指令不好用了」,很有可能就是數量級相差很多的實數進行了加法運算。

問題2:累計流量誤差問題

對於積分演算法,取小的矩形對流量進行累計,肯定是矩形劃分越細,誤差越小,不存在誤差是不可能的。

問題3:流量計與plc構成的系統的誤差

流量計有多種多樣,下面舉些例子:

1、流量計本身沒有累計流量功能,但可以把瞬時流量以模擬量的方式(例如4-20ma)輸出。

此時累計流量的最大誤差可以估算為:

流量計本身誤差 * 流量計d/a誤差 * 模擬量模組a/d誤差 * plc流量累計演算法誤差

假設上面所有誤差都是1%,則最後的誤差約為:4.06%

1.01*1.01*1.01*1.01=1.0406

對於某些流量計,本身的瞬時流量誤差可能就是3%,所以這樣的系統累計流量的誤差可能還要大些。

2、流量計本身沒有累計流量功能,但可以把瞬時流量以數字量的方式輸出。

有些流量計提供數字量介面,可以連線plc的數字量輸入模板,流量計每流過一定流量後(例如0.1噸),此輸入點就導通一次,plc就把累計流量累加0.1噸即可。

此類系統避免了a/d,d/a轉化的誤差,以及plc累計演算法誤差。但是會出現一定時間內累計流量不變化的情況,實時性不好(每0.1噸累積的時間)。

3、流量計本身有累計流量功能,同時可以把瞬時流量以模擬量的方式(例如4-20ma)輸出,但無法將累計流量數值送出。

流量計本身累積流量的數值,最後很有可能與plc的累計流量數值相差很大,原因可能是多方面造成的,除去系統累計流量誤差的因素,如果plc系統檢修時,流量計還計量,則plc無法累積這部分流量。

4、流量計本身有累計流量功能,同時可以通過通訊的方式,把瞬時流量及累計流量數值送給plc。這種情況最理想,但系統的成本也最高。

西門子atch指令詳解 西門子plc指令詳解

1 ld load 裝載 動合觸點 2 ldn load not 不裝載 動斷觸點 3 a and 與 動合 用於動合觸點串聯 4 an and not 與 動斷 用於動斷觸點串聯 5 o or 或 動合 用於動合觸點併聯 6 on or not 或 動斷 用於動斷觸點併聯 7 out 輸出 用於線...

遠端訪問西門子PLC方案

原帖鏈結 要求 路由器能夠上網,而且必須有公網 internet ip位址,在國內可以諮詢運營服務商,或者檢視路由器wan口的ip位址,如果是私網ip範圍,那肯定不是直接上到internet,那就不行了 什麼是私網ip?問問某度 哪些協議使用哪些tcp埠?在使用路由器和防火牆時應該注意些什麼?如何通...

西門子plc串列埠通訊方式

西門子plc串列埠通訊的三種方式 1 rs485 串列埠通訊 第三方裝置大部分支援,西門子s7 plc 可以通過選擇自由口通訊模式控制串列埠通訊。最簡單的情況只用傳送指令 xmt 向印表機或者變頻器等第三方裝置傳送資訊。不管任何情況,都必須通過 s7 plc編寫程式實現。當選擇了自由口模式,使用者可...