0111 【萬泉河】PLC編程給循環指令一個出口
我在很多年前,寫過一篇文章:《PLC編程中的循環語法使用》,這篇文章被多次到處轉載, 最新的轉載是2023年11月公眾號“工控幫”的轉載,微信搜一搜就能搜到。
https://mp.weixin.qq.com/s/38HseYCWtVTC6zL9b3k4Zw
我發表這樣文章的本意,就是建議PLC的初學者和剛入門的工程師,不要把過多精力放在研究循環上,也不要在程序中有意或者無意地使用過多的循環語句,以使程序變得難讀和不容易調試。
比如在TIA PORTAL中,如果程序在線監控, 那么循環的這一段代碼是無法實時看到數據運行值的。所以要診斷代碼邏輯是否有錯誤,是否在按照預想的軌道運行, 還需要另外額外的工作。
這些額外工作都是非常麻煩,且影響運行效果。比如雖然現在PORTAL 中可以調試使用斷點,可以單步調試,但這個時候OB1循環也被迫中斷了,程序的基本控制功能也都停止了。所以PLC工程師通常是不做這種單步調試的。
然而我這樣的宣揚并沒有得到如期的效果。很多工程師仍然執迷不悟沉迷于程序中用循環方法解決問題。甚至很多簡單問題的解決都要不惜耗費些彎路,做各種前處理后處理,只為了循環這一下的爽5秒。
包括我也推出過80系列的程序例子,演示了如何不使用循環的實現效果,還做了比較。見文章 <0822 【萬泉河】解讀一個用循環法PK萬泉河80模擬量例子的例子程序>
https://mp.weixin.qq.com/s/a6a1HG6DmuasLRnXwbWMaQ
但也仍然沒用。很多同行可能摸到編程的機會太少, 太多的繪圖,選型,設計,甚至接線工作耗費了他們太多的體力,導致對編程機會異常珍惜,對少有的能大展技能的機會不愿意放過。所以還是普遍表現出對循環語法的熱愛。
所以,我總結了一下在高級語言編程中需要用到循環的情形,請工控工程師們可以同比對照參考。
在高級語言中,編程需要用到循環的場景通常有2種。
其中第一種是數據量異常巨大,比如要從數據庫中抓取4萬條數據進行統計處理。那么顯然,寫4萬句指令是不可理喻的。必須對數據的輸入輸出做出嚴謹的分析,找到數據的共同特征點和變化量,用循環語句來搞定。
甚至,如果索引數據復雜多樣到連共同的特征值都找不到,就是一堆亂麻數據, 那也寧愿先把這些索引數據保存為文件或者數據庫,然后通過數據庫方法查詢得到,然后再進行統計計算。總之,無論如何打破頭我也要使用循環實現。
而第二種是在編程的時候邏輯處理的步數不確定。比如配方數量是在運行中才人工輸入的。就只能用循環了。還有是挑選特定值,比如運行數組中挑選匹配值的算法,當條件匹配后,就可以跳出循環了,邏輯的處理步數也同樣是在編程時不曉得的。那么這些都需要用到循環。
而除此之外,即便是在高級語言的編程中,都很少再有用到循環語法的情況了。
更可想而知,對于PLC系統這樣的環境, 能有多少需要循環才能搞定的算法了。
然而我在群交流時提出這樣的比較指標之后, 還有人表示不服,不能理解。反問我,如果20套同樣的設備,也不要做循環,也羅列調用執行嗎?(言外之意,不用循環用羅列的方法是不是太愚蠢了)
答案是當然咯!我80例子中,80個工位都羅列出來的,區區20更何足掛齒呢!
看起來這不用循環把一大票人憋得那是相當難受啊!
這樣吧,我來給個出路。
眼光放高一點, 你的工作任務不是一臺設備,而是一系列參數不同的設備。你需要做的不僅僅是這臺設備的PLC程序,而是要做一臺能生成一系列不同參數設備的PLC程序的電腦端的程序。
即, 你需要的是PLC程序+生成PLC程序的電腦上的程序,我們不妨叫它PLC++程序。而且最好的目標是,這套電腦上的程序的使用者也不是你自己,而是你簡單培訓后輸出的對象,比如設備車間的工人。
公司接到訂單以后,根據合同設備配置不同,參數數值也當然不同。那么車間工人除了組裝盤柜之外, 還把這些數值輸入到你給他的電腦程序的界面,輸入完成后,按下“生成PLC程序”按鈕,則程序自動生成, 生成后再打開編程軟件下載到PLC,或者更自動點,你的程序都可以驅動指揮TIA PORTAL自動將生成的PLC程序下載到PLC中,HMI畫面程序下載到觸摸屏中。
這樣, 在你和工人都不需要見到程序代碼的情況下,程序就已經成功下載到設備中,設備就已經有了靈魂,就已經具備開機運行的條件了。
所以,如果你有天高的技能這回就有了施展的平臺了。在這套生成程序的PLC++程序里, 你隨便怎么折騰都可以,絕對不會有人指責你程序寫的好壞。當然我猜, 循環一定是少不了的。因為比如上一個系統80個模擬量+20個伺服包含了自動邏輯, 而下一個系統要你做出79個模擬量+15臺伺服的自動控制,這套PLC++程序一定相當復雜,沒有循環語法是萬萬達不到的。
當然,也仍然符合我對使用循環語法的場景的論斷:循環次數不確定。
那些循環語法的信徒們終于有了釋放的出口了。
然后, 你們自然也會比較得出怎么編寫PLC程序更方便生成PLC++程序了。
審核編輯:黃飛
-
plc
+關注
關注
5008文章
13151瀏覽量
462072 -
模擬量
+關注
關注
5文章
491瀏覽量
25505 -
Portal
+關注
關注
1文章
29瀏覽量
10319
原文標題:0111 【萬泉河】PLC編程給循環指令一個出口
文章出處:【微信號:PLC標準化編程,微信公眾號:PLC標準化編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論