如何編寫優質的PLC/PAC程式?首先來看看我們收集到從業者是怎麼說的:
A:程式設計這個東西只可意味,不可言傳。總體感覺開始偏向計算機語言程式設計的風格,有異曲同工之妙。從標準化到模組化,再到面對物件,程式設計風格不斷變化。是因為控制複雜程度不斷提前,專案越來越大,越需要清晰的思路。
B:自動化控制要求從業人員,豐富的理論知識和實際維修經驗。程式設計思維縝密是從日積月累中來,要多學人家的經驗結合自己的實際情況,勤學苦練。要有鍥而不捨的精神!向老師學習,希望多寫更多好文章,讓我們學到更多懂得更多。
C:plc程式設計不僅僅需要對工藝流程很了解,還需要很清晰的邏輯思維和結構思維,我很認同通用程式用標準化的程式語言,核心功能用特殊指令或封裝成功能塊,做到簡潔明了又有一定的保密性
D:寫程式就應該有足夠的詞彙積累,能用指令處理就不要用技巧處理
E:我經常就是先把這套裝置得控制流程了解清楚,再根據客戶需要的功能分步驟編寫,手動,自動分開編寫,自動相同的部分做在子程式裡可以重複呼叫。除錯有問題的時候找到對應動作的區域修改就行,不影響整個程式的其他動作。
F: plc程式設計不僅要對工藝流程、工藝要求有充份的了解,還要進行程式標準化;可程式設計控制器(PLC)技術廣泛應用於各種工業控制領域,它具有流程控制、資料採集、裝置控制與輸出、工程報表、資料與曲線等輸出強大功能.這些標準功能使用能做到標準化程式並封裝成各功能塊,這樣就便於程式呼叫和除錯,程式BUG會更少。
……
針對這個話題,我們邀請大神鄧李老師來給大家談談他的總結。鄧李老師是工業自動化專業,從事專業課教學十二年;後進入羅克韋爾自動化,任培訓師和現場服務工程師十八年。具有豐富教學經驗和現場工作經驗,已出版專業書籍三本(《PAC程式設計基本教程》、《整合架構中型系統》、《ControlLogix系統實用手冊》),在行業內頗有影響。滿滿都是乾貨,希望對大家有用。
毫無疑問,每一個程式設計的專案開發人員,都希望自己編出的是好程式,什麼是好的程式?盡情地施展聰明才智,別出心裁,標新立異、奇思妙想、獨樹一幟、與眾不同就是好的程式嗎?我恐怕不能苟同。我認為好的程式應該具備如下幾點:
嚴密性
邏輯嚴謹,執行準確,絕無疏漏,這點應該是共識,這個嚴密不僅有控制程序的嚴密,還有例程呼叫的嚴密,指令執行的嚴密。嚴密性跟程式設計之前的規劃也是有關的,緊扣生產過程程序,分析控制物件的動作,仔細地規劃專案的程式結構,安排執行的順序,這都是保證嚴密的基礎。
正確性
勿庸置疑的是控制邏輯處理的正確,針對控制物件的邏輯關係選對指令。正確地使用指令是非常重要的,什麼情況該用什麼指令,正確理解指令執行的過程和正確設定引數,給予輸出指令的梯級條件是否正確,預掃描和後掃描的影響如何,這些都是需要考慮的,儘量避免指令或例程的陷阱。
對稱性
現場很多控制物件的活動具有對稱性,尤其是一些具有互鎖關係的動作,對應編寫的邏輯處理也應具有對稱性,例如幾個互鎖關係的同類控制動作,除了梯級條件和資料狀態不同,梯級的邏輯結構應該是一樣的,尤其是規律性的交替執行。對稱動作採用不對稱的邏輯執行,本身的嚴密性就值得懷疑,對稱也是判斷程式設計嚴密性的一個準則。
規律性
控制過程的動作大都具有規律,基於分析控制過程的功能方框圖,在編寫的例程中要表現出這種規律,哪些是常規的主流執行動作,哪些是重複執行動作,哪些是條件式的呼叫動作,哪些是裝置之間的約束關係,以及生產程序的顯示,都要有脈絡清晰明了的體現。
可讀性
程式是寫給別人看的,別人很容易讀明白,自己以後也能很快讀明白,當時的得意之作,不要過一陣連自己也讀不懂了。思路要清晰,表達要清楚,這點可以參照寫文章的心得,有中心、有層次、有重點、有排比、有修飾,規律和對稱的程式設計自然是可讀性強的。當然,每個梯級邏輯或運算元的文字說明是必不可少的,這將幫助我們理解過程處理和程式設計思想,說明有時比梯級邏輯本身更重要。
標準化
對待同一個需求控制的處理,可以用指令功能解決的,不要技巧程式設計去解決,因為指令功能是共性的,如何設定引數,如何執行指令,都有固定的模式,大傢俱有共識;程式設計技巧有時是很個性化的,即便構思非常精巧,但別人很難把握思路,特別是後期的維護人員不容易讀懂程式。尤其PAC控制器更是提供了標準化程式設計的平臺,即使是新手也能編寫出規範的程式來。
以上幾點,最能體現好程式的是標準化,只有標準化的程式設計最容易達到嚴密、正確、對稱、規律、可讀,標準化往往是長期經驗積累的最終形式,可編程式控制器的發展歷史,就是一個沿標準化方向發展的過程,直接用於程式設計的指令系統表現則尤為明顯。
在PAC控制器系統中提供各種程式設計方式,更是多方地提供了標準化的程式設計平臺,這對當今專案開發所追求的短工期、高效率、低成本的目標,具有十分重大的意義,並在實踐中得到認可。
此外,標準化的程式設計還在專案開發者和現場維護人員之間達成了某些共識,使後者更容易解讀程式和查詢故障,這在生產實際中十分有效,尤其是某些行業,本來就有一些共同遵守的規則,更是要通過標準的程式來體現。
(圖源:RA官網)
面對同一個需求,我們可以看到二種程式設計處理情況:
技巧處理,可能是非常精妙的技巧,讓人拍案叫絕;也可能讓人百思不得其解,經過解釋才讓人明白;或者廣泛流傳的一種技巧,讓人們達到了共識,如自保持位邏輯的程式設計方法。不管是什麼情況,技巧是個性化的處理,難以作為標準。
功能處理,根據指令的功能和固有的指令程式設計模式,讓解讀程式的人很快理解處理的目的和結果。這是通用的,所有的人都容易明白的,指令功能是共性化的處理,標準的做法,但是需要學習指令的運用方法。
程式設計的一般原則是,能用指令功能處理的,儘可能不要用技巧處理。
道理是顯而易見的,只有共性的東西才是可以共識的,容易共用的。畢竟一個程式專案是大家共有的,具有從開發人員移交到維護人員的延續性,要讓更多的人更容易參與專案。
我們學習程式設計,一定要研究指令的功能和相應的運用方法,用以編寫標準的、易讀的程式。所以,我們要對控制器指令系統中的每一條指令,給予充分了解,引數的含義、指令的動作、執行的條件,才能準確無誤地使用指令。儘可能使用指令功能處理問題,儘量避免使用技巧程式設計處理。
此外,養成良好的程式設計習慣也是至關重要的,記住某些指令的使用慣例和典型處理,這是前輩經驗流傳,良好的程式設計習慣可以幫助你避免落入一些程式執行的陷阱,以免在除錯系統時為某些邏輯處理結果感到困惑。良好的程式設計習慣可以讓你對自己編寫的程式具有自信,準確堅定地排除不可能情況,不會盲目質疑而耽誤了除錯的時間。良好的程式設計習慣是經歷了考驗的工作方式,保持它可以減少錯誤的產生,加快程式設計速度,提高工作效率。
圖源:網際網路
程式設計序就跟寫文章一樣,你既可以寫成一篇隨心所欲的散文,也可以寫成一篇思維慎密的論文。讀散文每個人都可以有不同的理解和感受,甚至得出不同的結論;論文卻可以讓人準確地理解作者所要表達的內容,其論點明確、邏輯清晰、層次分明,結構嚴謹,論述清楚。把程式編得像一篇論文,應該就是編寫好的程式的基本要求吧。
程式設計序跟寫文章有許多相似之處。
寫文章,有中心思想,段落大意,在闡明一件事情時,你會圍繞這件事情在一個文章段落裡進行描述;程式設計序,有核心控制,執行程序,面對一個控制物件,在一段梯級邏輯中,編輯相關的邏輯關係和工作狀態處理。寫文章,你掌握的詞彙越多,遣詞造句的能力就越強,表述事情就越清晰準確;程式設計序,你對指令的功能理解得越清楚正確,運用指令的能力就越強,在不同情況下能準確地選擇適合指令。寫文章,描述相似事物類比的排比句,讓人易讀且更容易看清事物之間的聯絡,並有閱讀美感;程式設計序,工控物件很多情況下也具有對稱性,如果你編寫的程式邏輯關係上是對稱性的,同樣有閱讀美感,並讓人感到邏輯上值得信賴。寫文章,有開頭和結尾,概述式的開頭和總結式的結尾前後呼應;程式設計序,有初始化的處理和結束的處理,資料的進入和資料的送出資訊流向清楚。寫文章,時不時的引用成語熟句,言簡意賅,耐人尋味;程式設計序,按需求引用專門的指令,呼叫特殊巨集彙集,梯級簡單,處理隱藏。在學習程式設計時,你不妨想象你在學習寫文章,就像中小學時你的語文老師教給你的那樣,先從造句開始,然後學習寫段落,最後完成一篇文章,並在寫作過程中積累詞彙和學習表述,提高寫作能力。我們的程式設計訓練也應循序漸進,從基本的指令開始,編寫簡單的梯級邏輯,然後學習圍繞一個控制物件編寫一段梯級邏輯的處理,最後完成一個小的專案,並在程式設計過程中,熟悉指令和訓練思維,提高程式設計能力。