呂金泉,陳卯蒸,李 健,徐 進,汪小妹
(中國科學院國家天文臺烏魯木齊天文站,新疆 烏魯木齊830011)
隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展、因特網(wǎng)的普及以及以太網(wǎng)技術(shù)日趨成熟,以太網(wǎng)技術(shù)已經(jīng)開始廣泛應用于數(shù)據(jù)采集、測控以及工業(yè)設(shè)計的I/O設(shè)備中,并在人類的社會發(fā)展中發(fā)揮巨大作用。由于以太網(wǎng)技術(shù)擁有高速度、大容量、低成本、結(jié)構(gòu)簡單等特性,使其在各種領(lǐng)域內(nèi)得到了迅速應用。在電子設(shè)備日趨網(wǎng)絡(luò)化的背景下,通過單片機控制以太網(wǎng)芯片進行數(shù)據(jù)傳輸,是當前令人感興趣的一個研究方向。本文主要介紹了單片機控制以太網(wǎng)對射電天文制冷接收機的監(jiān)視系統(tǒng)。
由于射電天文觀測的射電源信號極其微弱,對接收機系統(tǒng)的靈敏度要求很高,而接收機靈敏度又主要取決于接收機的系統(tǒng)噪聲系數(shù)[1]。根據(jù)Nyquist噪聲理論,導體中的熱噪聲功率正比于導體的物理溫度,所以降低器件的物理溫度可以有效降低其噪聲系數(shù)。網(wǎng)絡(luò)噪聲理論指出網(wǎng)絡(luò)中第一級放大器的噪聲系數(shù)對整個系統(tǒng)的噪聲系數(shù)貢獻最大,降低第一級放大器的噪聲系數(shù)是研制高性能接收機的關(guān)鍵。
為了降低接收機的系統(tǒng)噪聲溫度,目前射電天文領(lǐng)域廣泛采用的是制冷接收機系統(tǒng)[2],即利用氦循環(huán)制冷技術(shù)將接收機的第一級放大器,甚至包括饋源和極化器,制冷到物理溫度15K左右,這樣就可以大大降低接收機的系統(tǒng)噪聲溫度。而制冷接收機杜瓦真空度和制冷溫度是對接收機進行制冷和維護的重要指標,也是判斷接收機制冷系統(tǒng)工作正常與否的重要參數(shù)指標。本文利用AVR單片機實現(xiàn)對射電天文制冷接收機制冷溫度和杜瓦真空度的數(shù)據(jù)采集,通過單片機控制芯片編程實現(xiàn)了局域網(wǎng)內(nèi)單片機與終端之間的通信,即在脫離PC環(huán)境下實現(xiàn)以太網(wǎng)芯片與其微處理器之間的接口通信,從而建立基于非PC平臺的局域網(wǎng)絡(luò),實現(xiàn)了以太網(wǎng)傳輸數(shù)據(jù)實時監(jiān)控接收機的制冷狀態(tài)。
文中采用了ATMEL公司生產(chǎn)的AVR ATmega16單片機驅(qū)動MAXIM公司生產(chǎn)的MAX7219(帶SPI總線接口的驅(qū)動芯片)兼容Microchip Technology公司(美國微芯科技公司)推出的ENC28J60(28位引腳、帶SPI總線接口的獨立以太網(wǎng)控制器)芯片,從而構(gòu)建了一個集數(shù)據(jù)采集、數(shù)據(jù)傳輸?shù)奈⑿途W(wǎng)絡(luò)系統(tǒng),經(jīng)實地測試,性能優(yōu)良,成本低廉,完全達到了設(shè)計要求。
該系統(tǒng)主要分為外圍電路、網(wǎng)絡(luò)接口電路、單片機控制電路、數(shù)據(jù)采集電路和數(shù)據(jù)顯示等幾部分。系統(tǒng)結(jié)構(gòu)框圖見圖1。
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 The structure of the system
根據(jù)需要測量的溫度范圍,文中采用Lakeshore公司生產(chǎn)的DT-470溫度傳感器,將溫度傳感器的輸出電壓(數(shù)據(jù))經(jīng)放大、整形后送到單片機,單片機的AD0把采集到的模擬電壓經(jīng)過一系列的非線性處理轉(zhuǎn)換成DT-470的實際溫度值。用ATmega16單片機PD口軟件模擬SPI總線接口來控制驅(qū)動芯片MAX7219,將采集到的數(shù)據(jù)顯示到LED上。利用ATmega16單片機的自帶SPI總線接口實現(xiàn)與ENC28J60芯片通信,實現(xiàn)以太網(wǎng)遠程監(jiān)控。整個系統(tǒng)不僅具有數(shù)據(jù)采集和以太網(wǎng)遠程監(jiān)控功能,同時還增添了I2C總線的EEPROM 24C512,在無控制的條件下,會自動將運行數(shù)據(jù)記錄下來,以方便查詢。
2.1 設(shè)計構(gòu)思
為了實現(xiàn)對射電天文制冷接收機制冷溫度和杜瓦真空度的數(shù)據(jù)采集,并利用以太網(wǎng)傳輸數(shù)據(jù)實現(xiàn)遠程實時監(jiān)視接收機的制冷狀態(tài),文中采用DT-470溫度傳感器、ATmega16單片機的PD口軟件模擬SPI總線接口控制驅(qū)動芯片MAX7219,把采集到的數(shù)據(jù)顯示到LED上(本地顯示系統(tǒng))。采用ATmega16單片機的自帶SPI總線接口控制驅(qū)動ENC28J60芯片實現(xiàn)以太網(wǎng)遠程監(jiān)控功能。
2.1.1 單元電路及仿真
為了節(jié)約測試時間和開發(fā)成本,文中采用仿真軟件Proteus測試版[3]。主要是對以下兩點進行仿真:一是對動態(tài)元件的實時仿真,它對“人機對話”的模擬增強了系統(tǒng)的真實性;二是虛擬工具箱的功能,它能與仿真同時進行,測量方便準確。
電路經(jīng)Proteus測試版進行仿真(本地顯示)如圖2。
圖2 Proteus仿真電路Fig.2 Proteus simulation circuit
2.2 軟件運行機制
系統(tǒng)上電復位后,首先要對系統(tǒng)進行初始化,確保系統(tǒng)正常工作。系統(tǒng)的初始化工作主要是對一些內(nèi)部寄存器進行配置,例如接收配置寄存器、發(fā)送配置寄存器、數(shù)據(jù)配置寄存器、中斷屏蔽寄存器、多組播地址寄存器等等,同時設(shè)置系統(tǒng)本身的48位物理地址(每個地址都是唯一的,在網(wǎng)絡(luò)中進行區(qū)分)。另外,還需要對ENC28J60芯片的內(nèi)置1K RAM進行分配,由用戶根據(jù)實際使用情況確定發(fā)送緩沖區(qū)和接收緩沖區(qū)大小的設(shè)置。ENC28J60芯片有專門的內(nèi)存指針確定地址的起始位置。當所有初始化工作完成之后,系統(tǒng)就處于工作狀態(tài)。其通信流程圖見圖3、4。程序以輪流查詢方式進行數(shù)據(jù)處理。
程序流程框圖:
圖3 整個程序運行圖
圖4 數(shù)據(jù)處理Fig.4 Data processing in the main loop
當數(shù)據(jù)傳輸時,先將ATmega16單片機的目的地址與系統(tǒng)的物理地址相比較,如果地址不相符,則將該數(shù)據(jù)丟棄,如相符,就開始接收數(shù)據(jù)。數(shù)據(jù)發(fā)送時,先將待發(fā)送的數(shù)據(jù)按幀格式進行封裝,需要設(shè)置以太網(wǎng)目的地址、源地址、協(xié)議類型,再按所設(shè)置的協(xié)議類型來設(shè)置數(shù)據(jù)段。同時要給出發(fā)送緩沖區(qū)首地址和數(shù)據(jù)包的長度、啟動發(fā)送命令,送到ENC28J60中的發(fā)送緩沖區(qū),即可實現(xiàn)ENC28J60的發(fā)送功能,并將結(jié)果寫入狀態(tài)寄存器中。上述工作完成后,啟動本地DMA,將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。由于協(xié)議類型較多,為了保證數(shù)據(jù)的可靠傳輸,在此采用了TCP數(shù)據(jù)封裝,因此在單片機中也寫入了相應的TCP控制程序,如數(shù)據(jù)的拆包、打包等處理程序,確保測控時數(shù)據(jù)的正確傳輸。
2.3 通信的實現(xiàn)
程序通過自建簡單的TCP/IP通信協(xié)議棧,對從網(wǎng)絡(luò)接口芯片ENC28J60接收的數(shù)據(jù)進行處理[4]。其主要流程為:當微處理器接收到新的數(shù)據(jù)包時,依據(jù)TCP/IP通信協(xié)議[5],檢測數(shù)據(jù)包的內(nèi)容,分別做出不同的響應,完成以太網(wǎng)通信[6];當接收到控制界面發(fā)來的控制命令,并且控制命令的內(nèi)容完全符合程序中的定義,微處理器將對控制命令進行解析并做出相應的動作。
圖5 以太網(wǎng)通信部分流程框圖Fig.5 The block diagram of the communication via an Ethernet
具體地說,程序通過BYTE receive(BYTE*rxtx_buffer,BYTE*dest_mac,BYTE*dest_ip)函數(shù)進行信息處理,由于信息的內(nèi)容在報文中都有固定的位置,可以通過檢測報文的方式對接收到的通信數(shù)據(jù)進行加工處理。
當獲得遠程控制主機的信息后,首先rxtx_buffer[IP_PROTO_P]通過檢測,得到數(shù)據(jù)的遠程端口IP,如果不符合遠程端口IP檢測,則終止本次檢測,重新讀入報文;如果符合遠程端口IP檢測,rxtx_buffer[DATA_P]將引導字節(jié),判斷信息的內(nèi)容。例如:遠程終端發(fā)來信息,當TEM程序檢測到這個命令時,執(zhí)行puts_data_p[]并生成數(shù)據(jù)包,將檢測到的數(shù)據(jù)加入到這個數(shù)據(jù)包中,并及時更新LED顯示屏的顯示數(shù)據(jù)。隨后由函數(shù)eth_generate_header()、ip_generate_header()、generate_header()生成在以太網(wǎng)通信中傳輸?shù)臄?shù)據(jù)報文。通過enc28j60_packet_send()函數(shù)將數(shù)據(jù)發(fā)送到ENC28J60,ENC28J60再將這些數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)設(shè)備,這樣就完成了數(shù)據(jù)的通信。以太網(wǎng)通信部分流程框圖見圖5。
整個程序用的是AVR Studio4.12和Win AVR-20060421編譯器聯(lián)合編譯通過。AVR Studio4.12是ATMEL官方針對AVR系列單片機推出的集成開發(fā)環(huán)境,它集開發(fā)調(diào)試于一體,有很好的用戶界面,很高的穩(wěn)定性。AVR Studio4.12本身可以開發(fā)匯編程序,如果希望使用C語言開發(fā),則需要安裝C編譯器(WinAVR等)。WinAVR是GNU組織推出的AVR單片機的gcc編譯器,該編譯器的效率極高。
2.4 監(jiān)控界面的實現(xiàn)
整個監(jiān)控界面用VB語言編寫,監(jiān)控界面簡潔明了,操作簡單。主要作用是實時監(jiān)控,把采集到的數(shù)據(jù)顯示到監(jiān)控界面上。采用數(shù)據(jù)庫技術(shù)將采集到的數(shù)據(jù)實時存儲到數(shù)據(jù)庫文件中,以便于數(shù)據(jù)的查詢和調(diào)用。監(jiān)控界面見圖6。
具體操作如下:打開網(wǎng)絡(luò)監(jiān)控界面,點擊“打開LED”按鈕,則硬件的LED顯示燈亮,就可以進行相關(guān)的溫度或AD查詢操作(如需定時檢測,只需要選擇“定時檢測”按鈕即可)。其中,監(jiān)控界面中顯示的IP地址可根據(jù)實際操作進行修改。顯示窗口中,實時顯示出檢測結(jié)果。
圖6 監(jiān)控界面Fig.6 The monitoring interface
本文是通過以太網(wǎng)進行數(shù)據(jù)傳輸?shù)囊淮未竽憞L試,通過實際運行效果來看,此系統(tǒng)運行良好,設(shè)計完全達到了預期目標。
采用ATmega16和ENC28J60為主要芯片構(gòu)成的專用以太網(wǎng)模塊,大大降低了控制系統(tǒng)的成本,提高了系統(tǒng)的穩(wěn)定性、可靠性和擴展性,完全滿足了多路通信接收機功率監(jiān)測和控制的要求。
這種利用以太網(wǎng)進行數(shù)據(jù)傳輸?shù)募夹g(shù)方案,便于移植,對有些舊的通信線路的改造是一個很有參考價值的技術(shù)方案,可以進一步推廣。
致謝:從軟件的調(diào)研到編寫的整個工作過程得到了王相峰、劉志勇、袁建平和烏魯木齊天文站南山觀測基地工作人員的熱心幫助,感謝他們的大力支持。
[1] 王娜.烏魯木齊25米射電望遠鏡天線控制計算機操作說明.中國科學院國家天文臺烏魯木齊天文站,1999.
[2] K Rohlf,T L Wilson. Tools of Radio Astronomy[M]. 3rd Edition,Germany:Springer,2000.
[3] 周潤景,張麗娜.基于PROTEUS的AVR單片機設(shè)計與仿真[M].北京:北京航空航天大學出版社,2007.
[4] 金春林,邱惠芳,張皆喜.AVR系列單片機C語言編程與應用實例[M].北京:清華大學出版社,2003.
[5] 沈文,黃力岱,吳宗鋒.AVR單片機C語言開發(fā)應用實例——TCP、IP篇[M].北京:清華大學出版社,2005.
[6] 王廷堯.以太網(wǎng)技術(shù)與應用[M].北京:人民郵電出版社,2005.