現(xiàn)代工業(yè)控制中的PLC編程方法論文
摘要:目前隨著工業(yè)控制系統(tǒng)復(fù)雜性不斷提高以及自動(dòng)化不斷加強(qiáng),以往面向過程的PLC編程方法變得愈加困難。面向過程的編程(POP)方法編程效率低、可維護(hù)性差。通過分析現(xiàn)代主流計(jì)算機(jī)編程方法,提出了一種PLC編程方法:將程序分為三個(gè)層次,以面向?qū)ο蟮乃枷雽?duì)外部設(shè)備或復(fù)用性功能進(jìn)行封裝,以面向過程的思想實(shí)現(xiàn)動(dòng)作流程。并以汽車微電機(jī)壓裝控制系統(tǒng)為例進(jìn)行說明。
關(guān)鍵詞:面向過程,面向?qū)ο,PLC,編程方法
現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域大多采用PLC作為運(yùn)動(dòng)控制器,傳統(tǒng)的PLC編程嚴(yán)格按照時(shí)序要求從頭至尾編寫程序。對(duì)于簡(jiǎn)單的控制過程,其程序步驟較少,傳統(tǒng)的PLC編程方法能夠滿足要求。而復(fù)雜的控制系統(tǒng),程序步驟較多,容易混亂,大大降低了編程效率,并且程序擴(kuò)展性能非常差。為了提高編程效率,降低后期維護(hù)成本,尋找出一種新的PLC編程方法是非常必要的。
1理論基礎(chǔ)
目前存在兩種主流的編程思維:面向過程與面向?qū)ο,這兩種編程思想都有其各自的特點(diǎn)與性質(zhì)。1.1面向過程面向過程(ProcedureOriented,PO)是一種以過程為中心,以什么正在發(fā)生為主要目標(biāo)進(jìn)行編程的編程思想。面向過程的程序設(shè)計(jì)(POP)注重的是算法設(shè)計(jì),突出數(shù)據(jù)結(jié)構(gòu)。NicklausWirth對(duì)此提出了著名的公式來表示程序的實(shí)質(zhì):程序=數(shù)據(jù)結(jié)構(gòu)+算法面向過程的程序設(shè)計(jì)關(guān)注的是解決問題的步驟,先把軟件系統(tǒng)分解成多個(gè)模塊,然后逐步細(xì)化,完成整個(gè)軟件系統(tǒng)。各模塊之間存在相互調(diào)用和信息傳遞。隨著軟件系統(tǒng)規(guī)模擴(kuò)大和性能要求提高,面向過程編程的缺陷逐漸明顯。軟件系統(tǒng)規(guī)模的擴(kuò)大,使得模塊的分解難度加大,模塊之間的聯(lián)系也更加復(fù)雜,軟件的可靠性難以提高,可維護(hù)性差。1.2面向?qū)ο竺嫦驅(qū)ο螅∣bjectOriented,OO)是在處理問題時(shí),從該問題所存在的事物本身出發(fā),以類及對(duì)象作為基本構(gòu)造單元,逐步認(rèn)識(shí)事物的屬性和行為特征。面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)需要盡力描述問題的結(jié)構(gòu),從而較好地解決客觀世界描述的復(fù)雜性問題?蓪⒊绦虮硎緸椋撼绦颍较ⅲ珜(duì)象類對(duì)象類=數(shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο蟮木幊谭椒ㄓ欣诖笮蛙浖拈_發(fā);對(duì)象屬性和方法封裝避免了數(shù)據(jù)隨意訪問,保證數(shù)據(jù)安全;類與類之間的繼承關(guān)系,最大程度實(shí)現(xiàn)了代碼的重用;繼承關(guān)系下的多態(tài)性增強(qiáng)了程序的靈活性和擴(kuò)展性[1]。然而,由于類的大量加載會(huì)犧牲系統(tǒng)性能,從而降低系統(tǒng)運(yùn)行效率。
2PLC編程思想
現(xiàn)代工業(yè)生產(chǎn)的控制系統(tǒng)經(jīng)常要涉及到多個(gè)外部設(shè)備,設(shè)備的動(dòng)作往往有嚴(yán)格的時(shí)序要求。長(zhǎng)久以來,編程前先按要求制作動(dòng)作流程圖,再按動(dòng)作流程圖編寫程序的框架,然后以流程框架為中心添加約束與報(bào)警信息,其編程思想是面向過程的.[2]。數(shù)據(jù)和數(shù)據(jù)處理過程代碼是統(tǒng)一的,可重用代碼少,且當(dāng)代碼量大時(shí),維護(hù)數(shù)據(jù)和代碼非常困難。面向過程的PLC編程方法的缺點(diǎn)有:割裂被控對(duì)象在PLC程序與現(xiàn)實(shí)中的聯(lián)系,內(nèi)部邏輯與被控對(duì)象不明確,程序的后期維護(hù)困難;程序的內(nèi)部邏輯關(guān)系非常復(fù)雜,控制流程不確,容易出錯(cuò);輸入與輸出都缺乏整體性,程序員往往孤立考慮各輸入點(diǎn)或輸出點(diǎn)的邏輯和控制[3]。針對(duì)傳統(tǒng)PLC編程的缺點(diǎn),結(jié)合現(xiàn)代計(jì)算機(jī)主流編程思維,提出一種新的PLC編程方法:以分層思想劃分程序結(jié)構(gòu),以面向?qū)ο蟮乃枷雽?duì)外部設(shè)備或復(fù)用性功能進(jìn)行封裝,以面向過程的思想實(shí)現(xiàn)動(dòng)作流程。其原理是:將程序過程按實(shí)際劃為三個(gè)層次,對(duì)每個(gè)層次中可抽象描述的對(duì)象進(jìn)行類封裝;并采用上層調(diào)用下層,高級(jí)調(diào)用低級(jí)的原則,進(jìn)行自下而上的PLC程序設(shè)計(jì)。三個(gè)層次分別為:時(shí)序?qū)、外設(shè)層、輸出層,其中輸出層是底層;外設(shè)層是中間處理與轉(zhuǎn)換層;時(shí)序?qū)邮亲羁拷O(shè)備操作的用戶層。輸出層是對(duì)PLC的輸出點(diǎn)進(jìn)行內(nèi)部擴(kuò)展。不管PLC程序如何編寫,最終都要通過控制PLC輸出來達(dá)到設(shè)備運(yùn)行目的。為了增強(qiáng)程序的靈活性和擴(kuò)展性,可將PLC的每個(gè)輸出點(diǎn)當(dāng)作對(duì)象,在程序運(yùn)行過程中,輸出對(duì)象在不同的工作階段有不同的觸發(fā)條件。將數(shù)字輸出點(diǎn)的觸發(fā)條件轉(zhuǎn)化為內(nèi)部繼電器,模擬輸出的觸發(fā)條件轉(zhuǎn)換為內(nèi)部繼電器與數(shù)據(jù)。外設(shè)層是對(duì)設(shè)備的封裝、處理,是外部設(shè)備和外部設(shè)備功能封裝模塊的集合。復(fù)雜的PLC控制系統(tǒng)包含了多個(gè)外部設(shè)備,并且有些外部設(shè)備不止一個(gè)。以PLC為對(duì)象,外部設(shè)備可分為輸入設(shè)備、輸出設(shè)備與交互設(shè)備。輸入設(shè)備是系統(tǒng)的眼睛,實(shí)時(shí)監(jiān)控設(shè)備狀態(tài)。輸出設(shè)備是系統(tǒng)的動(dòng)作執(zhí)行設(shè)備,單個(gè)輸出設(shè)備可以有一個(gè)或多個(gè)動(dòng)作狀態(tài)。交互設(shè)備是與PLC有數(shù)據(jù)互傳的設(shè)備,可以是上位機(jī)設(shè)備或其他的通信設(shè)備。用面向?qū)ο蟮乃枷耄栽O(shè)備整體或設(shè)備動(dòng)作狀態(tài)為對(duì)象進(jìn)行封裝?梢源蟠鬁p少了程序的重復(fù)性,并且有助于外圍設(shè)備的擴(kuò)展與功能的增加。時(shí)序?qū)邮荘LC程序的主體,是各種功能動(dòng)作流程的集合。設(shè)備運(yùn)行時(shí),動(dòng)作過程必須嚴(yán)格地按時(shí)間順序執(zhí)行,而程序中時(shí)序過程實(shí)現(xiàn)必須面向過程。設(shè)備每一種現(xiàn)實(shí)功能都對(duì)應(yīng)一個(gè)動(dòng)作過程,與設(shè)備功能對(duì)應(yīng)的動(dòng)作過程屬于高級(jí)動(dòng)作流程。高級(jí)動(dòng)作流程可以重復(fù)調(diào)用低級(jí)的動(dòng)作流程,低級(jí)的動(dòng)作流程是復(fù)用性比較高的動(dòng)作流程。復(fù)用性動(dòng)作流程相對(duì)高級(jí)動(dòng)作流程步驟較少,可以將其以整體作為考慮對(duì)象,封裝成功能模塊,供高級(jí)動(dòng)作流程調(diào)用。高級(jí)動(dòng)作流程所對(duì)應(yīng)現(xiàn)實(shí)設(shè)備功能主要有:?jiǎn)?dòng)、復(fù)位與保護(hù)等功能[4]。啟動(dòng)功能可以通過人機(jī)交互界面的設(shè)置不同而擁有不同的設(shè)備功能;復(fù)位功能是按一定的時(shí)間順序恢復(fù)預(yù)定的初始狀態(tài);保護(hù)功能是通過監(jiān)控輸入設(shè)備的信號(hào)判斷設(shè)備是否故障,并做出相應(yīng)的處理。對(duì)于由輸入信號(hào)判斷不出故障可以由外部人工觸發(fā),并處理。時(shí)序?qū)泳帉懝δ軙r(shí)要求先設(shè)計(jì)保護(hù)功能,再編寫其它的動(dòng)作功能,以保護(hù)人身與設(shè)備安全。
3實(shí)例
以汽車微電機(jī)壓裝控制系統(tǒng)為例,闡述本文提出的PLC編程方法。圖2為壓裝控制系統(tǒng)原理圖。該系統(tǒng)主要由TPC7062TX觸摸屏、主控單元FPG-C32T2H、模擬量單元FP0-A21-F、位置控制單元FPG-PP21、伺服電機(jī)、位移傳感器等組成。該系統(tǒng)中控制最主要的輸出是控制伺服電機(jī)的脈沖輸出,脈沖輸出可直接以電機(jī)運(yùn)行狀態(tài)為對(duì)象進(jìn)行封裝,其余輸出在程序中不需要大量重復(fù)使用,可以直接單獨(dú)調(diào)用。圖3為單次壓裝的流程,前三個(gè)過程為同向運(yùn)動(dòng),為了提高工作效率,三個(gè)過程之間不能有停頓,“P點(diǎn)控制”可以達(dá)到此要求;慢速壓裝和快速退回運(yùn)動(dòng)方向相反,需要停頓,第三個(gè)過程完成后,直接退回到原點(diǎn),快速退回功能用“E點(diǎn)控制”可以實(shí)現(xiàn)。除此外電機(jī)常用的控制還有“JOG運(yùn)行(點(diǎn)動(dòng)控制)”。通過壓裝流程可知該系統(tǒng)“P點(diǎn)控制”為三段控制,以“P點(diǎn)控制”為對(duì)象時(shí),其“消息”由一個(gè)觸發(fā)條件、三個(gè)位置、三個(gè)速度組成;以“E點(diǎn)控制”為對(duì)象時(shí),其“消息”由一個(gè)觸發(fā)條件、一個(gè)位置、一個(gè)速度組成;以“JOG運(yùn)行”為對(duì)象時(shí),其“消息”由一個(gè)觸發(fā)條件、一個(gè)旋轉(zhuǎn)方向、一個(gè)速度組成。為了適應(yīng)于PLC動(dòng)作過程的時(shí)序性特點(diǎn),為每個(gè)對(duì)象添加一個(gè)單脈沖輸出信號(hào)。當(dāng)對(duì)象動(dòng)作執(zhí)行完成時(shí),發(fā)出一個(gè)單脈沖信號(hào),可以當(dāng)做下一步動(dòng)作的觸發(fā)條件。圖4為以FPWINGR為PLC編程軟件時(shí)的“E點(diǎn)控制”梯形圖。FPWINGR編程軟件不支持模塊封裝,但是不影響面向?qū)ο笏季S的使用。圖中R20為“E點(diǎn)控制”的觸發(fā)條件;雙字寄存器DT412的數(shù)據(jù)為“E點(diǎn)控制”的目標(biāo)脈沖頻率(速度);雙字寄存器DT414的數(shù)據(jù)為“E點(diǎn)控制”的目標(biāo)位置。對(duì)象封裝的目的是避免數(shù)據(jù)隨意訪問,可以繼承!癊點(diǎn)控制”中的電機(jī)屬性啟動(dòng)速度(500Hz)、加減速時(shí)間(100ms)、正反方向的定義是以參數(shù)的形式固定在其中。當(dāng)調(diào)用該對(duì)象時(shí),默認(rèn)的就繼承了其屬性。只需擴(kuò)展多個(gè)內(nèi)部繼電器觸發(fā)R20,就可用被多次調(diào)用繼承,即多態(tài)性。同理,可設(shè)計(jì)出“P點(diǎn)控制”與“JOG運(yùn)行”的梯形圖。輸出層與外設(shè)層是時(shí)序?qū)拥幕A(chǔ),時(shí)序?qū)影匆欢ǖ臅r(shí)間順序組合輸出層與外設(shè)層,并輔以必要的數(shù)據(jù)處理就形成了所需的功能。壓裝主流程主要有“P點(diǎn)控制”與“E點(diǎn)控制”模塊,加上時(shí)間延時(shí)、計(jì)數(shù)處理與力值峰值功能就形成了一個(gè)壓裝的大致功能,經(jīng)過后期的調(diào)試與小范圍的修改就完成了一個(gè)功能的編寫。依此方法編寫各種所需功能,完成整個(gè)程序后,整體調(diào)試功能。后期維護(hù)需要修改某部分功能時(shí),可以快速定位到要修改的層,再找到相應(yīng)的模塊;增加功能時(shí),可以迅速查到已有硬件的封裝模塊,直接在時(shí)序?qū)釉黾右蟮墓δ軙r(shí)序。
4結(jié)束語(yǔ)
通過分析與實(shí)際驗(yàn)證,用本文所提編程方法編寫PLC程序,程序邏輯更清晰,層次更分明,運(yùn)行更穩(wěn)定。同時(shí)為程序調(diào)試、后期程序維護(hù)、程序功能擴(kuò)展提供更有效而廣闊的空間。該方法適用于復(fù)雜控制系統(tǒng),也適用于簡(jiǎn)單控制系統(tǒng),使復(fù)雜的控制系統(tǒng)集體設(shè)計(jì)時(shí)分工更加明確,性能更穩(wěn)定。
參考文獻(xiàn)
。1]徐卓峰,王學(xué)軍.面向過程程序設(shè)計(jì)語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言及其特征比較[J].中州大學(xué)學(xué)報(bào),1997(1):64-67
。2]高云.計(jì)算機(jī)編程思想的發(fā)展研究[J].軟件導(dǎo)刊,2012,11(11):5-6
。3]張海藩.軟件工程導(dǎo)論[M].5版.北京:清華大學(xué)出版社,2008(2):203-211
[4]常海.基于OOP的PLC編程方法探討[J].無線互聯(lián)科技,2014(2):75-75
【現(xiàn)代工業(yè)控制中的PLC編程方法論文】相關(guān)文章:
板坯連鑄系統(tǒng)中PLC控制功能與技術(shù)實(shí)現(xiàn)論文05-21
電氣控制與plc技術(shù)實(shí)踐教學(xué)探究論文01-26
機(jī)床設(shè)計(jì)中的現(xiàn)代工業(yè)設(shè)計(jì)論文11-17
應(yīng)用PLC控制組合機(jī)床動(dòng)力實(shí)驗(yàn)臺(tái)論文06-27
PLC控制技術(shù)優(yōu)秀教學(xué)課件03-19