單片機(jī)與遠(yuǎn)程PC機(jī)間建立通信的方法
【摘要】介紹一種通過串口服務(wù)器在單片機(jī)與遠(yuǎn)程PC機(jī)間建立通信的方法,實(shí)現(xiàn)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)是應(yīng)用一款低電壓,高性能的CMOS的8位單片機(jī)AT89C52構(gòu)成數(shù)據(jù)采集系統(tǒng),利用嵌入式串口服務(wù)器DNE-18將數(shù)據(jù)封裝并聯(lián)入Interhet。文中介紹系統(tǒng)總體設(shè)計(jì)方案及軟、硬件的設(shè)計(jì)框架。該系統(tǒng)結(jié)構(gòu)簡單,性能穩(wěn)定,適用范圍廣,可擴(kuò)展性強(qiáng),市場前景廣闊。
引言
串口服務(wù)器是一種協(xié)議轉(zhuǎn)換模塊,它通過提供1、2、4、8 或16 口的RS-232 或RS-422/485 串口界面,以及1 個(gè)10/100M 的以太網(wǎng)接口,可以將RS-232 或RS-422/485 串行設(shè)備接入TCP/IP 網(wǎng)絡(luò)中而不需要更改控制程序,主計(jì)算機(jī)使用TCP/IP 協(xié)議通過以太網(wǎng)訪問被接入的終端設(shè)備。上位機(jī)采用Socket 編程。
1 系統(tǒng)總體設(shè)計(jì)
1.1 設(shè)計(jì)思路
將經(jīng)過傳感器或變壓器轉(zhuǎn)變的標(biāo)準(zhǔn)電壓或電流信號,進(jìn)行A/D 轉(zhuǎn)換,變成數(shù)字化的數(shù)據(jù),把這些數(shù)據(jù)通過單片機(jī)串口傳送到串口服務(wù)器上, 串口服務(wù)器將單片機(jī)發(fā)出來的數(shù)據(jù)包轉(zhuǎn)換為以太網(wǎng)數(shù)據(jù)報(bào)文格式,轉(zhuǎn)發(fā)到Internet 上,從而實(shí)現(xiàn)數(shù)據(jù)網(wǎng)上傳輸,可以方便地通過網(wǎng)絡(luò)從上層PC 機(jī)進(jìn)行實(shí)時(shí)監(jiān)控。
1.2 系統(tǒng)總體結(jié)構(gòu)
該系統(tǒng)硬件采用模塊化結(jié)構(gòu), 其系統(tǒng)總體結(jié)構(gòu)如圖1 所示。該存儲轉(zhuǎn)發(fā)上網(wǎng)系統(tǒng)采集終端主要是由傳感器,放大電路,光電隔離電路,采集電路,近端LED顯示電路,串口服務(wù)器等模塊組成。
其中,該系統(tǒng)數(shù)據(jù)采集終端為一單片機(jī)控制系統(tǒng),通信口為RS232/485 可選接口。
本系統(tǒng)中采用的串口服務(wù)器是嵌入式串口服務(wù)器DNE-18。DNE-18 用TCP server 方式來實(shí)現(xiàn)串口數(shù)據(jù)到網(wǎng)絡(luò)口的轉(zhuǎn)換。給DNE-18 配置了唯一的IP 地址和相應(yīng)的端口號后,DNE-18 開始偵聽,若網(wǎng)絡(luò)中有主機(jī)發(fā)起聯(lián)接DNE-18 會接受聯(lián)接請求, 并將網(wǎng)絡(luò)口收到的從串口發(fā)出并將串口收到的數(shù)據(jù)從網(wǎng)絡(luò)口以TCP/IP 協(xié)議包送出。DNE-18 不對用戶數(shù)據(jù)包做任何解析或更改,提供完全透明的數(shù)據(jù)通道。
2 系統(tǒng)的軟硬件構(gòu)成
2.1 系統(tǒng)硬件框圖
本系統(tǒng)的硬件設(shè)計(jì)核心部分是遠(yuǎn)程數(shù)據(jù)采集、存儲轉(zhuǎn)發(fā)的終端。其硬件框圖如圖2 所示。其工作原理是:對溫度傳感器得到的信號進(jìn)行處理,即信號放大、濾波、量化等處理過程。在此過程中需要考慮干擾信號的抑制、轉(zhuǎn)換精度及線性等諸多因素。為了對模擬量輸入通道消除干擾, 加入隔離放大器ISO100。單片機(jī)AT89C52 控制ADC0809 進(jìn)行數(shù)據(jù)采集。將采集到的信號分為兩路進(jìn)行處理。一路進(jìn)行LED 顯示:即當(dāng)A/D 轉(zhuǎn)換完畢后,單片機(jī)內(nèi)存中保存有A/D 轉(zhuǎn)換的通道數(shù),以及A/D 轉(zhuǎn)換后的數(shù)據(jù)。當(dāng)一路轉(zhuǎn)換完畢后,單片機(jī)讀到模數(shù)轉(zhuǎn)換數(shù)據(jù)后, 從8255A 中讀通道路數(shù),完成通道路數(shù)的顯示過程。同理, 當(dāng)顯示通道路數(shù)完畢后,然后顯示A/D 轉(zhuǎn)換數(shù)據(jù)。另一路用MAX232 芯片實(shí)現(xiàn)TTL 與RS232 電平之間的轉(zhuǎn)換,將轉(zhuǎn)換的數(shù)據(jù)送給串口服務(wù)器DNE-18。串口服務(wù)器就是把單片機(jī)發(fā)出來的數(shù)據(jù)包轉(zhuǎn)換為以太網(wǎng)數(shù)據(jù)報(bào)文格式, 然后轉(zhuǎn)發(fā)到Internet 上,實(shí)現(xiàn)數(shù)據(jù)網(wǎng)上傳輸。本文,重點(diǎn)介紹光電隔離模塊以及串口服務(wù)器的應(yīng)用模塊。
1) 光電隔離模塊。由于模擬量輸入信號一般都要經(jīng)過放大后才能進(jìn)行A/D 轉(zhuǎn)換,因此采用兼有放大和隔離功能的隔離放大器。隔離放大器的輸入與輸出端在電氣上完全隔離。所用的隔離方法有變壓器隔離和光電隔離兩種。在本系統(tǒng)中采用的是線性光電隔離放大器ISO100,ISO100 是美國B-B 公司生產(chǎn)的一種小型廉價(jià)光電隔離放大器。它利用發(fā)光二極管LED與兩個(gè)光電二極管進(jìn)行耦合,一路耦合到輸出端,一路反饋到輸入端,構(gòu)成負(fù)反饋,以提高放大器的精度、線性度和溫度穩(wěn)定性。
ISO100 的工作電源為+18V, 隔離電壓為2500V,輸入電流為1A,輸出電壓Vout=RifnI ,改變Rf即能改變增益。當(dāng)輸入為電壓量,應(yīng)串聯(lián)電阻Rin,使輸入電流在要求范圍內(nèi)。
ISO100 構(gòu)成的熱電偶放大器的連接圖如圖3 所示:
圖3 光電隔離抗干擾電路圖
2) 串口服務(wù)器的應(yīng)用模塊。串口服務(wù)器是把單片機(jī)發(fā)出來的數(shù)據(jù)包轉(zhuǎn)換為以太網(wǎng)數(shù)據(jù)報(bào)文格式, 然后轉(zhuǎn)發(fā)到Internet 上,實(shí)現(xiàn)數(shù)據(jù)網(wǎng)上傳輸。串口服務(wù)器的輸入口是單片機(jī)經(jīng)過MAX232 轉(zhuǎn)換后的信號,輸出口是RJ45 接口。當(dāng)串口服務(wù)器加電時(shí)候,PLED 就會發(fā)光; 當(dāng)輸出口RJ45 與交換機(jī)或是PC 正確連接時(shí),LLED 就會發(fā)光, 當(dāng)串口服務(wù)器準(zhǔn)備就緒時(shí),RLED 就會發(fā)光。當(dāng)對串口服務(wù)器進(jìn)行IP 地址和端口號,串行口工作方式正確設(shè)置后,串口服務(wù)器方能正常工作,才能進(jìn)行串行數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)包進(jìn)行轉(zhuǎn)換, 才能把數(shù)據(jù)發(fā)送到Internet 上的某個(gè)主機(jī)上。
需要說明的是, 如果串口服務(wù)器的RJ45 與計(jì)算機(jī)直接相連, 需要使用交叉雙絞線, 即網(wǎng)線一端用568A 標(biāo)準(zhǔn), 另一端用568B 標(biāo)準(zhǔn)。如果串口服務(wù)器RJ45 連接的是以太網(wǎng)交換機(jī)或是集線器,則使用直通線,即網(wǎng)線兩端都用568A 標(biāo)準(zhǔn)。[!--empirenews.page--]2.2 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件框圖如圖4 所示。它是由延時(shí)、數(shù)據(jù)采集、數(shù)碼顯示、十六進(jìn)制轉(zhuǎn)ASCII 碼、數(shù)據(jù)協(xié)議、數(shù)據(jù)發(fā)送等6 個(gè)模塊組成。
下面將各個(gè)模塊的功能進(jìn)行簡單概述:
1) 延時(shí)模塊。本模塊完成的功能為延時(shí)1 s。利用定時(shí)器0 溢出中斷完成。
2) 數(shù)據(jù)采集模塊。每隔一秒對ADC0809 中的一路數(shù)據(jù)進(jìn)行采樣,然后將其保存在數(shù)據(jù)緩沖區(qū)中。
3) 數(shù)碼顯示模塊。當(dāng)ADC0809 中與一路數(shù)據(jù)被采集完畢后,共陰級八段數(shù)碼管顯示當(dāng)前ADC0809 中通道路數(shù),以及當(dāng)前路數(shù)的數(shù)據(jù)值。
4)十六進(jìn)制轉(zhuǎn)ASCII 碼模塊。本子程序完成的功能是把十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII 碼。
5) 數(shù)據(jù)協(xié)議模塊。本程序完成的功能是將要發(fā)送的ASCII 碼數(shù)據(jù)實(shí)現(xiàn)幀封裝,定義數(shù)據(jù)包的頭和尾,以及中間分隔符,起始字符為“! ”,結(jié)束字符為“#”。中間分隔符號為“+”,為方便上位機(jī)接收和存儲單片機(jī)發(fā)送的采集數(shù)據(jù)。
6) 數(shù)據(jù)發(fā)送模塊。本程序完成的功能是將數(shù)據(jù)包發(fā)送到串口服務(wù)器上。
2.3 軟件流程圖
系統(tǒng)的工作原理是系統(tǒng)上電后的, 首先進(jìn)行初始化,包括設(shè)置波特率為9600bps,定時(shí)器工作方式,串行口工作方式, 開定時(shí)中斷等。然后對八路通道進(jìn)行循環(huán)采集、顯示,最后進(jìn)行數(shù)據(jù)處理,將處理后的數(shù)據(jù)存入緩沖區(qū), 然后由串行口發(fā)送數(shù)據(jù)。流程圖如圖5所示。
3 結(jié)束語
本文所設(shè)計(jì)的方案,采用單片機(jī)和串口服務(wù)器,既可以完成數(shù)據(jù)采集, 又可以將數(shù)據(jù)封裝向Internet 發(fā)送,電路結(jié)構(gòu)簡單,實(shí)用性強(qiáng),非常適用于遠(yuǎn)距離、偏遠(yuǎn)地點(diǎn)的數(shù)據(jù)終端采集工作, 是數(shù)據(jù)網(wǎng)絡(luò)連接的一種可行性解決方案。