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