現代世界是一個信息世界,信息的獲取傳輸也逐步從有線過渡到無線。隨著無線通信事業的發展,無線傳輸這一技術越來越多的為人們所熟悉,相應的產品也滲透到社會生活的各個領域,如無線抄表、數字圖像傳輸、小區傳呼、工業數據采集、非接觸RF 智能卡、安全防火系統、區域報警系統的數字信號傳輸等。而這一技術的最大作用便是優化數據傳輸系統的效率。本文將此技術應用于無線通信的遠程環境監測系統中,使該系統不僅數據傳輸效率高,而且結構簡單,操作方便。 一、遠程環境監控系統組成 1、遠程環境監控系統概述 圖1 遠程環境監測系統框圖 遠程環境監測系統主要是對酸雨,水質,煙霧濃度等環境參數進行集中測量,它是一種由中心站PC機、無線數傳模塊與子站PC機、無線數傳模塊、數據采集器、環境測定儀所組成的主從式系統。系統結構如圖1所示。 中心站主要位于城市或地區的環境監測總站,子站則在城市或地區的周邊。環境測定儀有碳氫化合物測定儀MODEL-745、大氣測定儀AFC-125、酸雨測定儀AR-107SNA、COD測定儀VS-3951等,他們收集的各種環境參數通過數據采集器送入子站PC機中,進行數據處理、參數顯示和保存,并隨時準備接受中心站的查詢和定時發送。每一子站與中心站之間的遠程通信是采用北京池潤達公司的W21DM無線數傳全雙工通信模塊來實現的。 中心站、子站與無線數傳模塊間的通信是通過異步串口來完成的。異步串口采用標準的串口格式即:一個起始位、八個數據位、一個停止位。傳輸速率為1200bit/s。 2、 無線數傳模塊工作過程 圖2是無線數傳模塊結構框圖。無線數傳模塊的工作方式有全雙工和半雙工兩種,為了能充分測試系統傳輸數據的可靠性,本系統采用全雙工模式。同時注意在設置通信時,必須保證通過串行口將無線數傳模塊的收發頻率設置相同。 圖2無線數傳模塊結構圖 2.1 模塊發送過程: 當模塊收到PC機的串行口數據后,模塊先通過DTR線判斷收到的數據是命令還是發送數據,若是命令則執行相應的命令,若是發送數據則先將要發送的數據送到發送緩沖區EERAM中,并同時將模塊的狀態由接收狀態轉換成發射狀態,狀態轉換完成后啟動發送打包程序,并將這個數據包的數據送到模塊中的數據調制口以FSK的方式調制成模擬信號, 與鎖相環中的振蕩信號一起送混頻器,升頻后的射頻信號再經發射放大器、功率放大器放大后通過天線發送出去。這里的數據打包要遵從事先定義好的傳輸協議,這樣才可以使接收雙方有規可循,而且避免其他信號干擾。具體設定下面詳細說明。 2.2 模塊的接收過程: 在接收狀態下,通過天線接收進來的射頻信號經射頻發大器后,與鎖相環中的振蕩信號一起送到混頻器,降頻后的中頻信號,通過中頻濾波器、中頻放大器放大后送到調制解調器,以FSK解調后的數字信號按照協議將有效數據送到存儲器中,再經串行口送到計算機。 二、設計系統時需要考慮的一些問題 1、傳輸協議 因為無線通信模塊要對接收進來的數據進行處理,就必須能夠鑒別數據的真偽,所以要求傳輸數據的雙方建立一種有效協議使得能夠識別噪聲和有效數椐。因為噪聲是以隨機字節出現的,沒有明顯的結合方式,噪聲源可能產生任意字節的組合,所以研究在無線通信的過程中最好能通過一種協議能有效的抑制噪聲的產生。 經過比較選擇,采用了以下的數據傳輸協議格式: Radom 任意內容的字節 Data 位數據包字節 Length 為數據包包含的Header字節之后的所有字節的長度 Checksum 校驗和字節 經過測試和試驗,發現0xFF 后跟0XAA,0x55 在噪聲中不容易發生,所以設置傳輸協議在數據包前加開始字節0xFF 后跟0xAA,0x55發送。因為第一個字節的數椐在發送時容易丟失,所以在協議的開始加一個任意內容的字節,然后是0xFF 后跟一個0xAA,0x55;接收協議規定只接收以0xFF 后跟0xAA,0x55 開始的包.于是就可以很方便的把以上系統的數據包格式定為以上格式。 2、傳輸頻率 在無線通信系統中傳輸頻率也是至關重要的,在為劃分和合理使用頻率,國際電信聯盟(ITU)將世界分為三個區,中國屬于第三區。ITU對我國的業余業務頻率有專門的分列。而這里設定的頻段為227.00"223.00MHz,此為國家業余頻段,也就是說可以自由使用,當然如果希望長期專用,則需要申請頻譜許可證,專用該頻段。 系統中數據的遠距離傳輸是根據接受雙方的頻率來判斷是否接受的。所以需要編寫一定的程序完成頻率設置。如寫頻時,把DTR置低,指令格式為:D7H:FFH:AAH:AAH:AAH:BBH:BBH:BBH,AAH:AAH:AAH表示發射頻率,如229.100MHz表示為22H:91H:00H三字節,同理BBH:BBH:BBH表示接收頻率。而傳送數據時,DTR置高或懸空。 3、串行數據的傳送方式 由于設計采用的是無線傳輸,所以當通過串行口將數據送到無線數傳模塊的時候需要考慮數據的傳輸格式。一般來說,通常我們發送的是字符或者數字,這時我們就需要在軟件中根據ASCII碼的規則將他們轉化為十六進制數形式,以字節方式傳送。同時也需考慮發送與接收串口之間的延遲。 三、串行口通信的軟件設計 串行口是常用的計算機與外部串行設備之間的數據傳輸通道,而Visual C++6.0是一種功能強大的可視化的面向對象的Windows編程開發平臺,利用其進行串行通信方便易行,應用廣泛。通常情況下VC++中有三種實現串行通信的編程技術:1)利用控件MSComm實現串行通信:在對話框中創建通信控件 MSComm,這種方法簡單易用,但必須拿到對話框中使用,靈活性較差;2)多線程實現串行通信:在自定義的串行通信類中創建端口監視線程,進行多線程控制,并在指定的事件發生時向相關的窗口發送通知消息。該方法實時性強,但是系統復雜;3)在單線程中建立自定義的通信類實現串行通信;利用VC++的MFC類庫實現。與控件方法相比,靈活性強,可按不同需要定制靈活的串口通信類來實現,同時也比多線程通信結構簡單。 結合本設計所采用的硬件的特點,以及實際的運行環境,最終選擇第三種方式完成串行口通信。 程序流程圖如下: 圖3 程序流程圖 在程序中利用類CserialPort實現負責串口的配置,數據傳輸的延遲處理以及讀寫。結構如下: 其中配置串行口采用DCB結構,BOOL ReadByte(char* buff) 和BOOL WriteByte(BYTE,int)函數為讀寫串行口,為了識別操作是否正確,利用BOOL bWriteRC, bReadRC設置成功標志。同時設定DWORD iBytesWritten,iBytesRead確定字節的個數。在收發數據時需要監測串行口是不是準備好,這時就可以檢測m_bPortReady的狀態。 整個程序的編制也就相應的分為以下幾個部分: 配置串口;配置數傳模塊;讀寫串行口;通信延時處理等。 四、總結 環境監測系統具有采樣數據量大,傳輸距離遠,以及環境條件差別大的特點,長期以來數據傳輸部分一直是人們關注的焦點。以往系統主要采用MODEM和電話機實現遠程通信,但由于電話線具有通信速度慢,質量差的缺點,已不能滿足現代環境監測的要求。這里應用無線數傳模塊完成遠程數據通信,不僅克服了這些缺點,而且大大改善了該系統的數據傳輸性能。經最終測試該系統不僅可以在條件惡劣干擾大的環境下進行遠距離傳輸,而且數據準確率高,傳輸速度快。可根據不同需要應用于電力、水利、石油、林業、勘探等領域。 |