史 磊
(陜西機電職業技術學院 電子與信息學院,陜西 寶雞 721001)
無線通信是指多個節點間不通過導體傳播而實現遠距離傳輸通訊的技術,與有線通信相比,無線通信方式具有結構簡單、傳輸距離遠等優點,不會受到光纜、導線等硬件設備的約束,能夠在很大程度節約硬件成本,完成有線通信設備無法完成的數據傳輸任務,因此網絡通信信息的獲取和傳輸逐步從有線過渡到無線,并應用到諸多工作領域中[1]。一般來講,無線通信主要利用無線電波作為數據傳輸的媒介,將發送端與接收端設備的數據信息調制到相同的載波頻率上,從而實現數據的定向傳輸。
然而從當前無線通信遠程數據傳輸的應用情況來看,受到通信傳輸環境的影響,會出現傳輸中斷、傳輸數據丟失等現象,隨著使用用戶數量的增加,無線通信服務也容易出現傳輸擁塞等問題,不僅會影響無線通信的運行效率,還有可能造成信息泄露等嚴重后果。為了最大程度地保證無線通信遠程數據傳輸的安全穩定性以及時效性,有必要設計并應用相應的數據傳輸控制系統。
現有的數據傳輸控制系統存在明顯的控制功能不佳、運行性能差的問題,主要體現在數據傳輸丟失量大、擁塞概率高、吞吐量差等方面,為了解決上述傳統控制系統存在的問題,引入STM32嵌入式的概念。將STM32以嵌入式的方式應用到無線通信遠程數據傳輸控制系統中,改裝傳輸數據處理器,加設時鐘發生器,提升無線通信遠程數據傳輸控制效果。通過系統電路的連接實現數據傳輸控制硬件系統的設計,采集并處理無線通信數據資源,設置遠程數據傳輸控制協議并通過信道特征分配遠程傳輸數據資源,提高系統的傳輸控制功能與運行性能。
無線通信遠程數據傳輸控制系統以無線信息遠程控制為主要手段,通過對傳輸信道、傳輸數據等主體的控制,完成對數據傳輸流量以及傳輸速度的控制。此次無線通信遠程數據傳輸控制系統分別從硬件、軟件功能程序兩個方面進行分析優化設計,其中硬件部分的作用是為數據庫以及軟件功能的運行提供支持,硬件系統的基本框架如圖1所示。

圖1 無線通信遠程數據傳輸控制硬件系統框圖
在傳統傳輸控制硬件系統的基礎上,利用STM32對控制器以及微處理器等硬件設備進行優化,同時對部分硬件元件和連接電路進行改裝和調整,提高硬件設備的運行效率。
STM32嵌入式芯片基于Cortex-m3核心,結合了多種工業標準的高性能接口,并與STM32系列產品的管腳和軟件兼容,使得STM32適配于多種應用程序[2]。為滿足系統的互聯功能和實時性能,選擇STM32107型號的芯片進行傳輸控制器優化。圖2表示的是STM32107嵌入式芯片的內部結構。

圖2 STM32嵌入式芯片結構圖
圖2所示的STM32控制芯片,包括256KB的Flash存儲器,6個USART接口、3個16位DAC轉換器、12個DMA通道、以太網IEEE1588接口等。STM32嵌入式芯片相對于傳統的嵌入式控制系統,采用IEEE1588協議,內置雙CAN總線具有良好的網絡連接能力[3]。STM32芯片采用了嵌入式的方式連接到傳統控制器上,實現一種經濟的網絡互聯。在硬件方面,它支持IEEE1588精確計時協議,能夠在網絡上進行準確的時鐘同步,為更多的嵌入式應用程序預留CPU空間。STM32中采用的雙CAN20B模塊是一種更為便捷的CAN橋接方式。
優化設計的無線通信遠程數據傳輸控制系統采用ARM7型信號處理裝置進行了優化設計,包括核心、總線、外部接口、調試等部分。內核是執行運算、內存存取、周邊界面控制、中斷控制等功能的核心。ARM7處理器采用了一個簡單的二極管處理命令,一個命令被內核同時解碼,而另一個命令又被讀取到了內存中,所以程序計數器總是指向下一個命令,而非目前被執行的命令。ARM7核心包含38個寄存器,32個通用寄存器,6個寄存器不能用于使用者和程序[4]。目前可使用的暫存器組合需要通過處理器狀態、運行、閑置和運行方式來確定。
硬件系統中的所有元件均為時序電路,需要一個時鐘信號才能工作,為此在硬件設備中內置一個型號為LPC2210晶體振蕩器,LPC2210晶體振蕩器的工作模式可以分為從屬模式和振蕩模式兩種[5],從屬模式下的工作原理如圖3所示。

圖3 時鐘發生器工作原理圖
輸入時鐘信號被耦合到一個大于100 pF的電容器Cc,該電容器的振幅小于200米Vrms,X2管腳未被連接。若選取從屬模式,則將振蕩器輸出Fosc信號的頻率限定為1至50 MHz[6]。在振蕩模式下,LPC2210芯片內部有一個反饋電阻,因此,只要將 Xtal與Cx1,Cx2的外部相連,即可實現基本的振蕩[7]。
1.4.1 電源電路
無線通信遠程數據傳輸控制系統的控制器是在通訊網絡中正常工作的,其穩定、可靠的電力供應是確保其可靠工作的先決條件[8]。該系統的供電電路采用線性穩壓器,線性穩壓電源具有響應迅速、噪音低、輸出波動小等特點[9]??刂破鞯?IC晶片均為5 V及3.3 V。控制器及物理層 PHY晶片的工作電源為3.3 V DC,而儲存晶片及 I/O控制電路則需5 V供電。由于控制電路由5 V DC供電,所以由 LM1117-3.3 V的穩壓芯片構成,LM1117具有過熱保護、限制過流的作用,保障電壓穩定度達到了電路工作的需要。
1.4.2 通信接口電路
優化設計的數據傳輸控制系統需保證最基礎的串口通訊,只需 RXD, TXD, GND三種通信接口電路即可實現。這種連接只需要三條線路,也就是模擬了 MCU的串行通訊方式,需要用SP232實現控制器與電腦之間的電平變換。
1.4.3 液晶顯示電路
為直觀地顯示無線數據采集終端的采集結果,同時也便于系統的調試,系統使用128*64的液晶顯示設備,并采用ST7920驅動128x64 LCD模組,既能實現32路 com的輸入,又能實現64路 Sg的輸出[10]。該系統采用ST7921驅動256×32的點陣 LCD,適用于漢字及圖形的顯示,內置2 M中文字型 ROM[11]。另外,系統還具有4位并行功能,以滿足不同的微處理器和 MCU的接口要求。將顯示器設備與系統其他元件按圖4方式進行連接。

圖4 液晶顯示連接電路圖
LCD顯示器采用3線串聯模式, PSB管腳固定在地面上,使 I/O占用較小,程序編制簡便。同時,通過STM32的 IO來實現對背光的控制,延長 LCD屏幕的使用壽命。
除了上述硬件設備和電路外,數據采集器、通信網絡等設備均沿用傳統無線通信遠程數據傳輸控制硬件系統中的設備。
啟動硬件系統中的數據采集器,按照圖5表示流程進行初始無線通信數據的采集。

圖5 無線通信數據采集流程圖
在采集動態無線通信數據過程中,通過SPI中斷服務和中斷服務程序來實現,STM32控制器通過SPI中斷來接收初始數據,SPI中斷服務中,將所收到的數據存儲到對應的全局陣列變量spi_data中,從而保證當前采集數據的實時性[12]。為了滿足無線傳輸通信信道的傳輸規則,需要對初始采集的數據進行處理,規范數據的報文格式。首先利用公式(1)對數據進行無量綱規范化處理。
(1)
式中,x為初始采集的無線通信遠程傳輸數據,xmax和xmin為數據的最大值和最小值。在此基礎上將數據轉換為ACK報文格式,ACK報文包含了一個消息的回復和一個特定的序列號的回復[13]。當接收端收到消息時,報文的序列被存儲在響應包清單中,并且基于該清單來計算下一次傳送的 ACK域的值。若傳送代理傳送1、2、3、4、5五個消息,當報文到達接收端傳送代理的次序是1、2、4、5,則接收端的 acklist中存儲[1、2、4、5],則 ACK是3,表明所有小于3的消息都被接收。在下一次 ACK報文被傳送時, ACK字段置為3,t字段為001,并且將sn=4、sn=5的消息確認應答置于 ACK的負載中,通知發送端,序號小于3的消息已被接收,而序號為4和5的消息也已接收,發送者僅需重新發送3號消息[14]。采用該格式和響應機制,可以極大地降低重復發送的消息,間接地提高了數據傳輸的效率。
無線通信遠程數據傳輸選擇TCP/IP協議作為控制約束標準,傳輸控制協議的工作流程如圖6所示。

圖6 數據傳輸控制協議工作流程圖
若傳輸信道處于靜態狀態,則無實體層連接。在調制解調器的載頻信號被偵測并且物理層連接被建立之后, LCP就會開始進行一些選擇。談判完畢,就進入鑒定階段。如果通信雙方識別成功,就可以進行網絡訪問。NCP設定網路層,指定 IP位址,進入開放狀態,進行資料通訊。在完成了數據傳送之后,進入了終止狀態。當載波停止時,恢復到靜止狀態。在實際運行過程中,IP協議用來約束數據包的接收與發送、數據傳輸信道的搜索、路由以及差錯處理等[15-17]。IP協議的作用就是把數據包傳遞給目標主機,因為在某些中間節點上都沒有驗證的程序,因此無法保證數據包的正確性。在傳送過程中,若出現了由路由器緩沖溢出引起的包丟失等差錯,協議會依據自己的糾錯算法,將此資料包刪除,并以響應消息報文的方式傳送至源主機,只有高層傳送控制協議才能保證其可靠性。
在無線通信遠程數據傳輸控制協議的約束下,假設無線通信環境的初始通道是隨機生成的,在此期間,該節點不再變換通道,而是一直在這個通道內。該節點利用偽隨機序列生成的種子來計算下一時段的頻道,信道是頻道的總數。利用偽隨機序列生成的種子,下一個時間周期內使用的信道可以表示為:
nChannel=(βChannel+seed)mod(NChannels)
(2)
式中,nChannel和NChannels分別為節點將要切換的新信道編號和信道總數量,βChannel為節點初始信道,seed為偽隨機序列產生的種子。以初始采集并處理完成的數據作為分配目標,則其分配結果可以表示為:
(3)

根據無線通訊的遠程數據傳送流程,客戶機_ a和客戶機_ b被定義為發送方,agent_A和agent_B作為接收方,首先在發送方和接收方之間建立 TCP連接,當接到客戶端_ a的 Connection請求時,agent_A將代理響應于client_a,并將client_a傳送到發送隊列中,同時向agent_B詢問client_b的狀況,agent_B先查詢接收會話信息表 RIB,然后主動地與client_b建立聯系,并通過 RESPONSE消息反饋給agent_B。一旦agent_A接收到agent_B和client_b之間的連接成功,則告知發送端傳送代理將數據從發送隊列中提取,并將其封裝在 UTP包的數據區進行發送[18]。相應地,在接收 UTP包之后,接收端傳送代理按照包類型進行處理,若發現為數據包,則從 UTP包中分析該數據,通過agent_B向客戶機_ b傳送一個應答包,并且將響應包傳送到發送代理,若發現為響應包,則按照響應包從傳送隊列中刪除相應的數據。在完成了數據傳送之后,客戶機_ a主動啟動中斷連接請求,agent_A將 FINISH報文發送給agent_B,告知agent_B切斷與客戶機_b的連接,agent_B在收到 FINISH消息后,切斷與客戶機_b的連接并從接收會話表中刪除傳輸相關會話信息[19]。按照上述數據傳輸流程,利用安裝的控制器設備,在傳輸協議的約束下,以選擇的信道為控制目標,實現系統的無線通信遠程數據傳輸控制功能。無線通信遠程數據傳輸流量控制的目的是最大程度地避免傳輸信道出現擁塞現象,首先利用式(4)計算無線通信網絡中任意信道的最大鏈路容量。
Qi=RTTi×Bandwidthi
(4)
式中,變量RTTi和Bandwidthi分別表示的是鏈路往返時延向量和測量代理查詢每個端口的帶寬信息。在實際流量控制過程中,根據式(4)的計算結果生成一個流量擁塞控制窗口,任意時刻無線通信傳輸信道流量受限于如下公式:
awnd=min(creditwnd,Q)
(5)
式中,awnd和creditwnd分別為允許窗口和擁塞窗口大小。若當前無線通信信道的數據總傳輸量高于awnd,則利用控制器設備啟動流量控制窗口程序,保證該信道通過流量低于awnd,直到信道傳輸數據低于0.6Qi為止[20]。另外通過對流量窗口大小的設置與調節,實現數據實時傳輸速率的控制,由此從流量和速率兩個方面完成系統的數據傳輸控制功能。
在系統設計中,每一個模塊都要經過驗證、測試、檢查和不斷地修正,從而使各個功能模塊能夠根據設計的要求來工作,從而實現目標和結果。在對各功能模塊進行了測試后,根據對系統的功能需求,對經過測試的各模塊進行了裝配和測試,以確定系統在運行時是否能夠滿足所需的性能指標,并對其進行改進。為了測試優化設計的基于STM32嵌入式的無線通信遠程數據傳輸控制系統的控制功能和運行性能,設計系統測試實驗,并驗證優化設計結果是否滿足設計與應用要求。
此次系統測試實驗所針對的無線通信環境由網關部署環境、服務器運行環境、用戶端運行環境3個部分組成。其中,網關與 LoRa模塊的數據輸出接口通過串口進行連接,使之能與 LoRa網絡相連通??梢苿泳W關將路由器與無線網絡相連,由此進入互聯網。另外,在實驗室的局域網下面還配置了一個監控 PC,以實現現場的實時監控。Tomcat和 MySQL被部署在服務器中,用于提供業務支持,并在開放式系統中使用每個端口進行數據傳送。設置多個遠程用戶端作為無線通信遠程數據傳輸的接收端。
為了給系統測試實驗提供充足的數據樣本,收集某個有線通信網絡的發送傳輸信息數據,以此作為系統測試實驗的傳輸數據樣本。表1為部分實驗數據傳輸樣本的設置結果。

表1 部分實驗傳輸數據樣本設置表
系統測試實驗共設置200個數據傳輸任務,通過傳輸數據的大小確定合適的傳輸信道,以此作為系統控制效果測試的對比標準。
根據基于STM32嵌入式的無線通信遠程數據傳輸控制系統的優化設計目的,分別從控制功能和運行性能兩個方面進行分析。其中控制功能的測試內容是檢測控制系統能否完成數據在規定速率下無誤碼傳輸,同時避免出現數據傳輸擁塞現象。而控制系統的運行性能主要就是測試該系統能夠同時控制無線通信遠程傳輸數據量的多少。在實驗環境中安裝優化設計系統中的硬件設備,并執行硬件設備調試工作。啟動數據傳輸控制系統軟件程序,逐一調取數據傳輸任務。以第一個傳輸任務為例,服務器端傳送的是0XFFF10101的數據,前面4個16進制的數據是一個FFF1,如果服務器端的4個16進制的數據是一個FFF1,則確認這個網絡的數據是有效的,然后把后面的4個16進制的數據傳送到一個控制 I/O控制任務以進行對應的控制,使用相同的方式可以得出其他任務的數據傳輸與控制結果。通過 Xilinx ISE12.2開發包中的 Chip Scope,通過 Chip Scope來實現對系統內的信號進行實時探測,當錯誤標記比特被觸發時,該錯誤標記比特信號會一直等待,表明在發送數據時未發生任何數據傳輸錯誤。
此次系統測試實驗設置傳輸速率控制誤差、丟包率、傳輸擁塞總時長3個指標來反映系統的數據傳輸控制功能,其中傳輸速率控制誤差和丟包率的數值結果為:
(6)
式中,變量νtarget和νcontrol分別為設置的數據傳輸速率目標值和實際控制結果,Nreceive和Nsend對應的是數據的接收量和發送量,另外傳輸擁塞總時長測試指標的測試結果為:
(7)
式中,τi為第i次擁塞的維持時長,參數n為傳輸過程中發生擁塞事故的次數。為了滿足系統設計對控制功能的要求,設置εν、ηloss和τ的預設值分別為0.5 MB/s、1%和3.0 s,并要求系統控制功能實際測試指標結果不高于預設值。另外,設置吞吐率作為系統運行性能量化測試指標,其數值結果可以表示為:
(8)
式中,L為無線通信信道的長度,RTT、N和To分別為數據傳輸的往返時間、單個ACK確認數據量和數據傳輸超時重傳定時器參數,To取值為定值。另外ηloss為數據丟包率,可以通過式(6)的計算得出該變量的具體取值,實驗要求吞吐率不得低于88%。
通過相關數據的提取與統計,得出系統控制功能的測試結果,如表2所示。

表2 系統控制功能測試數據表
將表2中的數據代入到式(6)中,可以得出控制系統下無線通信遠程數據傳輸速率控制誤差和丟包率對的平均測試結果分別為0.18 MB/s和0.6%。另外通過式(7)的計算,得出傳輸擁塞總時長的測試結果如圖7所示。
從圖7中可以直觀地看出,在設計系統的控制下,遠程數據傳輸發生擁塞時間的最大值為2.6 s。由此可見系統控制功能指標的測試結果均低于預設值,即優化設計系統的控制功能滿足設計要求。另外通過式(8)的計算得出系統運行性能的測試結果,如圖8所示。

圖7 控制系統下遠程數據傳輸擁塞總時長統計圖

圖8 通信遠程數據傳輸控制系統運行性能測試結果
從圖8中可以看出,無線通信遠程數據傳輸控制系統吞吐率的最小值為91.5%,由此可見設計控制系統的運行性能滿足設計與應用要求。
從系統測試結果中可以看出,通過STM32芯片的嵌入式應用,有效提高了無線通信遠程數據傳輸控制系統的控制功能與運行性能,對于無線通信技術而言具有較高的應用價值。然而實驗中設置的傳輸樣本數量較少,且未對數據傳輸延遲進行測試,因此得出的系統測試結果存在一定的局限性,因此在控制系統投入應用之前,還需要進一步補充相關的測試數據。