車(chē)床切削力的測(cè)試系統(tǒng)設(shè)計(jì).doc_第1頁(yè)
車(chē)床切削力的測(cè)試系統(tǒng)設(shè)計(jì).doc_第2頁(yè)
車(chē)床切削力的測(cè)試系統(tǒng)設(shè)計(jì).doc_第3頁(yè)
車(chē)床切削力的測(cè)試系統(tǒng)設(shè)計(jì).doc_第4頁(yè)
車(chē)床切削力的測(cè)試系統(tǒng)設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

沈 陽(yáng) 航 院 設(shè) 計(jì) 用 紙前言隨著科學(xué)技術(shù)的發(fā)展,人們對(duì)自動(dòng)化的要求越來(lái)越高,對(duì)于車(chē)床切削力的檢測(cè),我院機(jī)械設(shè)計(jì)系學(xué)生原來(lái)使用的方法是通過(guò)測(cè)力儀以及動(dòng)態(tài)電阻應(yīng)變儀在雙對(duì)數(shù)坐標(biāo)紙上測(cè)繪出電壓變化曲線,再根據(jù)曲線進(jìn)行計(jì)算,得到力的變化曲線以及力與各車(chē)床參數(shù)之間的關(guān)系曲線和經(jīng)驗(yàn)公式。這種數(shù)據(jù)采集和數(shù)據(jù)處理均靠人工進(jìn)行的方法既繁瑣又不精確。而隨著電子技術(shù)的迅速發(fā)展以及微型計(jì)算機(jī)技術(shù)的普及,自動(dòng)檢測(cè)技術(shù)在機(jī)械工業(yè)的發(fā)展中得到了廣泛的應(yīng)用。尤其是面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言和單片機(jī)的出現(xiàn),使自動(dòng)檢測(cè)系統(tǒng)的成本及精度得到了明顯的改觀。實(shí)驗(yàn)室的切削力實(shí)驗(yàn)也多采用計(jì)算機(jī)輔助測(cè)試。隨著軟件技術(shù)的快步發(fā)展,面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言相繼出現(xiàn),Visual Basic語(yǔ)言以其實(shí)用、方便、快捷、開(kāi)發(fā)周期短、廣泛而強(qiáng)大的功能越來(lái)越被廣大編程人員所親賴(lài),本系統(tǒng)的上位機(jī)部分就采用這種語(yǔ)言來(lái)編寫(xiě)的。經(jīng)過(guò)調(diào)試,結(jié)果表明:此系統(tǒng)簡(jiǎn)化了傳統(tǒng)的測(cè)量電路,工作效率高,測(cè)量準(zhǔn)確,實(shí)現(xiàn)了切削力測(cè)試系統(tǒng)的自動(dòng)化。本文首先論述了整體系統(tǒng)工程的工作原理,然后是方案論證,接著分別介紹了硬件電路設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)。 重點(diǎn)介紹了軟件系統(tǒng)程序的編寫(xiě)過(guò)程,同時(shí)也對(duì)硬件的原理設(shè)計(jì)做了簡(jiǎn)練的敘述,最后講述了軟件測(cè)試及軟硬件聯(lián)通調(diào)試。第1章 方案論證本車(chē)床切削力的測(cè)試系統(tǒng)分上、下位機(jī)兩部分,本文主要對(duì)上位機(jī)進(jìn)行設(shè)計(jì)。上位機(jī)的主要任務(wù)是接收下位機(jī)傳送過(guò)來(lái)的切削力數(shù)據(jù),將其存儲(chǔ),并對(duì)采集的數(shù)據(jù)進(jìn)行處理,得到切削力與進(jìn)給量,切削力與切削深度,切削力與切削速度之間的關(guān)系曲線和經(jīng)驗(yàn)公式,并能顯示力的波形。圖1.1為機(jī)床切削力的計(jì)算機(jī)輔助采集與處理系統(tǒng)簡(jiǎn)圖。測(cè)力儀將主切削力Fc轉(zhuǎn)變成電壓信號(hào)VFc;經(jīng)過(guò)電阻動(dòng)態(tài)應(yīng)變儀和低通濾波放大器將信號(hào)放大;再經(jīng)過(guò)A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號(hào),輸入給單片機(jī)或微型計(jì)算機(jī);計(jì)算機(jī)按預(yù)編程序?qū)?shù)字信號(hào)進(jìn)行分析處理與計(jì)算,將其結(jié)果(切削力測(cè)量值及經(jīng)驗(yàn)公式)以及各種關(guān)系曲線和隨時(shí)間變化的力的曲線顯示出來(lái),也可以用打印機(jī)將切削力的各種影響曲線和隨時(shí)間變化的曲線打印出來(lái)。該系統(tǒng)不僅可以測(cè)量切削力的平均值,而且可測(cè)得切削力的瞬時(shí)值,時(shí)間間隔在100us25ms之間。圖1.1 切削力的計(jì)算機(jī)輔助采集與處理系統(tǒng)框圖根據(jù)系統(tǒng)的設(shè)計(jì)要求,上位機(jī)部分可以分為用戶控制界面模塊、串口通信模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)處理模塊、曲線繪制模塊以及曲線打印模塊。以下介紹上位機(jī)的設(shè)計(jì)方案選擇。1.高級(jí)語(yǔ)言的選擇隨著軟件技術(shù)的快步發(fā)展,面向?qū)ο蟮膽?yīng)用程序的相繼出現(xiàn),許多設(shè)計(jì)語(yǔ)言都能夠?qū)崿F(xiàn)上下位機(jī)通信的編寫(xiě),像Visual Basic語(yǔ)言、Visual C+語(yǔ)言、Visual FoxPro語(yǔ)言等等。對(duì)于目前短期開(kāi)發(fā)的系統(tǒng)而言,Visual Basic語(yǔ)言以其實(shí)用、方便、快捷、開(kāi)發(fā)周期短、ActiveX控件豐富、可移植性好、廣泛而強(qiáng)大的功能越來(lái)越被廣大編程人員所親賴(lài)。似乎有些專(zhuān)業(yè)的編程人員也放棄了Visual C+而改用了Visual Basic之類(lèi)的RAD編程工具,盡管Visual C+在靈活性、代碼緊湊、運(yùn)行速度快以及底層開(kāi)發(fā)等方面Visual Basic是無(wú)法與其比擬的,但編寫(xiě)Visual C+應(yīng)用程序過(guò)長(zhǎng)的調(diào)試和開(kāi)發(fā)周期確實(shí)有點(diǎn)不適應(yīng)當(dāng)今的應(yīng)用程序開(kāi)發(fā)環(huán)境。因此在本系統(tǒng)的設(shè)計(jì)中,采用Visual Basic語(yǔ)言來(lái)設(shè)計(jì)系統(tǒng)的上位機(jī)部分。2.界面的設(shè)計(jì)使用高級(jí)語(yǔ)言編程可以在PC機(jī)上編制非常友好、直觀的人機(jī)控制界面。把原來(lái)的人體直接控制變成了鼠標(biāo)、鍵盤(pán)的間接控制;并且通過(guò)直觀的控制界面可以很容易的實(shí)現(xiàn)控制,對(duì)現(xiàn)場(chǎng)的控制情況一目了然,增加了操作人員的視覺(jué)感、安全感,簡(jiǎn)化了操作。用戶通過(guò)各窗體與應(yīng)用程序?qū)υ?,而程序相?duì)于用戶是隱藏的,用戶只要求程序能實(shí)現(xiàn)他們的具體要求,而不關(guān)心程序是如何組織的,因此,一個(gè)好的應(yīng)用程序,應(yīng)該具有友好的用戶界面。3.串口通信模塊的設(shè)計(jì)由于系統(tǒng)對(duì)數(shù)據(jù)傳輸?shù)乃俣纫蟛⒉桓?,同時(shí)考慮串口的價(jià)格比并口低,因此本系統(tǒng)采用串口進(jìn)行通信。Visual Basic語(yǔ)言的MSComm通信控件提供了一系列標(biāo)準(zhǔn)通信命令接口,它允許建立串口連接,還可以發(fā)送命令、進(jìn)行數(shù)據(jù)交換以及監(jiān)視和響應(yīng)在通信過(guò)程中可能發(fā)生的各種事件和錯(cuò)誤,從而可以用它建立全雙工的、事件驅(qū)動(dòng)的、高效使用的通信程序。因此在設(shè)計(jì)中采用MSComm控件處理通信問(wèn)題是必要的選擇。要把上位機(jī)的數(shù)據(jù)送到串行端口上以及怎樣才能把串行端口上數(shù)據(jù)接收進(jìn)來(lái),是上位機(jī)編程中的關(guān)鍵部分。4.數(shù)據(jù)處理由于系統(tǒng)要求的是單因素測(cè)力,在刀具、被切削的材料、應(yīng)變儀固定的情況下,切削力主要與三個(gè)因素有關(guān),即切削深度、切削速度、進(jìn)給量。而且固定任意其中的兩個(gè)量,則切削力與剩余的一個(gè)量成指數(shù)關(guān)系,兩邊取對(duì)數(shù),則變成了線性關(guān)系,即在雙對(duì)數(shù)的坐標(biāo)紙上曲線是直線,因此在數(shù)據(jù)處理模塊采用了一元線性回歸算法,通過(guò)一元線性回歸算法計(jì)算出曲線的參數(shù)。當(dāng)然同時(shí)我們要找到切削力的實(shí)時(shí)變化曲線(這條曲線理論上是一條平行于X軸的直線,因?yàn)楣潭饲邢魃疃?、切削速度、進(jìn)給量的情況下,切削力為一個(gè)常數(shù),而實(shí)際測(cè)量中由于干擾,直線有所起伏)。5.數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)模塊中,可以采用數(shù)組和數(shù)據(jù)庫(kù)兩種存儲(chǔ)方式存儲(chǔ)數(shù)據(jù)。使用數(shù)組存儲(chǔ)數(shù)據(jù)既方便數(shù)據(jù)的傳遞,又方便數(shù)據(jù)的運(yùn)算處理,而下位機(jī)采集的數(shù)據(jù)僅為切削力的實(shí)時(shí)值,所以只需要采用簡(jiǎn)單的數(shù)組對(duì)接收的數(shù)據(jù)進(jìn)行存儲(chǔ)即可,這使得程序中數(shù)據(jù)的調(diào)用更加方便。6.曲線繪制模塊從下位機(jī)接收來(lái)的數(shù)據(jù),經(jīng)過(guò)處理運(yùn)算之后,就要根據(jù)數(shù)據(jù)結(jié)果做出力與切削深度、切削速度、進(jìn)給量之間的關(guān)系曲線。Visual Basic語(yǔ)言提供了MSChart控件繪制各種圖表。使用 MSChart 控件可以方便、直觀的按照一定的規(guī)范將數(shù)據(jù)以圖表的形式繪制出來(lái),并且易于編程。在曲線繪制模塊中,擬采用MSChart控件顯示力的關(guān)系曲線。7.曲線打印模塊為了整個(gè)系統(tǒng)的完整性,需要設(shè)計(jì)曲線打印功能,以適應(yīng)用戶的需要。第2章 硬件電路介紹2.1 整體電路介紹車(chē)床切削力系統(tǒng)的下位機(jī)部分實(shí)現(xiàn)的功能是承擔(dān)切削力信號(hào)的采集、A/D轉(zhuǎn)換以及將數(shù)據(jù)傳輸給上位機(jī)。根據(jù)系統(tǒng)的要求,下位機(jī)硬件電路部分需要實(shí)現(xiàn)濾波、放大、A/D轉(zhuǎn)換以及數(shù)據(jù)傳輸。這樣就可以把硬件電路部分分為濾波電路、放大電路、采樣保持電路、A/D轉(zhuǎn)換電路、串口通信電路和電源電路。下位機(jī)整體電路見(jiàn)附錄:下位機(jī)整體電路。2.2 串行通信電路介紹上下位機(jī)進(jìn)行通信,涉及到數(shù)據(jù)通信問(wèn)題。數(shù)據(jù)通信方式有兩種,即并行數(shù)據(jù)通信和串行數(shù)據(jù)通信。并行數(shù)據(jù)通信是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送(發(fā)送或接收)的通信方式。其優(yōu)點(diǎn)是傳遞速度快;缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳遞線。例如MCS-51單片機(jī)與打印機(jī)之間的數(shù)據(jù)傳送就屬于并行數(shù)據(jù)通信。并行通信在位數(shù)多,傳送距離遠(yuǎn)是就不太適宜。串行數(shù)據(jù)通信是指外設(shè)和計(jì)算機(jī)間使用一根數(shù)據(jù)信號(hào)線(另外需要地線,可能還需要控制線),數(shù)據(jù)在一根數(shù)據(jù)信號(hào)線上一位一位地進(jìn)行傳輸。如圖2.1所示:圖37 串行數(shù)據(jù)通信在串行數(shù)據(jù)通信中,起始位占用一位(低電平),用來(lái)表示字符的開(kāi)始。其后為7 或8 位的數(shù)據(jù),第8位通常為奇偶校驗(yàn)位,最后一位為停止位(高電平),用來(lái)表示字符傳送結(jié)束。上述字符格式通常作為一個(gè)串行幀,如無(wú)奇偶校驗(yàn)位,即為常見(jiàn)的N.8.1幀格式。串行數(shù)據(jù)通信中,每秒傳送的數(shù)據(jù)位稱(chēng)為波特率。如數(shù)據(jù)傳送的波特率為1200 波特,采用N.8.1 幀格式(10 位),則每秒傳送字節(jié)為1200 個(gè),單個(gè)字節(jié)傳送的時(shí)間即為波特率的倒數(shù):T=1/1200=0.833ms。即每一位數(shù)據(jù)都占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。串行數(shù)據(jù)通信突出優(yōu)點(diǎn)是只需一對(duì)傳送線,這樣就大大降低了傳送成本,特別適用于遠(yuǎn)距離通信;其缺點(diǎn)是速度傳送較低。假設(shè)并行傳送N位數(shù)據(jù)所需的時(shí)間為t,那么串行傳送的時(shí)間至少為Nt,而實(shí)際上總是大于Nt。因此,在遠(yuǎn)距離通信中串行數(shù)據(jù)通信可以節(jié)約通信成本,當(dāng)然,其傳輸速度要比并行數(shù)據(jù)通信傳輸慢。而通常單片機(jī)與計(jì)算機(jī)間的數(shù)據(jù)通信常采用串行數(shù)據(jù)通信的方式。EIA RS232C是串行通訊中應(yīng)用最廣泛的標(biāo)準(zhǔn)總線, 它包括了按位串行傳輸?shù)碾娖胶蜋C(jī)械方面的規(guī)定,其信號(hào)傳輸?shù)淖畲箅娎|長(zhǎng)度為30m,最高傳輸速率為30Kbps,因此,其適用于數(shù)據(jù)傳輸速率低、通信距離短的數(shù)據(jù)通信。通常PC機(jī)配有符合EIA RS-232C規(guī)范的外部總線標(biāo)準(zhǔn)接口,RS-232C采用的是負(fù)邏輯,即邏輯“1”:5V至15V;邏輯“0”:+5V至+15V。單片機(jī)通過(guò)普通I/O 口與PC 機(jī)通訊時(shí),由于單片機(jī)輸入輸出電平均為T(mén)TL電平,TTL電平的邏輯“1”和“0” 則分別為2.4V和0.4V。二者電平的規(guī)范不一致,因此要完成PC機(jī)與單片機(jī)的數(shù)據(jù)通訊,必須外接電路進(jìn)行電平轉(zhuǎn)換。即在單片機(jī)發(fā)送端用驅(qū)動(dòng)器將TTL電平轉(zhuǎn)換為RS-232C電平,在接收端用接收器將RS232C電平再轉(zhuǎn)換為T(mén)TL電平。 下位機(jī)串行接口部分選用了MAXIM公司的標(biāo)準(zhǔn)RS232接口芯片MAX3232來(lái)作TTL電平到RS232 接口電平的轉(zhuǎn)換。MAX 3232芯片是MAXIM公司生產(chǎn)的包含兩路接收器和驅(qū)動(dòng)器的通用串行接收/發(fā)送驅(qū)動(dòng)器芯片。該芯片適用于各種EIA-232C和V2.8/V2.4的通信接口。MAX3232芯片內(nèi)部有一個(gè)電源電壓變換器,可以用單電壓(+5V)實(shí)現(xiàn)RS232接口邏輯“1”(-3V15V)和邏輯“0”(+3V15V)。所以,采用此芯片接口的串行通信系統(tǒng)只需單一的+5V電源就可以了。對(duì)于沒(méi)有12V電源的場(chǎng)合,其適應(yīng)性更強(qiáng)。加之其價(jià)格適中,其外圍電路簡(jiǎn)單,只需外接五個(gè)0.1F的電容即可,所以被廣泛采用。下位機(jī)所采用的單片機(jī)與計(jì)算機(jī)串行接口電路如圖2.2所示: 圖2.2 單片機(jī)與計(jì)算機(jī)串行接口電路第3章 上位機(jī)系統(tǒng)設(shè)計(jì)本論文主要介紹上位機(jī)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。上位機(jī)的主要任務(wù)是接收下位機(jī)傳送過(guò)來(lái)的切削力數(shù)據(jù),將其存儲(chǔ),并對(duì)采集的數(shù)據(jù)進(jìn)行處理,得到切削力與進(jìn)給量參數(shù)、切削力與切削深度參數(shù)、切削力與切削速度參數(shù)之間的關(guān)系曲線和經(jīng)驗(yàn)公式,并能顯示和打印力的曲線以及經(jīng)驗(yàn)公式。在系統(tǒng)設(shè)計(jì)時(shí),基于Windows程序風(fēng)格而編寫(xiě)。例如,在界面設(shè)計(jì)模塊中,系統(tǒng)對(duì)用戶的某些如打開(kāi)的文件類(lèi)型不對(duì)、本應(yīng)該輸入數(shù)字而用戶輸入了字符等其它非法的值、打開(kāi)文件的路徑不對(duì)等等有可能導(dǎo)致系統(tǒng)出錯(cuò)或崩潰的錯(cuò)誤操作進(jìn)行處理并提示用戶。系統(tǒng)還有歷史記錄的以及打印的功能,這使得系統(tǒng)的功能更加完善。依照系統(tǒng)的功能要求,系統(tǒng)設(shè)計(jì)分為用戶控制界面模塊、串口通信模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)處理模塊、曲線繪制模塊以及曲線打印模塊。整個(gè)系統(tǒng)的方框圖如圖3.1所示圖3.1 系統(tǒng)方框圖下面分別詳細(xì)介紹各個(gè)模塊的設(shè)計(jì)。3.1 用戶控制界面模塊設(shè)計(jì)使用高級(jí)語(yǔ)言編程可以在PC機(jī)上編制非常友好、直觀的人機(jī)控制界面。把原來(lái)的人體直接控制變成了鼠標(biāo)、鍵盤(pán)的間接控制;并且通過(guò)直觀的控制界面可以很容易的實(shí)現(xiàn)控制,對(duì)現(xiàn)場(chǎng)的控制情況一目了然,增加了操作人員的視覺(jué)感、安全感,簡(jiǎn)化了操作。用戶通過(guò)各窗體與應(yīng)用程序?qū)υ?,而程序相?duì)于用戶是隱藏的,用戶只要求程序能實(shí)現(xiàn)他們的具體要求,而不關(guān)心程序是如何組織的,因此,一個(gè)好的應(yīng)用程序,應(yīng)該具有友好的用戶界面。在本程序設(shè)計(jì)中,用戶接口界面模塊考慮實(shí)現(xiàn)了以下三個(gè)方面的特性:1.可使用性它包括: 使用的簡(jiǎn)單性 用戶接口界面中所用的術(shù)語(yǔ)應(yīng)標(biāo)準(zhǔn)化和相互一致 用戶界面具有容錯(cuò)能力2.可靠性使用戶接口界面能保證用戶正確可靠的使用系統(tǒng),保證有關(guān)程序和數(shù)據(jù)的安全性。3.復(fù)雜性復(fù)雜性指的是用戶接口界面的規(guī)模和組織的復(fù)雜程度,在完成用戶預(yù)定功能的前提下,應(yīng)該使用戶接口界面越簡(jiǎn)單越好。Visual Basic 作為一種可視化編程軟件,以其優(yōu)秀的圖形化界面設(shè)計(jì)風(fēng)格而著稱(chēng)。對(duì)Visual Basic 來(lái)說(shuō),窗體(Form)是用戶進(jìn)行人機(jī)對(duì)話的接口界面,通過(guò)設(shè)置窗體對(duì)象,由屬性定義其外觀、由方法定義其行為、由事件定義其與用戶的交互。在這里首要的是定義其外觀。本章主要從MDI主窗體界面、子窗體界面、菜單、工具欄、狀態(tài)欄、對(duì)話框等幾個(gè)方面來(lái)介紹界面模塊的設(shè)計(jì)。3.1.1MDI主窗體界面的設(shè)計(jì)在本系統(tǒng)中,需要顯示力的實(shí)時(shí)變化曲線、力與切削深度、進(jìn)給量、切削速度等共四個(gè)曲線。Visual Basic提供了多重文檔界面(MDI,multiple document interface)。建立一個(gè)MDI應(yīng)用程序,可以建立和顯示多個(gè)不同類(lèi)型的文檔窗口。因此建立一個(gè)MDI作為系統(tǒng)的主窗口。在設(shè)計(jì)中考慮到Windows程序具有一致的界面的特點(diǎn),添加了菜單欄、工具欄、以及快捷鍵,使用戶能夠從其它Windows程序中快速的掌握本系統(tǒng)的使用,因?yàn)楸3峙c其它應(yīng)用程序一致的應(yīng)用程序界面使用戶更容易找到其需要使用的菜單選項(xiàng),例如使用戶憑以前的經(jīng)驗(yàn)便會(huì)知道數(shù)據(jù)采集時(shí)可以單擊菜單欄的數(shù)據(jù)采集菜單,也可以使用快捷鍵Alt+D,或者單擊工具欄數(shù)據(jù)采集的圖標(biāo)。1.系統(tǒng)菜單的設(shè)計(jì)菜單是一個(gè)Windows應(yīng)用程序GUI必不可少的組成部分,能夠使用戶向應(yīng)用程序發(fā)出命令。確實(shí),很難想象一個(gè)Windows應(yīng)用程序沒(méi)有菜單。在本系統(tǒng)菜單的設(shè)計(jì)中,頂層菜單的結(jié)構(gòu)和菜單選項(xiàng)的放置順序與其它的應(yīng)用程序一致。使用菜單編輯器設(shè)置系統(tǒng)菜單,將系統(tǒng)需要實(shí)現(xiàn)的功能在菜單欄中體現(xiàn)出來(lái),本系統(tǒng)的系統(tǒng)菜單如下圖3.2所示:圖3.2 系統(tǒng)菜單菜單設(shè)計(jì)完畢,下一步是使應(yīng)用程序的用戶通過(guò)鍵盤(pán)操作各個(gè)菜單選項(xiàng),將用于實(shí)現(xiàn)這一步的工具是訪問(wèn)鍵和快捷鍵。2.系統(tǒng)菜單快捷鍵和訪問(wèn)鍵的設(shè)計(jì)應(yīng)用程序的用戶該能夠如同使用鼠標(biāo)那樣用鍵盤(pán)操作程序,鼠標(biāo)或許是這兩種輸入設(shè)備中使用較多的一個(gè),而且它變得越來(lái)越具備滾動(dòng)和無(wú)線功能。然而鍵盤(pán)自有其用處,例如有人就喜歡用鍵盤(pán)操作而不喜歡鼠標(biāo)操作,這就顯示出快捷鍵和訪問(wèn)鍵的重要性。Visual Basic菜單編輯器提供了快捷鍵資源,可以在編輯菜單時(shí)將快捷鍵設(shè)定,如圖3.3所示。圖中顯示了快捷鍵的設(shè)定方法。圖3.3 快捷鍵的設(shè)定示圖上邊介紹的快捷鍵只能對(duì)子菜單設(shè)定,而在頂層菜單中是不能設(shè)定的.在頂層菜單中只能設(shè)定訪問(wèn)鍵,要在菜單編輯器中給菜單控件賦值訪問(wèn)鍵,則需要在要作為訪問(wèn)鍵字符的前面直接鍵入一個(gè)(&),如:文件(&F)。3.工具欄的設(shè)計(jì)Windows應(yīng)用程序通常有并且應(yīng)該有工具欄,工具欄項(xiàng)允許快速訪問(wèn)最常使用的命令,盡管工具欄按鈕的功能與菜單項(xiàng)相同,但工具欄按鈕有兩項(xiàng)優(yōu)點(diǎn)勝過(guò)菜單選項(xiàng),一是工具欄按鈕始終可視并且可立即訪問(wèn);二是工具欄可視而且圖形化,比菜單選項(xiàng)的純文本對(duì)用戶更加有吸引力。本系統(tǒng)的工具欄按鈕設(shè)計(jì)簡(jiǎn)單明了,不會(huì)給用戶帶來(lái)困惑。設(shè)計(jì)方法是:將按鈕圖標(biāo)添加到ImageList控件中,再添加一Toolbar控件,將Toolbar控件的圖像列表中設(shè)定為ImageList1,然后在Toolbar控件中插入按鈕,如圖3.4所示:圖3.4 工具欄按鈕的添加5.狀態(tài)欄的設(shè)計(jì)本著同樣的一致性原則,系統(tǒng)需要添加狀態(tài)欄,以備系統(tǒng)運(yùn)行時(shí)顯示系統(tǒng)的狀態(tài)。狀態(tài)欄的設(shè)計(jì)方法是:在主窗體中直接添加StatusBar控件,然后在其窗格屬性中插入3個(gè)窗格,第一個(gè)窗格供顯示系統(tǒng)運(yùn)行狀態(tài)所用,第二個(gè)窗格顯示系統(tǒng)時(shí)間,第三個(gè)窗格顯示數(shù)據(jù)采集的次數(shù)。窗格中這些狀態(tài)的顯示,需要編寫(xiě)程序代碼,詳細(xì)的程序代碼請(qǐng)見(jiàn)程序清單。添加了系統(tǒng)功能所必需的菜單欄、工具欄以及狀態(tài)欄之后的主窗口界面如圖3.5所示:圖3.5 系統(tǒng)主界面3.1.2 MDI子窗體的設(shè)計(jì)系統(tǒng)要求測(cè)量主切削力,顯示主切削力的實(shí)時(shí)變化曲線以及主切削力與進(jìn)給量、主切削力與切削深度、切削力與切削速度之間的關(guān)系曲線,因此添加四個(gè)子窗體用以顯示力的關(guān)系曲線。子窗體與普通窗體看上去沒(méi)有什么區(qū)別,將普通窗體的MDIChild屬性設(shè)置為T(mén)rue就可以將其設(shè)置為MDI子窗體。數(shù)據(jù)采集之后,經(jīng)過(guò)處理作出各種曲線以及車(chē)床切削力的經(jīng)驗(yàn)公式,為了能夠?qū)⑶€和經(jīng)驗(yàn)公式在子窗體中顯示出來(lái),利用了Label、TextBox控件將經(jīng)驗(yàn)公式顯示出來(lái),利用PictureBox、MSCart、Hscroll、Vscroll等控件處理顯示了關(guān)系曲線。這樣添加四個(gè)子窗體xtime、xandap、xandf、xandv分別用于顯示力的實(shí)時(shí)變化曲線、力與切削深度、力與進(jìn)給量、力與切削速度之間的關(guān)系曲線。在xtime窗體中,沒(méi)有公式要顯示,但是要對(duì)力的實(shí)時(shí)變化曲線進(jìn)行縮放,因此在窗體上添加了兩個(gè)TextBox控件、兩個(gè)Label控件和一個(gè)CommandButton按鈕,其實(shí)現(xiàn)的功能將在后邊的曲線繪制模塊中介紹。3.1.3 參數(shù)設(shè)定對(duì)話框的設(shè)計(jì)在車(chē)床切削力的測(cè)量系統(tǒng)中,有些參數(shù)的值需要輸入到上位機(jī)系統(tǒng),以備數(shù)據(jù)處理所用,因此,在設(shè)計(jì)中必須有對(duì)話框能夠?qū)?shù)的值讀入系統(tǒng),這里介紹系統(tǒng)參數(shù)設(shè)定對(duì)話框的設(shè)計(jì)。在對(duì)下位機(jī)采集的數(shù)據(jù)進(jìn)行處理時(shí),需要用到電阻應(yīng)變儀標(biāo)定參數(shù)Fx、系統(tǒng)標(biāo)定修正值、系統(tǒng)放大倍數(shù)等幾個(gè)參數(shù),所以在上位機(jī)里需要對(duì)這些參數(shù)進(jìn)行賦值,在窗體中通過(guò)TextBox控件賦值是最常用的方法。圖3.6是參數(shù)設(shè)定對(duì)話框的界面。圖3.6 參數(shù)設(shè)定對(duì)話框3.1.4數(shù)據(jù)采集對(duì)話框的設(shè)計(jì)在進(jìn)行數(shù)據(jù)采集之前,除了對(duì)系統(tǒng)參數(shù)進(jìn)行設(shè)定之外,還需要對(duì)車(chē)床參數(shù)進(jìn)行設(shè)定,同時(shí)顯示本次實(shí)驗(yàn)數(shù)據(jù)采集次數(shù)。數(shù)據(jù)采集對(duì)話框如圖3.7 所示:圖3.7 數(shù)據(jù)采集對(duì)話框3.1.5 修改放大倍數(shù)對(duì)話框的設(shè)計(jì)下位機(jī)放大器每一檔位的放大倍數(shù),理論上來(lái)說(shuō)是一個(gè)恒定的值,但是隨著元器件的老化,放大倍數(shù)或許會(huì)發(fā)生改變,或者系統(tǒng)的放大器被重新設(shè)計(jì)而改變了放大倍數(shù),這樣使用原來(lái)的放大倍數(shù)進(jìn)行數(shù)據(jù)處理便不切實(shí)際,因此在上位機(jī)系統(tǒng)中就需要對(duì)這種情況進(jìn)行處理,處理的方法就將修改后的放大倍數(shù)寫(xiě)進(jìn)注冊(cè)表,每次運(yùn)行程序進(jìn)行切削力測(cè)量時(shí)都使用更改后的放大倍數(shù)。圖3.8即為修改放大倍數(shù)對(duì)話框。圖3.8 修改放大倍數(shù)對(duì)話框3.1.6 其它界面的設(shè)計(jì)考慮到系統(tǒng)的全面性,在運(yùn)行此系統(tǒng)時(shí)首先進(jìn)入圖3.9所示界面。圖3.9 系統(tǒng)啟動(dòng)界面通過(guò)此界面選擇進(jìn)入、退出系統(tǒng)或查看系統(tǒng)介紹。系統(tǒng)介紹是一個(gè)關(guān)于對(duì)話框,如下圖3.10所示:圖3.10 關(guān)于對(duì)話框至此整個(gè)系統(tǒng)的界面模塊設(shè)計(jì)已經(jīng)完成。3.2串行通信模塊設(shè)計(jì)在WINDOWS環(huán)境下,串行通信程序的設(shè)計(jì)可以通過(guò)兩種方法實(shí)現(xiàn):利用ACTIVE X控件;使用API通信函數(shù)。使用ACTIVE X控件,串口通信的實(shí)現(xiàn)非常簡(jiǎn)單,結(jié)構(gòu)清新,缺點(diǎn)是欠靈活,使用API通信函數(shù)的優(yōu)缺點(diǎn)則基本上相反。串口通信模塊是本系統(tǒng)的重要部分,要把上位機(jī)的數(shù)據(jù)送到串行端口上以及怎樣才能把串行端口上數(shù)據(jù)接收進(jìn)來(lái),是上位機(jī)編程中的關(guān)鍵部分。3.2.1 MSComm控件簡(jiǎn)介VB5.0/6.0提供的MSComm通信控件是專(zhuān)門(mén)用來(lái)實(shí)現(xiàn)串行端口數(shù)據(jù)的傳輸和接收的,為應(yīng)用程序提供了串行通信功能,是一個(gè)標(biāo)準(zhǔn)的十位串口通信控件,它提供了一系列標(biāo)準(zhǔn)通信命令的接口,它允許建立串口連接,可以連接到其他通信設(shè)備(如Modem)、還可以發(fā)送命令、進(jìn)行數(shù)據(jù)交換以及監(jiān)視和響應(yīng)在通信過(guò)程中可能發(fā)生的各種錯(cuò)誤和事件,從而可以用它創(chuàng)建全雙工的、事件驅(qū)動(dòng)的、高效實(shí)用的通信程序。本次設(shè)計(jì)使用了MSComm控件。下面就介紹一下該控件的使用方法。1.控件屬性: commport設(shè)置并返回通信端口號(hào)。語(yǔ)法為:port = value value是一個(gè)整型值,表明使用的端口號(hào)。說(shuō)明:在設(shè)計(jì)時(shí),value可以設(shè)成從116的任何數(shù),但是如果用PortOpen屬性打開(kāi)一個(gè)不存在的端口時(shí),MSComm控件會(huì)產(chǎn)生錯(cuò)誤68(設(shè)備無(wú)效)。在打開(kāi)端口之前必須設(shè)置端號(hào)。 settings設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位等參數(shù)。語(yǔ)法為: object.settings = value value是一字符串表達(dá)式,說(shuō)明端口的設(shè)置值,由四個(gè)設(shè)置值組成,格式如下:“BBBB,P,D,S”其中,BBBB為波特率;P為奇偶校驗(yàn);D為數(shù)據(jù)位;S為停止為數(shù)。要值得注意的是此處的設(shè)置值一定要和單片機(jī)系統(tǒng)的串行口波特率設(shè)置值一致。 portopen設(shè)置并返回通訊端口的狀態(tài)。語(yǔ)法為:object.portopen= value value為一布爾表達(dá)式,說(shuō)明通訊端口的狀態(tài)。說(shuō)明:portopen屬性為true打開(kāi)端口,設(shè)置為False關(guān)閉并清除接收和發(fā)送緩沖區(qū)。 Input返回并刪除接收緩沖區(qū)中的數(shù)據(jù)流。語(yǔ)法為:object.input= value 說(shuō)明:inputlen屬性確定被input屬性讀取的字符數(shù)。設(shè)置inputlen為0,則input屬性讀取緩沖區(qū)中全部的內(nèi)容。Inputmode屬性確定被input讀取的數(shù)據(jù)類(lèi)型。如果inputmode=cominputmodetext,則input屬性通過(guò)一個(gè)variant返回文本數(shù)據(jù);如果設(shè)置inputmode=cominputmodebinary,則input屬性通過(guò)一個(gè)variant返回一個(gè)二進(jìn)制數(shù)據(jù)的數(shù)組。 InputLen設(shè)置并返回Input屬性從接收緩沖區(qū)讀取的字節(jié)數(shù)。語(yǔ)法為:object.inputLen= value 說(shuō)明:inputLen的缺省值為0,設(shè)置inputLen為0時(shí),使用input將使MSComm控件讀取接收緩沖區(qū)中的全部?jī)?nèi)容。該屬性在從輸出格式為定長(zhǎng)數(shù)據(jù)的機(jī)器讀取數(shù)據(jù)時(shí)非常有用。 InputMode設(shè)置或返回Input屬性取回的數(shù)據(jù)類(lèi)型。語(yǔ)法為:object.InputMode = value 說(shuō)明:InputMode屬性確定Input屬性如何取回?cái)?shù)據(jù),數(shù)據(jù)取回的格式是字符串或是二進(jìn)制數(shù)據(jù)的數(shù)組。 output往傳輸緩沖區(qū)寫(xiě)數(shù)據(jù)流。語(yǔ)法為:object.output = value value是一準(zhǔn)備寫(xiě)到傳輸緩沖區(qū)的一字符串。說(shuō)明:output屬性可以傳輸文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。 InBufferCount返回接收緩沖區(qū)中等待的字符數(shù)。語(yǔ)法為:object.InBufferCount = value value是接收緩沖區(qū)等待的字符數(shù)。說(shuō)明:InBufferCount是指已經(jīng)接收,并在接收緩沖區(qū)等待被取走的字符數(shù),用InBufferCount屬性設(shè)置為0來(lái)清除接收緩沖區(qū)。 InBufferSize設(shè)置并返回接收緩沖區(qū)的字節(jié)數(shù)。語(yǔ)法為:object.InBufferSize = value value是接收緩沖區(qū)的字節(jié)數(shù)。說(shuō)明:InBufferSize是指整個(gè)接收緩沖區(qū)的大小。缺省值是1024字節(jié)。 OutBufferCount返回在傳輸緩沖區(qū)中等待的字符數(shù)。語(yǔ)法為:object.OutBufferCount = value 說(shuō)明:設(shè)置OutBufferCount屬性為0可以清除傳輸緩沖區(qū)。 OutBufferSize以字節(jié)的形式設(shè)置并返回傳輸緩沖區(qū)的大小。語(yǔ)法為:object.OutBufferSize = value 說(shuō)明:OutBufferSize指整個(gè)傳輸緩沖區(qū)的大小。缺省值是512字節(jié)。 Rthreshold 在MSComm控件設(shè)置CommEvent屬性為ComEvReceive并產(chǎn)生Oncomm之前,設(shè)置并返回的要接收的字符數(shù)。語(yǔ)法為:object. Rthreshold = value 說(shuō)明:當(dāng)接收字符后,Rthreshold屬性設(shè)置為0,則不產(chǎn)生Oncomm事件。 commevent返回最近的通訊事件或錯(cuò)誤。用此屬性處理在數(shù)據(jù)傳輸過(guò)程中的異常事件。2.控件事件: oncomm無(wú)論何時(shí)當(dāng)commevent屬性的值變化時(shí),就產(chǎn)生oncomm事件。它標(biāo)志發(fā)生了一個(gè)通訊事件或一個(gè)錯(cuò)誤。Commevent屬性包括實(shí)際錯(cuò)誤或產(chǎn)生oncomm事件的編碼。但是,當(dāng)rthreshold或sthreshold屬性被設(shè)置為0時(shí),則會(huì)分別使comevreceive和comevsend事件無(wú)效。3.2.2 串行通信協(xié)議在進(jìn)行串行通信前,上下位機(jī)首先必須定好通信協(xié)議。通信協(xié)議決定了通信程序的編寫(xiě),因此有必要對(duì)串口通信有一定的了解。串口通信指的是將構(gòu)成字符的每個(gè)二進(jìn)制數(shù)據(jù)位按照一定的順序進(jìn)行傳送的通信方法。串口通信分為異步通信方式和同步通信方式。本系統(tǒng)的串行通信采用的是異步通信方式,異步通信規(guī)定了字符數(shù)據(jù)的傳送格式,即每個(gè)數(shù)據(jù)以相同的幀格式傳送。異步通信的數(shù)據(jù)傳送格式如下表3.1所示,每一幀由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成。1011空閑位起始位N(5,6,7,8)個(gè)數(shù)據(jù)位停止位空閑位表3.1 異步通信的數(shù)據(jù)傳送格式1.起始位在通信線上沒(méi)有數(shù)據(jù)傳送時(shí)處于邏輯“1”狀態(tài),當(dāng)發(fā)送設(shè)備發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)送一個(gè)邏輯“0”信號(hào),這個(gè)邏輯低電平就是起始位,起始位通過(guò)通信線傳向接收設(shè)備,當(dāng)接收設(shè)備檢測(cè)到這個(gè)邏輯低電平后,就開(kāi)始準(zhǔn)備接收數(shù)據(jù)位信號(hào),起始位所起的作用就是表示字符傳送開(kāi)始。2.數(shù)據(jù)位當(dāng)接收設(shè)備接收到起始位后,緊接著就會(huì)收到數(shù)據(jù)位,數(shù)據(jù)位的個(gè)數(shù)可以是5、6、7或8。3.奇偶校驗(yàn)位數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位,奇偶校驗(yàn)位用于有限差錯(cuò)檢測(cè),通信雙方在通信是約定一致的奇偶校驗(yàn)方式。4.停止位在奇偶位或數(shù)據(jù)位(當(dāng)無(wú)奇偶校驗(yàn)位時(shí))之后發(fā)送的是停止位,停止位是一個(gè)字符數(shù)的結(jié)束標(biāo)志。在異步通信過(guò)程中,字符數(shù)據(jù)一個(gè)一個(gè)的傳送,在發(fā)送間隙,即空閑時(shí),通信線路總是處于邏輯“1”狀態(tài)(高電平),每個(gè)字符數(shù)據(jù)的傳送均以邏輯“0”(低電平)開(kāi)始。通信線上的字符數(shù)據(jù)是按位傳送的,每一位寬度(位信號(hào)持續(xù)時(shí)間)由數(shù)據(jù)傳送速率決定。波特率即數(shù)據(jù)傳送速率的規(guī)定:?jiǎn)挝粫r(shí)間內(nèi)傳送的信息量,以每秒傳送的位表示,單位為波特。在異步串行通信中,接收設(shè)備和發(fā)送設(shè)備保持保持相同的傳送波特率,并且每個(gè)字符數(shù)據(jù)的起始位于發(fā)送設(shè)備保持同步,起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位的約定,在同一次的傳送過(guò)程中必須保持一致,這樣才能成功的傳送數(shù)據(jù)。在本系統(tǒng)的串口通信部分,通信協(xié)議如下規(guī)定:1.通信雙方均采用2400bit/s的速率傳送和接收數(shù)據(jù)。2.數(shù)據(jù)傳送的格式如下:1位起始位,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn)位。3.在數(shù)據(jù)采集時(shí),上位機(jī)向單片機(jī)發(fā)送數(shù)據(jù)索取信號(hào)F0,單片機(jī)收到數(shù)據(jù)并判斷是否為數(shù)據(jù)索取信號(hào)F0,是F0,則開(kāi)始采集數(shù)據(jù)并上傳,不是的話就繼續(xù)等待。下位機(jī)每進(jìn)行一次數(shù)據(jù)采集時(shí)采集的數(shù)據(jù)個(gè)數(shù)為1K,然后作為一個(gè)數(shù)據(jù)包進(jìn)行上傳。4.下位機(jī)上傳數(shù)據(jù)時(shí),先發(fā)一個(gè)數(shù)據(jù)開(kāi)始標(biāo)志0A,緊接著發(fā)送數(shù)據(jù),在數(shù)據(jù)結(jié)束時(shí)加一個(gè)數(shù)據(jù)的累加校驗(yàn)和,累加校驗(yàn)和取的是數(shù)據(jù)和的低8位字節(jié)。5.上位機(jī)接收數(shù)據(jù),判斷接收到的第一個(gè)字節(jié)是否為0A,是否收到1K數(shù)據(jù)(實(shí)際應(yīng)收到1026字節(jié),包括數(shù)據(jù)開(kāi)始標(biāo)志和累加校驗(yàn)和),以及累加校驗(yàn)和是否一致,如果條件都滿足,則進(jìn)行數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理,并回送一個(gè)數(shù)據(jù)接收正確信號(hào)0D,如果不一致,則發(fā)送數(shù)據(jù)接收錯(cuò)誤信號(hào)0B,并請(qǐng)求下位機(jī)重新發(fā)送數(shù)據(jù)。3.2.3 串口設(shè)置在進(jìn)行數(shù)據(jù)傳輸前,首先要對(duì)MSComm控件的屬性進(jìn)行設(shè)置即對(duì)串口進(jìn)行設(shè)置。其主要程序段及說(shuō)明如下:With MSComm1 .CommPort = 1 使用串行口1.Settings = 2400,n,8,1 設(shè)定波特率2400bps,無(wú)奇偶校驗(yàn),8位數(shù)據(jù)位,1位停止位.InBufferSize = 1026 設(shè)定接收緩沖區(qū)為1026字節(jié).OutBufferSize = 20 設(shè)定發(fā)送緩沖區(qū)為20字節(jié).InputMode = comInputModeBinary 設(shè)置接收數(shù)據(jù)模式為二進(jìn)制形式.InputLen = 0 當(dāng)使用MSComm1.Input時(shí),每次從接收緩沖區(qū)讀取全部字節(jié)。.SThreshold = 0 每次輸出一個(gè)字節(jié)到輸出緩沖區(qū).RThreshold = 1 設(shè)置接收一個(gè)字節(jié)后產(chǎn)生OnComm事件.InBufferCount = 0 清空輸入緩沖區(qū).OutBufferCount = 0 清空輸出緩沖區(qū) If .PortOpen = False Then .PortOpen = True If Err Then MsgBox 串口通信無(wú)效, vbCritical, 錯(cuò)誤 Exit Sub End If End If End With一般來(lái)說(shuō),計(jì)算機(jī)都有一個(gè)或多個(gè)串行端口,它們依次為Com1、Com2、。這些串口還提供了外部設(shè)備與PC機(jī)之間進(jìn)行數(shù)據(jù)傳輸和通信的通道,這些串口在CPU和外設(shè)之間充當(dāng)解釋器的角色。當(dāng)字符數(shù)據(jù)從CPU發(fā)送給外設(shè)時(shí),這些字符數(shù)據(jù)將被轉(zhuǎn)換成串行比特流數(shù)據(jù);當(dāng)接收數(shù)據(jù)時(shí),比特流數(shù)據(jù)被轉(zhuǎn)換為字符數(shù)據(jù)傳送給CPU。在本系統(tǒng)設(shè)計(jì)中直接設(shè)置串口為Com1口。3.2.4 系統(tǒng)異常處理程序設(shè)計(jì)在接收下位機(jī)上傳的數(shù)據(jù)時(shí),正常狀態(tài)下,數(shù)據(jù)采集及傳輸在10秒內(nèi)能夠完成,但是由于系統(tǒng)的聯(lián)接或者采集的數(shù)據(jù)有丟失等等異常情況有可能出現(xiàn),因此在編寫(xiě)串口程序時(shí),要考慮周全,使系統(tǒng)能夠自行處理數(shù)據(jù)傳輸時(shí)可能發(fā)生的異常情況。下邊介紹系統(tǒng)可能發(fā)生的幾種異常情況。1. 沒(méi)有收到數(shù)據(jù)下位機(jī)上傳數(shù)據(jù)時(shí),或者系統(tǒng)沒(méi)聯(lián)接好,或者下位機(jī)沒(méi)有開(kāi)啟等原因會(huì)造成這種異常情況。2.接收的數(shù)據(jù)少于發(fā)送的數(shù)據(jù)如果通過(guò)MSComm控件一次性傳送較多的二進(jìn)制數(shù)據(jù),那么很可能收到的數(shù)據(jù)不足。例如在設(shè)置為2400bps傳輸率的情況下,一次性可以傳輸2048個(gè)字符數(shù)據(jù),那么在大多數(shù)情況下一次只能收到1200個(gè)字符左右,這是因?yàn)樾掳娴腗SComm32.OCX中存在一個(gè)影響傳輸二進(jìn)制數(shù)據(jù)的臭蟲(chóng)(bug),但這并不是它的特性。3.數(shù)據(jù)開(kāi)始標(biāo)志不是&H0A接收數(shù)據(jù)時(shí)下位機(jī)可能對(duì)數(shù)據(jù)包處理有誤,例如沒(méi)有清空緩沖區(qū)等原因,因此設(shè)一數(shù)據(jù)開(kāi)始標(biāo)志作為數(shù)據(jù)包頭,包頭正確才是一包正確的數(shù)據(jù)傳送過(guò)來(lái)。4.數(shù)據(jù)的累加校驗(yàn)和不一致在數(shù)據(jù)傳輸過(guò)程中,由于誤碼的存在,或者系統(tǒng)的原因,有可能導(dǎo)致數(shù)據(jù)傳輸有誤,因此有必要上下位機(jī)進(jìn)行累加校驗(yàn)和的驗(yàn)證。程序流程圖如圖3.11所示:圖3.11 累加校驗(yàn)和驗(yàn)證流程圖3.2.5 串口通信程序流程圖在進(jìn)行串口編程之前,要規(guī)劃好程序執(zhí)行的順序,程序流程圖是必不可少的。圖3.12是本系統(tǒng)串口部分的流程圖。3.12 串口通信模塊流程圖3.3 數(shù)據(jù)處理模塊設(shè)計(jì)根據(jù)微機(jī)和單片機(jī)達(dá)成的協(xié)議,系統(tǒng)以預(yù)定的格式傳輸,在不出現(xiàn)異常的情況下,系統(tǒng)的采集數(shù)據(jù)、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、處理數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、曲線繪制等過(guò)程將連貫的執(zhí)行下來(lái),實(shí)現(xiàn)切削力的測(cè)量。在正常接收到數(shù)據(jù)以后,將進(jìn)入數(shù)據(jù)處理模塊,然后對(duì)處理的結(jié)果以文件形式保存,在一次數(shù)據(jù)采集之后,要先對(duì)力的數(shù)據(jù)進(jìn)行保存,關(guān)于數(shù)據(jù)存儲(chǔ)將在下一章介紹。切削力測(cè)量的主要目的是畫(huà)出切削力的關(guān)系曲線以及建立切削力的經(jīng)驗(yàn)公式。本系統(tǒng)采用最簡(jiǎn)單的方法即單因素法處理數(shù)據(jù),即在固定其它因素,只改變一個(gè)因素的條件下,測(cè)出切削力,然后處理數(shù)據(jù),建立經(jīng)驗(yàn)公式。在處理采集來(lái)的切削力數(shù)據(jù)時(shí),有圖解法可以使用,圖解法的優(yōu)點(diǎn)是作出的圖形比較直觀,運(yùn)算比較簡(jiǎn)便。但是在作圖連線時(shí)有一定的主觀性誤差,得出的經(jīng)驗(yàn)公式往往精度不夠高。在本模塊中,采用回歸分析法處理數(shù)據(jù)可以解決這個(gè)問(wèn)題。3.3.1 一元線性回歸法如果在切削力的測(cè)量中,只有一個(gè)自變量x,因變量y,測(cè)得一系列的數(shù)據(jù)(,),(i=1,2,3,n)。若已知變量x,y之間的關(guān)系是(或近似是)線性關(guān)系,則可以設(shè)它們的回歸方程為= + (3.1)式(3.1)所決定的圖形為回歸直線,和稱(chēng)為回歸方程中的回歸系數(shù)。實(shí)際測(cè)量值與回歸值的差值為-=- (3.2)式3.2表示與回歸直線的偏離程度。測(cè)量值與回歸值的偏差平方和為= (3.3)根據(jù)最小二乘法原理,即,為最小,可以求得和的值。由極值原理,和是下列方程組的解: =-2=0 (3.4) =-2=0解上方程組可得: =- (3.5) = (3.6)式中 , (3.7)令= (3.8)= (3.9) = - (3.10)則式3.6可寫(xiě)為 (3.11)由式3.5和3.6或式3.11,可求得、的值,從而得出回歸方程。求得回歸方程后,還要檢驗(yàn)它是否符合變量y與x之間的規(guī)律,用它來(lái)預(yù)報(bào)y的精度如何。習(xí)慣用相關(guān)系數(shù)來(lái)檢查。相關(guān)系數(shù)為 (3.12)式中 回歸平方和= (3.13)又可以寫(xiě)為= (3.14)如果|r|1,則說(shuō)明所有測(cè)量值的點(diǎn)都在回歸直線上,此時(shí)稱(chēng)x與y完全相關(guān)。若|r|0,則回歸線方程無(wú)意義,或?yàn)榍€相關(guān)。希望|r|接近于1。3.3.2 數(shù)據(jù)處理程序設(shè)計(jì)根據(jù)一元線性回歸算法,可以方便的設(shè)計(jì)出數(shù)據(jù)處理程序。從下位機(jī)接收來(lái)的數(shù)據(jù)被暫存在數(shù)組中,這更方便了數(shù)據(jù)的處理。下位機(jī)采集的數(shù)據(jù)經(jīng)過(guò)A/D轉(zhuǎn)換器之后存在這樣一個(gè)轉(zhuǎn)換公式: (3.15)因此,在程序設(shè)計(jì)時(shí)要將收到的數(shù)據(jù)二進(jìn)制的每一位都取出來(lái),以便能夠?qū)⒌玫降臄?shù)字量轉(zhuǎn)換為模擬量,從而計(jì)算出實(shí)際的力的數(shù)據(jù)。這段程序設(shè)計(jì)的流程圖如圖3.13所示:圖3.13 數(shù)字量轉(zhuǎn)換為模擬量的流程圖圖3.13中得到的模擬量存放在數(shù)組lastdata(j)中,其表示的數(shù)值實(shí)際上還不是真正力的數(shù)值,還要乘以車(chē)床參數(shù)、修正系數(shù),除以放大倍數(shù),轉(zhuǎn)換為真正力的數(shù)值。根據(jù)一元線性回歸法可知,關(guān)系曲線的繪制和經(jīng)驗(yàn)公式的求解需要分別計(jì)算出力與切削深度、進(jìn)給量、切削速度經(jīng)驗(yàn)中式中、和的值,這段關(guān)于、和的值的計(jì)算程序代碼詳見(jiàn)程序清單。3.4 數(shù)據(jù)存儲(chǔ)模塊設(shè)計(jì)數(shù)據(jù)處理之后,要對(duì)結(jié)果進(jìn)行存儲(chǔ),以備以后分析使用。設(shè)計(jì)中使用數(shù)組存儲(chǔ)接收過(guò)來(lái)的切削力的數(shù)據(jù),另外,系統(tǒng)開(kāi)辟了dap、dxf、dxv、dxt四種類(lèi)型的文件以存儲(chǔ)各種曲線的數(shù)據(jù)。將曲線以數(shù)據(jù)的形式保存到各種類(lèi)型的文件中,當(dāng)打開(kāi)這些文件時(shí),系統(tǒng)自動(dòng)將所表示的曲線繪制出來(lái),數(shù)據(jù)存儲(chǔ)模塊的流程圖如圖3.14所示。圖3.14 數(shù)據(jù)存儲(chǔ)流程圖現(xiàn)在我們經(jīng)常使用的IE、Word和VB都有歷史記錄功能菜單,最常見(jiàn)的莫過(guò)于Windows開(kāi)始菜單的文檔中的歷史記錄功能,它至少可以記錄15個(gè)曾經(jīng)使用過(guò)的文檔或程序。再次運(yùn)行這些文檔或程序時(shí),只需直接調(diào)用它們即可,使用起來(lái)非常方便。本著與Windows風(fēng)格一致的原則,本系統(tǒng)同樣設(shè)置了此項(xiàng)功能,在將曲線以數(shù)據(jù)的形式存儲(chǔ)之后或者將已存儲(chǔ)的文件打開(kāi)時(shí),要將文件名添加到歷史記錄中去。添加及顯示歷史記錄文件功能的流程圖如下圖3.15所示。圖3.15 添加及顯示歷史記錄文件流程圖3.5 曲線繪制模塊設(shè)計(jì)切削力與切削深度、進(jìn)給量、切削速度之間是指數(shù)的關(guān)系,、曲線分別表達(dá)了切削深度、進(jìn)給量、切削速度的單項(xiàng)切削力指數(shù)公式:; ; 如在等號(hào)兩邊取對(duì)數(shù),則Lg=Lg+LgLg=Lg+LgLg=Lg+Lg故、在雙對(duì)數(shù)曲線上是直線。有了這個(gè)線性關(guān)系,再根據(jù)上一章的一元線性回歸算法處理的數(shù)據(jù)就可以求出切削力的經(jīng)驗(yàn)公式并畫(huà)出力的關(guān)系曲線(在雙對(duì)數(shù)坐標(biāo)上顯示的是一條直線)。本章采用MSChart控件十分簡(jiǎn)單的調(diào)用數(shù)組里的數(shù)據(jù),把各曲線顯示出來(lái)。在使用MSChart控件時(shí),首先要將ChartType屬性設(shè)置為VtChChartType2dXY(2D XY 散點(diǎn)圖)。曲線繪制時(shí),有幾種情況,一種是繪制剛剛采集的還未保存的力的數(shù)據(jù)的各種曲線,一種是繪制已經(jīng)保存成文件的力的各種曲線。第一種情況下,直接調(diào)用數(shù)據(jù)處理后的數(shù)據(jù)進(jìn)行曲線繪制;第二種情況下,是調(diào)用文件中保存的數(shù)據(jù)進(jìn)行曲線繪制。3.5.1 力的實(shí)時(shí)變化曲線的繪制無(wú)論是繪制剛采集完的切削力數(shù)據(jù)曲線,還是繪制已經(jīng)保存成文件的數(shù)據(jù)曲線,其設(shè)計(jì)方法都是相同的。即通過(guò)調(diào)用數(shù)據(jù),在MSChart控件中使用ChartData屬性,進(jìn)行曲線的繪制。這段主程序代碼如下:If MDIsystem.CommonDialog1.filename Then 判斷是否打開(kāi)文件 For i = 1 To 1024 xtimedata(i, 2) = lastdata(i) xtimedata(i, 1) = i Next i MSChart4.ChartData = xtimedataElseIf counter 0 And MDIsystem.CommonDialog1.filename = Then 判斷是否查看剛采集完的切削力數(shù)據(jù) For i = 1 To 1024 xtimedata(i, 2) = 0.1 * lastdata(i) * Fxparameterdata * systemamenddata * 9.8 / amplify xtimedata(i, 1) = i Next i MSChart4.ChartData = xtimedata ElseIf historynum 0 Then 歷史紀(jì)錄? For i = 1 To 1024 xtimedata(i, 2) = lastdata(i) * 0.1 * Fxparameterdata * systemamenddata * 9.8 / amplify xtimedata(i, 1) = i Next i MSChart4.ChartData = xtimedataElse 沒(méi)有曲線顯示,否則將有隨機(jī)曲線顯示 For i = 1 To 2 xtimedata(i, 2) = 0 xtimedata(i, 1) = 0 Next i MSChart4.ChartData = xtimedata End If3.5.2 力的實(shí)時(shí)變化曲線的放大1024個(gè)數(shù)據(jù)在MSChart圖表中顯示,這樣不易看出曲線的變化,所以需要對(duì)曲線放大,取一局部的曲線顯示出來(lái),以供觀察。由于數(shù)據(jù)都存儲(chǔ)在數(shù)組中,因此使這一功能的實(shí)現(xiàn)非常簡(jiǎn)單,用戶可以隨意查看某一局部曲線的力的變化情況。主程序代碼如下:ReDim amplifyafter(1 To secondnum - firstnum + 1, 1 To 2) As Single 定義需要放大的局部數(shù)據(jù)的數(shù)組For i = 1 To secondnum - firstnum + 1 amplifyafter(i, 2) = 0.1 * lastdata(i + firstnum - 1) * Fxparameterdata * systemamenddata * 9.8 / amplify amplifyafter(i, 1) = i + firstnum - 1Next I取出局部數(shù)據(jù)MSChart4.ChartData = amplifyafter3.5.3 力與各參數(shù)關(guān)系曲線的繪制數(shù)據(jù)處理之后得到數(shù)據(jù)、和,然后根據(jù)一元線性回歸法的原理在對(duì)數(shù)坐標(biāo)軸上繪制出各種曲線。MSChart控件可以通過(guò)Type屬性返回或設(shè)置坐標(biāo)軸的刻度類(lèi)型。設(shè)置雙對(duì)數(shù)坐標(biāo)的主要程序代碼如下: Dim axisID As VtChAxisId 為二維折線圖改變 x 和 y 軸為對(duì)數(shù)刻度。 For axisID = VtChAxisIdX To VtChAxisIdY With MSChart.Plot.Axis(axisID).AxisScale .Type = VtChScaleTypeLogarithmic .LogBase = 10 End With Next3.6曲線打印模塊設(shè)計(jì)系統(tǒng)設(shè)計(jì)了打印程序,以實(shí)現(xiàn)整個(gè)系統(tǒng)功能的完整性。為了將曲線和經(jīng)驗(yàn)公式一并打印出來(lái),設(shè)計(jì)時(shí)采用了打印窗體的方法。在Visual Basic中,在繪制圖形時(shí),如果 AutoRedraw 屬性為 True,則在運(yùn)行時(shí)PrintForm 將打印 Form 對(duì)象或 PictureBox 控件上的圖形。因此可以使用PrintForm方法打印窗體。PrintForm方法可以將窗體對(duì)象的圖像逐位發(fā)送給打印機(jī),而將Form對(duì)象的全部可見(jiàn)圖像和位圖打印出來(lái)。Printers 集合允許對(duì)可用打印機(jī)進(jìn)行查詢,這樣就可以為自己的應(yīng)用程序指定缺省打印機(jī),可以查出哪種可用打印機(jī)使用特定的打印機(jī)驅(qū)動(dòng)程序。可以用 Set 語(yǔ)句指定 Printers 集合中的某一打印機(jī)為缺省打印機(jī)。在模塊Module2中定義printproc過(guò)程以實(shí)現(xiàn)打印功能。程序設(shè)計(jì)了對(duì)所有可用打印機(jī)進(jìn)行搜索,對(duì)第一個(gè)打印機(jī)定位,并將其走紙方向設(shè)置為縱向,然后將打印機(jī)設(shè)置為缺省打印機(jī)。程序代碼見(jiàn)程序清單。第4章 所用開(kāi)發(fā)工具簡(jiǎn)介本系統(tǒng)的上位機(jī)部分,是采用Visual Basic程序語(yǔ)言設(shè)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論