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