EM200在分布式探測(cè)站組網(wǎng)通信的應(yīng)用
摘要:針對(duì)分布式無(wú)源探測(cè)信息融合系統(tǒng)中各探測(cè)站與融合中心組網(wǎng)通信要求,構(gòu)建了一套基于CDMA網(wǎng)絡(luò)的收發(fā)系統(tǒng),滿足在各種地理環(huán)境下的使用需求。以LPC2214為控制核心結(jié)合CDMA模塊EM200構(gòu)成了該系統(tǒng)的收發(fā)終端,針對(duì)其中發(fā)送端存在的問(wèn)題給出了硬件解決方案,并結(jié)合實(shí)時(shí)操作系統(tǒng)分別闡述收發(fā)端軟件架構(gòu)。此外還引入中間轉(zhuǎn)發(fā)平臺(tái)用作TCP服務(wù)器實(shí)現(xiàn)作為TCP客戶端的收發(fā)終端間的數(shù)據(jù)交換。與傳統(tǒng)GPRS方案相比,該系統(tǒng)低延時(shí)的特性使其更適合實(shí)時(shí)性要求較高的分布式信息融合系統(tǒng)的需求。
關(guān)鍵詞:CDMA;收發(fā)系統(tǒng);中間轉(zhuǎn)發(fā)平臺(tái);實(shí)時(shí)操作系統(tǒng)
相比傳統(tǒng)有源探測(cè)手段,當(dāng)前分布式無(wú)源探測(cè)并采用信息融合的探測(cè)系統(tǒng)顯示出相當(dāng)大的優(yōu)勢(shì),尤其在目標(biāo)的跟蹤與識(shí)別上展現(xiàn)出顯著效果,具有重要的軍事意義和廣闊的應(yīng)用前景。作為整個(gè)分布式探測(cè)系統(tǒng)的重要環(huán)節(jié)——各探測(cè)站與信息融合中心的組網(wǎng)通信,針對(duì)探測(cè)站與融合中心能夠在各種地理環(huán)境與車載移動(dòng)條件下的使用要求,構(gòu)建了一套基于EM200模塊的CDMA實(shí)時(shí)收發(fā)系統(tǒng)。與傳統(tǒng)的遠(yuǎn)程無(wú)線通信GPRS系統(tǒng)相比,該CDMA系統(tǒng)在穩(wěn)定性和帶寬上都優(yōu)于GPRS,更適合于時(shí)延要求較嚴(yán)格的分布式信息融合系統(tǒng)。
1 系統(tǒng)架構(gòu)
如圖1所示,該分布式探測(cè)網(wǎng)由收發(fā)終端和中間轉(zhuǎn)發(fā)平臺(tái)構(gòu)成。發(fā)送端經(jīng)RS 232口接收來(lái)自探測(cè)站的數(shù)據(jù)并經(jīng)CDMA網(wǎng)絡(luò)發(fā)送出去,接收端將自CDMA網(wǎng)絡(luò)收到的數(shù)據(jù)送至信息融合中心。鑒于通信的可靠性要求,該系統(tǒng)全部采用TCP通信協(xié)議,收發(fā)終端均作為TCP的客戶端,位于公網(wǎng)上的中間轉(zhuǎn)發(fā)平臺(tái)用作TCP服務(wù)器端,實(shí)現(xiàn)收發(fā)端之間的的數(shù)據(jù)交換。
2 通信終端硬件設(shè)計(jì)
2.1 收發(fā)端硬件基本框架
圖2列出了通信終端基本的硬件框圖,主要分為電源模塊、微控制器(MCU)及其配套單元、CDMA模塊和其他輔助單元。收發(fā)端的硬件結(jié)構(gòu)完全相同。當(dāng)前串口仍是最為通用的接口之一,大多數(shù)無(wú)線通信模塊均經(jīng)過(guò)串口與外界進(jìn)行串行通信,EM200同樣如此。此處選用的MCULPC22 14具有兩組串口,分配串口0用作收發(fā)端與外界交換數(shù)據(jù)(發(fā)送端經(jīng)串口0接收來(lái)自探測(cè)站的數(shù)據(jù),接收終端經(jīng)串口0將數(shù)據(jù)發(fā)送給融合中心),串口1用作微控制器與EM200通信接口。
2.2 EM200相關(guān)電路設(shè)計(jì)
此處列出與EM200模塊相關(guān)的電路設(shè)計(jì),圖3是EM200模塊的主體電路,其中LPG腳和VDD-IO腳分別通過(guò)一個(gè)三極管驅(qū)動(dòng)LED以指示模塊的工作狀態(tài)。外部的開(kāi)啟和重啟模塊信號(hào)引腳同樣通過(guò)三極管驅(qū)動(dòng)EM200。
圖4是模塊與UIM卡的連接電路,其中33 pF電容用于濾去射頻電路產(chǎn)生的干擾。
目前大多數(shù)ARM7都具有兩組以上串口,其中通常有一組帶有完整的調(diào)制解調(diào)器接口,如LPC2214的串口。LPC2214作為DTE(數(shù)據(jù)終端設(shè)備)通過(guò)串口1與作為DEC(數(shù)據(jù)通信設(shè)備)的EM200相連,需要注意的是DTE與DCE之間的連接不需要交叉TXD/RXD線。
3 雙串口的管理
如圖2所示,收發(fā)端均需要管理兩組串口。對(duì)于接收端而言,當(dāng)獲取來(lái)自CDMA網(wǎng)絡(luò)的數(shù)據(jù)后,MCU從串口1接收EM200的數(shù)據(jù)包,解包分析后將有效數(shù)據(jù)通過(guò)串口0發(fā)送給融合中心。如圖5所示,此時(shí)MCU只需處理串口1的接收中斷,串口0可以采取查詢方式發(fā)送。
在發(fā)送端,MCU從串口0接收來(lái)自探測(cè)站的數(shù)據(jù),并將數(shù)據(jù)按AT指令TCP發(fā)送格式打包,經(jīng)串口1發(fā)送給EM200。由于AT指令的操作是交互式的,在MCU發(fā)出下一條TCP指令給EM200前,必須確認(rèn)已收到EM200之前AT指令執(zhí)行后的應(yīng)答響應(yīng),否則極可能導(dǎo)致發(fā)送失敗。由于需接收AT指令執(zhí)行后的應(yīng)答響應(yīng),串口1既要發(fā)送也要接收,再加上串口0的接收中斷,MCU需要同時(shí)處理兩組串口中斷,如圖6所示。
3.1 發(fā)送端面臨的問(wèn)題
發(fā)送端面臨的最大問(wèn)題是如何兼顧兩組串口的接收中斷,即當(dāng)兩個(gè)串口同時(shí)接收到數(shù)據(jù)時(shí),如何保證無(wú)丟失地全部接收。
雖然LPC2214的兩個(gè)16C550標(biāo)準(zhǔn)串口自帶16 BFIFO緩存,卻仍難以同時(shí)兼顧兩個(gè)串口的接收操作。
具體問(wèn)題為,在兩個(gè)串口同時(shí)接收到超過(guò)其FIFO緩沖容量的連續(xù)數(shù)據(jù)時(shí),MCU只能響應(yīng)高優(yōu)先級(jí)串口中斷,在低優(yōu)級(jí)串口中斷被暫時(shí)屏蔽期間,低優(yōu)先級(jí)中斷的串口會(huì)因自身FIFO緩存溢出導(dǎo)致數(shù)據(jù)丟失。
實(shí)際使用中,MCU一方面需要接收來(lái)自探測(cè)站的數(shù)據(jù),另一方面還要接收EM200返回的之前AT指令執(zhí)行后的應(yīng)答響應(yīng)。工作中TCP發(fā)送指令執(zhí)行后的應(yīng)答結(jié)果為“CRLF%TCPSEND:1,XCRLF”,其中CR和LF分別表示回車和換行,X代表發(fā)送指令中的有效數(shù)據(jù)個(gè)數(shù),可能是1~1 024之間的任意數(shù)值,另外在1和X前面還分別有一個(gè)空格。應(yīng)答結(jié)果共計(jì)18~21 B,超過(guò)了串口的16 B FIFO緩存容量,在中斷被屏蔽而得不到及時(shí)響應(yīng)時(shí),無(wú)疑會(huì)導(dǎo)致FIFO緩存溢出。
3.2 解決途徑
鑒于探測(cè)站發(fā)送的數(shù)據(jù)量和發(fā)送周期的不確定性,設(shè)計(jì)時(shí)必須考慮滿負(fù)荷的工作狀態(tài),即連接探測(cè)站的串口0一直處于接收峰值的狀態(tài)。為確保無(wú)丟失地接收探測(cè)站數(shù)據(jù),串口0中斷優(yōu)先級(jí)必須高于串口1。在此前提下,問(wèn)題可歸結(jié)為當(dāng)串口1中斷被暫時(shí)屏蔽得不到及時(shí)響應(yīng)時(shí),如何完整接收超過(guò)串口1緩存容量的AT指令應(yīng)答響應(yīng),解決途徑是擴(kuò)大串口1的FIFO緩存。
由于TCP發(fā)送指令返回的應(yīng)答響應(yīng)在18~21 B之間,所以串口1的接收緩存必須大于等于21 B,需另選大容量緩存的專用串口芯片來(lái)替代LPC2214串口1。這里采用具備64 B FIFO緩存的并轉(zhuǎn)串芯片TL16C752B。值得注意的是雖然TL16C752B符合8080并行總線接口要求,但其寫操作時(shí)序與相當(dāng)部分的MCU不匹配,而絕大多數(shù)MCU沒(méi)有調(diào)整此部分時(shí)序的功能,其中就包括此處選用的LPC2214。這就需要外加一片用作時(shí)序匹配的CPLD,此處選用了EPM240,該部分電路示意圖如圖7所示。
MCU以中斷方式經(jīng)串口0接收探測(cè)站的數(shù)據(jù),并將其按AT指令TCP發(fā)送命令格式傳至EM200模塊。EM200在完成當(dāng)前TCP數(shù)據(jù)包發(fā)送處理后,將執(zhí)行后的結(jié)果通過(guò)串口1返回給MCU,若MCU正忙于接收來(lái)自探測(cè)站的數(shù)據(jù),則AT指令執(zhí)行結(jié)果被壓入TL16C752B接收緩存,并通過(guò)中斷提示MCU此時(shí)串口1接收到數(shù)據(jù),一旦MCU從串口0接收中斷釋放就立即轉(zhuǎn)去處理串口1接收中斷,足夠大的緩存保證了EM200響應(yīng)結(jié)果能被完整接收。
4 軟件設(shè)計(jì)
4.1 轉(zhuǎn)發(fā)平臺(tái)的軟件設(shè)計(jì)
由于EM200僅支持TCP協(xié)議中的客戶端模式,而各個(gè)TCP客戶端之間是不能直接通信的。因此在收發(fā)系統(tǒng)中必須引入中間轉(zhuǎn)發(fā)平臺(tái)作為TCP服務(wù)器端,通過(guò)TCP服務(wù)器對(duì)收到的客戶端數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)處理從而間接實(shí)現(xiàn)在客戶端間的數(shù)據(jù)交換。TCP服務(wù)器端的軟件編寫較為容易,由于該軟件最終運(yùn)行在公網(wǎng)的PC上,可以在VB環(huán)境下利用WinSock組件來(lái)實(shí)現(xiàn)。TCP服務(wù)器開(kāi)啟兩組監(jiān)聽(tīng)端口分別監(jiān)聽(tīng)來(lái)自接收端和發(fā)送端的鏈接請(qǐng)求,當(dāng)建立起與發(fā)送端和接收端的TCP鏈接后,將發(fā)送端鏈接收到的數(shù)據(jù)從接收端鏈接發(fā)送出去,如此完成轉(zhuǎn)發(fā)操作。
4.2 收發(fā)終端軟件設(shè)計(jì)
針對(duì)分布式無(wú)源探測(cè)網(wǎng)絡(luò)較高的實(shí)時(shí)性要求,若仍采用無(wú)限循環(huán)的前/后臺(tái)軟件架構(gòu)是不合適的,而引入實(shí)時(shí)操作系統(tǒng)(RTOS)一方面可以提高整體的響應(yīng)時(shí)間,另一方面可以將復(fù)雜的應(yīng)用分解成多個(gè)相對(duì)獨(dú)立子功能模塊,降低了軟件編寫復(fù)雜程度。此處選擇μC/OS-Ⅱ,其較少的硬件資源開(kāi)銷很適合ARM7這類MCU。
4.2.1 發(fā)送端軟件設(shè)計(jì)
發(fā)送端可以拆分成三個(gè)進(jìn)程,每個(gè)進(jìn)程都是一個(gè)無(wú)限循環(huán),依靠μC/OS-Ⅱ內(nèi)核的調(diào)度機(jī)制,MCU在三個(gè)進(jìn)程之間切換執(zhí)行,實(shí)現(xiàn)發(fā)送端對(duì)探測(cè)站數(shù)據(jù)的接收和CDMA發(fā)送操作。
進(jìn)程1的優(yōu)先級(jí)最高,其任務(wù)是讀取串口0收到的數(shù)據(jù)并將其壓入在RAM中開(kāi)辟的緩沖區(qū)。串口0的讀取操作是由中斷服務(wù)程序ISR配合RTOS中的信號(hào)量實(shí)現(xiàn)的。具體過(guò)程是在進(jìn)程1中調(diào)用RTOS的OSSemPend函數(shù)阻塞當(dāng)前進(jìn)程,當(dāng)串口0收到數(shù)據(jù)并觸發(fā)中斷后,在中斷服務(wù)程序ISR中讀出的串口0緩存數(shù)據(jù),并調(diào)用RTOS的OSSemPost函數(shù)釋放相應(yīng)的信號(hào)量,則原先被阻塞的進(jìn)程繼續(xù)執(zhí)行,此時(shí)將ISR中讀出的數(shù)據(jù)壓入RAM中開(kāi)辟的緩沖區(qū),完成一次循環(huán),如圖8所示。
進(jìn)程2負(fù)責(zé)從串口1接收來(lái)自EM200模塊的AT指令應(yīng)答結(jié)果,由于預(yù)先得知TCP發(fā)送指令執(zhí)行后的應(yīng)答響應(yīng)不會(huì)超過(guò)串口1的64 B FIFO緩存容量,因此實(shí)時(shí)接收的要求不如串口0嚴(yán)格,所以進(jìn)程2優(yōu)先級(jí)可低于進(jìn)程1。進(jìn)程2的架構(gòu)與進(jìn)程1基本相同,惟一區(qū)別是將讀出的應(yīng)答響應(yīng)存到指定的AT指令暫存緩沖區(qū),如圖9所示。
進(jìn)程3負(fù)責(zé)從RAM緩沖區(qū)中截取一段之前串口0接收到的數(shù)據(jù),并按AT指令TCP發(fā)送格式打包并發(fā)送給EM200模塊,然后檢測(cè)AT指令暫存緩沖區(qū)中的應(yīng)答響應(yīng)結(jié)果,判斷是否立即發(fā)出下一輪TCP發(fā)送指令給EM200,如圖10所示。進(jìn)程3對(duì)串口1執(zhí)行發(fā)送操作,實(shí)時(shí)性相對(duì)進(jìn)程1和進(jìn)程2要求更低,因此進(jìn)程3的優(yōu)先級(jí)可設(shè)為三者中最低一級(jí)。
4.2.2 接收端軟件設(shè)計(jì)
接收端也分為三個(gè)進(jìn)程,依靠RTOS的調(diào)度機(jī)制,MCU在三個(gè)進(jìn)程之間切換執(zhí)行,實(shí)現(xiàn)接收端對(duì)來(lái)自CDMA網(wǎng)絡(luò)數(shù)據(jù)包的接收并將解析后的有效數(shù)據(jù)發(fā)送給融合中心。
鑒于EM200收到自CDMA網(wǎng)絡(luò)數(shù)據(jù)后會(huì)直接經(jīng)串口將數(shù)據(jù)包輸出的特性(不同于其他模塊會(huì)將數(shù)據(jù)暫存在模塊內(nèi)部,只有當(dāng)收到AT指令讀命令后才會(huì)輸出數(shù)據(jù)包),因此最高優(yōu)先級(jí)進(jìn)程1的任務(wù)就是通過(guò)串口1接收自EM200的數(shù)據(jù)包并將其壓入在RAM開(kāi)辟的緩沖區(qū)。如圖11接收端的進(jìn)程1架構(gòu)與發(fā)送端進(jìn)程1類似。
由于進(jìn)程1中收到的數(shù)據(jù)包含有部分無(wú)效字符,因此中等優(yōu)先級(jí)進(jìn)程2負(fù)責(zé)解析緩沖區(qū)數(shù)據(jù)包中的有效數(shù)據(jù),若檢測(cè)到緩沖區(qū)中無(wú)完整的數(shù)據(jù)包,則調(diào)用RTOS提供的OSTimeDlyHMSM函數(shù)延時(shí)一定時(shí)間,在延時(shí)期內(nèi)主動(dòng)釋放MCU的使用權(quán),若檢測(cè)到一個(gè)以上的完整數(shù)據(jù)包,則在解析處理后將有效數(shù)據(jù)送入在內(nèi)存中開(kāi)辟的串口0發(fā)送緩沖區(qū),該進(jìn)程架構(gòu)如圖12所示。
低優(yōu)先級(jí)的進(jìn)程3負(fù)責(zé)檢測(cè)串口0的發(fā)送緩沖區(qū)是否為空,若不為空則通過(guò)串口0將緩沖區(qū)中數(shù)據(jù)發(fā)送出去,如圖13所示。
只有在進(jìn)程2延時(shí)期內(nèi)且進(jìn)程1處于掛起狀態(tài),負(fù)責(zé)串口0發(fā)送任務(wù)的進(jìn)程3才得以執(zhí)行。由于采用了延時(shí)的方式主動(dòng)釋放對(duì)MCU的使用權(quán),因此延時(shí)的大小決定了進(jìn)程3每次的執(zhí)行時(shí)間,延時(shí)若設(shè)得過(guò)大可能會(huì)造成數(shù)據(jù)包解析不及時(shí)從而導(dǎo)致串口1收到的數(shù)據(jù)包在接收緩沖區(qū)中大量堆積,使得實(shí)時(shí)性大大降低。延時(shí)若設(shè)得過(guò)小則會(huì)導(dǎo)致進(jìn)程3在發(fā)送一段較長(zhǎng)的數(shù)據(jù)時(shí)被經(jīng)常打斷,微控制器的處理資源被浪費(fèi)在頻繁的進(jìn)程切換上,綜合考慮此處將延時(shí)設(shè)定為50ms。
5 結(jié)語(yǔ)
本文介紹了一套基于EM200模塊的CDMA數(shù)據(jù)收發(fā)系統(tǒng),利用該系統(tǒng)組建的分布式探測(cè)網(wǎng)絡(luò)可適應(yīng)各種地理環(huán)境,結(jié)合CDMA系統(tǒng)較短的傳輸時(shí)延配以合理的軟硬件設(shè)計(jì),能夠確保整個(gè)網(wǎng)絡(luò)較高的實(shí)時(shí)性能,滿足分布式無(wú)源探測(cè)信息融合系統(tǒng)組網(wǎng)通信要求。