於宇琛 楊傳將 譚明波
(中國(guó)船舶重工集團(tuán)公司第七一二研究所,武漢 430064)
升船機(jī)主提升控制系統(tǒng)(以下簡(jiǎn)稱系統(tǒng))作為現(xiàn)代化大型 PLC控制系統(tǒng),結(jié)構(gòu)龐大,時(shí)序復(fù)雜,采用傳統(tǒng)的順序編程思想會(huì)使系統(tǒng)開發(fā)難度大,程序冗長(zhǎng),代碼重復(fù)利用率低,后期維護(hù)升級(jí)困難。隨著系統(tǒng)復(fù)雜程度和自動(dòng)化程度的不斷提高,編程思想也需要不斷的完善和發(fā)展。編程思想是指解決問題的思路,在系統(tǒng)分析和設(shè)計(jì)階段起到管理資源分配和規(guī)劃程序組織的作用[1]。面向?qū)ο笏枷胍云淠K重用、結(jié)構(gòu)緊湊和易維護(hù)升級(jí)等特點(diǎn),已經(jīng)在計(jì)算機(jī)程序設(shè)計(jì)領(lǐng)域中被廣泛應(yīng)用[2]。本文將面向?qū)ο笏枷胍氲?PLC控制系統(tǒng)分析和設(shè)計(jì)中來,應(yīng)用統(tǒng)一建模語言(Unified Modeling Language, UML),分析系統(tǒng)需求,找出問題域,建立問題域模型,確定程序總體結(jié)構(gòu)和流程,設(shè)計(jì)詳細(xì)功能及接口,達(dá)到規(guī)范開發(fā)過程,提高編程效率和方便維護(hù)升級(jí)的目的。
面向?qū)ο笏枷霃默F(xiàn)實(shí)世界中客觀存在的事物出發(fā),強(qiáng)調(diào)以問題域?yàn)橹行?,根?jù)事物的本質(zhì)特征,將事物抽象表示為對(duì)象,作為系統(tǒng)基本構(gòu)成單位,運(yùn)用繼承、封裝、多態(tài)等方法來構(gòu)造系統(tǒng),使其直接映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌[3]。統(tǒng)一建模語言是一種可視化的建模語言,能讓設(shè)計(jì)者用標(biāo)準(zhǔn)的、易于理解的方式建立起系統(tǒng)模型,并且提供有效的共享和交流機(jī)制[4]。
系統(tǒng)分析指描述和分析系統(tǒng)需求,找出問題域,建立用例圖,區(qū)分類和對(duì)象,通過交互視圖確定問題域中類的活動(dòng)和約束,通過類圖定義類的屬性和方法,形成面向?qū)ο蟮某绦蝮w系結(jié)構(gòu)[5]。
系統(tǒng)的功能需求主要表現(xiàn)在以下幾個(gè)方面:
1)上位機(jī)可以在遙控方式下控制船廂的運(yùn)行。2)柜門按鈕可以進(jìn)行安全系統(tǒng)的緊急制動(dòng)。3)觸摸屏可以進(jìn)行檢修操作或在現(xiàn)地方式下控制船廂的運(yùn)行。
系統(tǒng)參與者包括上位機(jī)、液壓站和其他子站等;用例包括緊急制動(dòng)、拖動(dòng)系統(tǒng)和通訊系統(tǒng)等。根據(jù)參與者、用例及其之間的相互關(guān)系,建立起用例圖。通過分析得出系統(tǒng)主要包括緊急制動(dòng)問題域、系統(tǒng)檢修問題域和船廂動(dòng)作問題域。系統(tǒng)用例圖如圖1所示。
圖1 系統(tǒng)用例圖
通過交互視圖和類圖對(duì)問題域進(jìn)行分析,確定問題域中各實(shí)體及其之間的關(guān)系,建立問題域的模型[5]。
在船廂動(dòng)作問題域中,通過分解船廂動(dòng)作問題域,得出該問題域主要由液壓系統(tǒng),潤(rùn)滑系統(tǒng),拖動(dòng)系統(tǒng),通訊系統(tǒng)這四個(gè)對(duì)象以及它們之間的相互關(guān)系構(gòu)成。本文采用交互視圖對(duì)問題域進(jìn)行描述,通過順序圖顯示對(duì)象之間相互傳遞消息的順序關(guān)系,通過協(xié)作圖描述這些對(duì)象的控制流程和協(xié)作關(guān)系[6]。船廂動(dòng)作的順序圖如圖2所示。當(dāng)船廂動(dòng)作時(shí),啟動(dòng)順序?yàn)闈?rùn)滑系統(tǒng),液壓系統(tǒng)和拖動(dòng)系統(tǒng)。停止順序?yàn)橥蟿?dòng)系統(tǒng),潤(rùn)滑系統(tǒng)和液壓系統(tǒng)。
圖2 船廂動(dòng)作順序圖
類是具有共同屬性、操作和語義特征的對(duì)象的集合,主要包括名稱、屬性和方法。類圖描述類基本信息和類之間的聯(lián)系。以潤(rùn)滑系統(tǒng)類為例,類的名稱是潤(rùn)滑系統(tǒng),每個(gè)潤(rùn)滑站都是唯一標(biāo)示和可區(qū)分的,都是潤(rùn)滑系統(tǒng)類的具體對(duì)象;潤(rùn)滑站對(duì)象的屬性表示潤(rùn)滑站的性質(zhì),包括潤(rùn)滑站號(hào)、潤(rùn)滑溫度、潤(rùn)滑壓力和啟停狀態(tài);潤(rùn)滑站對(duì)象的方法表示潤(rùn)滑站對(duì)象的行為,包括電機(jī)控制、溫度控制和壓力控制。系統(tǒng)類圖如圖3所示。
圖3 系統(tǒng)類圖
系統(tǒng)設(shè)計(jì)是根據(jù)系統(tǒng)分析結(jié)論,結(jié)合PLC編程軟件特點(diǎn),確定程序總體結(jié)構(gòu)和流程,設(shè)計(jì)對(duì)象的詳細(xì)功能以及接口。
概要設(shè)計(jì)包括層次結(jié)構(gòu)設(shè)計(jì)和總體功能設(shè)計(jì),是編程設(shè)計(jì)過程的重要環(huán)節(jié)。系統(tǒng)分析指出系統(tǒng)主要包括緊急制動(dòng)、系統(tǒng)檢修和船廂動(dòng)作三個(gè)問題域以及拖動(dòng)系統(tǒng)、液壓系統(tǒng)、潤(rùn)滑系統(tǒng)和通訊系統(tǒng)四個(gè)對(duì)象類。從系統(tǒng)整體規(guī)劃和組織結(jié)構(gòu)出發(fā),將系統(tǒng)分成兩層,上層是問題域?qū)?,下層是?duì)象類層,其中問題域和對(duì)象類分別對(duì)應(yīng)組織塊和功能塊,形成組織塊和功能塊相結(jié)合的組織結(jié)構(gòu)。這種結(jié)構(gòu)方便系統(tǒng)調(diào)試和后期升級(jí)維護(hù),對(duì)功能塊進(jìn)行修改和測(cè)試時(shí)不會(huì)對(duì)功能塊之間相互協(xié)作和共享信息的關(guān)系造成影響。
詳細(xì)功能設(shè)計(jì)包括問題域交互視圖和類圖的詳細(xì)設(shè)計(jì)。交互視圖對(duì)應(yīng)于程序流程圖,各功能塊協(xié)同配合實(shí)現(xiàn)系統(tǒng)功能需求。船廂動(dòng)作問題域程序流程圖如圖4所示。
圖4 船廂動(dòng)作問題域程序流程圖
類圖對(duì)應(yīng)于功能塊詳細(xì)設(shè)計(jì),主要確定功能塊的屬性和方法。潤(rùn)滑功能塊詳細(xì)設(shè)計(jì)包括參數(shù)設(shè)置和動(dòng)作控制。參數(shù)設(shè)置包括控制方式設(shè)置、時(shí)間設(shè)置、潤(rùn)滑壓力報(bào)警點(diǎn)設(shè)置,潤(rùn)滑溫度報(bào)警點(diǎn)設(shè)置,油位報(bào)警點(diǎn)設(shè)置;動(dòng)作控制包括電機(jī)動(dòng)作控制、潤(rùn)滑壓力控制,潤(rùn)滑溫度控制。
控制系統(tǒng)中,功能塊通過接口互相聯(lián)系。接口設(shè)計(jì)主要包括繼承機(jī)制和面向接口編程。繼承機(jī)制使同類的不同對(duì)象可以使用相同的功能塊和各自的背景數(shù)據(jù)塊,提高了程序的代碼重用性的同時(shí)滿足了現(xiàn)場(chǎng)同類對(duì)象間不用的工況要求。面向接口編程在保持功能塊接口不變的情況下,改變內(nèi)部程序不會(huì)影響系統(tǒng)總體功能及其他功能塊,在增加了功能塊內(nèi)聚度的同時(shí),提高了編程的靈活性和程序的可維護(hù)性??紤]到相似對(duì)象間的微小差別,在接口設(shè)計(jì)中需要留出足夠的裕量以滿足修改未來的升級(jí)改造需要。
本文將面向?qū)ο笏枷虢Y(jié)合到PLC控制系統(tǒng)程序開發(fā)中來,基于統(tǒng)一建模語言對(duì)系統(tǒng)進(jìn)行分析和設(shè)計(jì)。在實(shí)際工程應(yīng)用中,既規(guī)范了程序開發(fā)過程,減少了開發(fā)時(shí)間,又優(yōu)化了程序結(jié)構(gòu),簡(jiǎn)化了代碼,使程序邏輯更加清晰,可擴(kuò)展性更強(qiáng),滿足了程序運(yùn)行維護(hù)、更新升級(jí)和閱讀交流的需要,使程序開發(fā)向著規(guī)范化、模塊化和系統(tǒng)化方向發(fā)展,形成了一套基于面向?qū)ο笏枷氲南到y(tǒng)程序開發(fā)體系,并為將來的系統(tǒng)開發(fā)提供一個(gè)可復(fù)用性的平臺(tái)。
[1]廖常初. PLC編程及應(yīng)用[M]. 北京: 機(jī)械工業(yè)出版社,2003.
[2]汪成為. 面向?qū)ο蠓治?、設(shè)計(jì)及應(yīng)用[M]. 北京: 國(guó)防工業(yè)出版社, 1991.
[3]宋炎等譯. 面向?qū)ο蟮木幊讨改蟍M]. 北京: 電子工業(yè)出版社, 1996.
[4]王養(yǎng)庭. UML基礎(chǔ)與應(yīng)用[M]. 北京: 清華大學(xué)出版社,2006.
[5]徐鋒等譯. UML2.0實(shí)戰(zhàn)項(xiàng)目開發(fā)指南[M]. 北京: 人民郵電出版社, 2007.
[6]Erich Gamma 等. 設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M]. 北京: 機(jī)械工業(yè)出版社, 2000.