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