_基于VB語言的工控機--數據采集卡實現電機正反轉_第1頁
_基于VB語言的工控機--數據采集卡實現電機正反轉_第2頁
_基于VB語言的工控機--數據采集卡實現電機正反轉_第3頁
_基于VB語言的工控機--數據采集卡實現電機正反轉_第4頁
_基于VB語言的工控機--數據采集卡實現電機正反轉_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 燕山大學課 程 設 計 說 明 書題目: 工控機+數據采集卡實現電機正反轉 學院 (系): 電氣工程學院(自動化) 年級專業(yè): 2011級計算機控制1班 學 號: 110103020033 學生姓名: 指導教師: 教師職稱: 教授 副教授 燕山大學課程設計(論文)任務書院(系):電氣工程學院 基層教學單位:自動化系學 號110103020033學生姓名鄭夏專業(yè)(班級)11計控1班設計題目工控機+數據采集卡實現電機正反轉設計技術參數數據采集卡采用中泰系列。電機5.5KW。界面采用MCGS語言。具備電機正反轉、點動等基本功能。設計要求說明書一份,不少于6000字(如打印用B5紙,小四號字,漢字采

2、用宋體,英文及數字采用Times New Roman,單倍行距,上邊距2.6厘米,下邊距2.2厘米,左右邊距各2.3厘米,標出頁碼)。說明書順序:封面、任務書、摘要、目錄、正文、結論、參考文獻、評審意見表。說明書封面與內容需一致(打印或者本人手抄),圖表清晰,字跡工整。完成A2圖紙一張。工作量說明書一份,不少于6000字,可手寫可打印。A2圖紙一張,手繪、打印均可。參考文獻不少于3篇。工作計劃確定系統(tǒng)整體設計方案(包括方案的選擇說明)。學習MCGS編程語言,完成軟件開發(fā)。撰寫說明書,繪制圖紙。完成課程設計考核。參考資料工廠電器、電氣控制及PLC、電路原理、電子技術、檢測與轉換技術、制圖、計算機

3、原理、微機控制原理及應用、電力電子技術、計算機操作系統(tǒng)、計算機控制系統(tǒng)等課程教科書及相關專業(yè)報紙、雜志和論文。指導教師簽字 李海濱 劉爽基層教學單位主任簽字劉福才說明:此表一式四份,學生、指導教師、基層教學單位、系部各一份。 2014年6月15日 摘要 【關鍵詞】MCGS;窗體;控制系統(tǒng);數據采集卡;中間繼電器;電機正反轉近年來,隨著計算機和數據采集卡技術的不斷提高,越來越多的企業(yè)以計算機和數據采集卡為平臺,實現生產拄制,這一系統(tǒng)比傳統(tǒng)的PIC系統(tǒng)具有更低的成本,更靈活的配置,更短的開發(fā)周期。生產機械往往要求運動部件可以實現正反兩個方向的起動,這就要求拖動電動機能作正、反向旋轉。由電機原理可知

4、,改變電動機三相電源的相序,就能改變電動機的轉向。按下正轉啟動按鈕SB1,電動機正轉運行,完成正轉啟動。按下停止按鈕SB2,電動機停止運行。按下反轉啟動按鈕SB3,電動機反轉運行,完成反轉啟動。 MCGS組態(tài)軟件MCGS組態(tài)軟件是北京昆侖通態(tài)自動化軟件科技有限公司研發(fā)的一套基于Windows平臺的,用于快速構造和生成上位機監(jiān)控系統(tǒng)的組態(tài)軟件系統(tǒng),主要完成現場數據的采集與監(jiān)測、前端數據的處理與控制,支持許多類型采集卡、控制卡。通過MCGS組態(tài)軟件與中泰PCI-8407采集卡的結合,通過中間繼電器PS-002以及電機正反轉控制邏輯的編寫,可以方便的實現電機的正反轉控制,從而滿足控制要求。數據采集卡

5、 數據采集卡通過ISA或PCI總線連接到PC機中,把采集的模擬、數字信號通過A/D轉換輸入計算書b羞行分析、處理、顯示等,并可通過D/A轉換實現控制命令輸出。還可加入信號調理和實時DSP等硬件模塊。市面流行的數據采集卡有以下技術特點: 分辨率:12 bit,16 bit 采樣頻率:100 k, 400 k, 750 lc, l MHz 輸入通道:8路差分/16單端,可擴展到256通道 程控增益:1/2J4/8或1/10/100/1000 可選模擬信號,了幾電平或軟件觸發(fā) 1 K-4 K字FIFO 2/4通道12 bit模擬輸出 24路數字量輸入輸出何擴展到192路 35個16 bit可編程計知

6、定時器 可與QTC, DBK, SB系列信號調理擴模塊模板配合使用,組成: 電流、毫伏、高壓、應變、熱電偶、熱電阻、振動、加速度、頻率測試狽口量系統(tǒng)同時可選同步采樣、抗混濾波、高壓隔離等功能。在控制系統(tǒng)中,采集卡是解決信號的輸入、輸出,軟件才是關鍵,使用者可通過修改軟件,改變或增減控制系統(tǒng)的功能。編程語言的選擇 對數據采集卡進布示編程有兩種方法。 1)采用公司研發(fā)的MCGS組態(tài)軟件的是專為面向工業(yè)自動化設計的,以圖形方式提供了采集、運動控制等顯示和分析程序庫。在這些軟件環(huán)境中,提供了一種像數據流一樣的編程模式,擁護只要連接各個邏輯框即可構成程序。但是這些圖形化軟件包在獲得易用性的同時,也失去了

7、某些較復雜的高級性能,如復雜數據結構的實現,回調函數的使用等等。 2)采用通用的語言開發(fā)環(huán)境,如VB,Delphi, VC+等。其中VB是深受工程技術人員歡迎的編程語言之一。它具有以下特點: 開發(fā)速度快。在所有可視化語言中,VB是公認開發(fā)軟件速度最快的。同時如不涉及復雜的圖形處理,在流行的PentiumII機型上,速度不會明顯低于其它開發(fā)工具。全漢化的幫助文件、例程更是其它開發(fā)環(huán)境所不具備的。 功育創(chuàng)獷展能力強。VB的API Viewer使VB能非常容易地調用幾乎所有Win API函數,實現任何Windows所具備的功能。同時,幾乎所有提供軟件開發(fā)支持的硬件廠商,都提供的支持VB的控件、DLL

8、和例程。 系統(tǒng)穩(wěn)定。作為同一公司出品的產品,用VB編制的軟件在Windows平臺上長時間運行,非常穩(wěn)定。 目 錄一、設計目的6二、設計思路6三、器件的選擇及其使用說明6 1)、選用中泰數據采集卡PCI-8407使用說明介紹 6 2)、PS-002 16路通用繼電器板技術說明書 10 3)、電機的機型選擇 13四、主電路、控制回路電路圖及其工作原理13 1)、主回路電路圖及其原理13 2)、控制回路接線圖15五、MCGS組態(tài)程序介紹及設計16 1)、控制界面設計16 2)、設備窗口組態(tài)16 3)、設備構件的通道連接18 4)、程序腳本的編寫19 六、開發(fā)MCGS設備驅動程序19七、總結19八、參

9、考文獻20九、評審意見表21 正 文設計目的 MCGS采用可視化的程序設計方法,利用系統(tǒng)提供的大量可視化控件,可以方便地以可視化方式直接繪制用戶圖形界面,并可直觀,動態(tài)地調整界面的風格和樣式。設計針對采集卡功能設置出實用、美觀應用界面。界面可以實現的功能為:允許外部開關控制量輸入,面板控制量輸出,以此來實現電機正反轉控制。 二、設計思路通過PC工控機+研華基于PC的工業(yè)控制卡MIC-2760+電動機正反轉控制主回路這種設計方案,可以以較為低廉的價格達到控制電機正反轉及點動長動的控制要求,與PLC電機正反轉控制系統(tǒng)相比較為廉價很多。同時可以通過MCGS組態(tài)軟件快速的構建上位機監(jiān)控及控制界面。配合

10、其他的數據采集卡,可以實現對電動機轉速、電壓、電流等運行參數的實時監(jiān)控與控制。并且此種方案在工業(yè)現場廣為應用,符合工業(yè)控制系統(tǒng)的市場需求。三、器件的選擇及其使用說明1)選用中泰數據采集卡PCI-8407使用說明介紹1.概述: PCI-8407光隔離開關量輸出接口卡適用于提供了PCI 總線插槽的PC系列微機,具有即插即用(PnP)的功能,操作系統(tǒng)可選用目前流行的 Windows 系列,高穩(wěn)定性的Unix等多種操作系統(tǒng)以及專業(yè)數據采集分析系統(tǒng)LabVIEW 等軟件環(huán)境。在硬件的安裝上也非常簡單,使用時只需將接口卡插入機內任何一個PCI總線插槽中,信號電纜從機箱外部直接接入。為方便我公司原有用戶對產

11、品的升級換代,PCI-8407開關量輸出接口卡的輸出插座引線定義與PC-6407完全一樣。本卡適用于工業(yè)現場中各種開關信號的自動控制以及計算機同數字儀器的接口。考慮到在開關量的輸出中“開關”瞬態(tài)對計算機干擾十分強烈及現場強電的干擾,本卡采用了光電隔離技術,使計算機與現場信號之間全部隔離,提高了計算機與本卡在工作中的抗干擾能力和抗損毀能力。 本卡上的開關量輸出為32 路(分為兩組)共地方式,具有上電后自動清零功能(但主機復位時不清零),并可與我公司研制的PS-002繼電器接口板直接配套使用。2.主要技術指標:2.1 輸出路數及電氣連接方式:32路分為兩組,共源(共陽)方式。2.2 輸出回路供電要

12、求:12V36V2.3 最大輸出驅動電流:200mA每路(由外加電源提供),可直接驅動繼電器,但每組總輸出電流不應超過2A。2.4 每組信號之間、各組信號與接口卡之間隔離電平:500V。2.5 電源功耗:5V(10) 400mA2.6 環(huán)境要求:工作溫度: 1040 相對濕度: 4080 存貯溫度:55852.10 外型尺寸(不含檔板):長高=164.8mm106.7mm(6.5英寸4.2英寸)3.工作原理及操作說明:3.1 開關量輸出工作原理:本卡上的32路開關量輸出回路可用于外部電路的開關控制,其每路最大輸出電流200mA左右,開關量輸出部分工作原理如圖1所示。 圖1 開關量輸出部分工作原

13、理 輸出驅動器件ULN2003的輸出端允許通過IC 電流200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。用戶輸出口的外接負載可根據以上參數估算。由于本卡采用集電極開路輸出,輸出電流大,故可以直接驅動繼電器或固體繼電器(SSR)等外接控制器件,也可直接驅動低壓燈泡。本卡工作時,計算機送“1”使驅動器三極管導通,計算機送“0”使驅動器三極管截止。本卡上的輸出驅動器件ULN2003中內部帶有吸收二極管,可有效地吸收感性負載啟動時產生的達600mA的峰值電流。所有的開關量輸出信號均帶有鎖存功能。當CPU對設定的一個IO地址執(zhí)行一次寫操作,就送出了一組(16路)輸出信號。當主機加電啟

14、動時,本卡上的復位清零電路使各組輸出均為零,即驅動器三極管截止。但使用RESET開關使主機硬復位時清零電路將不起作用。4.安裝及使用注意:本卡的安裝十分簡便,只要在關電情況下將主機機殼打開,將本卡插入主機的任何一個空余擴展槽中,再將檔板固定螺絲壓緊即可。37芯D型插頭可從主機后面引出并與外設連接。禁止帶電插拔本接口卡。設置接口卡開關和安裝接口帶纜均應在關電狀態(tài)下進行。 為保證人身及設備安全,應確保系統(tǒng)地線(計算機及外接設備接地點)接地良好。為防止外部設備中較大的電磁干擾,應注意對信號線進行屏蔽處理。如果本卡連接的外部設備上加有較高的電壓時,在安裝或用手觸摸本卡時,應先將外部設備的電源關閉并嚴禁

15、觸摸本卡。5.使用與操作:5.1 輸入輸出插座接口定義: 表1 輸入輸出插座引線定義表 插座引腳號 信號定義插座引腳號信號定義1A組 CH120A組 CH22A組 CH321A組 CH43A組 CH522A組 CH64A組 CH723A組 CH85A組 CH924 A組 CH106A組 CH1125A組 CH127A組 CH1326A組 CH148A組 CH15 27A組 CH169開出公共地28開出公共地101236V電源入291236V電源入11B組 CH1 30B組 CH212B組 CH331B組 CH413B組 CH532B組 CH614B組 CH733B組 CH815B組 CH934

16、B組 CH1016B組 CH1135B組 CH1217B組 CH1336B組 CH1418B組 CH1537B組 CH1619開出公共地5.2 開關量輸出使用方法:本卡上的開關量輸出部分與外部器件聯(lián)接時,可按圖2方法進行,使用時應注意將外部1236V電源接入本卡 。 圖2 開關量輸出使用方法2)PS-002 16路通用繼電器板技術說明書1. 概述: 本板為小功率中間繼電器板,一般用于大功率繼電器或交流接觸器的驅動,也可用于小容量電器開關、報警指示等場合。2. 主要特性:2.1 路數: 16路2.2 觸點形式: 單刀常開2.3 觸點容量:DC 28V 7A AC 220V 4A2.4 控制功率:

17、DC 24V15mA或DC 12V30mA(單路) 2.5 每對觸點接線端均加有壓敏電阻以吸收浪涌電壓。3. 本板布局: 4. 使用方法:4.1 繼電器控制電源接線:該電源插座為2P座,信號分布見下圖。 + GND 繼電器控制電源應根據繼電器工作電壓分別選擇12V或24V。4.2 繼電器控制線接線:該控制線插座為JK1、JK2,信號分布見下圖: KJ1可直接配接PC-6407、6408, JK2經過改裝后可配接研華 經過改裝后可配接研華PCL-720/ PCL-722/724/731 730/7324.3 繼電器觸點接線:本板兩側的接線端子排為繼電器觸點接線端子,與每個繼電器相鄰的兩個接線端子

18、為該繼電器的一對觸點端子。5. 本板的外部驅動電路: 光電耦合器直接驅動 三極管驅動6. 本板的特殊使用: 當用戶需用 TTL 電平直接驅動本板時,可將本板上標有 U1、U2、U3器件組中的細連線割斷,在各器件位置上正確焊上ULN2003驅動組件。3)、電機的機型選擇 三相電機是指當電機的三相定子繞組(各相差120度電角度),通入三相交流電后,將產生一個旋轉磁場,該旋轉磁場切割轉子繞組,從而在轉子繞組中產生感應電流(轉子繞組是閉合通路),載流的轉子導體在定子旋轉磁場作用下將產生電磁力,從而在電機轉軸上形成電磁轉矩,驅動電動機旋轉,并且電機旋轉方向與旋轉磁場方向相同。本次設計采用Y132S-4型

19、三相異步電動機作為控制對象,功率為5.5KW,滿足設計要求。本型號電動機為四極電動機,同步轉速為1500 r/min,異步轉速為1440 r/min。電動機同步轉速公式如下:n=60f/p。f為頻率,單位為Hz。n為轉速,其單位為r/minp為磁極對數(注意是磁極對數而非磁極的個數,如本電機4極電機n=2)當然也可以選擇其他的型號的電動機,不同型號的電動機并不影響控制電路的設計。 四、主電路、控制回路電路圖及其工作原理1)、主回路電路圖及其原理電機要實現正反轉控制,將其電源的相序中任意兩相對調即可(被稱為換相),通常是V相不變,將U相與W相對調節(jié)器,為了保證兩個接觸器動作時能夠可靠調換電動機的

20、相序,接線時應使接觸器的上口接線保持一致,在接觸器的下口調相。由于將兩相相序對調,故須確保二個KM線圈不能同時得電,否則會發(fā)生嚴重的相間短路故障,因此必須采取聯(lián)鎖。為安全起見,常采用機械聯(lián)鎖與電氣聯(lián)鎖的雙重聯(lián)鎖正反轉控制線路。使用了按鈕聯(lián)鎖,即使同時按下正反轉按鈕,調相用的兩接觸器也不可能同時得電,機械上避免了相間短路。另外,由于應用的接觸器聯(lián)鎖,所以只要其中一個接觸器得電,其長閉觸點就不會閉合,這樣在機械、電氣雙重聯(lián)鎖的應用下,電機的供電系統(tǒng)不可能相間短路,有效地保護了電機,同時也避免在調相時相間短路造成事故,燒壞接觸器。由于本項目采用研華控制卡和MCGS組態(tài)軟件設置,所以可以通過MCGS程

21、序邏輯設計實現電氣聯(lián)鎖,有效的保護電動機的正常運行,防止短路發(fā)生。對于點動和長動的區(qū)別,由于本次項目采用MCGS組態(tài)軟件進行控制,因此只需在程序中進行控制邏輯的設計。并且本設計采用點動長動開關進行點動與長動的選擇,通過點動長動選擇開關進行點動與長動的選擇。在主電路中,除了KM1、KM2出點外,還有熔斷器FU和熱繼電器FR做為主電路的保護元件,防止由于短路或者過載、斷相對電機的損壞。熔斷器FU是指當電流超過規(guī)定值時,以本身產生的熱量使熔體熔斷,斷開電路的一種電器。熔斷器是根據電流超過規(guī)定值一段時間后,以其自身產生的熱量使熔體熔化,從而使電路斷開,可以防止電路短路對電動機的損壞,以最小的成本來實現

22、電動機的保護。熱繼電器FR是由流入熱元件的電流產生熱量,使有不同膨脹系數的雙金屬片發(fā)生形變,當形變達到一定距離時,就推動連桿動作,使控制電路斷開,從而使接觸器失電,主電路斷開,實現電動機的過載保護以及斷相保護。2)控制回路接線圖 五、MCGS組態(tài)程序介紹及設計1)控制界面設計以下界面包括一個啟??刂瓢粹o、一個電機、一個長動點動選擇開關以及兩個分別控制正轉和反轉的按鈕。默認運行時,啟停按鈕處于啟動狀態(tài),當將長動點動開關達到長動時,電機正反轉按鈕即可以實現電動機的正反轉運行,電機停止按鈕即可以實現電動機的停止;當將點動開關打到點動時,按住正轉、反轉按鈕電動機才分別進行正轉、反轉運行,松開按鈕,電動

23、機停止。 2)設備窗口組態(tài)設備窗口是MCGS系統(tǒng)的重要組成部分,在設備窗口中建立系統(tǒng)與外部硬件設備的連接關系,使系統(tǒng)能夠從外部設備讀取數據并控制外部設備的工作狀態(tài),實現對工業(yè)過程的實時監(jiān)控。在MCGS中,實現設備驅動的基本方法是:在設備窗口內配置不同類型的設備構件,并根據外部設備的類型和特征,設置相關的屬性,將設備的操作方法如硬件參數配置、數據轉換、設備調試等都封裝在構件之中,以對象的形式與外部設備建立數據的傳輸通道連接。系統(tǒng)運行過程中,設備構件由設備窗口統(tǒng)一調度管理,通過通道連接,向實時數據庫提供從外部設備采集到的數據,從實時數據庫查詢控制參數,發(fā)送給系統(tǒng)其它部分,進行控制運算和流程調度,實

24、現對設備工作狀態(tài)的實時檢測和過程的自動控制。MCGS的這種結構形式使其成為一個“與設備無關”的系統(tǒng),對于不同的硬件設備,只需定制相應的設備構件,放置到設備窗口中,并設置相關的屬性,系統(tǒng)就可對這一設備進行操作,而不需要對整個系統(tǒng)結構作任何改動。在MCGS單機版中,一個用戶工程只允許有一個設備窗口。運行時,由主控窗口負責打開設備窗口,而設備窗口是不可見的,在后臺獨立運行,負責管理和調度設備構件的運行。由于MCGS對設備的處理采用了開放式的結構,在實際應用中,可以很方便地定制并增加所需的設備構件,不斷充實設備工具箱。MCGS將逐步提供與國內外常用的工控產品相對應的設備構件,同時,MCGS也提供了一個

25、接口標準,以方便用戶用Visual Basic或Visual C+等編程工具自行編制所需的設備構件,裝入MCGS的設備工具箱內。MCGS提供了一個高級開發(fā)向導,自動生成設備驅動程序的框架,給我們的開發(fā)工作提供幫助。為了對普通工程用戶快速定制開發(fā)特定的設備驅動程序提供方便,系統(tǒng)同時提供了典型設備驅動程序的源代碼,在這些源代碼的基礎上進行移植修改,就可以生成自己所需的設備驅動程序。對已經編好的設備驅動程序,MCGS使用設備構件管理工具進行管理。單擊在MCGS組態(tài)環(huán)境中“工具”菜單下的“設備構件管理”項,將彈出如下圖所示的設備管理窗口: 設備管理窗口中提供了常用的上百種的設備驅動程序,給我們快速找到

26、適合自己的設備驅動程序提供了極大的方便,還可以完成所選設備在Windows中的登記和刪除登記等工作。3)設備構件的通道連接MCGS設備中一般都包含有一個或多個用來讀取或者輸出數據的物理通道,MCGS把這樣的物理通道稱為設備通道,如:模擬量輸入裝置的輸入通道、模擬量輸出裝置的輸出通道、開關量輸入輸出裝置的輸入輸出通道等等,這些都是設備通道。設備通道只是數據交換用的通路,而數據輸入到哪兒和從哪兒讀取數據以供輸出,即進行數據交換的對象,則必須由用戶指定和配置。實時數據庫是MCGS的核心,各部分之間的數據交換均須通過實時數據庫。因此,所有的設備通道都必須與實時數據庫連接。所謂通道連接,也即是由用戶指定

27、設備通道與數據對象之間的對應關系,這是設備組態(tài)的一項重要工作。如不進行通道連接組態(tài),則MCGS無法對設備進行操作。程序腳本的編寫 IF 啟動=1 THEN KM1=1 IF 停止=1 THEN KM1=0 OR KM2=0 IF 反轉=1 THEN KM2=1 IF 正轉=1 THEN KM1=1 IF 點動=1 THEN KM1=1 OR KM2=1 IF 長動=1 THEN KM1=1 OR KM2=1總結 通過PC工控機+中泰基于PC的工業(yè)控制卡PCI8407和與其適配的中間繼電器PS002+電動機正反轉控制主回路這種設計方案,可以以較為低廉的價格達到控制電機正反轉及點動長動的控制要求,

28、與PLC電機正反轉控制系統(tǒng)相比較為廉價很多。同時可以通過MCGS組態(tài)軟件快速的構建上位機監(jiān)控及控制界面。配合其他的數據采集卡,可以實現對電動機轉速、電壓、電流等運行參數的實時監(jiān)控與控制。并且此種方案在工業(yè)現場廣為應用,符合工業(yè)控制系統(tǒng)的市場需求。通過一周的學習,我進一步加深了對于電機正反轉等控制系統(tǒng)的理解,掌握了研華系列工業(yè)采集卡、控制卡的應用,并且學會了利用MCGS、VB等工控軟件快速的構建工控機的上位機監(jiān)控軟件,從而可以快速的搭建出一整套工業(yè)控制系統(tǒng)以及采集監(jiān)控系統(tǒng)。并且將學到的知識加以利用,轉化為實實在在的生產力。總之,從本次的課程設計中,我受益匪淺。七、開發(fā)MCGS設備驅動程序 設備驅

29、動構件的實現設備驅動構件接口規(guī)范利用開發(fā)向導生成框架利用樣例程序移植測試和掛接設備驅動構件IO端口的操作串行口的操作設備驅動構件的運行機制增加設備構件屬性定制設備屬性設備對話框編制簡單的設備驅動構件八、參考文獻 工廠電器、電氣控制及PLC、電路原理、電子技術、檢測與轉換技術、制圖、計算機原理、微機控制原理及應用、電力電子技術、計算機操作系統(tǒng)等課程教科書及相關專業(yè)報紙、雜志和論文。九、電氣工程學院課程設計評審意見表指導教師評語:平時成績: 指導教師簽字: 2014年 6 月 22 日圖面及其它成績:答辯小組評語:答辯成績: 組長簽字: 2014年6 月 22 日課程設計綜合成績:答辯小組成員簽字

30、: 2014年 6 月 22日 附錄資料:不需要的可以自行刪除bat文件的基本應用bat是dos下的批處理文件 .cmd是nt內核命令行環(huán)境的另一種批處理文件 從更廣義的角度來看,unix的shell腳本以及其它操作系統(tǒng)甚至應用程序中由外殼進行解釋執(zhí)行的文本,都具有與批處理文件十分相似的作用,而且同樣是由專用解釋器以行為單位解釋執(zhí)行,這種文本形式更通用的稱謂是腳本語言。所以從某個程度分析,batch, unix shell, awk, basic, perl 等腳本語言都是一樣的,只不過應用的范圍和解釋的平臺各有不同而已。甚至有些應用程序仍然沿用批處理這一稱呼,而其內容和擴展名與dos的批處理

31、卻又完全不同。 = 首先批處理文件是一個文本文件,這個文件的每一行都是一條DOS命令(大部分時候就好象我們在DOS提示符下執(zhí)行的命令行一樣),你可以使用DOS下的Edit或者Windows的記事本(notepad)等任何文本文件編輯工具創(chuàng)建和修改批處理文件。 = 注 = 批處理文件中完全可以使用非dos命令,甚至可以使用不具有可執(zhí)行特性的普通數據性文件,這緣于windows系統(tǒng)這個新型解釋平臺的涉入,使得批處理的應用越來越邊緣化。所以我們討論的批處理應該限定在dos環(huán)境或者命令行環(huán)境中,否則很多觀念和設定都需要做比較大的變動。 = 其次,批處理文件是一種簡單的程序,可以通過條件語句(if)和流

32、程控制語句(goto)來控制命令運行的流程,在批處理中也可以使用循環(huán)語句(for)來循環(huán)執(zhí)行一條命令。當然,批處理文件的編程能力與C語言等編程語句比起來是十分有限的,也是十分不規(guī)范的。批處理的程序語句就是一條條的DOS命令(包括內部命令和外部命令),而批處理的能力主要取決于你所使用的命令。 = 注 = 批處理文件(batch file)也可以稱之為批處理程序(batch program),這一點與編譯型語言有所不同,就c語言來說,擴展名為c或者cpp的文件可以稱之為c語言文件或者c語言源代碼,但只有編譯連接后的exe文件才可以稱之為c語言程序。因為批處理文件本身既具有文本的可讀性,又具有程序的

33、可執(zhí)行性,這些稱謂的界限是比較模糊的。 = 第三,每個編寫好的批處理文件都相當于一個DOS的外部命令,你可以把它所在的目錄放到你的DOS搜索路徑(path)中來使得它可以在任意位置運行。一個良好的習慣是在硬盤上建立一個bat或者batch目錄(例如C:BATCH),然后將所有你編寫的批處理文件放到該目錄中,這樣只要在path中設置上c:batch,你就可以在任意位置運行所有你編寫的批處理程序。 = 注 = 純以dos系統(tǒng)而言,可執(zhí)行程序大約可以細分為五類,依照執(zhí)行優(yōu)先級由高到低排列分別是:DOSKEY宏命令(預先駐留內存),COMMAND.COM中的內部命令(根據內存的環(huán)境隨時進駐內存),以c

34、om為擴展名的可執(zhí)行程序(由 直接載入內存),以exe位擴展名的可執(zhí)行程序(由 重定位后載入內存),以bat位擴展名的批處理程序(由 解釋分析,根據其內容按優(yōu)先級順序調用第2,3,4,5種可執(zhí)行程序,分析一行,執(zhí)行一行,文件本身不載入內存) = 第四,在DOS和Win9x/Me系統(tǒng)下,C:盤根目錄下的AUTOEXEC.BAT批處理文件是自動運行批處理文件,每次系統(tǒng)啟動時會自動運行該文件,你可以將系統(tǒng)每次啟動時都要運行的命令放入該文件中,例如設置搜索路徑,調入鼠標驅動和磁盤緩存,設置系統(tǒng)環(huán)境變量等。下面是一個運行于Windows 98下的autoexec.bat的示例: ECHO OFF PAT

35、H C:WINDOWS;C:WINDOWSCOMMAND;C:UCDOS;C:DOSTools; C:SYSTOOLS;C:WINTOOLS;C:BATCH LH SMARTDRV.EXE /X LH DOSKEY.COM /insert LH CTMOUSE.EXE SET TEMP=D:TEMP SET TMP=D:TEMP = 注 = AUTOEXEC.BAT為DOS系統(tǒng)的自動運行批處理文件,由COMMAND.COM啟動時解釋執(zhí)行; 而在Win9x環(huán)境中,不僅增加支持了 DOSSTART.BAT, WINSTART.BAT 等許多其它自動運行的批處理文件,對AUTOEXEC.BAT 也增

36、加了 .DOS .W40 .BAK .OLD .PWS 等許多變體以適應復雜的環(huán)境和多變的需求。 = willsort 編注 = 以下關于命令的分類,有很多值得推敲的地方。常用命令中的本不是命令,而dir、copy等也很常用的命令卻沒有列入, 而特殊命令中所有命令對我來說都是常用命令。建議將批處理所引用的命令分為內部命令、外部命令、第三方程序三類。而內部命令和外部命令中別有一類是專用于或常用于批處理中的命令可稱之為批處理命令。 以下摘錄MS-DOS 6.22 幫助文檔中關于批處理命令的文字,當然,其中有些概念和定義已經有些落后了。 批處理命令 批處理文件或批處理程序是一個包含若干MS-DOS命

37、令的正文文件,擴展名為.BAT。當在命令提示符下敲入批處理程序的名稱時,MS-DOS成組執(zhí)行此批處理程序中的命令。 任何在命令提示符下可使用的命令都可用在批處理程序中。此外,下面MS-DOS命令是專門在批處理程序中使用的。 = 常用命令 echo、call、pause、rem(小技巧:用:代替rem)是批處理文件最常用的幾個命令,我們就從他們開始學起。 = 注 = 首先, 不是一個命令, 而是DOS 批處理的一個特殊標記符, 僅用于屏蔽命令行回顯. 下面是DOS命令行或批處理中可能會見到的一些特殊標記符: CR(0D) 命令行結束符 Escape(1B) ANSI轉義字符引導符 Space(2

38、0) 常用的參數界定符 Tab(09) ; = 不常用的參數界定符 + COPY命令文件連接符 * ? 文件通配符 字符串界定符 | 命令管道符 文件重定向符 命令行回顯屏蔽符 / 參數開關引導符 : 批處理標簽引導符 % 批處理變量引導符 其次, : 確實可以起到rem 的注釋作用, 而且更簡潔有效; 但有兩點需要注意: 第一, 除了 : 之外, 任何以 :開頭的字符行, 在批處理中都被視作標號, 而直接忽略其后的所有內容, 只是為了與正常的標號相區(qū)別, 建議使用 goto 所無法識別的標號, 即在 :后緊跟一個非字母數字的一個特殊符號. 第二, 與rem 不同的是, :后的字符行在執(zhí)行時不

39、會回顯, 無論是否用echo on打開命令行回顯狀態(tài), 因為命令解釋器不認為他是一個有效的命令行, 就此點來看, rem 在某些場合下將比 : 更為適用; 另外, rem 可以用于 config.sys 文件中. = echo 表示顯示此命令后的字符 echo off 表示在此語句后所有運行的命令都不顯示命令行本身 與echo off相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當前行)。 call 調用另一個批處理文件(如果不用call而直接調用別的批處理文件,那么執(zhí)行完那個批處理文件后將無法返回當前文件并執(zhí)行當前文件的后續(xù)命令)。 pause 運行此句會暫停批

40、處理的執(zhí)行并在屏幕上顯示Press any key to continue.的提示,等待用戶按任意鍵后繼續(xù) rem 表示此命令后的字符為解釋行(注釋),不執(zhí)行,只是給自己今后參考用的(相當于程序中的注釋)。 = 注 = 此處的描述較為混亂, 不如直接引用個命令的命令行幫助更為條理 ECHO 當程序運行時,顯示或隱藏批處理程序中的正文。也可用于允許或禁止命令的回顯。 在運行批處理程序時,MS-DOS一般在屏幕上顯示(回顯)批處理程序中的命令。 使用ECHO命令可關閉此功能。 語法 ECHO ON|OFF 若要用echo命令顯示一條命令,可用下述語法: echo message 參數 ON|OFF

41、 指定是否允許命令的回顯。若要顯示當前的ECHO的設置,可使用不帶參數的ECHO 命令。 message 指定讓MS-DOS在屏幕上顯示的正文。 CALL 從一個批處理程序中調用另一個批處理程序,而不會引起第一個批處理的中止。 語法 CALL drive:pathfilename batch-parameters 參數 drive:pathfilename 指定要調用的批處理程序的名字及其存放處。文件名必須用.BAT作擴展名。 batch-parameters 指定批處理程序所需的命令行信息。 PAUSE 暫停批處理程序的執(zhí)行并顯示一條消息,提示用戶按任意鍵繼續(xù)執(zhí)行。只能在批處 理程序中使用該

42、命令。 語法 PAUSE REM 在批處理文件或CONFIG.SYS中加入注解。也可用REM命令來屏蔽命令(在CONFIG.SYS 中也可以用分號 ; 代替REM命令,但在批處理文件中則不能替代)。 語法 REM string 參數 string 指定要屏蔽的命令或要包含的注解。 = 例1:用edit編輯a.bat文件,輸入下列內容后存盤為c:a.bat,執(zhí)行該批處理文件后可實現:將根目錄中所有文件寫入 a.txt中,啟動UCDOS,進入WPS等功能。 批處理文件的內容為: 命令注釋: echo off 不顯示后續(xù)命令行及當前命令行 dir c:*.* a.txt 將c盤文件列表寫入a.txt

43、 call c:ucdosucdos.bat 調用ucdos echo 你好 顯示你好 pause 暫停,等待按鍵繼續(xù) rem 準備運行wps 注釋:準備運行wps cd ucdos 進入ucdos目錄 wps 運行wps 批處理文件的參數 批處理文件還可以像C語言的函數一樣使用參數(相當于DOS命令的命令行參數),這需要用到一個參數表示符%。 %1-9表示參數,參數是指在運行批處理文件時在文件名后加的以空格(或者Tab)分隔的字符串。變量可以從%0到%9,%0表示批處理命令本身,其它參數字符串用%1到%9順序表示。 例2:C:根目錄下有一批處理文件名為f.bat,內容為: echo off

44、format %1 如果執(zhí)行C:f a: 那么在執(zhí)行f.bat時,%1就表示a:,這樣format %1就相當于format a:,于是上面的命令運行時實際執(zhí)行的是format a: 例3:C:根目錄下一批處理文件名為t.bat,內容為: echo off type %1 type %2 那么運行C:t a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt 于是上面的命令將順序地顯示a.txt和b.txt文件的內容。 = 注 = 參數在批處理中也作為變量處理, 所以同樣使用百分號作為引導符, 其后跟0-9中的一個數字構成參數引用符. 引用符和參數之間 (例如上文中的 %1

45、 與 a: ) 的關系類似于變量指針與變量值的關系. 當我們要引用第十一個或更多個參數時, 就必須移動DOS 的參數起始指針. shift 命令正充當了這個移動指針的角色, 它將參數的起始指針移動到下一個參數, 類似C 語言中的指針操作. 圖示如下: 初始狀態(tài), cmd 為命令名, 可以用 %0 引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 | | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 經過1次shift后, cmd 將無法被引用 cmd arg1 arg2 arg3 a

46、rg4 arg5 arg6 arg7 arg8 arg9 arg10 | | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 經過2次shift后, arg1也被廢棄, %9指向為空, 沒有引用意義 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8 遺憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 內核命令行環(huán)境下, shift 才支持 /n 參數, 可以以第一參數為基準

47、返復移動起始指針. = 特殊命令 if goto choice for是批處理文件中比較高級的命令,如果這幾個你用得很熟練,你就是批處理文件的專家啦。 一、if 是條件語句,用來判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令。 有三種格式: 1、if not 參數 = 字符串 待執(zhí)行的命令 參數如果等于(not表示不等,下同)指定的字符串,則條件成立,運行命令,否則運行下一句。 例:if %1=a format a: = if 的命令行幫助中關于此點的描述為: IF NOT string1=string2 command 在此有以下幾點需要注意: 1. 包含字符串的雙引號不是語法所必須的, 而

48、只是習慣上使用的一種防空字符 2. string1 未必是參數, 它也可以是環(huán)境變量, 循環(huán)變量以及其他字符串常量或變量 3. command 不是語法所必須的, string2 后跟一個空格就可以構成一個有效的命令行 = 2、if not exist 路徑文件名 待執(zhí)行的命令 如果有指定的文件,則條件成立,運行命令,否則運行下一句。 如: if exist c:config.sys type c:config.sys 表示如果存在c:config.sys文件,則顯示它的內容。 * 注 * 也可以使用以下的用法: if exist command device 是指DOS系統(tǒng)中已加載的設備,

49、在win98下通常有: AUX, PRN, CON, NUL COM1, COM2, COM3, COM4 LPT1, LPT2, LPT3, LPT4 XMSXXXX0, EMMXXXX0 A: B: C: ., CLOCK$, CONFIG$, DblBuff$, IFS$HLP$ 具體的內容會因硬軟件環(huán)境的不同而略有差異, 使用這些設備名稱時, 需要保證以下三點: 1. 該設備確實存在(由軟件虛擬的設備除外) 2. 該設備驅動程序已加載(aux, prn等標準設備由系統(tǒng)缺省定義) 3. 該設備已準備好(主要是指a: b: ., com1., lpt1.等) 可通過命令 mem/d | f

50、ind device /i 來檢閱你的系統(tǒng)中所加載的設備 另外, 在DOS系統(tǒng)中, 設備也被認為是一種特殊的文件, 而文件也可以稱作字符設備; 因為設備(device)與文件都是使用句柄(handle)來管理的, 句柄就是名字, 類似于文件名, 只不過句柄不是應用于磁盤管理, 而是應用于內存管理而已, 所謂設備加載也即指在內存中為其分配可引用的句柄. = 3、if errorlevel 待執(zhí)行的命令 很多DOS程序在運行結束后會返回一個數字值用來表示程序運行的結果(或者狀態(tài)),通過if errorlevel命令可以判斷程序的返回值,根據不同的返回值來決定執(zhí)行不同的命令(返回值必須按照從大到小的

51、順序排列)。如果返回值等于指定的數字,則條件成立,運行命令,否則運行下一句。 如if errorlevel 2 goto x2 = 注 = 返回值從大到小的順序排列不是必須的, 而只是執(zhí)行命令為 goto 時的習慣用法, 當使用 set 作為執(zhí)行命令時, 通常會從小到大順序排列, 比如需將返回碼置入環(huán)境變量, 就需使用以下的順序形式: if errorlevel 1 set el=1 if errorlevel 2 set el=2 if errorlevel 3 set el=3 if errorlevel 4 set el=4 if errorlevel 5 set el=5 . 當然,

52、也可以使用以下循環(huán)來替代, 原理是一致的: for %e in (1 2 3 4 5 6 7 8.) do if errorlevel %e set el=%e 更高效簡潔的用法, 可以參考我寫的另一篇關于獲取 errorlevel 的文章 出現此種現象的原因是, if errorlevel 比較返回碼的判斷條件并非等于, 而是大于等于. 由于 goto 的跳轉特性, 由小到大排序會導致在較小的返回碼處就跳出; 而由于 set命令的 重復 賦值特性, 由大到小排序會導致較小的返回碼 覆蓋 較大的返回碼. 另外, 雖然 if errorlevel= command 也是有效的命令行, 但也只是

53、解釋命令行時將 = 作為命令行切分符而忽略掉罷了 = 二、goto 批處理文件運行到這里將跳到goto所指定的標號(標號即label,標號用:后跟標準字符串來定義)處,goto語句一般與if配合使用,根據不同的條件來執(zhí)行不同的命令組。 如: goto end :end echo this is the end 標號用:字符串來定義,標號所在行不被執(zhí)行。 = willsort 編注 label 常被譯為 標簽 , 但是這并不具有廣泛的約定性. goto 與 : 聯(lián)用可實現執(zhí)行中途的跳轉, 再結合 if 可實現執(zhí)行過程的條件分支, 多個 if 即可實現命令的分組, 類似 C 中 switch ca

54、se 結構或者 Basic 中的 select case 結構, 大規(guī)模且結構化的命令分組即可實現高級語言中的函數功能. 以下是批處理和C/Basic在語法結構上的對照: Batch C / Basic goto&: goto&: goto&:&if if&else / if&elseif&endif goto&:&if. switch&case / select case goto&:&if&set&envar. function() / function(),sub() = 三、choice 使用此命令可以讓用戶輸入一個字符(用于選擇),從而根據用戶的選擇返回不同的errorlevel,然

55、后于if errorlevel配合,根據用戶的選擇運行不同的命令。 注意:choice命令為DOS或者Windows系統(tǒng)提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice /?查看用法。 choice的命令語法(該語法為Windows 2003中choice命令的語法,其它版本的choice的命令語法與此大同小異): CHOICE /C choices /N /CS /T timeout /D choice /M text 描述: 該工具允許用戶從選擇列表選擇一個項目并返回所選項目的索引。 參數列表: /C choices 指定要創(chuàng)建的選項列表。默認列表是 YN。 /N

56、 在提示符中隱藏選項列表。提示前面的消息得到顯示, 選項依舊處于啟用狀態(tài)。 /CS 允許選擇分大小寫的選項。在默認情況下,這個工具 是不分大小寫的。 /T timeout 做出默認選擇之前,暫停的秒數??山邮艿闹凳菑?0 到 9999。如果指定了 0,就不會有暫停,默認選項 會得到選擇。 /D choice 在 nnnn 秒之后指定默認選項。字符必須在用 /C 選 項指定的一組選擇中; 同時,必須用 /T 指定 nnnn。 /M text 指定提示之前要顯示的消息。如果沒有指定,工具只 顯示提示。 /? 顯示幫助消息。 注意: ERRORLEVEL 環(huán)境變量被設置為從選擇集選擇的鍵索引。列出的

57、第一個選 擇返回 1,第二個選擇返回 2,等等。如果用戶按的鍵不是有效的選擇, 該工具會發(fā)出警告響聲。如果該工具檢測到錯誤狀態(tài),它會返回 255 的 ERRORLEVEL 值。如果用戶按 Ctrl+Break 或 Ctrl+C 鍵,該工具會返回 0 的 ERRORLEVEL 值。在一個批程序中使用 ERRORLEVEL 參數時,將參數降 序排列。 示例: CHOICE /? CHOICE /C YNC /M 確認請按 Y,否請按 N,或者取消請按 C。 CHOICE /T 10 /C ync /CS /D y CHOICE /C ab /M 選項 1 請選擇 a,選項 2 請選擇 b。 CHO

58、ICE /C ab /N /M 選項 1 請選擇 a,選項 2 請選擇 b。 = willsort 編注 = 我列出win98下choice的用法幫助, 已資區(qū)分 Waits for the user to choose one of a set of choices. 等待用戶選擇一組待選字符中的一個 CHOICE /C:choices /N /S /T:c,nn text /C:choices Specifies allowable keys. Default is YN 指定允許的按鍵(待選字符), 默認為YN /N Do not display choices and ? at end

59、 of prompt string. 不顯示提示字符串中的問號和待選字符 /S Treat choice keys as case sensitive. 處理待選字符時大小寫敏感 /T:c,nn Default choice to c after nn seconds 在 nn 秒后默認選擇 c text Prompt string to display 要顯示的提示字符串 ERRORLEVEL is set to offset of key user presses in choices. ERRORLEVEL 被設置為用戶鍵入的字符在待選字符中的偏移值 如果我運行命令:CHOICE /C

60、YNC /M 確認請按 Y,否請按 N,或者取消請按 C。 屏幕上會顯示: 確認請按 Y,否請按 N,或者取消請按 C。 Y,N,C? 例:test.bat的內容如下(注意,用if errorlevel判斷返回值時,要按返回值從高到低排列): echo off choice /C dme /M defrag,mem,end if errorlevel 3 goto end if errorlevel 2 goto mem if errorlevel 1 goto defrag :defrag c:dosdefrag goto end :mem mem goto end :end echo go

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論