0819 【萬泉河】PLC的OB1循環周期時間有多重要?
本行業的特征技術點, 除了雙線圈之外, 還有一個OB1的循環時間。
即,程序中所有指令的運行時間累加在一起, 形成了一個OB1循環周期內的循環時間。
與高級語言編程中循環都是自己編程實現的不同, PLC中內置了OB1或者叫做MAIN,會在設備運行期間不斷周而復始循環運行。 那么這個周期值就比較重要,因為它代表了系統的運行負載輕重程度。
前幾天,寫了一篇文章《0815 【萬泉河】一種在PLC程序中比較優雅地使用全局變量M的方法》,簡單說, 就是通過在程序中增加一部分代碼,我稱之為前處理和后處理,可以實現程序中M量的使用比較優雅, 不怕使用沖突, 也不需要整個程序范圍內的交叉索引查找故障。
然后有一些版主專家就提出了反對意見, 指出程序使用M執行速度快,用V區轉儲浪費了OB1周期,加重了系統負擔, 甚至還有人指責我這樣子大手大腳使用CPU計算資源, 是因為有錢,所以不會過日子。 而他們都是要節儉持家的, 絕不會這樣鋪張浪費。
然后,我就不樂意了。 既然要算經濟賬, 那咱就從經濟賬的角度算一下,使用我前文的方法做程序,到底是省錢還是費錢。
那么我們來計算一下增加的前處理后處理的代碼, 會增加CPU多少運行時間。
寫一個空程序,只包含前處理后處理這兩段代碼,那么它的運行時間就會是將來正式程序中使用的時候,所增加的增量。
程序下載到CPU中,然而因為計算量太小,根本統計不出來。CPU的OB1周期保持在1ms。
于是做了個循環,通過增大循環量來得到其運行耗時。
然后:
當循環次數為10000時,SMW22=204ms, 即每個周期增加的時間是0.02ms
我不知道所有同行每次調試時都非常在意系統的OB1時間,會不會在調試完成后記錄存儲OB1時間到調試記錄中交接歸檔。 但總的來說, 一臺CPU的周期在50ms-60ms上下是正常的,健康的。 甚至,在S5的時代, OB1的循環周期往往是100ms的數量級,證明, 你即便把程序做到了100ms, 從設計角度來說, 選型有些失誤,但系統整體也還算可以運行, 沒有徹底癱瘓。
我們就取60ms的正常值,假設1200元買得一臺CPU,那么做個除法,每個ms的花費為20元。 當然這個算法比較簡單粗暴,你花出去的錢買到的不僅僅是循環周期, 還有系統更多的功能。
即便按20元/ms來計算,一段代碼增加的算力對應的費用為0.4元。
我所給出的代碼, 只是在系統模塊化基礎上給每個POU增加,通常對于SMART 200這樣的小PLC來說,能帶的系統規模,模塊單元20個POU就算多的了。 那么折算下來,0.4ms,8元。
就是說,假設你的系統計算算力緊張拮據到極致, 每一句代碼都要非常在乎,都要盡量精簡的時候,前處理后處理程序所對應的成本也不過區區8元。
而如果沒有達到極致, 60ms和60.4ms的程序有什么區別嗎?
沒有區別,你買的PLC是一樣的,PLC帶動的生產線的生產效率是一樣的。
完全一樣,區別為0!
這里還有一個比較有意思的故事。
大約十多年前,曾經在論壇里,也是討論到相似話題的時候, 有一個網友跟我抬杠,大致意思就是CPU運行效率提高,就會帶來生產效率提高。 我為了確認, 還舉例子問他,假設一條汽車生產線, 你選用一臺PLC系統運行周期50MS, 然后再換一臺更高級點的, 運行周期40ms, 效率提高了20%,那么產線的產能就會提高20%,會多生產20%的汽車?甚至運行周期到25ms, 效率提高一倍,汽車產量能翻倍嗎?他非常篤信地回復, 是的呀!然后我就笑了。
如果那樣的話,提高CPU性能就能帶來幾百億的收入增加,那就是不惜代價花費過億來單買一臺性能頂級的PLC,也是值得的啊!
很顯然不是這樣的嘛!通常的控制系統,產能與PLC的運行效率都不要說什么幾乎無差別了, 而是根本沒有差別。
近20年, CPU的性能逐漸提高, 主頻越來越快,計算能力持續增加, 一些以前不能實現的功能,比如多軸同步等等,現在可以實現了。 以前需要特殊算法和特殊工藝處理才能實現的功能,現在只需要CPU直接計算驅動就可以實現, 最終設計者的設計效率得到提高了,僅此而已。
我所給出的程序處理方法, 根本的目的是在于提高工程師的工作效率。 可以不需要耗費太多的時間來規劃變量使用。 假設帶來的效率提高為10%。
10%的數字對傳統行業來看相當大,而對編程方法來說, 很小意思了。這里只是一個細節。 完整的煙臺方法架構,對效率的提高可以達到300%-500%, 如果要感覺驚訝, 把下巴留給煙臺方法吧!我做的80系列例子, 每一個平臺, 每一個版本, 花費時間不超過20分鐘。 大家可以印證下按自己傳統的編程方法,需要多長時間。
一個平常的工程師的身價月薪1W很正常, 專家級別2W也不為過。 咱們就按1W來算, 效率提高10%, 相當于每月節省1000元。
比較一下,每臺PLC 8元(還不一定存在)和每月1000元(以后還可以持續改進提高),哪一個賬比較合算?
這個數學賬算的值得嗎?