???? 關(guān)鍵詞:微機(jī)(PC),嵌入式計(jì)算機(jī),串行通訊
1 引 言
目前,先進(jìn)的嵌入式計(jì)算機(jī)以其優(yōu)良的品質(zhì)、高可靠性及模塊化,廣泛地應(yīng)用于工業(yè)控制、航空航天、醫(yī)療、智能儀表、通訊、數(shù)控、自動化生產(chǎn)設(shè)備、數(shù)據(jù)采集等領(lǐng)域。在實(shí)際應(yīng)用中,有時(shí)需要借助微機(jī)的強(qiáng)大的數(shù)據(jù)處理能力和豐富的軟件資源,使得組成的系統(tǒng)功能更為強(qiáng)大。這樣,為了提升系統(tǒng)的整體性能,必須實(shí)現(xiàn)PC機(jī)和嵌入式計(jì)算機(jī)之間的通訊。它們之間的通訊可以通過并行通訊或串行通訊兩種方式來實(shí)現(xiàn)。由于串行通訊相對于并行通訊有接線數(shù)量少,抗干擾性能好等優(yōu)點(diǎn),所以,這里采用串行通訊的方式。
2 嵌入式計(jì)算機(jī)的硬件和通訊軟件的設(shè)計(jì)
2.1 系統(tǒng)的功能簡介
本文以溫控系統(tǒng)為背景作介紹。現(xiàn)場的嵌入式計(jì)算機(jī)的模擬量采集模塊和數(shù)字量采集模塊采集溫度濕度、以及執(zhí)行機(jī)構(gòu)的開關(guān)量狀態(tài),經(jīng)自身的MCU(微控器)進(jìn)行簡單的處理后,經(jīng)串行通訊的方式,將這些數(shù)據(jù)上傳至微機(jī),微機(jī)則先將模擬量資料存入數(shù)據(jù)庫中(為了中長期地跟蹤溫控系統(tǒng)的控制效果,便于以后的分析),再通過控制算法來計(jì)算輸出控制量,并通過通訊下傳到嵌入式計(jì)算機(jī)中,然后再由其控制量輸出至相應(yīng)的執(zhí)行機(jī)構(gòu)進(jìn)行控制。整個(gè)系統(tǒng)這樣設(shè)計(jì)的優(yōu)點(diǎn)在于:通過微機(jī)上的圖形控制接口,生動實(shí)時(shí)地向用戶顯示控制對象的情況;友好的用戶接口使得用戶可以在微機(jī)上直接手動輸出來控制被控對象;同時(shí)又發(fā)揮了嵌入式計(jì)算機(jī)系統(tǒng)的穩(wěn)定性、可靠性和高度靈活性等特點(diǎn)。
2.2 嵌入式計(jì)算機(jī)的硬件結(jié)構(gòu)
嵌入式計(jì)算機(jī)系統(tǒng)由以下幾部分組成:模擬量采集部分,數(shù)字量采集部分及輸出部分,通訊部分和微控器的綜合控制部分。
模擬量采集部分最少可以采集32路的模擬量,并可以通過硬件的跳線設(shè)置最多采集64路的模擬量。通過模擬開關(guān)的切換,可以將模擬量信號經(jīng)過A/D芯片轉(zhuǎn)化為數(shù)字量信號,再做進(jìn)一步的處理。A/D芯片用的是德州儀器公司(Texas InstrumentsIncorporation)的TLC2543C。TLC2543C是漸次逼近式的A/D轉(zhuǎn)換器,具有12位的精度,可以同時(shí)對11路信號進(jìn)行轉(zhuǎn)換。數(shù)字量采集部分及輸出部分使用了NEC8255芯片,通過軟件對NEC8255進(jìn)行設(shè)置來選擇數(shù)字量的輸入與輸出的方向。通訊部分將MCU的TTL電平轉(zhuǎn)換為進(jìn)行RS-485通訊所需的485電平。微控器的綜合控制部分的作用是:對模擬量采集部分、數(shù)字量采集部分及輸出部分、以及通訊部分進(jìn)行協(xié)調(diào)控制,同時(shí)可以接受用戶的按鍵輸入,它也將負(fù)責(zé)將采集到的模擬量轉(zhuǎn)換后,在現(xiàn)場的LED上顯示出來。系統(tǒng)框圖如圖1所示。
2.3 嵌入式計(jì)算機(jī)的通訊部分硬件設(shè)計(jì)
通訊部分將MCU的TTL電平轉(zhuǎn)換為進(jìn)行RS-485通訊所需的485電平,進(jìn)行電平轉(zhuǎn)換的是MAX1480C。MAX1480B是一種完全電氣隔離的RS422/RS485數(shù)據(jù)通信接口,在一個(gè)標(biāo)準(zhǔn)的DIP封裝
中有完整的接口,包括收發(fā)器、光耦合器和變壓器,邏輯側(cè)的單電源+5V給接口兩側(cè)供電。信號于電源在內(nèi)部跨過隔離層進(jìn)行傳送,電源通過中心抽頭的變壓器從隔離層的邏輯側(cè)(非隔離側(cè))變換至隔離側(cè),信號由高速的光耦合器從隔離的一側(cè)傳至另一側(cè)。MAX1480B具有有限斜率驅(qū)動器,即驅(qū)動器發(fā)送的數(shù)字信號,其邊沿斜率是受限制的,以使電磁干擾(EMI)最小,且能減小由于電纜終端不匹配而引起的反射,在數(shù)據(jù)速率高達(dá)250kbps時(shí)能做到無誤差的數(shù)據(jù)傳送。驅(qū)動器具有限制短路電流的功能,并使用熱關(guān)閉電路保護(hù),使之功耗不致過大。熱關(guān)閉電路可把驅(qū)動器的輸出置于高阻狀態(tài),接收器輸入端具有故障保護(hù)的特性,如果輸入開路,可保證輸出為高點(diǎn)平。MCU與MAX1480B的硬件接口如圖2所示。
由于嵌入式計(jì)算機(jī)系統(tǒng)中的微控器(MCU)是AT89C55,要和PC機(jī)進(jìn)行通訊,必須對微控器的串行口進(jìn)行初始化,設(shè)置通訊方式(協(xié)議)、通訊速度、傳送的資料格式和長度,然后打開通訊口進(jìn)行通訊。嵌入式計(jì)算機(jī)系統(tǒng)中的編程語言使用的是KEILINCORPORATION公司的KeilC6.12。通訊部分的軟件流程如圖3所示。
??? 相應(yīng)的重要通訊代碼:
3 Windows98平臺上的串行通訊程序
為了和嵌入式計(jì)算機(jī)進(jìn)行485通訊,所以在上位微機(jī)中我們采用了研華工控的基于ISA的485電平轉(zhuǎn)換板卡。在視窗98操作系統(tǒng)下,操作系統(tǒng)全面地接管了PC機(jī)的硬件系統(tǒng),所以在Windows98下,通過自己編寫低層端口的驅(qū)動程序?qū)⑹致闊?。而VisualBasic6.0中的MSComm則解決了開發(fā)者對Windows管理低層硬件不熟悉的問題。所以我們使用VisualBasic6.0中的MSComm來編制通訊程序。VB中的MSComm為應(yīng)用程序提供了串行通訊功能,它通過串行口發(fā)送和接收數(shù)據(jù),非常方便地實(shí)現(xiàn)串行通訊。MSComm控件提供了一系列的標(biāo)準(zhǔn)通訊命令的使用界面。使用它可以建立與串行口的連接,通過串行口連接到其他通訊設(shè)備,進(jìn)行數(shù)據(jù)交換,以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯(cuò)誤。下面先來介紹一下MSComm的一些屬性和事件,見表1。
在屬性中,根據(jù)筆者的調(diào)試經(jīng)驗(yàn)有以下兩點(diǎn)值得注意:
?。?)Input屬性和InputMode屬性之間的關(guān)系:
InputMode屬性確定用Input屬性讀取的數(shù)據(jù)類型。如果設(shè)置InputMode為comInputModeText,Input屬性通過一個(gè)Variant返回文本數(shù)據(jù)。如果設(shè)置InputMode為comInputModeBinary,Input屬性通過一個(gè)Variant返回一二進(jìn)制數(shù)據(jù)的數(shù)組。因?yàn)?,根?jù)本系統(tǒng)的通訊協(xié)議要求,通訊中數(shù)據(jù)部分的數(shù)值可能會大于127,而comInputModeText方式采用ASCII編碼,其最大值只有127,所以要用comInputModeBinary方式。
?。?)Output屬性討論:Output屬性可以傳輸文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。用Output屬性傳輸文本數(shù)據(jù),必須定義一個(gè)包含一個(gè)字符串的Variant。而字符串中的字符也是用ASCII編碼,這樣也不符合通訊協(xié)議的要求。所以要用Output屬性傳輸二進(jìn)制數(shù)據(jù),這樣才能與符合通訊協(xié)議的要求。發(fā)送二進(jìn)制數(shù)據(jù),必須傳遞一個(gè)包含字節(jié)數(shù)組的Variant到Output屬性。具體發(fā)送做法如下:
??? 下面是一些重要的程序代碼:
4 結(jié)束語
本系統(tǒng)在實(shí)際應(yīng)用中,運(yùn)行穩(wěn)定,得到了用戶的好評。由嵌入式計(jì)算機(jī)和微機(jī)(PC)組成的系統(tǒng),通過發(fā)揮各自的長處,并通過串行通訊相連,極大地提高了系統(tǒng)的穩(wěn)定性和可靠性,同時(shí)從成本的角度來考慮,它也是經(jīng)濟(jì)實(shí)惠的,高性價(jià)比的。
參考文獻(xiàn)
2 李朝青著.單片機(jī)原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,2000
評論
查看更多