馬賽飛,馬尚昌,劉 鈞
(1.河南省氣象探測數據中心,河南鄭州 450003;2.成都信息工程大學電子工程學院,四川成都 610225;3.中國華云氣象科技集團公司,北京 100000)
結合當前傳感器技術與微電子技術的研究成果,以傳感器網絡技術和智能信息處理技術為支撐[1],對傳統(tǒng)氣象要素傳感器進行改進,研制一種智能傳感器。設計的智能傳感器分為兩個模塊,智能變送器模塊和網絡適配器模塊。為實現(xiàn)智能傳感器系統(tǒng)的整體設計,文中設計是在智能變送器模塊完成的基礎上,主要針對網絡適配器模塊進行設計,網絡適配器模塊可以降低智能傳感器的設計難度,同時在很大程度上能提高傳感器的性能。該設計的網絡適配器采用S3C2440 處理器,確保了硬件系統(tǒng)的穩(wěn)定性[2],將設備連接到網絡上的通信接口裝置,用于實現(xiàn)對智能變送器的控制,使其具有連網的功能。模塊具有低成本與高性能,互換性好,可良好地應用于將來的智能氣象站中,能夠滿足數字化、智能化的要求。
網絡適配器模塊主要實現(xiàn)對智能變送器的控制、與智能變送器的通信、有線和無線網絡的通信以及其余不易在智能變送器模塊實現(xiàn)的功能。網絡適配器與智能變送器之間通過一個I/O 線的TII接口相連,實現(xiàn)了傳感器的即插即用[3]。計算機可通過向網絡適配器發(fā)送控制指令來控制其執(zhí)行相應的功能,如讀取某傳感器數據等操作。網絡適配器模塊基于S3C2440芯片以及嵌入式Linux 操作系統(tǒng)實現(xiàn)了串口和以太網數據的透明傳輸[4],文中編寫了基于Linux 的程序,以確保系統(tǒng)的穩(wěn)定運行,使系統(tǒng)具有了一定的自恢復能力,最終實現(xiàn)常規(guī)氣象要素傳感器數據的高精度測量。圖1 所示為網絡適配器整體框圖。
圖1 網絡適配器整體框圖
網絡適配器模塊主要實現(xiàn)與多個智能變送器模塊通信和網絡傳輸等功能,系統(tǒng)的核心采用S3C2440處理器[5]。系統(tǒng)采用核心板加底板的結構,S3C2440最小系統(tǒng)(包括NAND Flash、NOR Flash、晶振、核心電源模塊等)在核心板中已經實現(xiàn)[6],底板電路主要包括系統(tǒng)電源、通信電路、溫度傳感器、按鍵以及指示燈等。在底板上預留核心板接口,核心板使用OK2440III 工業(yè)級核心板,確保硬件系統(tǒng)的穩(wěn)定性[7]。模塊的硬件框圖如圖2 所示。
圖2 模塊硬件框圖
考慮到氣象上傳感器與儀器的供電以12 V為主,網絡適配器模塊電路采用的電源也為12 V 輸入,通過二級降壓,給整個系統(tǒng)各個模塊進行供電,滿足各個模塊對不同電壓的需要。第一級降壓將輸入的直流電壓降到+5 V;第二級降壓將+5 V 降為+3.3 V。模塊電源電路如圖3 所示。該系統(tǒng)在軟件中使用了Linux 的時鐘[8],因此,在電源的設計上采用了外接電源加電池的方式,當系統(tǒng)斷電時,紐扣電池能夠繼續(xù)為系統(tǒng)內部的RTC 供電[9],保證時鐘的正常運行。電路在12 V 主電源接口處對系統(tǒng)的電源進行了分壓,然后通過AN0 接入ARM9 內部的AD 通道,用于主板電壓的采集與監(jiān)控。
圖3 模塊電源電路
模塊從功能需求上把復位分為兩種模式,即正常復位和恢復出廠設置。正常復位即一般的按鍵復位模式,其電路設計采用了MAX811芯片,MAX811是一種MCU 電壓監(jiān)視器[10],能監(jiān)視3 V、3.3 V 以及5 V的電壓,低電平有效復位,具有低功耗以及精密電源監(jiān)控的特點?;謴统鰪S設置是根據實際需要增加的功能,如果用戶對系統(tǒng)進行了錯誤的配置而無法恢復,此時可以通過長按恢復出廠設置按鈕使系統(tǒng)恢復到出廠配置?;謴统鰪S設置功能在硬件上采用按鍵接入外部中斷的方式,在Linux 系統(tǒng)中編寫后臺軟件實現(xiàn)其功能。復位模塊的電路如圖4 所示。
圖4 復位模塊的電路
為了便于使用者監(jiān)控系統(tǒng)當前狀態(tài),添加了一些簡單的監(jiān)控模塊,包括電源電壓、主板溫度以及狀態(tài)燈等。由于輸入電壓高于內部ADC 的參考電壓,因此需對輸入的電源電壓進行分壓之后接入ARM9內部的ADC 通道,通過編寫應用軟件獲取當前電源電壓值。主板溫度通過DS18B20 測得,DS18B20 采用單總線接口方式,在電路設計上比較簡單[11-12]。系統(tǒng)有7 個狀態(tài)燈,通過I/O 口接入核心板,其中系統(tǒng)軟件使用了兩燈,用于指示系統(tǒng)工作狀態(tài)以及復位模式,其余幾個狀態(tài)燈留作擴展。狀態(tài)監(jiān)控電路如圖5 所示。
圖5 系統(tǒng)狀態(tài)監(jiān)控電路
通信電路主要分為兩部分,即串口通信和以太網通信。串口通信模塊采用雙串口設計,其中COM0 主要用于嵌入式Linux 操作系統(tǒng)終端界面的交互,COM1 主要用于掛接Zigbee 模塊實現(xiàn)與多個STIM 的通信[13],串口芯片使用MAX202,MAX202 使用0.1 μF的電容。網絡通信電路設計上采用DM9000加RJ45 接口的方式[14],DM9000 支持10/100 M 自適應PHY,其物理協(xié)議層接口支持5 類非屏蔽雙絞線,并且DM9000 的Linux 驅動程序資源較為豐富,節(jié)省了底層驅動的開發(fā)周期。RJ45 接口是最常見的網絡接口,用于網絡數據的傳輸。通信電路如圖6 和圖7 所示。
圖6 以太網通信電路
圖7 串口通信電路
網絡適配器的軟件設計主要基于Linux 下的嵌入式C 語言程序編程,采用socket 網絡編程以及多進程和多線程的技術[15],結合系統(tǒng)需求對模塊的軟件系統(tǒng)進行了設計。包括網絡參數的配置、數據雙向通信系統(tǒng)的設計、進程的管理以及守護進程等程序的設計。
系統(tǒng)開機會確認是否為首次啟動系統(tǒng),若是則應運行原始配置腳本文件,若不是則應運行修改后的配置腳本文件,再根據具體需要運行的模式啟動程序及相應守護進程。圖8為網絡信息的配置流程。
圖8 網絡信息的配置流程
系統(tǒng)首先初始化系統(tǒng)參數以及創(chuàng)建進程間通信需要的共享內存、信號量及管道,并對SIGCHLD 信號處理進行了初始化。在主函數中添加對SIGCHLD信號的處理代碼signal(SIGCHLD,SIG_IGN),可防止產生僵尸進程。服務器對于每個客戶端的連接都會創(chuàng)建一個子進程,子進程結束后,若不進行處理則會變成僵尸進程,若系統(tǒng)存在大量僵尸進程,會在很大程度上造成資源的浪費,因此通過對SIGCHLD 信號進行處理,將僵尸進程交由內核的init 進程處理,即可有效清除僵尸進程,節(jié)省系統(tǒng)資源。如圖9 所示為主進程流程圖。主進程通過不同的端口號來區(qū)分不同的客戶端請求,實現(xiàn)不同的服務,如果是上行數據和下行數據端口,且相應端口已經建立了正常的數據通信連接,那么通常不希望有重復連接而影響正常的數據收發(fā),所以除非上一條連接已經關閉,否則服務器會拒絕數據上行和下行端口的二次重復連接,文中采用信號量來實現(xiàn)這一功能;指令交互端口是用來查詢與更改串口信息等功能的端口,一般要求只要有權限對設備進行操作的終端都可以連接,所以允許多個連接同時操作,但必須輸入正確的口令才能對系統(tǒng)參數進行查詢和配置。
圖9 主進程流程圖
主進程中的定時器主要實現(xiàn)與守護進程的通信[16],守護進程通過通信是否正常來判斷當前服務器程序運行是否正常,若異常則重啟服務器程序,服務器與守護進程之間使用Unix 域套接字進行通信。定時程序的流程圖如圖10 所示。
圖10 定時通信程序的流程圖
守護進程的目的通常是為了完成一些特殊的任務或者等待處理某些事件,是獨立于控制終端的,因此通常在終端中不能對其進行操作[17]。文中系統(tǒng)設計了專用的守護進程,如圖11 所示為守護進程的流程圖。正常情況下服務器主進程每隔一段時間便向守護進程發(fā)送一次消息,守護進程在接收到主進程連接后重置定時器,若定時時間到,則說明在定時時間內主進程都未向守護進程發(fā)送消息,出現(xiàn)異常,這時守護進程會清除之前的服務器進程并重啟服務器,而服務器重啟后可自動接收主機發(fā)來的連接,保證系統(tǒng)在異常情況下能夠自行處理、自行恢復。
圖11 守護進程流程圖
網絡適配器模塊主要用于實現(xiàn)指令交互和數據的收發(fā)。給智能變送器接上溫濕度傳感器,網絡適配器通過串口線連接電腦,通過串口助手進行測試,可以查詢到傳感器數據,測試結果如圖12 所示。
圖12 測試結果
在串口測試軟件中,將虛擬串口發(fā)送波特率設定為9 600 bit/s,軟件對數據進行了封包操作,實際傳送的數據會大于100 字節(jié),界面中可顯示發(fā)送與接收的數據包個數,以及出錯的數據包個數;在串口數據回送器界面中可顯示實際接收到數據的字節(jié)數。圖13 為軟件實際發(fā)送與接收數據的情況,測試時間為24 h。由圖13 中可以看出,在串口測試軟件中,實際發(fā)送的數據包為59 328 個,成功接收的數據包為59 328 個,錯誤數據包為0 個,串口數據回送器軟件中可以看到實際成功接收的字節(jié)數為6 408 180 個。
圖13 發(fā)送與接收數據結果
以傳感器網絡技術和智能信息處理技術為支撐,對傳統(tǒng)氣象要素傳感器進行改進,實現(xiàn)氣象要素傳感器的網絡化與智能化,重點介紹了網絡適配器模塊的硬件設計電路和軟件設計思路,通過測試驗證了模塊的可行性。該網絡適配器模塊設計的難點主要在于設計接入智能氣象站中的智能變送器,實現(xiàn)模塊對于傳感器的即插即用和自識別。目前模塊已在觀測場的運用中取得良好效果,相信以后將會獲得廣泛的應用。