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