劉曉榮


摘 ? 要:文章詳細(xì)闡述了具有系統(tǒng)組態(tài)功能的模塊化軟件設(shè)計(jì)的思想和過(guò)程,并結(jié)合變頻器系統(tǒng)設(shè)計(jì)平臺(tái)給出了詳細(xì)的設(shè)計(jì)理念。實(shí)踐證明,該思想確實(shí)可行,并具有很大的推廣價(jià)值。
關(guān)鍵詞:軟件;模塊化;連接子;變頻器
模塊化軟件設(shè)計(jì)是程序設(shè)計(jì)過(guò)程中常用的方法和思想,簡(jiǎn)單地說(shuō),就是將一個(gè)大程序按照它的功能劃分為一個(gè)個(gè)相對(duì)獨(dú)立的小程序模塊,并定義好這些小程序模塊之間的關(guān)系,調(diào)試好各個(gè)框架之間的輸入、輸出連接關(guān)系。在本變頻器系統(tǒng)中,由于實(shí)現(xiàn)的功能較多,本文參照西門(mén)子傳動(dòng)系統(tǒng)的編程思想,實(shí)現(xiàn)具有系統(tǒng)組態(tài)功能的模塊化軟件設(shè)計(jì)[1]。
1 ? ?軟件模塊化的基本思想
1.1 ?模塊的分割
作為一個(gè)龐大的變頻器控制系統(tǒng),需要實(shí)現(xiàn)龐大的控制功能、通信功能。本研究站在系統(tǒng)的角度上,將實(shí)現(xiàn)不同控制的功能劃分為各個(gè)不同的子模塊,各模塊功能相對(duì)獨(dú)立,和其他子模塊之間信息交換量較小。把子模塊定義一個(gè)名詞—功能塊。對(duì)于該變頻器系統(tǒng),本研究將整個(gè)程序分割為以下主要功能塊:開(kāi)環(huán)(閉環(huán))控制功能、通信功能以及監(jiān)控和操作器控制功能。這些功能模塊相對(duì)獨(dú)立,可通過(guò)參數(shù)設(shè)置而自由聯(lián)結(jié)。
相互聯(lián)結(jié)相當(dāng)于將各個(gè)功能模塊用工程方法進(jìn)行連接,即用導(dǎo)線連接集成電路或其他元件。因此,各個(gè)功能模塊都有自己相應(yīng)的功能框圖。
1.2 ?各模塊的運(yùn)行
軟件運(yùn)行的微處理器要按順序完成各模塊(功能塊)的運(yùn)行,但為了系統(tǒng)運(yùn)行的經(jīng)濟(jì)性,在功能塊被執(zhí)行時(shí),本研究按照在系統(tǒng)中各模塊要求被執(zhí)行的快慢,有意將各模塊分為若干等級(jí),例如,分為9個(gè)等級(jí),執(zhí)行要求最快的為等級(jí)1,執(zhí)行最慢的為等級(jí)9。
為保證每個(gè)模塊能準(zhǔn)確地按時(shí)間周期執(zhí)行,本研究運(yùn)用中斷的概念,因?yàn)樵谙到y(tǒng)時(shí)鐘確定的情況下,對(duì)于某一中斷而言,兩次中斷之間的時(shí)間間隔是確定的。所以介紹一個(gè)時(shí)基的概念,本研究采用定時(shí)器T0中斷來(lái)說(shuō)明(當(dāng)然可以采用定時(shí)器T1或者外部中斷)。把每?jī)蓚€(gè)T0中斷之間的時(shí)間間隔(例如1.2 ms)定位為程序執(zhí)行的基本時(shí)間間隔—時(shí)基,以T0為基礎(chǔ),可以得到特別準(zhǔn)確的時(shí)間2T0,4T0,8T0,…,256T0等。明確起見(jiàn),把T0,2T0,4T0,8T0,…,256T0等時(shí)間段稱(chēng)之為時(shí)隙[2],時(shí)隙相關(guān)數(shù)據(jù)如表1所示。
這樣可以確定每個(gè)功能塊所處的時(shí)隙。
時(shí)隙按其優(yōu)先級(jí)順序處理,其中,時(shí)隙T2優(yōu)先級(jí)最高,T10優(yōu)先級(jí)最低。每個(gè)高優(yōu)先級(jí)的時(shí)隙能夠中斷低優(yōu)先級(jí)時(shí)隙。系統(tǒng)順序控制自動(dòng)地啟動(dòng)每個(gè)時(shí)隙。如果高優(yōu)先級(jí)時(shí)隙被啟動(dòng),則雖然其他時(shí)隙正進(jìn)行處理,在被中斷的時(shí)隙進(jìn)行進(jìn)一步處理之前,低優(yōu)先級(jí)的時(shí)隙被停止,然后處理高優(yōu)先級(jí)時(shí)隙。低優(yōu)先級(jí)時(shí)隙排成一行但不進(jìn)行處理,直到高優(yōu)先級(jí)時(shí)隙結(jié)束。
需要說(shuō)明的是,時(shí)隙T20僅作為存儲(chǔ)之用,在實(shí)際應(yīng)用時(shí)不被執(zhí)行。這樣可以把不需要執(zhí)行的功能塊時(shí)隙改為T(mén)20,節(jié)約系統(tǒng)時(shí)間,如在軟件中包含了“串口通信模塊”,但在某現(xiàn)場(chǎng)應(yīng)用時(shí)未使用此串口。
可以將其時(shí)隙改為T(mén)20,各功能塊的時(shí)隙可以根據(jù)需要進(jìn)行自由修改,如由塊改慢,或由慢改快。
時(shí)基T0的時(shí)間也可以進(jìn)行修改。時(shí)基T0并不一定要是定時(shí)器T0兩次中斷的時(shí)間間隔,可以為多次T0中斷的時(shí)間。
各時(shí)隙同T0的時(shí)間關(guān)系選擇偶數(shù)倍關(guān)系,而非奇數(shù)倍關(guān)系的原因是判斷更容易。在軟件中可以設(shè)定一個(gè)8位計(jì)數(shù)器,當(dāng)?shù)?位為1時(shí),執(zhí)行時(shí)隙為1×T0的時(shí)隙T2,第1位為1時(shí),執(zhí)行時(shí)隙為2×T0的時(shí)隙T3。以此類(lèi)推,判斷時(shí)只按位判斷,各位正好按照256,128,64,32,16,8,4,2,1碼編碼。
1.3 ?模塊內(nèi)部的參數(shù)設(shè)定
軟件的模塊化不僅體現(xiàn)在模塊的分割上,而且還體現(xiàn)在模塊內(nèi)部,圖1給出了某個(gè)功能塊或功能塊的一部分。
圖1右上角橢圓型框表明該功能塊所處的時(shí)隙。內(nèi)部又引入了一堆代號(hào)為P×××,K×××,B×××的參數(shù)。在軟件中,它們有以下幾種參數(shù):
這些參數(shù)其實(shí)就是變量,編程時(shí)只需要按其尋址方式進(jìn)行,而變量取值可以進(jìn)行修改,故稱(chēng)參數(shù)。其中,P,H參數(shù)為設(shè)定參數(shù),分為兩種尋址方式:立即尋址和間接尋址。圖1中P235,P240,U953.14為直接尋址方式,而P228為間接尋址方式。P228=[KK0152],即KK0152的內(nèi)容為多少,則P228的值是多少。
B××××開(kāi)關(guān)量連接器參數(shù),K××××連接器參數(shù)(16位),KK××××雙連接器參數(shù)(32位)是某一特定功能的輸出量,例如,圖1中B0310為從460頁(yè)功能圖輸出的速度調(diào)節(jié)器釋放與否位,K0153為圖1中速度調(diào)節(jié)器輸出量。
B××××,K××××和KK××××參數(shù)作為連接器參數(shù),可以被設(shè)定參數(shù)P,H,U,L以間接尋址的方式所設(shè)定。
一旦設(shè)定參數(shù)P,H,U,L設(shè)置不同的B××××,K××××和KK××××參數(shù),則構(gòu)成了不同的框圖、不同的電路。因此,除特定功能的固定連接之外,整個(gè)功能塊內(nèi)部都是特別自由、松散的若干塊,使用者可根據(jù)不同的需要,通過(guò)設(shè)定P,H,U,L構(gòu)成自己理想的電路。
通過(guò)輸出量控制的連接子,把需要的量輸出至模擬量口或開(kāi)關(guān)量口輸出,實(shí)現(xiàn)不同的控制功能。用該思想可以想象把任何需要設(shè)定的量或接口都初始化為不同的可設(shè)定參數(shù),如電源電壓、電源頻率、輸出電壓等,可以實(shí)現(xiàn)用一種軟件實(shí)現(xiàn)不同種設(shè)備的控制思想。但需要注意的是,設(shè)定參數(shù)需要事先設(shè)定上、下限,以防止非正常數(shù)據(jù)的輸入。設(shè)定參數(shù)的缺省值也是必要的,特別是出廠設(shè)定時(shí)顯得更加重要。
1.4 ?自由連接子的實(shí)現(xiàn)
自由連接子的實(shí)現(xiàn),其實(shí)質(zhì)是如何用設(shè)定參數(shù)把連接變量連接過(guò)來(lái)的方法。事先在程序中開(kāi)辟兩個(gè)變量表,K變量表和B變量表。分別為K0000,K0001,K0002,…,(K參數(shù)和KK參數(shù)公用一個(gè)變量表,因?yàn)镵參數(shù)和KK參數(shù)的序號(hào)是不重復(fù)的);B0000,B0001,B0002,…,尋址B參數(shù)或K參數(shù)時(shí),首先,將指針指向B0000或K0000地址,其次,再設(shè)定到設(shè)定參數(shù)的數(shù)值作為偏移量,按該偏移量間接尋址即可實(shí)現(xiàn)連接。
需要說(shuō)明的是:編程時(shí),B參數(shù)表、K參數(shù)表,需要實(shí)現(xiàn)設(shè)定初值。因?yàn)锽參數(shù)、K參數(shù)是某一特定功能的輸出量,所以在程序運(yùn)行過(guò)程中,B參數(shù)、K參數(shù)應(yīng)該自動(dòng)刷新。整個(gè)一套軟件的參數(shù)不能重復(fù),所以自由連接可以在同一功能塊間、不同功能塊間自由連接,即時(shí)把某一輸出又連到其輸入。P參數(shù)和r參數(shù)、H參數(shù)和d參數(shù)、U參數(shù)和n參數(shù)、L參數(shù)和c參數(shù)不重復(fù)。
2 ? ?結(jié)語(yǔ)
隨著科學(xué)技術(shù)的迅猛發(fā)展,對(duì)自動(dòng)化產(chǎn)品的模塊化、網(wǎng)絡(luò)化都有了更高的要求,軟件模塊化更是軟件編制、維護(hù)的最好選擇。本文提出的軟件思想,不但在變頻器產(chǎn)品上有很重要的應(yīng)用,也可以推廣應(yīng)用于其他控制產(chǎn)品、自動(dòng)化及工控產(chǎn)品中。
[參考文獻(xiàn)]
[1]武貴林.單元串聯(lián)中壓大功率變頻器的研究與設(shè)計(jì)[D].西安:西安科技大學(xué),2005.
[2]馮垛生,曾越蘭.無(wú)速度傳感器矢量控制原理與實(shí)踐[M].北京:機(jī)械工業(yè)出版社,1997.