0111 【萬(wàn)泉河】PLC編程給循環(huán)指令一個(gè)出口
我在很多年前,寫過(guò)一篇文章:《PLC編程中的循環(huán)語(yǔ)法使用》,這篇文章被多次到處轉(zhuǎn)載, 最新的轉(zhuǎn)載是2023年11月公眾號(hào)“工控幫”的轉(zhuǎn)載,微信搜一搜就能搜到。
https://mp.weixin.qq.com/s/38HseYCWtVTC6zL9b3k4Zw
我發(fā)表這樣文章的本意,就是建議PLC的初學(xué)者和剛?cè)腴T的工程師,不要把過(guò)多精力放在研究循環(huán)上,也不要在程序中有意或者無(wú)意地使用過(guò)多的循環(huán)語(yǔ)句,以使程序變得難讀和不容易調(diào)試。
比如在TIA PORTAL中,如果程序在線監(jiān)控, 那么循環(huán)的這一段代碼是無(wú)法實(shí)時(shí)看到數(shù)據(jù)運(yùn)行值的。所以要診斷代碼邏輯是否有錯(cuò)誤,是否在按照預(yù)想的軌道運(yùn)行, 還需要另外額外的工作。
這些額外工作都是非常麻煩,且影響運(yùn)行效果。比如雖然現(xiàn)在PORTAL 中可以調(diào)試使用斷點(diǎn),可以單步調(diào)試,但這個(gè)時(shí)候OB1循環(huán)也被迫中斷了,程序的基本控制功能也都停止了。所以PLC工程師通常是不做這種單步調(diào)試的。
然而我這樣的宣揚(yáng)并沒(méi)有得到如期的效果。很多工程師仍然執(zhí)迷不悟沉迷于程序中用循環(huán)方法解決問(wèn)題。甚至很多簡(jiǎn)單問(wèn)題的解決都要不惜耗費(fèi)些彎路,做各種前處理后處理,只為了循環(huán)這一下的爽5秒。
包括我也推出過(guò)80系列的程序例子,演示了如何不使用循環(huán)的實(shí)現(xiàn)效果,還做了比較。見(jiàn)文章 <0822 【萬(wàn)泉河】解讀一個(gè)用循環(huán)法PK萬(wàn)泉河80模擬量例子的例子程序>
https://mp.weixin.qq.com/s/a6a1HG6DmuasLRnXwbWMaQ
但也仍然沒(méi)用。很多同行可能摸到編程的機(jī)會(huì)太少, 太多的繪圖,選型,設(shè)計(jì),甚至接線工作耗費(fèi)了他們太多的體力,導(dǎo)致對(duì)編程機(jī)會(huì)異常珍惜,對(duì)少有的能大展技能的機(jī)會(huì)不愿意放過(guò)。所以還是普遍表現(xiàn)出對(duì)循環(huán)語(yǔ)法的熱愛(ài)。
所以,我總結(jié)了一下在高級(jí)語(yǔ)言編程中需要用到循環(huán)的情形,請(qǐng)工控工程師們可以同比對(duì)照參考。
在高級(jí)語(yǔ)言中,編程需要用到循環(huán)的場(chǎng)景通常有2種。
其中第一種是數(shù)據(jù)量異常巨大,比如要從數(shù)據(jù)庫(kù)中抓取4萬(wàn)條數(shù)據(jù)進(jìn)行統(tǒng)計(jì)處理。那么顯然,寫4萬(wàn)句指令是不可理喻的。必須對(duì)數(shù)據(jù)的輸入輸出做出嚴(yán)謹(jǐn)?shù)姆治?,找到?shù)據(jù)的共同特征點(diǎn)和變化量,用循環(huán)語(yǔ)句來(lái)搞定。
甚至,如果索引數(shù)據(jù)復(fù)雜多樣到連共同的特征值都找不到,就是一堆亂麻數(shù)據(jù), 那也寧愿先把這些索引數(shù)據(jù)保存為文件或者數(shù)據(jù)庫(kù),然后通過(guò)數(shù)據(jù)庫(kù)方法查詢得到,然后再進(jìn)行統(tǒng)計(jì)計(jì)算。總之,無(wú)論如何打破頭我也要使用循環(huán)實(shí)現(xiàn)。
而第二種是在編程的時(shí)候邏輯處理的步數(shù)不確定。比如配方數(shù)量是在運(yùn)行中才人工輸入的。就只能用循環(huán)了。還有是挑選特定值,比如運(yùn)行數(shù)組中挑選匹配值的算法,當(dāng)條件匹配后,就可以跳出循環(huán)了,邏輯的處理步數(shù)也同樣是在編程時(shí)不曉得的。那么這些都需要用到循環(huán)。
而除此之外,即便是在高級(jí)語(yǔ)言的編程中,都很少再有用到循環(huán)語(yǔ)法的情況了。
更可想而知,對(duì)于PLC系統(tǒng)這樣的環(huán)境, 能有多少需要循環(huán)才能搞定的算法了。
然而我在群交流時(shí)提出這樣的比較指標(biāo)之后, 還有人表示不服,不能理解。反問(wèn)我,如果20套同樣的設(shè)備,也不要做循環(huán),也羅列調(diào)用執(zhí)行嗎?(言外之意,不用循環(huán)用羅列的方法是不是太愚蠢了)
答案是當(dāng)然咯!我80例子中,80個(gè)工位都羅列出來(lái)的,區(qū)區(qū)20更何足掛齒呢!
看起來(lái)這不用循環(huán)把一大票人憋得那是相當(dāng)難受??!
這樣吧,我來(lái)給個(gè)出路。
眼光放高一點(diǎn), 你的工作任務(wù)不是一臺(tái)設(shè)備,而是一系列參數(shù)不同的設(shè)備。你需要做的不僅僅是這臺(tái)設(shè)備的PLC程序,而是要做一臺(tái)能生成一系列不同參數(shù)設(shè)備的PLC程序的電腦端的程序。
即, 你需要的是PLC程序+生成PLC程序的電腦上的程序,我們不妨叫它PLC++程序。而且最好的目標(biāo)是,這套電腦上的程序的使用者也不是你自己,而是你簡(jiǎn)單培訓(xùn)后輸出的對(duì)象,比如設(shè)備車間的工人。
公司接到訂單以后,根據(jù)合同設(shè)備配置不同,參數(shù)數(shù)值也當(dāng)然不同。那么車間工人除了組裝盤柜之外, 還把這些數(shù)值輸入到你給他的電腦程序的界面,輸入完成后,按下“生成PLC程序”按鈕,則程序自動(dòng)生成, 生成后再打開(kāi)編程軟件下載到PLC,或者更自動(dòng)點(diǎn),你的程序都可以驅(qū)動(dòng)指揮TIA PORTAL自動(dòng)將生成的PLC程序下載到PLC中,HMI畫面程序下載到觸摸屏中。
這樣, 在你和工人都不需要見(jiàn)到程序代碼的情況下,程序就已經(jīng)成功下載到設(shè)備中,設(shè)備就已經(jīng)有了靈魂,就已經(jīng)具備開(kāi)機(jī)運(yùn)行的條件了。
所以,如果你有天高的技能這回就有了施展的平臺(tái)了。在這套生成程序的PLC++程序里, 你隨便怎么折騰都可以,絕對(duì)不會(huì)有人指責(zé)你程序?qū)懙暮脡?。?dāng)然我猜, 循環(huán)一定是少不了的。因?yàn)楸热缟弦粋€(gè)系統(tǒng)80個(gè)模擬量+20個(gè)伺服包含了自動(dòng)邏輯, 而下一個(gè)系統(tǒng)要你做出79個(gè)模擬量+15臺(tái)伺服的自動(dòng)控制,這套PLC++程序一定相當(dāng)復(fù)雜,沒(méi)有循環(huán)語(yǔ)法是萬(wàn)萬(wàn)達(dá)不到的。
當(dāng)然,也仍然符合我對(duì)使用循環(huán)語(yǔ)法的場(chǎng)景的論斷:循環(huán)次數(shù)不確定。
那些循環(huán)語(yǔ)法的信徒們終于有了釋放的出口了。
然后, 你們自然也會(huì)比較得出怎么編寫PLC程序更方便生成PLC++程序了。
審核編輯:黃飛
-
plc
+關(guān)注
關(guān)注
5017文章
13397瀏覽量
465740 -
模擬量
+關(guān)注
關(guān)注
5文章
500瀏覽量
25680 -
Portal
+關(guān)注
關(guān)注
1文章
29瀏覽量
10396
原文標(biāo)題:0111 【萬(wàn)泉河】PLC編程給循環(huán)指令一個(gè)出口
文章出處:【微信號(hào):PLC標(biāo)準(zhǔn)化編程,微信公眾號(hào):PLC標(biāo)準(zhǔn)化編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
plc基本指令的應(yīng)用有哪些
PLC指令的簡(jiǎn)要說(shuō)明
三菱plc累加指令怎么用
三菱plc常用的編程指令有哪些
三菱plc常開(kāi)指令是什么
三菱plc編程指令大全講解
![三菱<b class='flag-5'>plc</b><b class='flag-5'>編程</b><b class='flag-5'>指令</b>大全講解](https://file1.elecfans.com/web2/M00/F0/6F/wKgZomZynpyAU74NAAMQNgS5LJ0518.png)
三菱PLC傳送指令的用法
PLC中ALT和ALTP指令的區(qū)別
PLC中SFTL指令的用法
PLC的常用指令及其應(yīng)用
cnc怎么編程m99循環(huán)次數(shù)
plc控制伺服電機(jī)的指令有哪些
?PLC左移指令和右移指令
![?<b class='flag-5'>PLC</b>左移<b class='flag-5'>指令</b>和右移<b class='flag-5'>指令</b>](https://file1.elecfans.com/web2/M00/C5/67/wKgaomXz5yyADWRNAAAeQdbR-EA917.jpg)
評(píng)論