小弟一月份接到一個設備改造任務,由我負責PLC編程。我原是學計算機的,因為此前成功改進了一臺測試設備的測試程序(VB開發的),所以領導就這樣安排了,理由是兩者都是編程(不是我開玩笑,當時差點兒“暈倒”
,再三推辭,領導當時拿出了“禮賢下士”的姿態,聲稱就當學習學習,沒有什么事情是百分百成功的,沒辦法只能接受了
)。就這樣開始了PLC的學習之路,從論壇上下了一些學習資料、到圖書館借了兩本書(借書之前就搞清楚了一些必要的因素如先把PLC品牌定好,這樣效率高多了)。
整個控制系統不算復雜,關鍵是控制7個氣缸的動作,出錯后要能夠定位到點,考慮到輸入按鈕比較多,輸出部件也多(負責設計的老工程師原先都是基于繼電器線路考慮的),因此前兩天我主動請戰提出用觸摸屏(算是“初生牛犢不怕虎”還是“無知者無畏”?),這下控制就復雜了一些(原來自動部分由PLC控制,手動則由繼電器線路控制,
后來我了解到,之所以要用PLC是因為全部控制使用繼電器線路比較復雜,器件較多,且今后還要增加不同型號的產品,成本會超出計劃,尤其是時間繼電器價格不便宜 ,所以才提出這樣的設計框架,“暈”啊
)。
剛開始編PLC時,老工程師帶的年輕助工說控制線路設計好了,還用Festo的工具軟件模擬了一下效果,當時以為這事簡單了,只要把繼電器控制線路“翻譯”成PLC梯形圖就行了,但隨著對加工過程控制的了解,發現這樣簡單的“翻譯”,先不說極大的浪費了PLC資源,就連一些必要的控制都無法完成,而另一方面“形勢”變得急轉而下,領導要求必須在3本月底完成改造任務。認識到問題的復雜性和“嚴重性”,我不得不放棄做一名翻譯的理想,毅然決定轉回來“吃老本”,按照加工過程控制的要求用計算機編程的思維方式來重新構思整個控制系統
,所以我現在的這個程序中都是大量的條件判斷、MOV、RST及WAND、WXOR這類指令(感覺有點兒匯編的味道,仔細想想,PLC指令系統就可以認為是一套專用的宏匯編系統)。
這段時間以來,我覺得用計算機編程的思維方式處理PLC編程,最容易出錯的地方就是由PLC的“掃描工作方式”引發的問題,特別是FEND之前的“主程序”段,一定要時刻注意條件(輸入變化、軟元件變化、“保持型”軟元件)動態變化后程序的跳轉方向。
最后,有一個問題想請有經驗的達人給予指導,就是如何考慮“急停”功能:按照PLC的“掃描工作方式”,在如下的梯形圖1中,當“X000急停按鈕”接通時,對動作輸出部分可以做到“即時”響應,即可以精確的監測到究竟是“M999”還是“M998”完成了“急!惫δ,而圖2中,如果在執行到第1023步之后的時刻才發現需要終止下面的輸出動作,這時按下“X000急停按鈕”,想要終止第1049步的“Y016”輸出(假設此時滿足D21=2、D51=2),似乎不能完成,必須要等到下一個掃描周期才能接通“M999”斷開第1049步,雖然PLC的掃描是以us計的,但這樣的“不精確”,就會產生“滯后”隱患了。 小弟第一次編PLC,衷心期望有經驗的達人給予指點,謝謝!
[ 此帖被jinsinfo在2010-03-03 10:56重新編輯 ]