萬(wàn)泉河
WX:ZHO6371995,歡迎+
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 129 個(gè)
工控威望: 245 點(diǎn)
下載積分: 829 分
在線時(shí)間: 11(小時(shí))
注冊(cè)時(shí)間: 2021-06-11
最后登錄: 2024-09-08
查看萬(wàn)泉河的 主題 / 回貼
樓主  發(fā)表于: 2022-08-19 21:40
0819 【萬(wàn)泉河】PLC的OB1循環(huán)周期時(shí)間有多重要?

本行業(yè)的特征技術(shù)點(diǎn), 除了雙線圈之外, 還有一個(gè)OB1的循環(huán)時(shí)間。

即,程序中所有指令的運(yùn)行時(shí)間累加在一起, 形成了一個(gè)OB1循環(huán)周期內(nèi)的循環(huán)時(shí)間。

與高級(jí)語(yǔ)言編程中循環(huán)都是自己編程實(shí)現(xiàn)的不同, PLC中內(nèi)置了OB1或者叫做MAIN,會(huì)在設(shè)備運(yùn)行期間不斷周而復(fù)始循環(huán)運(yùn)行。 那么這個(gè)周期值就比較重要,因?yàn)樗砹讼到y(tǒng)的運(yùn)行負(fù)載輕重程度。

前幾天,寫(xiě)了一篇文章《0815 【萬(wàn)泉河】一種在PLC程序中比較優(yōu)雅地使用全局變量M的方法》,簡(jiǎn)單說(shuō), 就是通過(guò)在程序中增加一部分代碼,我稱之為前處理和后處理,可以實(shí)現(xiàn)程序中M量的使用比較優(yōu)雅, 不怕使用沖突, 也不需要整個(gè)程序范圍內(nèi)的交叉索引查找故障。

然后有一些版主專家就提出了反對(duì)意見(jiàn), 指出程序使用M執(zhí)行速度快,用V區(qū)轉(zhuǎn)儲(chǔ)浪費(fèi)了OB1周期,加重了系統(tǒng)負(fù)擔(dān), 甚至還有人指責(zé)我這樣子大手大腳使用CPU計(jì)算資源, 是因?yàn)橛绣X,所以不會(huì)過(guò)日子。 而他們都是要節(jié)儉持家的, 絕不會(huì)這樣鋪張浪費(fèi)。

然后,我就不樂(lè)意了。 既然要算經(jīng)濟(jì)賬, 那咱就從經(jīng)濟(jì)賬的角度算一下,使用我前文的方法做程序,到底是省錢還是費(fèi)錢。

那么我們來(lái)計(jì)算一下增加的前處理后處理的代碼, 會(huì)增加CPU多少運(yùn)行時(shí)間。
寫(xiě)一個(gè)空程序,只包含前處理后處理這兩段代碼,那么它的運(yùn)行時(shí)間就會(huì)是將來(lái)正式程序中使用的時(shí)候,所增加的增量。


程序下載到CPU中,然而因?yàn)橛?jì)算量太小,根本統(tǒng)計(jì)不出來(lái)。CPU的OB1周期保持在1ms。
于是做了個(gè)循環(huán),通過(guò)增大循環(huán)量來(lái)得到其運(yùn)行耗時(shí)。



然后:

當(dāng)循環(huán)次數(shù)為10000時(shí),SMW22=204ms, 即每個(gè)周期增加的時(shí)間是0.02ms
我不知道所有同行每次調(diào)試時(shí)都非常在意系統(tǒng)的OB1時(shí)間,會(huì)不會(huì)在調(diào)試完成后記錄存儲(chǔ)OB1時(shí)間到調(diào)試記錄中交接歸檔。 但總的來(lái)說(shuō), 一臺(tái)CPU的周期在50ms-60ms上下是正常的,健康的。 甚至,在S5的時(shí)代, OB1的循環(huán)周期往往是100ms的數(shù)量級(jí),證明, 你即便把程序做到了100ms, 從設(shè)計(jì)角度來(lái)說(shuō), 選型有些失誤,但系統(tǒng)整體也還算可以運(yùn)行, 沒(méi)有徹底癱瘓。

我們就取60ms的正常值,假設(shè)1200元買得一臺(tái)CPU,那么做個(gè)除法,每個(gè)ms的花費(fèi)為20元。 當(dāng)然這個(gè)算法比較簡(jiǎn)單粗暴,你花出去的錢買到的不僅僅是循環(huán)周期, 還有系統(tǒng)更多的功能。

即便按20元/ms來(lái)計(jì)算,一段代碼增加的算力對(duì)應(yīng)的費(fèi)用為0.4元。

我所給出的代碼, 只是在系統(tǒng)模塊化基礎(chǔ)上給每個(gè)POU增加,通常對(duì)于SMART 200這樣的小PLC來(lái)說(shuō),能帶的系統(tǒng)規(guī)模,模塊單元20個(gè)POU就算多的了。 那么折算下來(lái),0.4ms,8元。

就是說(shuō),假設(shè)你的系統(tǒng)計(jì)算算力緊張拮據(jù)到極致, 每一句代碼都要非常在乎,都要盡量精簡(jiǎn)的時(shí)候,前處理后處理程序所對(duì)應(yīng)的成本也不過(guò)區(qū)區(qū)8元。

而如果沒(méi)有達(dá)到極致, 60ms和60.4ms的程序有什么區(qū)別嗎?

沒(méi)有區(qū)別,你買的PLC是一樣的,PLC帶動(dòng)的生產(chǎn)線的生產(chǎn)效率是一樣的。

完全一樣,區(qū)別為0!

這里還有一個(gè)比較有意思的故事。

大約十多年前,曾經(jīng)在論壇里,也是討論到相似話題的時(shí)候, 有一個(gè)網(wǎng)友跟我抬杠,大致意思就是CPU運(yùn)行效率提高,就會(huì)帶來(lái)生產(chǎn)效率提高。 我為了確認(rèn), 還舉例子問(wèn)他,假設(shè)一條汽車生產(chǎn)線, 你選用一臺(tái)PLC系統(tǒng)運(yùn)行周期50MS, 然后再換一臺(tái)更高級(jí)點(diǎn)的, 運(yùn)行周期40ms, 效率提高了20%,那么產(chǎn)線的產(chǎn)能就會(huì)提高20%,會(huì)多生產(chǎn)20%的汽車?甚至運(yùn)行周期到25ms, 效率提高一倍,汽車產(chǎn)量能翻倍嗎?他非常篤信地回復(fù), 是的呀!然后我就笑了。

如果那樣的話,提高CPU性能就能帶來(lái)幾百億的收入增加,那就是不惜代價(jià)花費(fèi)過(guò)億來(lái)單買一臺(tái)性能頂級(jí)的PLC,也是值得的。

很顯然不是這樣的嘛!通常的控制系統(tǒng),產(chǎn)能與PLC的運(yùn)行效率都不要說(shuō)什么幾乎無(wú)差別了, 而是根本沒(méi)有差別。

近20年, CPU的性能逐漸提高, 主頻越來(lái)越快,計(jì)算能力持續(xù)增加, 一些以前不能實(shí)現(xiàn)的功能,比如多軸同步等等,現(xiàn)在可以實(shí)現(xiàn)了。 以前需要特殊算法和特殊工藝處理才能實(shí)現(xiàn)的功能,現(xiàn)在只需要CPU直接計(jì)算驅(qū)動(dòng)就可以實(shí)現(xiàn), 最終設(shè)計(jì)者的設(shè)計(jì)效率得到提高了,僅此而已。

我所給出的程序處理方法, 根本的目的是在于提高工程師的工作效率。 可以不需要耗費(fèi)太多的時(shí)間來(lái)規(guī)劃變量使用。 假設(shè)帶來(lái)的效率提高為10%。

10%的數(shù)字對(duì)傳統(tǒng)行業(yè)來(lái)看相當(dāng)大,而對(duì)編程方法來(lái)說(shuō), 很小意思了。這里只是一個(gè)細(xì)節(jié)。 完整的煙臺(tái)方法架構(gòu),對(duì)效率的提高可以達(dá)到300%-500%, 如果要感覺(jué)驚訝, 把下巴留給煙臺(tái)方法吧!我做的80系列例子, 每一個(gè)平臺(tái), 每一個(gè)版本, 花費(fèi)時(shí)間不超過(guò)20分鐘。 大家可以印證下按自己傳統(tǒng)的編程方法,需要多長(zhǎng)時(shí)間。

一個(gè)平常的工程師的身價(jià)月薪1W很正常, 專家級(jí)別2W也不為過(guò)。 咱們就按1W來(lái)算, 效率提高10%, 相當(dāng)于每月節(jié)省1000元。

比較一下,每臺(tái)PLC 8元(還不一定存在)和每月1000元(以后還可以持續(xù)改進(jìn)提高),哪一個(gè)賬比較合算?

這個(gè)數(shù)學(xué)賬算的值得嗎?


本帖最近評(píng)分記錄:
  • 下載積分:+1(hsiung) 好貼好貼!