王雪燃 張換香
摘要:可編程邏輯控制器(PLC,Programmable Logic Controler)是一種典型的嵌入式系統(tǒng)。嵌入式系統(tǒng)規(guī)模越來越大,迫切需要引入軟件工程中的方法,該文將從以建模語言為基礎(chǔ)的形式化方法和基于構(gòu)件的方法兩方面進(jìn)行探究。
關(guān)鍵詞:可編程邏輯控制器;嵌入式系統(tǒng);建模語言;構(gòu)件方法
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)22-0225-03
1 形式化方法
形式化方法是基于數(shù)學(xué)的特種技術(shù),不同的形式化方法的數(shù)學(xué)基礎(chǔ)是不同的,有的以集合論和一階謂詞演算為基礎(chǔ)(如Z和 VDM),有的則以時(shí)態(tài)邏輯為基礎(chǔ)。形式化方法需要形式化規(guī)約說明語言的支持。在計(jì)算機(jī)科學(xué)和軟件工程領(lǐng)域使用,可適當(dāng)?shù)靥岣咴O(shè)計(jì)的可靠性和魯棒性,適合于軟件和硬件系統(tǒng)的描述、開發(fā)和驗(yàn)證。嵌入式系統(tǒng)的核心是由一個(gè)或幾個(gè)預(yù)先編程好以用來執(zhí)行少數(shù)幾項(xiàng)任務(wù)的微處理器或者單片機(jī)組成。與通用計(jì)算機(jī)能夠運(yùn)行用戶選擇的軟件不同,PLC[1]嵌入式系統(tǒng)上的軟件通常是暫時(shí)不變的,在建模時(shí)要考慮其復(fù)用性、易用性、系統(tǒng)級(jí)可信及代碼實(shí)現(xiàn)的自動(dòng)性。
建模語言是建模方法的重要內(nèi)容?;谇度胧杰浖姆磻?yīng)式特點(diǎn),目前在各種文獻(xiàn)上介紹過的過程建模語言已達(dá)數(shù)十個(gè),從表示風(fēng)格上可以分為以下幾種類型:邏輯規(guī)則,也稱為基于規(guī)則的語言或邏輯語言;命令式程序設(shè)計(jì)語言;自動(dòng)機(jī),包括有窮狀態(tài)自動(dòng)機(jī)和網(wǎng)人工智能等,具體如下:
1.1 Z語言
Z語言[2]是一種用數(shù)學(xué)文字或數(shù)學(xué)符號(hào)來描述計(jì)算機(jī)系統(tǒng)的規(guī)范化語言,它不但能應(yīng)用于計(jì)算機(jī)硬件系統(tǒng),而且也特別適用于計(jì)算機(jī)軟件系統(tǒng),它是目前使用最廣泛的一種形式化述語言,在軟件產(chǎn)業(yè)的一些大型項(xiàng)目中已經(jīng)獲得成功的應(yīng)用。在Z中有兩種語言:數(shù)學(xué)語言和模式(Schema)語言。
1.2 有限狀態(tài)機(jī)
有限狀態(tài)機(jī)[3]是一個(gè)時(shí)序邏輯電路,過去輸入部分和當(dāng)前輸入部分決定了它的輸出。除此之外,狀態(tài)寄存器也是有限狀態(tài)機(jī)的一部分,因?yàn)橛邢逘顟B(tài)機(jī)內(nèi)部的狀態(tài)需要記憶,狀態(tài)寄存器正好實(shí)現(xiàn)了此功能,輸入的信號(hào)以及寄存器的當(dāng)前狀態(tài)一起決定了寄存器的下一個(gè)狀態(tài),所以邏輯電路和寄存器邏輯一起決定了有限狀態(tài)機(jī)的功能和狀態(tài)。在PLC系統(tǒng)設(shè)計(jì)中,有限狀態(tài)機(jī)也是常用的建模語言之一。
1.3 Petri網(wǎng)
Petri網(wǎng)[4]是數(shù)學(xué)要求非常高的一種表示,是主要針對(duì)離散并行系統(tǒng)的設(shè)計(jì)而出現(xiàn)的。Petri網(wǎng)有非常嚴(yán)格的圖形表達(dá)方式和數(shù)學(xué)表達(dá)方式,既有分析能力,又有描述功能,很適合描述異步的、并發(fā)的計(jì)算機(jī)系統(tǒng)模型。PLC系統(tǒng)規(guī)模大、控制裝置眾多且分布廣泛,系統(tǒng)的體系結(jié)構(gòu)的設(shè)計(jì)中常常離不開使用Petri網(wǎng)技術(shù)。
1.4 Estelle
Estelle[5]是一種形式化描述語言,是對(duì)有限狀態(tài)機(jī)的擴(kuò)展,也被稱為擴(kuò)展有限狀態(tài)機(jī),此種語言是由ISO/TC97/SC21/WGI/SUBGROUP B定義的。Estelle是目前ISO/OSI的一個(gè)重要的形式描述語言。它是將系統(tǒng)分割成許多不同的模塊,然后將各個(gè)模塊互相連接在一起,每個(gè)模塊都是一個(gè)分布式的并發(fā)的信息系統(tǒng),都是利用一定的語言處理一些狀態(tài)變量以及交互活動(dòng)的參數(shù),PLC系統(tǒng)環(huán)境下處理通信協(xié)議的服務(wù)定義以及協(xié)議的描述,由于其易于理解,并且對(duì)實(shí)現(xiàn)具有直接的指導(dǎo)意義,所以也是在PLC的系統(tǒng)設(shè)計(jì)中有著舉足輕重的作用。
1.5 UML(Unified Modeling Lan-guage)
UML(Unified Modeling Lan-guage)[6]是典型的工程建模語言,廣泛的使用于工程領(lǐng)域,它除了可以用于非軟件領(lǐng)域的系統(tǒng) 更主要的是用于建立軟件系統(tǒng)的模型,在描述任何類型的系統(tǒng)是主要采用 面向?qū)ο髨D的方式實(shí)現(xiàn),PLC機(jī)械系統(tǒng)、企業(yè)機(jī)構(gòu)或業(yè)務(wù)過程,以及PLC處理復(fù)雜數(shù)據(jù)的信息系統(tǒng)、具有實(shí)時(shí)要求的PLC工業(yè)系統(tǒng)或工業(yè)過程等。
1.6 開發(fā)領(lǐng)域特定語言DSL(DomainSpecific Language)
DSL 是領(lǐng)域?qū)<沂褂玫膶S谜Z言,供非程序員使用,抽象級(jí)別更高,只能描述某領(lǐng)域內(nèi)的模型很少涉及計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu)的詳細(xì)知識(shí)結(jié)構(gòu),常見的有Hume、Mawl、動(dòng)態(tài)自然景觀描述語言等,分別用在實(shí)時(shí)嵌入式系統(tǒng)描述、表單服務(wù)描述等方面,如基于領(lǐng)域模型的PLC過程控制軟件開發(fā)方法,使用過程控制描述語言Proc Graph建模,自動(dòng)的生成PLC代碼。
2 構(gòu)件化建模方法
要設(shè)計(jì)高效的PLC嵌入式系統(tǒng),建模語言固然重要,但更重要的是支撐設(shè)計(jì)過程的工程方法。PLC嵌入式系統(tǒng)對(duì)環(huán)境的要求較高,隨著環(huán)境的變化,計(jì)算過程也會(huì)發(fā)生較明顯的變化,構(gòu)件化建模方法[7]是一種適合設(shè)計(jì)PLC嵌入式系統(tǒng)的有效方法, PLC嵌入式系統(tǒng)里有各不相同的計(jì)算模型,各個(gè)計(jì)算模型都會(huì)發(fā)生相互交互,交互實(shí)質(zhì)上就是各個(gè)構(gòu)建之間的通信,另外PLC嵌入式系統(tǒng)的軟件一方面很復(fù)雜,另一方面軟件具有分布式的特點(diǎn),通信過程要靠不同的工業(yè)網(wǎng)絡(luò)或者是總線實(shí)現(xiàn),也是適用構(gòu)件化方法的一個(gè)重要原因。另外構(gòu)件化設(shè)計(jì)方法在設(shè)計(jì)PLC嵌入式系統(tǒng)中有著與眾不同的優(yōu)勢(shì),由于軟件的成本低于硬件,再加上PLC嵌入式系統(tǒng)設(shè)計(jì)過程相對(duì)復(fù)雜,所以設(shè)計(jì)師們總是在想方設(shè)法用軟件模塊取代硬件功能模塊,使得好的構(gòu)件可以重復(fù)使用減少開發(fā)費(fèi)用,縮短開發(fā)時(shí)間;構(gòu)件之間可以動(dòng)態(tài)的重新組合,結(jié)構(gòu)清晰;可以將協(xié)同和計(jì)算分開,并且接口分明;各個(gè)構(gòu)件都有不同的屬性,設(shè)計(jì)者可以將已有的屬性重新組合或連接,設(shè)計(jì)一個(gè)新的滿足用戶需求的新系統(tǒng),在設(shè)計(jì)過程中關(guān)鍵要解決的問題是構(gòu)件化理論、模型和輔助工具。
2.1 PLC緒論式系統(tǒng)
緒論式系統(tǒng)是異質(zhì)系統(tǒng),異質(zhì)的計(jì)算模型、異質(zhì)的交互、異質(zhì)的抽象層次是異質(zhì)系統(tǒng)的三個(gè)特征表現(xiàn),具體如:離散模型和連續(xù)模型,廣播、同步、函數(shù)調(diào)用等,統(tǒng)一語義模型是設(shè)計(jì)過程中主要做的工作,想表達(dá)上層的異質(zhì)模型,通過統(tǒng)一的基于語法的元模型實(shí)現(xiàn),用于混合復(fù)雜的控制系統(tǒng)的實(shí)現(xiàn)。
2.2 嵌入式系統(tǒng)結(jié)構(gòu)分析設(shè)計(jì)語言AADL(Architecure analysis design language)標(biāo)準(zhǔn)
AADL[7] 通過構(gòu)件屬性描述非功能性質(zhì),構(gòu)件、連接等概念表述系統(tǒng)體系結(jié)構(gòu),在歐美工業(yè)領(lǐng)域得到了廣泛應(yīng)用。AADL大部分通過自然語言和例子解釋,一少部分語言用到形式化語義,構(gòu)件與接口的契約關(guān)系靠接口自動(dòng)機(jī)方法描述,通過把不相容狀態(tài)的接口機(jī)去除,將剩余接口機(jī)進(jìn)行組合得到,并檢查構(gòu)件之間的兼容性問題。
2.3 BIP(Behavior,Interaction,Priority)構(gòu)件化設(shè)計(jì)方法
BIP[8–11]是法國(guó)Verimag實(shí)驗(yàn)室提出的設(shè)計(jì)方法,是一種高級(jí)構(gòu)件化的設(shè)計(jì)方法,BIP語言有著明確的形式語義、強(qiáng)大的表達(dá)能力及其優(yōu)先級(jí)機(jī)制,再加上PLC軟件的專業(yè)書知識(shí),基于BIP的PLC系統(tǒng)設(shè)計(jì)方法表現(xiàn)出強(qiáng)大的優(yōu)勢(shì),每個(gè)構(gòu)件都被詳細(xì)地描述了其內(nèi)部細(xì)節(jié),是行為、交互、優(yōu)先級(jí)的疊加產(chǎn)物。BIP語言有著強(qiáng)大的建模能力、構(gòu)件化機(jī)制和嚴(yán)格的形式化語義,是建立PLC系統(tǒng)的硬件模型和結(jié)構(gòu)模型的重要方法。
2.3.1 BIP系統(tǒng)特征建模
PLC系統(tǒng)是軟硬件混合的復(fù)雜系統(tǒng),其中軟件的執(zhí)行不僅受硬件平臺(tái)的影響,還受環(huán)境的影響,首先需要將硬件平臺(tái)抽象成模型,以及將環(huán)境建成模型,所以共三層模型,具體如圖1所示。
PLC中的軟件在反復(fù)的循環(huán)運(yùn)行。第一層,采集現(xiàn)場(chǎng)信號(hào)或數(shù)據(jù),存入輸入映像寄存器中。第二層,讀取用戶存儲(chǔ)器中的指令,逐條執(zhí)行讀取的存儲(chǔ)器中的指令,將計(jì)算結(jié)果輸出。第三層,待所有指令執(zhí)行完畢,輸出到端子,驅(qū)動(dòng)部件執(zhí)行命令。
2.3.2 函數(shù)調(diào)用建模
PLC軟件具有良好的模塊化特征,每個(gè)模塊還可以調(diào)用其他函數(shù)或功能塊,但函數(shù)不能調(diào)用其他函數(shù)或功能塊,函數(shù)調(diào)用的一般模式如圖2所示。通過 call端口,在主程序模型中,采用廣播的方式執(zhí)行調(diào)用,被調(diào)用構(gòu)件接收到 call 端口的信號(hào)后,執(zhí)行程序。待程序執(zhí)行到尾部結(jié)束,發(fā)送結(jié)束信號(hào),將結(jié)果通過 ret端口返回。
2.3.3 定時(shí)器建模
實(shí)時(shí)性PLC嵌入式系統(tǒng)的重要特征。對(duì)時(shí)間約束的要求相當(dāng)高。PLC內(nèi)部有定時(shí)器來實(shí)現(xiàn)時(shí)間約束,在PLC-BIP中,用tick信號(hào)模擬時(shí)鐘變量,表達(dá)時(shí)間的概念。所有的構(gòu)件想表達(dá)時(shí)間都有tick端口,互相連通。具體模型如圖3所示。
3 PLC雙門控制案例
雙門是指無塵房間的入口兩道門,雙門的物理結(jié)構(gòu)如圖4所示,PLC雙門控制系統(tǒng)如圖5所示,為防止灰塵進(jìn)入房間,雙門不能同時(shí)打開,當(dāng)某人想進(jìn)入房間時(shí),首先在門外按下S1按鈕,PLC得到button1信號(hào),然后計(jì)算得到Open Door1命令,發(fā)送給門1。然后人可以從門1進(jìn)入。門1在3秒之后自動(dòng)關(guān)閉,緊接著門2打開,同樣等待3秒鐘關(guān)閉。光電傳感器是用來感知大門附近是否有人。如果有人靠近,信號(hào)sensor1和sensor2為0。
3.1 對(duì)PLC控制器建模
PLC控制器自動(dòng)機(jī)模型如圖6所示,M0為入口,button1或button3傳入信號(hào)時(shí),轉(zhuǎn)入M01。然后控制器向門1發(fā)送命令,并且將Mu Ex2賦值為0。此時(shí)表示門2不能打開。然后當(dāng)控制器收到完全打開的信號(hào)后即刻啟動(dòng)計(jì)時(shí)器,進(jìn)入M2狀態(tài)。此時(shí)時(shí)間約束為t <=3。當(dāng)t 為3, sensor1為1時(shí),轉(zhuǎn)入M3狀態(tài),并發(fā)出關(guān)門命令給門1。具體軌跡如下:
4 結(jié)束語
該文探究了PLC軟件建模方法,針對(duì)PLC軟件的特點(diǎn),給出了6種形式化方法和3種結(jié)構(gòu)化方法,根據(jù)PLC雙門控制案例,給出了PLC軟件的建模實(shí)踐,分別對(duì)各種特征建模進(jìn)行總結(jié),方便用戶建立系統(tǒng)級(jí)模型,使得所建系統(tǒng)模型符合實(shí)際的PLC軟件和平臺(tái)特征。
參考文獻(xiàn):
[1] 胡學(xué)林. 可編程控制器原理與應(yīng)用[M].北京: 電子工業(yè)出版社, 2007.
[2] Lightfoot D. Formal specification using Z[J]. Macmillan, 1991, 35 (2): 147-147.
[3] Alur R, Dill D L. A theory of timed automata[J]. Theoretical Computer Science, 1994, 126(2): 183-235.
[4] Peterson J. Petri Net Theory and the Modeling of Systems[J]. Computer Journal, 2010, 25(1).
[5] Budkowski S, Dembinski P. An introduction to Estelle: a specification language for distributedsystems[J]. Computer Networks, Isdn Systems, 1987, 14(1): 3-23.
[6] The UML homepage[EB/OL]. http://www.uml.rrg/.
[7] Feiler P, Gluch D, Hudak J. The architecture analysis & design language (AADL): An intro-duction[R]. Technical report, DTIC Document, 2008.
[8] G ¨o?ler G, Graf S, Majster-Cederbaum M E, et al. An Approach to Modelling and Verificationof Component Based Systems[J]. Proceedings of SOFSEM, 2007(1): 295-308.
[9] Basu A, Bozga M, Sifakis J. Modeling Heterogeneous Real-time Components in BIP[C]. Proceedings of SEFM, 2008: 3-12.
[10] Poulhi`es M, Pulou J, Rippert C, et al. A Methodology and Supporting Tools for the Devel-opment of Component-Based Embedded Systems[C]// Proceedings of Monterey Workshop, 2008: 75-96.
[11] Basu A, Bensalem S, Bozga M, et al. Rigorous Component-Based System Design Using theBIP Framework[J]. IEEE Software, 2015, 28(3): 41-48.
【通聯(lián)編輯:謝媛媛】