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