版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 畢 業(yè) 論 文</p><p> 題 目: 電力系統(tǒng)設(shè)計-通訊系統(tǒng)設(shè)計 </p><p> 作 者: 學(xué) 號: </p><p> 系 : </p><p> 專 業(yè):
2、 </p><p> 班 級: </p><p> 指導(dǎo)者: </p><p> 評閱者: </p><p><b> 年 月</b>
3、;</p><p> 畢業(yè)設(shè)計(論文)中文摘要</p><p><b> 目 次</b></p><p><b> 1 引言1</b></p><p> 2 電力系統(tǒng)分析1</p><p><b> 2.1 定義1</b></
4、p><p> 2.2 電力系統(tǒng)圖1</p><p> 2.3 發(fā)展簡況2</p><p><b> 2.4系統(tǒng)構(gòu)成2</b></p><p> 3 電力系統(tǒng)的運行和控制3</p><p> 3.1 電力系統(tǒng)的運行3</p><p> 3.2 電力系統(tǒng)的控
5、制4</p><p> 3.3安全控制按其功能分類5</p><p> 3.4 提高系統(tǒng)穩(wěn)定的基本措施5</p><p> 4 計算機(jī)監(jiān)控系統(tǒng)5</p><p> 4.1 星型網(wǎng)絡(luò)5</p><p> 4.2 擴(kuò)展環(huán)型網(wǎng)絡(luò)6</p><p> 5 Delphi在電力系
6、統(tǒng)中的應(yīng)用6</p><p> 5.1 主控程序(PTX)7</p><p> 5.2 GPRSServer10</p><p> 5.3 ClientIn18</p><p> 5.4 ServerIn18</p><p> 6 ActiveX控件22</p><
7、p> 6.1 COM技術(shù)規(guī)范的發(fā)展史22</p><p> 6.2 Active 舉例23</p><p><b> 結(jié)論31</b></p><p><b> 致謝32</b></p><p><b> 參考文獻(xiàn)33</b></p>
8、<p><b> 1 引言</b></p><p> 隨著經(jīng)濟(jì)的發(fā)展,社會的進(jìn)步,計算機(jī)越來越深入到我們?nèi)粘5墓ぷ鲗W(xué)習(xí)及生活中,成為我們?nèi)粘I钪胁豢扇鄙俚妮o助工具。隨著科學(xué)技術(shù)的不斷提高,計算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。它已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息管理、輔助設(shè)計、圖形圖像處理
9、、教育培訓(xùn)以及游戲娛樂等。各行各業(yè)的人們無須經(jīng)過特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發(fā)適合自己特殊需求的軟件。以前開發(fā)Windows應(yīng)用軟件是專業(yè)人員的工作,需要掌握許多專業(yè)知識和經(jīng)過特殊的培訓(xùn)才能勝任?,F(xiàn)在不同了,即使你沒有接受過嚴(yán)格的程序設(shè)計訓(xùn)練,使用Delphi編程語言也一樣能夠開發(fā)出功能強(qiáng)大、適合自己特殊需求的應(yīng)用程
10、序了。Delphi編程語言繼承了其他語言易學(xué)易用的特點,特別適合于初學(xué)者學(xué)習(xí)Windows系統(tǒng)編程。 </p><p><b> 2 電力系統(tǒng)分析</b></p><p><b> 2.1 定義</b></p><p> 由發(fā)電、變電、輸電、配電和用電等環(huán)節(jié)組成的電能生產(chǎn)、傳輸、分配和消費的系統(tǒng)。由發(fā)電、輸電、變電
11、、配電和用電等環(huán)節(jié)組成的電能生產(chǎn)與消費系統(tǒng)。它的功能是將自然界的一次能源通過發(fā)電動力裝置轉(zhuǎn)化成電能,再經(jīng)輸電、變電和配電將電能供給到各用戶。為實現(xiàn)這一功能,電力系統(tǒng)在各個環(huán)節(jié)和不同層次還具有相應(yīng)的信息與控制系統(tǒng),對電能的生產(chǎn)過程進(jìn)行丈量、調(diào)節(jié)、控制、保護(hù)、通訊和調(diào)度,以保證用戶獲得安全、經(jīng)濟(jì)、優(yōu)質(zhì)的電能。</p><p><b> 2.2 電力系統(tǒng)圖</b></p><
12、p> 由發(fā)電、變電、輸電、配電和用電等環(huán)節(jié)組成的電能生產(chǎn)與消費系統(tǒng)。它的功能是將自然界的一次能源通過發(fā)電動力裝置(主要包括鍋爐、汽輪機(jī)、發(fā)電機(jī)及電廠輔助生產(chǎn)系統(tǒng)等)轉(zhuǎn)化成電能,再經(jīng)輸、變電系統(tǒng)及配電系統(tǒng)將電能供給到各負(fù)荷中心,通過各種設(shè)備再轉(zhuǎn)換成動力、熱、光等不同形式的能量,為地區(qū)經(jīng)濟(jì)和人民生活服務(wù)。由于電源點與負(fù)荷中心多數(shù)處于不同地區(qū),也無法大量儲存,故其生產(chǎn)、輸送、分配和消費都在同一時間內(nèi)完成,并在同一地域內(nèi)有機(jī)地組成一個整
13、體,電能生產(chǎn)必須時刻保持與消費平衡。因此,電能的集中開發(fā)與分散使用,以及電能的連續(xù)供給與負(fù)荷的隨機(jī)變化,就制約了電力系統(tǒng)的結(jié)構(gòu)和運行。據(jù)此,電力系統(tǒng)要實現(xiàn)其功能,就需在各個環(huán)節(jié)和不同層次設(shè)置相應(yīng)的信息與控制系統(tǒng),以便對電能的生產(chǎn)和輸運過程進(jìn)行丈量、調(diào)節(jié)、控制、保護(hù)、通訊和調(diào)度,確保用戶獲得安全、經(jīng)濟(jì)、優(yōu)質(zhì)的電能。建立結(jié)構(gòu)公道的大型電力系統(tǒng)不僅便于電能生產(chǎn)與消費的集中治理、同一調(diào)度和分配,減少總裝機(jī)容量,節(jié)省動力設(shè)施投資,且有利于地區(qū)能源
14、資源的公道開發(fā)利用,更大限度地滿足地區(qū)國民經(jīng)濟(jì)日益增長的用電需要。電力系統(tǒng)建設(shè)往往是國家及地區(qū)國民經(jīng)濟(jì)發(fā)展規(guī)劃的重要組成部分。電力系統(tǒng)</p><p><b> 2.3 發(fā)展簡況</b></p><p> 在電能應(yīng)用的初期,由小容量發(fā)電機(jī)單獨向燈塔、輪船、電力系統(tǒng)。</p><p> 車間等的照明供電系統(tǒng),可看作是簡單的住戶式供電系統(tǒng)。白
15、熾燈發(fā)明后,出現(xiàn)了中心電站式供電系統(tǒng),如1882年T.A.托馬斯·阿爾瓦·愛迪生在紐約主持建造的珍珠街電站。它裝有6臺直流發(fā)電機(jī)(總?cè)萘考s670千瓦),用110伏電壓供1300盞電燈照明。19世紀(jì)90年代,三相交流輸電系統(tǒng)研制成功,并很快取代了直流輸電,成為電力系統(tǒng)大發(fā)展的里程碑。20世紀(jì)以后,人們普遍熟悉到擴(kuò)大電力系統(tǒng)的規(guī)??梢栽谀茉撮_發(fā)、產(chǎn)業(yè)布局、負(fù)荷調(diào)整、系統(tǒng)安全與經(jīng)濟(jì)運行等方面帶來明顯的社會經(jīng)濟(jì)效益。于是,電
16、力系統(tǒng)的規(guī)模迅速增長。世界上覆蓋面積最大的電力系統(tǒng)是前蘇聯(lián)的同一電力系統(tǒng)。它東西橫越7000千米,南北直通3000千米,覆蓋了約1000萬平方千米的土地。中華人民共和國的電力系統(tǒng)從50年代開始迅速發(fā)展。到1991年底,電力系統(tǒng)裝機(jī)容量為14600萬千瓦,年發(fā)電量為6750億千瓦時,均居世界第四位。輸電線路以220千伏、330千伏和500千伏為網(wǎng)絡(luò)骨干,形成4個裝機(jī)容量超過1500萬千瓦的大區(qū)電力系統(tǒng)和9個超過百萬千瓦的省電力系統(tǒng),大區(qū)之
17、間的聯(lián)網(wǎng)工作也已開始。此外,1989年,臺灣省建立了裝機(jī)容量為1659萬千瓦的電力系統(tǒng)</p><p><b> 2.4系統(tǒng)構(gòu)成</b></p><p> 電力系統(tǒng)的主體結(jié)構(gòu)有電源、電力網(wǎng)絡(luò)和負(fù)荷中心。電源指各類發(fā)電廠、站,它將一次能源轉(zhuǎn)換成電能;電力網(wǎng)絡(luò)由電源的升壓變電所、輸電線路、負(fù)荷中心變電所、配電線路等構(gòu)成。它的功能是將電源發(fā)出的電能升壓到一定等級后輸送到
18、負(fù)荷中心變電所,再降壓至一定等級后,經(jīng)配電線路與用戶相聯(lián)。電力系統(tǒng)中網(wǎng)絡(luò)結(jié)點千百個交織密布,有功潮流、無功潮流、高次諧波、負(fù)序電流等以光速在全系統(tǒng)范圍傳播。它既能輸送大量電能,創(chuàng)造巨大財富,也能在瞬間造成重大的災(zāi)難性事故。為保證系統(tǒng)安全、穩(wěn)定、經(jīng)濟(jì)地運行,必須在不同層次上依不同要求配置各類自動控制裝置與通訊系統(tǒng),組成信息與控制子系統(tǒng)。它成為實現(xiàn)電力系統(tǒng)信息傳遞的神經(jīng)網(wǎng)絡(luò),使電力系統(tǒng)具有可觀測性與可控性,從而保證電能生產(chǎn)與消費過程的正常進(jìn)
19、行以及事故狀態(tài)下的緊急處理。</p><p> 3 電力系統(tǒng)的運行和控制</p><p> 3.1 電力系統(tǒng)的運行</p><p> 電力系統(tǒng)的運行狀態(tài)可以分成正常狀態(tài)和異常狀態(tài)兩種。正常狀態(tài)又可分為安全狀態(tài)和警戒狀態(tài);異常狀態(tài)又分成緊急狀態(tài)和恢復(fù)狀態(tài)。電力系統(tǒng)的運行包括了所有這些狀態(tài)及其相互間的轉(zhuǎn)移,如圖所示。 </p><p>&
20、lt;b> 電力系統(tǒng)運行</b></p><p> 安全狀態(tài) 系統(tǒng)的頻率、各節(jié)點的電壓、各元件的負(fù)荷均處于規(guī)定的允許值范圍內(nèi),并且一般的小擾動不致使運行狀態(tài)脫離正常運行狀態(tài)。由于目前電能尚不能大量存貯,任何瞬間必須保證發(fā)電、輸電、用電之間的平衡,而用電負(fù)荷又隨時會發(fā)生變化,所以正常安全狀態(tài)實際上始終處于一個動態(tài)的平衡之中,必須進(jìn)行正常的調(diào)整,包括頻率和電壓,即有功功率和無功功率的調(diào)整。&l
21、t;/p><p> 警戒狀態(tài) 系統(tǒng)整體仍處于安全的范圍內(nèi),但個別元件或地區(qū)的運行參數(shù)已臨近安全范圍的邊緣,擾動將使運行進(jìn)入緊急狀態(tài)。對處于警戒狀態(tài)的電力系統(tǒng)應(yīng)該采取預(yù)防控制,使之進(jìn)入安全狀態(tài)。</p><p> 緊急狀態(tài) 正常運行狀態(tài)的電力系統(tǒng)遭到擾動(包括負(fù)荷的變動和各種故障),電源和負(fù)荷之間的功率平衡遭到破壞而引起系統(tǒng)頻率和節(jié)點電壓超過了允許的偏移值,或元件的負(fù)擔(dān)超過了安全運行的限
22、制值,系統(tǒng)處于危機(jī)中。對處于緊急狀態(tài)下的電力系統(tǒng),應(yīng)該采取各種校正控制和穩(wěn)定控制措施,使系統(tǒng)盡可能回復(fù)到正常狀態(tài)。近來有人把緊急狀態(tài)進(jìn)一步分為耐受性危機(jī)(它允許持續(xù)幾秒到幾十分鐘)和穩(wěn)定性危機(jī)(它允許持續(xù)時間一般不超過10秒鐘)。這種細(xì)分有利于針對不同的危機(jī)采取不同的控制措施。</p><p> 恢復(fù)狀態(tài) 這時電力系統(tǒng)已被解列成若干個局部系統(tǒng),其中有些系統(tǒng)已經(jīng)不能保證正常地向用戶供電,但其他部分可以維持正常狀
23、態(tài);或者系統(tǒng)未被解列,但已不能滿足向所有的用戶正常供電,已有部分負(fù)荷被切除。當(dāng)處于緊急狀態(tài)下的電力系統(tǒng)不能通過校正和穩(wěn)定控制回復(fù)到正常狀態(tài)時,應(yīng)按對用戶影響最小的原則采取緊急控制措施,使之進(jìn)入恢復(fù)狀態(tài)。然后根據(jù)情況采取恢復(fù)控制措施,使系統(tǒng)回復(fù)到正常運行狀態(tài)。</p><p> 安全控制 預(yù)防性控制、校正控制、穩(wěn)定控制、緊急控制和恢復(fù)控制都以提高電力系統(tǒng)安全性為目標(biāo),所以統(tǒng)一稱為安全控制。</p>
24、<p> 由于供電中斷和電能質(zhì)量的低劣會給國民經(jīng)濟(jì)和人民生活帶來嚴(yán)重影響,所以電力系統(tǒng)的運行必須安全可靠、保證電能質(zhì)量和求取最大的經(jīng)濟(jì)性。</p><p> 為了提高電力系統(tǒng)的安全可靠性,要求系統(tǒng)有一定的備用容量以滿足負(fù)荷變動和事故的需要;要求合理配置無功功率電源;要求設(shè)備處于健康的狀態(tài),系統(tǒng)具有一定的穩(wěn)定性儲備,并配備各種必要的安全措施和裝置。 </p><p> 交流
25、電力系統(tǒng)的頻率、電流和電壓的正弦波形,以及各節(jié)點的電壓幅值是電能質(zhì)量的 3個基本指標(biāo)。為了保證電能質(zhì)量,必須采取電壓調(diào)整、頻率調(diào)整和抑制諧波的措施。</p><p> 電力系統(tǒng)調(diào)度 電力系統(tǒng)在保證安全可靠和電能質(zhì)量的前提下,還應(yīng)力求調(diào)整負(fù)荷,提高設(shè)備利用率,合理利用各種能源資源,實施經(jīng)濟(jì)運行,降低煤耗、廠用電和網(wǎng)絡(luò)損耗,以取得最大的經(jīng)濟(jì)效益。</p><p> 由于電力系統(tǒng)本身的特點
26、:集中的發(fā)電和分散的用電,電力系統(tǒng)分布于廣闊的地域而發(fā)、送、用之間的功率又要求嚴(yán)格的瞬時平衡,因而電力系統(tǒng)的運行需要統(tǒng)一而分級、分層的調(diào)度管理,需要一個和電能傳輸、分配系統(tǒng)相平行的信息采集、傳輸和處理的通信系統(tǒng),以實現(xiàn)正常的調(diào)整和各種安全、經(jīng)濟(jì)的控制。</p><p> 3.2 電力系統(tǒng)的控制</p><p> 電力系統(tǒng)安全控制的目的是采取各種措施使系統(tǒng)盡可能運行在正常運行狀態(tài)。在正常
27、運行 狀態(tài)下,調(diào)度人員通過制定運行計劃和運用計算機(jī)監(jiān)控系統(tǒng)(SCADA或EMs)實時進(jìn)行電力系統(tǒng)運行信息的收集和處理,在線安全監(jiān)視和安全分析等,使系統(tǒng)處于最優(yōu)的正常運行狀態(tài)。</p><p> 同時。在正常運行時,確定各項預(yù)防性控制,以對可能出現(xiàn)的緊急狀態(tài)提高處理能力。這些控制內(nèi)容包括:系統(tǒng)以額定工況運行調(diào)整發(fā)電機(jī)出力、切換網(wǎng)絡(luò)和負(fù)荷、調(diào)整潮流、改變保護(hù)整定值、切換變壓器分接頭等,使系統(tǒng)運行在最佳狀態(tài)。在系統(tǒng)發(fā)
28、生事故時有較高的安全水平當(dāng)電力系統(tǒng)一旦出現(xiàn)故障進(jìn)入緊急狀態(tài)后,則靠緊急控制來處理。這些控制措施包括繼電保護(hù)裝置正確快速動作和各種穩(wěn)定控制裝置等切除故障,防止事故擴(kuò)大,平衡有功和無功,將系統(tǒng)恢復(fù)到正常運行狀態(tài)或重新進(jìn)入正常運行狀態(tài)?!?lt;/p><p> 3.3安全控制按其功能分類 </p><p> 1、提高系統(tǒng)穩(wěn)定的措施有快速勵磁、電力系統(tǒng)穩(wěn)定器(ess)、電氣制動、快關(guān)汽機(jī)和切機(jī)、串
29、聯(lián)補償、靜止無功:ff ̄Osvq、超導(dǎo)電磁蓄能和直流 調(diào)制等?!?lt;/p><p> 2、維持系統(tǒng)頻率的措施有低頻減負(fù)荷、低頻降電壓、低頻自起動、抽水蓄能機(jī)組抵頻抽水改發(fā)電、低頻發(fā)電機(jī)解列、高頻切機(jī)、高頻減出力等。 </p><p> 3、預(yù)防線路過負(fù)荷的措施有過負(fù)荷切電源、過負(fù)荷切負(fù)荷等。 </p><p> 3.4 提高系統(tǒng)穩(wěn)定的基本措施 </p>
30、;<p> 1、加強(qiáng)電網(wǎng)網(wǎng)架,提高系統(tǒng)穩(wěn)定。線路輸送功率能力與線路兩端電壓之積成正比,而與線路阻抗成反比。減少線路電抗和維持電壓,可提高系統(tǒng)穩(wěn)定性。在線路上裝設(shè)串聯(lián)電容是一種有效的減少線路阻抗的方法。在長線路中間裝設(shè)靜止無功補償裝置 ̄svq。能有效地保持線路中間電壓水平(相當(dāng)于長線路變成兩段短線路),并快速調(diào)整系統(tǒng)無功。是提高系統(tǒng)穩(wěn)定性的重要手段?!?lt;/p><p> 2、電力系統(tǒng)穩(wěn)定控制和保護(hù)
31、裝置。提高電力系統(tǒng)穩(wěn)定性的控制可包括兩個方面:一是失去穩(wěn)定前,采取措施提高系統(tǒng)的穩(wěn)定性;二是失去穩(wěn)定后,采取措施重新恢復(fù)新的穩(wěn)定運行。</p><p> 所謂穩(wěn)定,是指電力系統(tǒng)可以連續(xù)不斷的向負(fù)荷供電的狀態(tài)。電力系統(tǒng)繼電保護(hù)的充足性、安全性、經(jīng)濟(jì)性和質(zhì)量是電力工業(yè)生產(chǎn)穩(wěn)定必須滿足的幾項基本要求。</p><p> 4 計算機(jī)監(jiān)控系統(tǒng)</p><p> 對于應(yīng)
32、用較為廣泛的星型和環(huán)型網(wǎng)絡(luò)進(jìn)行詳細(xì)分析并進(jìn)行擴(kuò)展,同時結(jié)合有、無主結(jié)構(gòu)分析其應(yīng)用性質(zhì).</p><p><b> 4.1 星型網(wǎng)絡(luò)</b></p><p> 由星形網(wǎng)絡(luò)組成的監(jiān)控系統(tǒng),各網(wǎng)絡(luò)節(jié)點通過中心交換機(jī)連接,同時考慮到冗余需要,利用另外一臺交換機(jī)組成雙網(wǎng)絡(luò),網(wǎng)絡(luò)工作原理如下:</p><p> 有主結(jié)構(gòu):現(xiàn)地控制單元有兩塊CPU模件
33、,實現(xiàn)該單元節(jié)點處的故障冗余,為主的CPU板實時采集各種信號,并針對故障信號采取相應(yīng)處理,同時將采集的信號量數(shù)字化,再傳送給主站;主站負(fù)責(zé)數(shù)據(jù)的接收,同時向操作員站送實時數(shù)據(jù),并將操作員站的命令下達(dá).</p><p> 無主結(jié)構(gòu):現(xiàn)地控制單元實時采集各種信號并針對故障信號采取相應(yīng)處理,主站作為數(shù)據(jù)服務(wù)器,定時向各現(xiàn)地控制單元節(jié)點要數(shù)據(jù)并記錄,操作員站通過交換機(jī)直接與現(xiàn)地控制單元通訊,傳送數(shù)據(jù)與命令.</p
34、><p> 星形網(wǎng)絡(luò)的優(yōu)點是結(jié)構(gòu)相對簡單,由于普遍通訊協(xié)議為TCP/IP,開發(fā)額外的系統(tǒng)應(yīng)用程序比較簡單,缺點是系統(tǒng)安全性能不高,若交換機(jī)壞,則網(wǎng)絡(luò)就面臨崩潰,對主站依賴性強(qiáng).此種網(wǎng)絡(luò)結(jié)構(gòu)在一些系統(tǒng)升級改造的電站應(yīng)用較多.</p><p> 4.2 擴(kuò)展環(huán)型網(wǎng)絡(luò)</p><p> 擴(kuò)展環(huán)型網(wǎng)絡(luò)是在環(huán)型網(wǎng)絡(luò)的基礎(chǔ)上,加上各其他功能節(jié)點,或通過轉(zhuǎn)換與其他應(yīng)用網(wǎng)絡(luò)連接,
35、而現(xiàn)地計算機(jī)控制依舊處于環(huán)型網(wǎng)絡(luò)上.</p><p> 由擴(kuò)展環(huán)型網(wǎng)絡(luò)組成的監(jiān)控系統(tǒng),各網(wǎng)絡(luò)節(jié)點通過環(huán)型鏈路交換數(shù)據(jù),利用兩條環(huán)鏈構(gòu)成冗余,除現(xiàn)地單元、操作員站外的其他應(yīng)用計算機(jī)屬于另一個TCP/IP網(wǎng),主站與應(yīng)用程序這些功能計算機(jī)通過協(xié)議轉(zhuǎn)換連接到兩個網(wǎng)絡(luò)中.網(wǎng)絡(luò)工作原理如下:</p><p> 此種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)較適合于無主結(jié)構(gòu),若應(yīng)用為有主結(jié)構(gòu),TCP/IP網(wǎng)段的信息交換將由于主站
36、性能限制而受到遲滯,對應(yīng)用快速性不利.</p><p> 在無主結(jié)構(gòu)模式下,現(xiàn)地控制單元實時采集各種信號并針對故障信號采取相應(yīng)處理,主站作為數(shù)據(jù)服務(wù)器,記錄各現(xiàn)地控制單元節(jié)點數(shù)據(jù),操作員站在環(huán)網(wǎng)上直接與現(xiàn)地控制單元通訊,傳送數(shù)據(jù)與命令.在環(huán)網(wǎng)之外的TCP/IP網(wǎng)絡(luò)通過與主站、應(yīng)用程序工作站通訊,取得各種信息并可發(fā)送命令.</p><p> 擴(kuò)展環(huán)型網(wǎng)絡(luò)的優(yōu)點是在結(jié)構(gòu)上,分層應(yīng)用明顯,各
37、節(jié)點功能清楚,系統(tǒng)安全性能高,兩個不同協(xié)議網(wǎng)段間的故障互相沒有影響,網(wǎng)絡(luò)穩(wěn)定性好.缺點結(jié)構(gòu)相對復(fù)雜,網(wǎng)絡(luò)投入較大,開發(fā)應(yīng)用程序時,需考慮到兩個網(wǎng)段的不同協(xié)議.目前國內(nèi)某在建大型水電站的計算機(jī)監(jiān)控系統(tǒng)采用的就是這種結(jié)構(gòu).</p><p> 5 Delphi在電力系統(tǒng)中的應(yīng)用</p><p> 這里主要講Delphi在這個工程里作為中間層起到的作用</p><p>
38、; 1.調(diào)用下層api函數(shù)。</p><p> 2.負(fù)責(zé)通訊(上位機(jī)和下位機(jī))。</p><p> 3.負(fù)責(zé)對下位機(jī)傳上來的數(shù)據(jù)進(jìn)行解碼,容錯和控制。</p><p> 4.負(fù)責(zé)對上位機(jī)下發(fā)的數(shù)據(jù)進(jìn)行解碼,容錯和控制。</p><p> 由于考慮到程序整體的穩(wěn)定性大致按功能分為:</p><p> 主控程序
39、(PTX):主要作用是控制這4個模塊的穩(wěn)定性。比如這4個模塊中任何一個崩潰了,需要自動重啟之。</p><p> 無線電接口程序(Server):主要作用和無線電發(fā)射機(jī)進(jìn)行交互,因為整 個工程是無線電和GPRS并用的。</p><p> GPRS接口程序(GPRSServer):主要作用和GPRS硬件模塊進(jìn)行交互。</p><p> ActiveX接口程
40、序(ServerIn):主要作用是和網(wǎng)頁中的ActiveX插件進(jìn) 行交互。</p><p> Java后臺接口程序(ClientIn):主要作用是和Java后臺進(jìn)行交互,當(dāng)然 java用的是jsp平臺。</p><p> 5.1 主控程序(PTX) </p><p> 這里用到了一個定時器Timer1,它的作用是每隔1s作一次
41、循環(huán)檢測,檢測上面4個模塊是否死機(jī)了,如果死機(jī)就把相應(yīng)的模塊啟動起來</p><p> procedure TFormTX.Timer1Timer(Sender: TObject);</p><p><b> var</b></p><p> dwExitCode:Dword;</p><p> fprocess
42、Exit:boolean;</p><p><b> begin</b></p><p> dwExitCode:=0;</p><p> fprocessExit:=GetExitCodeProcess(PProcInfo_SERVER.hProcess,dwExitCode);</p><p> if (f
43、processExit and (dwExitCode<>STILL_ACTIVE)) then //判斷相應(yīng)模塊是否退出了或者是狀態(tài)不為激活狀態(tài)了</p><p><b> begin</b></p><p> memo1.Lines.Add('Sever 進(jìn)程終止!');</p><p> CloseHan
44、dle(PProcInfo_SERVER.hThread);//殺線程</p><p> CloseHandle(PProcInfo_SERVER.hProcess);//殺進(jìn)程</p><p> ProccessSuccessful_SERVER;//重啟相應(yīng)的模塊</p><p> memo1.Lines.Add('Sever 進(jìn)程啟動!'
45、);</p><p><b> end;</b></p><p> dwExitCode:=0;</p><p> fprocessExit:=GetExitCodeProcess(PProcInfo_ServerIn.hProcess,dwExitCode);</p><p> if (fprocessExi
46、t and (dwExitCode<>STILL_ACTIVE)) then</p><p><b> begin</b></p><p> memo1.Lines.Add('ServerIn 進(jìn)程終止!');</p><p> CloseHandle(PProcInfo_ServerIn.hThread);&
47、lt;/p><p> CloseHandle(PProcInfo_ServerIn.hProcess);</p><p> ProccessSuccessful_ServerIn;</p><p> memo1.Lines.Add('ServerIn 進(jìn)程啟動!');</p><p><b> end;</
48、b></p><p> dwExitCode:=0;</p><p> fprocessExit:=GetExitCodeProcess(PProcInfo_ClientIn.hProcess,dwExitCode);</p><p> if (fprocessExit and (dwExitCode<>STILL_ACTIVE)) the
49、n</p><p><b> begin</b></p><p> memo1.Lines.Add('ClientIn 進(jìn)程終止!');</p><p> CloseHandle(PProcInfo_ClientIn.hThread);</p><p> CloseHandle(PProcInfo
50、_ClientIn.hProcess);</p><p> ProccessSuccessful_ClientIn;</p><p> memo1.Lines.Add('ClientIn 進(jìn)程啟動!');</p><p><b> end;</b></p><p> dwExitCode:=0;&
51、lt;/p><p> fprocessExit:=GetExitCodeProcess(PProcInfo_GPRSSERVER.hProcess,dwExitCode);</p><p> if (fprocessExit and (dwExitCode<>STILL_ACTIVE)) then</p><p><b> begin<
52、;/b></p><p> memo1.Lines.Add('GPRSSERVER 進(jìn)程終止!');</p><p> CloseHandle(PProcInfo_GPRSSERVER.hThread);</p><p> CloseHandle(PProcInfo_GPRSSERVER.hProcess);</p><
53、;p> ProccessSuccessful_GPRSSERVER;</p><p> memo1.Lines.Add('GPRSSERVER 進(jìn)程啟動!');</p><p><b> end;</b></p><p><b> end;</b></p><p>
54、上面的代碼中分為4個if 語句,每個if中有像ProccessSuccessful_SERVER,ProccessSuccessful_ServerIn,ProccessSuccessful_ClientIn,ProccessSuccessful_GPRSSERVER的函數(shù)</p><p> 我們看看其中一個的定義(其他三個函數(shù)意思基本一樣):</p><p> procedure T
55、FormTX.ProccessSuccessful_SERVER;</p><p><b> var</b></p><p> bSuccess:boolean;</p><p><b> begin</b></p><p> if findwindow('TFormServer
56、39;,nil)=0 then</p><p><b> begin</b></p><p> ZeroMemory(@sStartInfo_SERVER,sizeof(sStartInfo_SERVER)); //zero memory</p><p> //設(shè)置必要的進(jìn)程參數(shù)</p><p> sStartI
57、nfo_SERVER.cb:=sizeof(sStartInfo_SERVER);</p><p> seProcess_SERVER.nLength:=sizeof(seProcess_SERVER);</p><p> seProcess_SERVER.lpSecurityDescriptor:=Pchar(nil);</p><p> seProcess
58、_SERVER.bInheritHandle:=true;</p><p> seThread_SERVER.nLength:=sizeof(seThread_SERVER);</p><p> seThread_SERVER.lpSecurityDescriptor:=Pchar(nil);</p><p> seThread_SERVER.bInherit
59、Handle:=true;</p><p><b> //創(chuàng)建進(jìn)程</b></p><p> bSuccess:=CreateProcess(Pchar(nil),Pchar(ExtractFilePath(Paramstr(0))+'Server'),@seProcess_SERVER,@seThread_SERVER,</p>&
60、lt;p> false,CREATE_DEFAULT_ERROR_MODE,pchar(nil),pchar(nil),sStartInfo_SERVER,PProcInfo_SERVER);</p><p> if (not bSuccess)then</p><p> Memo1.Lines.Add('Server 服務(wù)器創(chuàng)建失敗!')</p>
61、<p><b> else</b></p><p> Memo1.Lines.Add('Server 服務(wù)器創(chuàng)建成功!');</p><p><b> end;</b></p><p><b> end;</b></p><p> 這個函數(shù)
62、是用來重啟相應(yīng)的4個模塊中的一個的,當(dāng)然最后一個步驟是當(dāng)PTX結(jié)束時要把4個模塊全部殺死。</p><p> procedure TFormTX.FormClose(Sender: TObject; var Action: TCloseAction);</p><p><b> begin</b></p><p> Timer1.Enab
63、led:=false;</p><p> TerminateProcess(PProcInfo_SERVER.hProcess,10);</p><p> PProcInfo_SERVER.hProcess:=0;</p><p> TerminateProcess(PProcInfo_GPRSSERVER.hProcess,10);</p>&
64、lt;p> PProcInfo_SERVER.hProcess:=0;</p><p> TerminateProcess(PProcInfo_ServerIn.hProcess,10);</p><p> PProcInfo_ServerIn.hProcess:=0;</p><p> TerminateProcess(PProcInfo_Clien
65、tIn.hProcess,10);</p><p> PProcInfo_ClientIn.hProcess:=0;</p><p> TerminateProcess(PProcInfo_DelayTime.hProcess,10);</p><p> PProcInfo_DelayTime.hProcess:=0;</p><p>
66、<b> end;</b></p><p> 5.2 GPRSServer</p><p> 為什么叫GPRSServer是因為這個模塊是和下層GPRS硬件模塊通訊所用。</p><p> 在這個模塊中我們將和GPRS通訊的所有細(xì)節(jié)全部封裝到wcomm_dll.dll動態(tài)連接庫中。</p><p> 這個動態(tài)
67、鏈接庫負(fù)責(zé)和下層具體通訊,包括UDP包的封裝,下層通訊隊列的維護(hù)和一些擴(kuò)展功能等等。</p><p><b> 具體代碼如下:</b></p><p> unit Unit_dll;</p><p><b> interface</b></p><p><b> uses</
68、b></p><p> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,</p><p> Dialogs, Menus, ComCtrls, ToolWin, StdCtrls, ImgList, ExtCtrls, NMUDP,winsock;</p><p> cons
69、t MAX_RECEIVE_BUF=1024; //最大接收緩沖區(qū)</p><p> const MAX_SEND_BUF=1024; //最大發(fā)送緩沖區(qū)</p><p> const gprs_dll='wcomm_dll.dll';</p><p> const gprs_smm='gprs_smm.dll';&
70、lt;/p><p> const misc='misc.dll';</p><p><b> type</b></p><p> // 用戶注冊信息結(jié)構(gòu)</p><p> gprs_user_info=record</p><p> m_userid:array[1..12
71、] of char; //終端模塊號碼</p><p> m_sin_addr:Cardinal; //終端模塊進(jìn)入Internet的代理主機(jī)IP地址</p><p> m_sin_port:word; //終端模塊進(jìn)入Internet的代理主機(jī)IP端口</p><p> m_local_addr:Card
72、inal; //終端模塊在移動網(wǎng)內(nèi)IP地址</p><p> m_local_port:word; //終端模塊在移動網(wǎng)內(nèi)IP端口</p><p> m_logon_date:array[1..20] of char; //終端模塊登錄時間</p><p> m_update_time:array[1..20]
73、of char; //終端模塊更新信息時間</p><p> m_status:byte; //終端模塊狀態(tài), 1 在線 0 不在線</p><p> //m_pid:array[1..12] of char;</p><p><b> end;</b></p><p><b&g
74、t; type</b></p><p><b> //用戶數(shù)據(jù)結(jié)構(gòu)</b></p><p> data_record=record</p><p> m_userid:array[1..12] of char;</p><p> m_recv_date:array[1..20] of char;&l
75、t;/p><p> m_data_buf:array[1..MAX_RECEIVE_BUF] of char;</p><p> m_data_len:word;</p><p> m_data_type:byte;</p><p><b> end;</b></p><p><b>
76、; type</b></p><p> Arr12 = array[1..12] of Char;</p><p> Arr16 = array[1..16] of Char;</p><p> Arr256 = array[1..256] of Char;</p><p> Arr512 = ar
77、ray[1..512] of Char;</p><p> Arr1024 = array[1..1024] of Char;</p><p> //下面定義的時函數(shù)類型,用于指向動態(tài)庫中的函數(shù)</p><p> function start_gprs_server(a:HWND;b:Cardinal;c:Integer;d:PChar):Integer;s
78、tdcall;</p><p> function start_net_service(a:HWND;b:Cardinal;c:Integer;d:PChar):Integer;stdcall;</p><p> function do_read_proc(var a:data_record;b:PChar;c:boolean):Integer;stdcall;</p>
79、<p> procedure cancel_read_block();stdcall;</p><p> function stop_gprs_server(a:PChar):Integer;stdcall;</p><p> function stop_net_service(a:PChar):Integer;stdcall;</p><p>
80、function do_close_all_user(a:PChar):Integer;stdcall;</p><p> function do_send_user_data(a:PChar;b:PChar;c:Cardinal;d:PChar):Integer;stdcall;</p><p> function get_user_at(a:Cardinal;var b:gprs_
81、user_info):Integer;stdcall;</p><p> function get_max_user_amount:Cardinal;stdcall;</p><p> function do_close_one_user(a:PChar;b:PChar):Integer;stdcall;</p><p> function SetWorkMo
82、de(nWorkMode: integer): integer; stdcall;</p><p> function KillProcess(a:PChar):Integer;stdcall;</p><p> function DisConnectRas(a:PChar):Integer;stdcall;</p><p> function GetConn
83、EntryName(a:PChar):Integer;stdcall;</p><p> //The Following function is SMM</p><p> //int SMMInit(char *,int,char *,DCB *,char *,char *,int);</p><p> function SMMInit(var a:Arr1
84、6;b:Integer;var c:Arr16;var d:DCB;var e:Arr12;var f:Arr12;g:Integer):Integer;stdcall;</p><p> function SMMFree:Integer;stdcall;</p><p> function SMMSetting(var a:Arr12;b:Integer):Integer;stdca
85、ll;</p><p> function MakeDTUOnLine(a:Integer;var b:Arr12):Integer;stdcall;</p><p> function SendDataToDTUBySM(var a:Arr12;var b:Arr256;c:Integer;d:Integer):Integer;stdcall;</p><p>
86、; implementation</p><p> //gprs_dll</p><p> function start_gprs_server; external gprs_dll name 'start_gprs_server';</p><p> function start_net_service; external gprs_dll
87、 name 'start_net_service';</p><p> function do_read_proc; external gprs_dll name 'do_read_proc';</p><p> procedure cancel_read_block; external gprs_dll name 'cancel_read_bl
88、ock';</p><p> function stop_gprs_server; external gprs_dll name 'stop_gprs_server';</p><p> function stop_net_service; external gprs_dll name 'stop_net_service';</p>
89、<p> function do_close_all_user;external gprs_dll name 'do_close_all_user';</p><p> function do_send_user_data;external gprs_dll name 'do_send_user_data';</p><p> functi
90、on get_user_at;external gprs_dll name 'get_user_at';</p><p> function get_max_user_amount;external gprs_dll name 'get_max_user_amount';</p><p> function do_close_one_user;exter
91、nal gprs_dll name 'do_close_one_user';</p><p> function SetWorkMode;external gprs_dll name 'SetWorkMode';</p><p> //gprs_smm</p><p> function SMMInit;external gpr
92、s_smm name 'SMMInit';</p><p> function SMMFree;external gprs_smm name 'SMMFree';</p><p> function SMMSetting;external gprs_smm name 'SMMSetting';</p><p>
93、function MakeDTUOnLine;external gprs_smm name 'MakeDTUOnLine';</p><p> function SendDataToDTUBySM;external gprs_smm name 'SendDataToDTUBySM';</p><p> function KillProcess;exter
94、nal misc name 'KillProcess';</p><p> function DisConnectRas;external misc name 'DisConnectRas';</p><p> function GetConnEntryName;external misc name 'GetConnEntryName';
95、</p><p><b> end.</b></p><p> 其他所用的一些動態(tài)鏈接庫我們在這個項目中用不到。。調(diào)用動態(tài)鏈接庫有兩種方法,靜態(tài)調(diào)用和動態(tài)調(diào)用,以上就是靜態(tài)調(diào)用的方法。通過封裝調(diào)用我們在以后的開發(fā)中就可以直接用這些函數(shù)了。</p><p> 當(dāng)下層硬件發(fā)送數(shù)據(jù)給我們的模塊時,我們會用消息機(jī)制來處理。</p>
96、<p> 處理過程為:下層數(shù)據(jù)通過UDP數(shù)據(jù)包發(fā)送到wcomm_dll.dll,wcomm_dll.dll就會去解析UDP數(shù)據(jù)包,并且要維護(hù)一下數(shù)據(jù)列表。最后向外廣播約定好的windows消息,告訴外層程序數(shù)據(jù)已經(jīng)接收到了。</p><p> 當(dāng)然這個外層程序(GPRSServer模塊)收到了這個特定的windows消息之后,就會通過do_read_proc函數(shù)來讀取數(shù)據(jù),do_read_proc已
97、經(jīng)在wcomm_dll.dll中定義了。</p><p> 而GPRSServer處理Windows消息:</p><p> procedure ProcessMessage(var Msg:TMessage);message GPRSRECVMESS;</p><p> 這個是消息的定義,再來看看這個消息處理函數(shù)具體做了什么工作:</p>&l
98、t;p> procedure TFormGPRSServer.ProcessMessage(var Msg:TMessage);</p><p> var dr:data_record;</p><p><b> p:PChar;</b></p><p> bAnswer:Boolean;</p><p>
99、<b> begin</b></p><p><b> try</b></p><p> GetMem(p,1024);</p><p> if ckAnswer.Checked then</p><p> bAnswer:=true</p><p><b&g
100、t; else</b></p><p> bAnswer:=false;</p><p> if (do_read_proc(dr,p,bAnswer)>=0) then</p><p><b> begin</b></p><p> if dr.m_data_len=0 then</p
101、><p> PollUserTable</p><p><b> else</b></p><p> ProcessData(dr);</p><p><b> end;</b></p><p><b> finally</b></p>
102、<p> FreeMem(p);</p><p><b> end;</b></p><p><b> end;</b></p><p> 在以上的這個函數(shù)中我們比較關(guān)心的是ProcessData()這個函數(shù),其他函數(shù)都是一些修飾和保護(hù)等等。</p><p> 來看看Proc
103、essData()這個函數(shù)的實現(xiàn):</p><p> procedure TFormGPRSServer.ProcessData(dr:data_record);</p><p> var i,j:Integer;</p><p> str,S:String;</p><p><b> re:Pchar;</b>
104、</p><p> reLong,ReLongTemp:integer;</p><p><b> label H1;</b></p><p><b> begin</b></p><p> str:=dr.m_userid+'---'+dr.m_recv_date+'
105、;---'+IntToStr(dr.m_data_len);</p><p> for i:=1 to Length(str) do</p><p> if str[i]=#0 then</p><p> str[i]:=' ';</p><p> mmDataWnd.Lines.Add(str);</p
106、><p> mmDataWnd.Lines.Add('下位機(jī)-->通訊服務(wù)器:'+dr.m_data_buf);</p><p> /////////////////////////////////</p><p><b> try</b></p><p><b> re:=nil;&
107、lt;/b></p><p> ReLongTemp:=0;</p><p> if dr.m_data_len>G_cachLeng then //對緩沖區(qū)進(jìn)行保護(hù)</p><p><b> begin</b></p><p> fillmemory(@G_cach,G_cachLeng,$FF);
108、</p><p> mmDataWnd.Lines.Add('緩沖區(qū)溢出!');</p><p><b> goto H1;</b></p><p><b> end;</b></p><p> re:=@dr.m_data_buf;</p><p>
109、 reLong:=dr.m_data_len;</p><p><b> s:='';</b></p><p> for j:=0 to reLong-1 do</p><p><b> begin</b></p><p> S:=S+inttohex(ord((re+j)
110、^),2)+' ';</p><p><b> end;</b></p><p> mmDataWnd.Lines.Add('下位機(jī)-->通訊服務(wù)器:'+S+#13+#10);</p><p> if G_cachPose>=G_cachleng-1 then</p><p&
111、gt; G_cachPose:=0;</p><p> if reLong>(G_cachleng-G_cachPose)then</p><p> G_cachPose:=0;</p><p> move(re^,G_cach[G_cachPose],reLong);</p><p> G_cachPose:=G_cach
112、Pose+reLong;</p><p> G_reLong:=reLong;</p><p><b> Doit;</b></p><p><b> H1:</b></p><p><b> except</b></p><p> on EA
113、ccessViolation do</p><p><b> exit;</b></p><p><b> end;</b></p><p><b> end;</b></p><p> ProcessData()這個函數(shù)其實主要功能就像一個漏斗,將不斷接收到的數(shù)據(jù)流存
114、入一個叫G_cach的緩存中以供后續(xù)操作。這步很必要,因為作為UDP數(shù)據(jù)包來說不能保證一連串的數(shù)據(jù)的完整性,而且在無限傳輸過程中這種不穩(wěn)定性尤其突出,我們可以用無線電傳輸字節(jié)流來試試,看整個數(shù)據(jù)的真確率能不能達(dá)到70%,而當(dāng)緩存好了之后我們要做的事就是Doit這個函數(shù)。</p><p> 看看Doit是如何實現(xiàn)的:</p><p> procedure TFormGPRSServer.
115、Doit;</p><p><b> var</b></p><p> i,DDL:integer;</p><p><b> label H1;</b></p><p><b> begin</b></p><p><b> try
116、</b></p><p><b> i:=0;</b></p><p> while i<G_cachLeng-1 do</p><p><b> begin</b></p><p> if (ord(G_cach[i])=$10)and(ord(G_cach[i+4])=
117、$16) then</p><p><b> begin</b></p><p> CutReceiveData(@G_cach,G_cachPose);</p><p> fillmemory(@G_cach[i],G_cachPose,$FF);</p><p> G_cachPose:=0;</p&g
118、t;<p><b> i:=i+4;</b></p><p><b> goto H1;</b></p><p><b> end else</b></p><p> if (ord(G_cach[i])=$68)and (ord(G_cach[i+3])=$68)and((or
119、d(G_cach[i+ord(G_cach[i+1])+5])=$16)or(ord(G_cach[i+ord(G_cach[i+1])+5])=0) )then</p><p><b> begin</b></p><p> CutReceiveData(@G_cach,G_cachPose);</p><p> fillmemory(
120、@G_cach[i],G_cachPose,$FF);</p><p> DDL:= ord(G_cach[i+1]);</p><p> i:=i+DDL+5;</p><p> G_cachPose:=0;</p><p><b> goto H1;</b></p><p><b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 即時通訊系統(tǒng)---畢業(yè)論文
- 電力系統(tǒng)設(shè)計-通訊系統(tǒng)設(shè)計 畢業(yè)論文
- 通訊設(shè)備工藝設(shè)計畢業(yè)論文
- 畢業(yè)論文即時通訊系統(tǒng)的設(shè)計與實現(xiàn)
- 即時通訊系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文
- 基于51單片機(jī)的串口通訊系統(tǒng)畢業(yè)論文
- 局域網(wǎng)即時通訊系統(tǒng)的實現(xiàn)畢業(yè)論文
- 基于labview的plc與上位機(jī)通訊系統(tǒng)設(shè)計畢業(yè)論文
- 基于低速can的汽車無線通訊系統(tǒng)設(shè)計--畢業(yè)論文
- 畢業(yè)論文——畢業(yè)論文管理系統(tǒng)
- 畢業(yè)論文---單片機(jī)串口與電腦通訊
- gsm通訊網(wǎng)絡(luò)干擾與優(yōu)化畢業(yè)論文
- 核磁共振儀器通訊模塊開發(fā)-畢業(yè)論文
- 基于php的在線聊天通訊軟件畢業(yè)論文
- 企業(yè)實時通訊系統(tǒng)―功能模塊的設(shè)計與實現(xiàn)------畢業(yè)論文
- 畢業(yè)論文——畢業(yè)論文管理系統(tǒng) (2)
- 基于php的在線聊天通訊軟件畢業(yè)論文
- 畢業(yè)論文---單片機(jī)串口與電腦通訊
- gsm通訊網(wǎng)絡(luò)干擾與優(yōu)化畢業(yè)論文
- 企業(yè)實時通訊系統(tǒng)------功能模塊的設(shè)計與實現(xiàn)-畢業(yè)論文
評論
0/150
提交評論