李峰
摘 要:本文介紹了AB公司Logix5000開(kāi)發(fā)平臺(tái)自動(dòng)內(nèi)存管理的面向"對(duì)象"技術(shù)在電子皮帶秤控制系統(tǒng)中的應(yīng)用。應(yīng)用該技術(shù)在多傳感器、多秤臺(tái)聯(lián)合監(jiān)控的電子皮帶秤程序開(kāi)發(fā)中比以往開(kāi)發(fā)方式更高效,尤其在一拖多(一臺(tái)PLC控制器控制多臺(tái)電子皮帶秤輸送機(jī))的多傳感器、多秤臺(tái)聯(lián)合監(jiān)控的電子皮帶秤程序開(kāi)發(fā)中優(yōu)勢(shì)更突出,是傳統(tǒng)的開(kāi)發(fā)方式無(wú)法企及的。
關(guān)鍵詞:Logix5000 面向?qū)ο?Tag 結(jié)構(gòu)體 電子皮帶秤 PLC編程 數(shù)據(jù)結(jié)構(gòu)
PLC應(yīng)用程序由算法和數(shù)據(jù)結(jié)構(gòu)(也即數(shù)據(jù),Logix5000開(kāi)發(fā)環(huán)境里習(xí)慣稱(chēng)為標(biāo)簽Tag,定義變量稱(chēng)為定義標(biāo)簽)組成,通過(guò)應(yīng)用程序?qū)?shù)據(jù)的運(yùn)算,實(shí)現(xiàn)對(duì)數(shù)據(jù)的處理和設(shè)備的控制。簡(jiǎn)言之,PLC控制過(guò)程就是PLC應(yīng)用程序?qū)?shù)據(jù)進(jìn)行運(yùn)算處理,將運(yùn)算結(jié)果送到執(zhí)行單元執(zhí)行的過(guò)程。PLC程序開(kāi)發(fā)存在一個(gè)普遍的問(wèn)題是很多開(kāi)發(fā)平臺(tái)無(wú)法定義有意義的變量名,如AB公司SLC500系列PLC,它的應(yīng)用程序開(kāi)發(fā)平臺(tái)是Logix500,變量定義(如定義實(shí)數(shù):F12:0)是面向機(jī)器的,可讀性差。雖然可以對(duì)變量添加有意義的注釋?zhuān)黾涌勺x性,但是注釋無(wú)法上傳下載,要想上傳帶注釋的有實(shí)時(shí)數(shù)據(jù)的程序,除非隨時(shí)帶著有注釋的源程序上傳,就算帶有注釋?zhuān)勺x性也很差,給程序維護(hù)升級(jí)等帶來(lái)一定困難,而且在開(kāi)發(fā)測(cè)試階段就要制作好變量表,以便調(diào)試及以后維護(hù)升級(jí)時(shí)隨時(shí)查找,PLC應(yīng)用程序開(kāi)發(fā)人員對(duì)變量的識(shí)別讀取耗費(fèi)了大量的時(shí)間精力,開(kāi)發(fā)、修改及升級(jí)程序容易出錯(cuò)且效率低下。如何提高PLC應(yīng)用程序的開(kāi)發(fā)效率,讓程序開(kāi)發(fā)人員把更多精力放在對(duì)邏輯及算法的優(yōu)化上來(lái)成為亟待解決的問(wèn)題。AB公司的Logix5000開(kāi)發(fā)平臺(tái)支持面向“對(duì)象”的自動(dòng)內(nèi)存管理技術(shù),理論上可以解決了這一問(wèn)題,但在電子皮帶秤控制系統(tǒng)開(kāi)發(fā)中還沒(méi)有應(yīng)用。
1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概念
1.1 類(lèi)的概念
類(lèi)是對(duì)所有具有相同屬性的事物的抽象概念,相當(dāng)于模具;而對(duì)象是類(lèi)中的一個(gè)實(shí)體,相當(dāng)于是用模具制造出來(lái)的一個(gè)產(chǎn)品。同一類(lèi)設(shè)備的控制方法、信號(hào)反饋、故障檢測(cè)等操作相同或相似。
電子皮帶秤可以抽象為一個(gè)大類(lèi),其下有輸送機(jī)、電控系統(tǒng)二個(gè)子類(lèi),輸送機(jī)下面有傳感器、秤臺(tái)等對(duì)象,對(duì)象與包含它的類(lèi)之間、子類(lèi)與包含它的上一級(jí)別類(lèi)之間可以層層嵌套,反映出電子皮帶秤的真實(shí)屬性及對(duì)象與對(duì)象、對(duì)象與類(lèi)之間所屬關(guān)系。
1.2 封裝
封裝將數(shù)據(jù)與操作數(shù)據(jù)的源代碼有機(jī)結(jié)合成類(lèi)。封裝將對(duì)象的屬性和方法形成一個(gè)不可分割的整體;只保留有限的對(duì)外接口,并盡可能隱藏內(nèi)部的具體細(xì)節(jié)。封裝在對(duì)象與外界之間建立了一道屏障,使外界只能通過(guò)對(duì)象所提供的接口與對(duì)象發(fā)生聯(lián)系,而不能直接修改對(duì)象的屬性值。
一臺(tái)電子皮帶秤擁有多個(gè)傳感器,這些傳感器具有相同的屬性,可將這些屬性的數(shù)據(jù)結(jié)構(gòu)抽象出來(lái),封裝在一個(gè)類(lèi)或?qū)ο罄?。這就大大減少了變量的定義、優(yōu)化了數(shù)據(jù)結(jié)構(gòu),提高編程和維護(hù)的效率。
2 數(shù)據(jù)結(jié)構(gòu)的概念
2.1 數(shù)據(jù)(Data)
數(shù)據(jù)是外部世界信息的載體,它能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理,是計(jì)算機(jī)程序加工的原料。計(jì)算機(jī)程序處理各種各樣的數(shù)據(jù),可以是數(shù)值數(shù)據(jù),如整數(shù)、實(shí)數(shù);也可以是非數(shù)值數(shù)據(jù),如字符、文字、圖形、圖像、聲音等。
2.2 數(shù)據(jù)元素(Data Element)和數(shù)據(jù)項(xiàng)(Data Item)
數(shù)據(jù)元素是數(shù)據(jù)的基本單位,在計(jì)算機(jī)程序中通常被作為一個(gè)整體進(jìn)行考慮和處理。數(shù)據(jù)元素有時(shí)也被稱(chēng)為元素、結(jié)點(diǎn)、頂點(diǎn)、記錄等。一個(gè)數(shù)據(jù)元素可由若干個(gè)數(shù)據(jù)項(xiàng)(Data Item)組成。數(shù)據(jù)項(xiàng)是不可分割的、含有獨(dú)立意義的最小數(shù)據(jù)單位,數(shù)據(jù)項(xiàng)有時(shí)也稱(chēng)為字段(Field)或域(Domain)。
2.3 數(shù)據(jù)對(duì)象(Data Object)
數(shù)據(jù)對(duì)象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個(gè)子集。例如,整數(shù)數(shù)據(jù)對(duì)象是{0,±1,±2,±3,…},字符數(shù)據(jù)對(duì)象是{a,b,c,…}。
2.4 數(shù)據(jù)類(lèi)型(Data Type)
數(shù)據(jù)類(lèi)型是高級(jí)程序設(shè)計(jì)語(yǔ)言中的概念,是數(shù)據(jù)的取值范圍和對(duì)數(shù)據(jù)進(jìn)行操作的總和。數(shù)據(jù)類(lèi)型規(guī)定了程序中對(duì)象的特性。程序中的每個(gè)變量、常量或表達(dá)式的結(jié)果都應(yīng)該屬于某種確定的數(shù)據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型可分為兩類(lèi):一類(lèi)是非結(jié)構(gòu)的原子類(lèi)型,如 Logix5000的基本類(lèi)型(整型、實(shí)型、字符型、布爾型等);另一類(lèi)是結(jié)構(gòu)類(lèi)型在Logix5000中也稱(chēng)結(jié)構(gòu)體(如定義的DZC數(shù)據(jù)類(lèi)型),它的成分可以由多個(gè)結(jié)構(gòu)類(lèi)型組成,并可以分解。結(jié)構(gòu)類(lèi)型的成分可以是非結(jié)構(gòu)的,也可以是結(jié)構(gòu)的。
3 開(kāi)發(fā)背景
沙曲選煤廠2013年新投入使用使用的5臺(tái)電子皮帶秤控制系統(tǒng)控制器選用的是AB公司CompactLogix5000系列的1769-L32E,軟件平臺(tái)是AB公司Logix5000,版本V19.0。賽摩公司和天地常州科技有限公司第一次開(kāi)發(fā)了基于Logix5000軟件開(kāi)發(fā)平臺(tái)的電子皮帶秤控制系統(tǒng),但面臨著巨大的挑戰(zhàn),即在不足2個(gè)月如時(shí)間里,開(kāi)發(fā)出基于新的軟件平臺(tái)且要求優(yōu)于以前結(jié)構(gòu)和算法的電子皮帶秤控制系統(tǒng)。Logix5000開(kāi)發(fā)環(huán)境里有項(xiàng)功能,可以升級(jí)轉(zhuǎn)換Logix500的程序,轉(zhuǎn)換完成經(jīng)過(guò)修改調(diào)試可以在Logix5000平臺(tái)的CompactLogix控制器上使用,然后,這只是簡(jiǎn)單的升級(jí),電子皮帶秤的技術(shù)發(fā)展日新月異,很多新技術(shù)層出不窮,要將一些新技術(shù)應(yīng)用到新開(kāi)發(fā)的電子皮帶秤PLC程序里,且要求開(kāi)發(fā)出的電子皮帶秤PLC程序有很好的可維護(hù)性和擴(kuò)展性。
4支持Logix5000開(kāi)發(fā)平臺(tái)的PLC開(kāi)發(fā)電子皮帶秤的數(shù)據(jù)管理
(1)支持面向?qū)ο蟮淖詣?dòng)數(shù)據(jù)管理,用戶(hù)編程無(wú)需分配變量/記憶內(nèi)存地(常規(guī)PLC是必須的步驟),如定義的變量Rated_Flow_QP屬于內(nèi)部參數(shù)畫(huà)面Parameter,可以上傳下載,無(wú)需注釋也能看懂,指的是額定流量;
(2)支持各種形式的用戶(hù)自定義類(lèi)型,進(jìn)一步降低了應(yīng)用系統(tǒng)的抽象程度并提高了可維護(hù)性。
(3)對(duì)于具有相同屬性的對(duì)象,自定義的結(jié)構(gòu)體只需定義一次,如同樣的對(duì)象有幾個(gè)時(shí),只需將該結(jié)構(gòu)體定義成數(shù)組。
5編程
縷清了電子皮帶秤的數(shù)據(jù)結(jié)構(gòu),抽象出數(shù)據(jù)類(lèi)型,完成數(shù)據(jù)定義以后,編程變得相對(duì)簡(jiǎn)單且思路清晰。如對(duì)電子皮帶秤的每個(gè)傳感器實(shí)時(shí)碼值進(jìn)行均值濾波,且濾波深度可以在內(nèi)部參數(shù)表里隨時(shí)修改而無(wú)需修改源程序,實(shí)現(xiàn)起來(lái)只需幾條語(yǔ)句即可完成且運(yùn)行高效。
6 結(jié)束語(yǔ)
高效開(kāi)發(fā)一套復(fù)雜的電子皮帶秤PLC程序,除了熟悉開(kāi)發(fā)環(huán)境、熟練開(kāi)發(fā)語(yǔ)言的語(yǔ)法和語(yǔ)義外,還要有“面向?qū)ο蟆焙汀皵?shù)據(jù)結(jié)構(gòu)”的概念和思想,這樣在PLC程序的設(shè)計(jì)上才是最有效的。AB公司的Logix5000平臺(tái)自動(dòng)內(nèi)存管理的面向“對(duì)象”技術(shù)完全滿(mǎn)足這一要求,它的面向“對(duì)象”技術(shù),可以將電子皮帶秤的數(shù)據(jù)抽象出來(lái),將電子皮帶秤定義成一個(gè)數(shù)據(jù)類(lèi)型;它的自動(dòng)內(nèi)存管理系統(tǒng)會(huì)自動(dòng)存儲(chǔ)這些數(shù)據(jù)結(jié)構(gòu),開(kāi)發(fā)者無(wú)需知道數(shù)據(jù)具體存放的物理單元,因而開(kāi)發(fā)者可以把精力集中應(yīng)用在對(duì)算法的優(yōu)化及對(duì)新技術(shù)的應(yīng)用上。Logix5000平臺(tái)自動(dòng)內(nèi)存管理的面向“對(duì)象”技術(shù)在河南中煙南陽(yáng)卷煙廠電子皮帶秤PLC程序開(kāi)發(fā)中得到了成功實(shí)踐,開(kāi)發(fā)的5套電子皮帶秤控制系統(tǒng)運(yùn)行穩(wěn)定,5臺(tái)電子皮帶秤已運(yùn)行將近一年,一直保持很高的精度,各項(xiàng)指標(biāo)優(yōu)于預(yù)定目標(biāo)值。
參考文獻(xiàn)
[1]胡云.c++面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:電子工業(yè)出版社,2008.
[2]張逸群等.PLC編程的面向?qū)ο蟪绦蛟O(shè)計(jì)方法.上海:煤礦機(jī)電,2009(05).
[3]段恩澤,肖守柏.數(shù)據(jù)結(jié)構(gòu)(C/C#語(yǔ)言版)[M].北京:清華大學(xué)出版社,2010.