現代工業控制中的PLC程式設計方法論文

來源:才華庫 3.09W

摘要:目前隨著工業控制系統複雜性不斷提高以及自動化不斷加強,以往面向過程的PLC程式設計方法變得愈加困難。面向過程的程式設計(POP)方法程式設計效率低、可維護性差。通過分析現代主流計算機程式設計方法,提出了一種PLC程式設計方法:將程式分為三個層次,以物件導向的思想對外部裝置或複用性功能進行封裝,以面向過程的思想實現動作流程。並以汽車微電機壓裝控制系統為例進行說明。

現代工業控制中的PLC程式設計方法論文

關鍵詞:面向過程,物件導向,PLC,程式設計方法

現代工業自動化領域大多采用PLC作為運動控制器,傳統的PLC程式設計嚴格按照時序要求從頭至尾編寫程式。對於簡單的控制過程,其程式步驟較少,傳統的PLC程式設計方法能夠滿足要求。而複雜的控制系統,程式步驟較多,容易混亂,大大降低了程式設計效率,並且程式擴充套件效能非常差。為了提高程式設計效率,降低後期維護成本,尋找出一種新的PLC程式設計方法是非常必要的。

1理論基礎

目前存在兩種主流的程式設計思維:面向過程與物件導向,這兩種程式設計思想都有其各自的特點與性質。1.1面向過程面向過程(ProcedureOriented,PO)是一種以過程為中心,以什麼正在發生為主要目標進行程式設計的程式設計思想。面向過程的程式設計(POP)注重的是演算法設計,突出資料結構。NicklausWirth對此提出了著名的公式來表示程式的實質:程式=資料結構+演算法面向過程的程式設計關注的是解決問題的步驟,先把軟體系統分解成多個模組,然後逐步細化,完成整個軟體系統。各模組之間存在相互呼叫和資訊傳遞。隨著軟體系統規模擴大和效能要求提高,面向過程程式設計的缺陷逐漸明顯。軟體系統規模的擴大,使得模組的分解難度加大,模組之間的聯絡也更加複雜,軟體的可靠性難以提高,可維護性差。1.2物件導向物件導向(ObjectOriented,OO)是在處理問題時,從該問題所存在的事物本身出發,以類及物件作為基本構造單元,逐步認識事物的屬性和行為特徵。物件導向的程式設計(OOP)需要盡力描述問題的結構,從而較好地解決客觀世界描述的複雜性問題。可將程式表示為:程式=訊息+物件類物件類=資料結構+演算法物件導向的程式設計方法有利於大型軟體的開發;物件屬性和方法封裝避免了資料隨意訪問,保證資料安全;類與類之間的繼承關係,最大程度實現了程式碼的重用;繼承關係下的多型性增強了程式的靈活性和擴充套件性[1]。然而,由於類的大量載入會犧牲系統性能,從而降低系統執行效率。

2PLC程式設計思想

現代工業生產的控制系統經常要涉及到多個外部裝置,裝置的動作往往有嚴格的時序要求。長久以來,程式設計前先按要求製作動作流程圖,再按動作流程圖編寫程式的框架,然後以流程框架為中心新增約束與報警資訊,其程式設計思想是面向過程的.[2]。資料和資料處理過程程式碼是統一的,可重用程式碼少,且當代碼量大時,維護資料和程式碼非常困難。面向過程的PLC程式設計方法的缺點有:割裂被控物件在PLC程式與現實中的聯絡,內部邏輯與被控物件不明確,程式的後期維護困難;程式的內部邏輯關係非常複雜,控制流程不確,容易出錯;輸入與輸出都缺乏整體性,程式設計師往往孤立考慮各輸入點或輸出點的邏輯和控制[3]。針對傳統PLC程式設計的缺點,結合現代計算機主流程式設計思維,提出一種新的PLC程式設計方法:以分層思想劃分程式結構,以物件導向的思想對外部裝置或複用性功能進行封裝,以面向過程的思想實現動作流程。其原理是:將程式過程按實際劃為三個層次,對每個層次中可抽象描述的物件進行類封裝;並採用上層呼叫下層,高階呼叫低階的原則,進行自下而上的PLC程式設計。三個層次分別為:時序層、外設層、輸出層,其中輸出層是底層;外設層是中間處理與轉換層;時序層是最靠近裝置操作的使用者層。輸出層是對PLC的輸出點進行內部擴充套件。不管PLC程式如何編寫,最終都要通過控制PLC輸出來達到裝置執行目的。為了增強程式的靈活性和擴充套件性,可將PLC的每個輸出點當作物件,在程式執行過程中,輸出物件在不同的工作階段有不同的觸發條件。將數字輸出點的觸發條件轉化為內部繼電器,模擬輸出的觸發條件轉換為內部繼電器與資料。外設層是對裝置的封裝、處理,是外部裝置和外部裝置功能封裝模組的集合。複雜的PLC控制系統包含了多個外部裝置,並且有些外部裝置不止一個。以PLC為物件,外部裝置可分為輸入裝置、輸出裝置與互動裝置。輸入裝置是系統的眼睛,實時監控裝置狀態。輸出裝置是系統的動作執行裝置,單個輸出裝置可以有一個或多個動作狀態。互動裝置是與PLC有資料互傳的裝置,可以是上位機裝置或其他的通訊裝置。用物件導向的思想,以裝置整體或裝置動作狀態為物件進行封裝。可以大大減少了程式的重複性,並且有助於外圍裝置的擴充套件與功能的增加。時序層是PLC程式的主體,是各種功能動作流程的集合。裝置執行時,動作過程必須嚴格地按時間順序執行,而程式中時序過程實現必須面向過程。裝置每一種現實功能都對應一個動作過程,與裝置功能對應的動作過程屬於高階動作流程。高階動作流程可以重複呼叫低階的動作流程,低階的動作流程是複用性比較高的動作流程。複用性動作流程相對高階動作流程步驟較少,可以將其以整體作為考慮物件,封裝成功能模組,供高階動作流程呼叫。高階動作流程所對應現實裝置功能主要有:啟動、復位與保護等功能[4]。啟動功能可以通過人機互動介面的設定不同而擁有不同的裝置功能;復位功能是按一定的時間順序恢復預定的初始狀態;保護功能是通過監控輸入裝置的訊號判斷裝置是否故障,並做出相應的處理。對於由輸入訊號判斷不出故障可以由外部人工觸發,並處理。時序層編寫功能時要求先設計保護功能,再編寫其它的動作功能,以保護人身與裝置安全。

3例項

以汽車微電機壓裝控制系統為例,闡述本文提出的PLC程式設計方法。圖2為壓裝控制系統原理圖。該系統主要由TPC7062TX觸控式螢幕、主控單元FPG-C32T2H、模擬量單元FP0-A21-F、位置控制單元FPG-PP21、伺服電機、位移感測器等組成。該系統中控制最主要的輸出是控制伺服電機的脈衝輸出,脈衝輸出可直接以電機執行狀態為物件進行封裝,其餘輸出在程式中不需要大量重複使用,可以直接單獨呼叫。圖3為單次壓裝的流程,前三個過程為同向運動,為了提高工作效率,三個過程之間不能有停頓,“P點控制”可以達到此要求;慢速壓裝和快速退回運動方向相反,需要停頓,第三個過程完成後,直接退回到原點,快速退回功能用“E點控制”可以實現。除此外電機常用的控制還有“JOG執行(點動控制)”。通過壓裝流程可知該系統“P點控制”為三段控制,以“P點控制”為物件時,其“訊息”由一個觸發條件、三個位置、三個速度組成;以“E點控制”為物件時,其“訊息”由一個觸發條件、一個位置、一個速度組成;以“JOG執行”為物件時,其“訊息”由一個觸發條件、一個旋轉方向、一個速度組成。為了適應於PLC動作過程的時序性特點,為每個物件新增一個單脈衝輸出訊號。當物件動作執行完成時,發出一個單脈衝訊號,可以當做下一步動作的觸發條件。圖4為以FPWINGR為PLC程式設計軟體時的“E點控制”梯形圖。FPWINGR程式設計軟體不支援模組封裝,但是不影響物件導向思維的使用。圖中R20為“E點控制”的觸發條件;雙字暫存器DT412的資料為“E點控制”的目標脈衝頻率(速度);雙字暫存器DT414的資料為“E點控制”的目標位置。物件封裝的目的是避免資料隨意訪問,可以繼承。“E點控制”中的電機屬性啟動速度(500Hz)、加減速時間(100ms)、正反方向的定義是以引數的形式固定在其中。當呼叫該物件時,預設的就繼承了其屬性。只需擴充套件多個內部繼電器觸發R20,就可用被多次呼叫繼承,即多型性。同理,可設計出“P點控制”與“JOG執行”的梯形圖。輸出層與外設層是時序層的基礎,時序層按一定的時間順序組合輸出層與外設層,並輔以必要的資料處理就形成了所需的功能。壓裝主流程主要有“P點控制”與“E點控制”模組,加上時間延時、計數處理與力值峰值功能就形成了一個壓裝的大致功能,經過後期的除錯與小範圍的修改就完成了一個功能的編寫。依此方法編寫各種所需功能,完成整個程式後,整體除錯功能。後期維護需要修改某部分功能時,可以快速定位到要修改的層,再找到相應的模組;增加功能時,可以迅速查到已有硬體的封裝模組,直接在時序層增加要求的功能時序。

4結束語

通過分析與實際驗證,用本文所提程式設計方法編寫PLC程式,程式邏輯更清晰,層次更分明,執行更穩定。同時為程式除錯、後期程式維護、程式功能擴充套件提供更有效而廣闊的空間。該方法適用於複雜控制系統,也適用於簡單控制系統,使複雜的控制系統集體設計時分工更加明確,效能更穩定。

參考文獻

[1]徐卓峰,王學軍.面向過程程式設計語言與物件導向程式設計語言及其特徵比較[J].中州大學學報,1997(1):64-67

[2]高雲.計算機程式設計思想的發展研究[J].軟體導刊,2012,11(11):5-6

[3]張海藩.軟體工程導論[M].5版.北京:清華大學出版社,2008(2):203-211

[4]常海.基於OOP的PLC程式設計方法探討[J].無線互聯科技,2014(2):75-75

熱門標籤