分布式數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方案詳解
1引言
分布式數(shù)據(jù)采集系統(tǒng)(Distributed data acquisition system)是相對(duì)于集中式數(shù)據(jù)采集系統(tǒng)而言的。它一般是由地面采集站、遙測(cè)數(shù)傳電纜以及中央控制站三部分組成,其中地面采集站按測(cè)線的方向布置,負(fù)責(zé)采集一個(gè)或幾個(gè)測(cè)點(diǎn)的地球物理數(shù)據(jù),而中央控制站的主要任務(wù)是完成數(shù)據(jù)的記錄和質(zhì)量監(jiān)控。這種系統(tǒng)已在地震勘探和高密度電法中被采用。
在工程安全監(jiān)測(cè)領(lǐng)域,集中式數(shù)據(jù)采集系統(tǒng)在應(yīng)用過(guò)程中遇到了不少難以克服的技術(shù)難題,單從產(chǎn)品的制造質(zhì)量方面入手是不能完全解決這些問(wèn)題的。隨著集成電路技術(shù)的發(fā)展,集成電路芯片的功能越來(lái)越強(qiáng)大,體積越來(lái)越小,而價(jià)格卻越來(lái)越低,所以在研制新的數(shù)據(jù)采集自動(dòng)化系統(tǒng)時(shí),工程技術(shù)人員不在擔(dān)心成本因素、體積因素,而是將設(shè)計(jì)重點(diǎn)放在系統(tǒng)的穩(wěn)定性上,著重研究數(shù)據(jù)采集系統(tǒng)如何應(yīng)對(duì)監(jiān)測(cè)工程中傳感器大數(shù)量、分布范圍特點(diǎn)。 [1]20世紀(jì)80年代,西方國(guó)家開(kāi)始研究多CPU的數(shù)據(jù)采集自動(dòng)化系統(tǒng),即在原來(lái)集中式數(shù)據(jù)采集系統(tǒng)的每個(gè)“集線箱”中部署了一個(gè)或多個(gè)CPU,在監(jiān)測(cè)數(shù)據(jù)采集的現(xiàn)場(chǎng),就地將傳感器的信號(hào)轉(zhuǎn)換成為數(shù)字信號(hào),并且具有相互獨(dú)立的控制和數(shù)據(jù)管理能力,這時(shí)的“集線箱”變成了測(cè)量控制單元(MCU),而MCU通過(guò)通信網(wǎng)絡(luò)將采集到的數(shù)據(jù)傳送給上位計(jì)算機(jī)存儲(chǔ)、分析計(jì)算和處理,這種數(shù)據(jù)采集系統(tǒng)就被稱為分布式數(shù)據(jù)采集系統(tǒng)。當(dāng)時(shí)計(jì)算機(jī)網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展,為分布式數(shù)據(jù)采集系統(tǒng)的成功提供了有力的技術(shù)保障。
為此,基于CycloneIV+STM32設(shè)計(jì)了一種新型的無(wú)線分布式采集系統(tǒng),實(shí)現(xiàn)了數(shù)據(jù)的高可靠和同步傳輸。設(shè)計(jì)主要由3大部分組成:編碼器、譯碼器、無(wú)線收發(fā)電臺(tái)。在對(duì)編碼器、譯碼器同步校準(zhǔn)后,對(duì)待發(fā)送數(shù)據(jù)進(jìn)行卷積編碼,并轉(zhuǎn)換為串行數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)后,在串行數(shù)據(jù)幀頭加入Barker碼來(lái)實(shí)現(xiàn)幀的同步,并使用2條互為備份的數(shù)據(jù)傳送通道同時(shí)發(fā)送數(shù)據(jù)。在數(shù)據(jù)接收端檢測(cè)到barker碼后,本地對(duì)互為備份的雙通道數(shù)據(jù)進(jìn)行viterbi譯碼(本文設(shè)計(jì)的viterbi譯碼器采用并行結(jié)構(gòu),大大的降低譯碼時(shí)間)。譯碼結(jié)束后,本地對(duì)雙通道數(shù)據(jù)進(jìn)行循環(huán)冗余校驗(yàn),并做出判選,最后執(zhí)行相應(yīng)指令。并在規(guī)定時(shí)間給出相應(yīng)反饋信號(hào)。設(shè)計(jì)的無(wú)線采集系統(tǒng),即使某一數(shù)據(jù)通道出現(xiàn)少量錯(cuò)碼,系統(tǒng)仍能有效的恢復(fù)出數(shù)據(jù),并進(jìn)行可靠的數(shù)據(jù)傳輸。系統(tǒng)添加了監(jiān)控模塊,實(shí)時(shí)備份上傳的數(shù)據(jù)并監(jiān)控,如發(fā)現(xiàn)不能正常上傳,則啟用備用模塊保證整個(gè)系統(tǒng)正常工作。系統(tǒng)不僅能實(shí)現(xiàn)數(shù)據(jù)的高可靠和同步傳輸,而且具有很好的適用性,可廣泛應(yīng)用工業(yè)中。
2 無(wú)線分布式采集系統(tǒng)簡(jiǎn)介
2.1 系統(tǒng)硬件簡(jiǎn)介
無(wú)線分布式采集系統(tǒng)包括編碼器、譯碼器(編碼器、譯碼器硬件完全相同,只是配置邏輯不同,可配置為編碼器、譯碼器、中繼站)和無(wú)線通信電臺(tái)。如圖1所示,這是一個(gè)最簡(jiǎn)單的一對(duì)一式分布式系統(tǒng)。

圖1 無(wú)線分布式采集系統(tǒng)結(jié)構(gòu)
編碼器作為上位機(jī)與譯碼器之間的橋梁,通過(guò)USB/RS485通道進(jìn)行發(fā)送、接收命令和數(shù)據(jù)。譯碼器接收編碼器發(fā)來(lái)的命令進(jìn)行配置和采集,并將數(shù)據(jù)存儲(chǔ)至DDR2中。譯碼器收到上傳命令后,上傳數(shù)據(jù)至編碼器。
編碼器/譯碼器硬件系統(tǒng)框圖如圖2所示。本系統(tǒng)主控單元由FPGA完成。FPGA選用Altera公司的EP4CGX30F407,邏輯單元為29440個(gè),80個(gè)18×18乘法器,多達(dá)290個(gè)用戶自定義IO。STM32作為監(jiān)控和備用單元組成系統(tǒng)的基本架構(gòu),STM32F407ZG系列是基于高性能的ARM CortexTM-M4F的32位RISC內(nèi)核,工作頻率高達(dá)168 MHz,該STM32F407ZG系列采用高速嵌入式存儲(chǔ)器(多達(dá)1 MB閃存,高達(dá)192 KB的SRAM),擁有3個(gè)12位ADC,2個(gè)DAC,1個(gè)低功耗RTC,12個(gè)通用16位定時(shí)器,2個(gè)通用32位定時(shí)器。人機(jī)交互部分由16X2液晶顯示字符模塊和4個(gè)按鍵組成,其主要功能是通過(guò)按鍵對(duì)基站編號(hào)設(shè)置并顯示在LCD上。無(wú)線模塊選用WSN-03系列無(wú)線模塊作為收發(fā)平臺(tái),工作電壓為5 V,傳輸速率和工作頻段等都可配置。目前傳輸速率最大為115 200b ps,工作頻為433 MHz可調(diào)。無(wú)線模塊與FPGA主要以RXD/A,TXD/B,NRST(復(fù)位控制),SET(設(shè)置模塊參數(shù)),SLP(休眠控制)信號(hào)線連接。GPS模塊選用VKl6U6進(jìn)行定位,與FPGA以UART接口連接,波特率定位9600 bps。ADC選用基于△-Σ技術(shù)的32 bits高精度低功耗模數(shù)轉(zhuǎn)換芯片ADSl282,采樣信號(hào)電平范圍:差分輸人一2.5~+2.5 V。單個(gè)譯碼器有6個(gè)采集通道,以2 k采樣率,采樣時(shí)常16 S來(lái)計(jì)算,單個(gè)譯碼器純數(shù)據(jù)量為6×2 k×16×24-6144 Kbits.考慮到編碼器,一次采樣,8個(gè)基站的數(shù)據(jù)經(jīng)編碼后數(shù)據(jù)總量為98 304 Kbits,所以編碼器和譯碼器需增加l片Micron Technology公司的MT47H256M8HG-37E IT(256Meg×8)作為緩存空間。由于DDR2 SDRAM需要特定的控制讀寫時(shí)序,系統(tǒng)直接采用Quartus II自帶的“DDR2 SDRAM High-Performance Controller”IP CORE。USB部分由2個(gè)通道組成,一個(gè)是由FPGA、CY7C68013和USB接口組成;另一個(gè)由STM32(自帶USB驅(qū)動(dòng))和USB接口組成。同時(shí)本設(shè)計(jì)中還添加了RS485串口,使整個(gè)系統(tǒng)與上位機(jī)能保持實(shí)時(shí)通信,為系統(tǒng)的遠(yuǎn)程控制提供了可能,并能保持系統(tǒng)更新。

圖2 系統(tǒng)框架
2.2 系統(tǒng)數(shù)據(jù)流程
系統(tǒng)的數(shù)據(jù)流程為:同步校準(zhǔn)譯碼器,設(shè)置各個(gè)譯碼器接收命令后的延時(shí)-編碼器配置采集參數(shù)、命令-譯碼器采集數(shù)據(jù)保存至DDR2中一各譯碼器分時(shí)接收數(shù)據(jù)上傳命令并上傳數(shù)據(jù)-編碼器將數(shù)據(jù)匯總保存至DDR2-數(shù)據(jù)收集齊后通過(guò)USB/RS485上傳至上位機(jī)。譯碼器節(jié)點(diǎn)配合計(jì)算機(jī)對(duì)各個(gè)點(diǎn)的數(shù)據(jù)進(jìn)行輪詢采集,它包含了無(wú)線傳輸模塊和與計(jì)算機(jī)通信的USB接口。STM32將組幀后的數(shù)據(jù)備份并實(shí)時(shí)監(jiān)控FPGA,如在規(guī)定時(shí)間或未能按指令進(jìn)行工作,STM32將替代FPGA并使FPGA進(jìn)入斷電狀態(tài)。
2.3 系統(tǒng)組幀格式
編碼器與譯碼器之間是一對(duì)多的關(guān)系,譯碼器分時(shí)上傳數(shù)據(jù),譯碼器有2個(gè)通道,譯碼器有唯一的配置編號(hào)。數(shù)據(jù)幀的格式如圖3所示。數(shù)據(jù)幀中除20字節(jié)有效數(shù)據(jù)之外,還包括組號(hào)、目的編號(hào)等。

圖3 編碼器、譯碼器間數(shù)據(jù)幀格式
為了改進(jìn)接收信號(hào)質(zhì)量,本系統(tǒng)引入信道編碼的方法來(lái)改善信道質(zhì)量。具體如圖4所示。發(fā)送端對(duì)數(shù)據(jù)進(jìn)行組幀、并串轉(zhuǎn)換、卷積編碼、加入同步幀信息后,把數(shù)據(jù)發(fā)送至無(wú)線通信電臺(tái)進(jìn)行調(diào)制。接收端的無(wú)線通信電臺(tái)對(duì)信號(hào)進(jìn)行解調(diào)后發(fā)送數(shù)據(jù)至接收端的FPGA.接收端的FPGA檢測(cè)到幀同步信息后對(duì)接下來(lái)的數(shù)據(jù)保存,并進(jìn)行Viterbi譯碼。FPGA對(duì)雙通道的數(shù)據(jù)進(jìn)行冗余校驗(yàn),并選擇正確的數(shù)據(jù)執(zhí)行相關(guān)操作。

圖4 無(wú)線數(shù)據(jù)傳輸
3 無(wú)線分布式采集系統(tǒng)數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)
3.1 可靠性
待發(fā)數(shù)據(jù)經(jīng)卷積編碼,互為備份的雙通道發(fā)送,Viterbi譯碼,冗余校驗(yàn),數(shù)據(jù)判選,系統(tǒng)能夠很好的進(jìn)行無(wú)線收發(fā)。
3.1.1 卷積編碼
數(shù)據(jù)組幀完成后,由低位至高位進(jìn)行并串轉(zhuǎn)換,進(jìn)行卷積編碼。卷積編碼是一種糾錯(cuò)信道編碼,是由連續(xù)的輸入信息序列經(jīng)編碼后得到連續(xù)輸出的編碼序列口。以(n,k,m)來(lái)描述卷積碼,k為每次輸入到卷積編碼器的bit數(shù),行為每k元組碼字對(duì)應(yīng)的卷積碼輸出n元組碼字,m為編碼儲(chǔ)存度。卷積編碼生成的n元組元不僅與當(dāng)前輸入有關(guān)系,還與前面m一1個(gè)輸入的k元組有關(guān)系。本系統(tǒng)采用(2,1,4)卷積編碼器,如圖5所示。圖中“+”代表異或。每bit經(jīng)編碼后都有2 bit輸出(C1,C2)。

圖5 (2,1,4)卷積編碼器
3.1.2 Viterbi譯碼
接收端有2個(gè)接收通道,互不干擾。接收端對(duì)2個(gè)通道同時(shí)譯碼。譯碼采用Viterbi譯碼。Viterbi譯碼算法是一種卷積碼的解碼算法。Viterbi譯碼根據(jù)最大似然算法規(guī)則,能達(dá)到最佳譯碼,特別適合向前糾錯(cuò)。以本設(shè)計(jì)為例,根據(jù)圖5,編碼器4個(gè)延時(shí)狀態(tài)(0,1)組成整個(gè)編碼器的16個(gè)狀態(tài)(D4D3D2D1),每個(gè)狀態(tài)在編碼器輸入1或0時(shí),跳轉(zhuǎn)到另一個(gè)狀態(tài)。并且輸出也隨之改變。譯碼就是編碼的逆過(guò)程。算法規(guī)定任意t時(shí)刻收到的數(shù)據(jù)都要進(jìn)行32次路徑值計(jì)算、16次比較,比較后每個(gè)狀態(tài)只保存一個(gè)路徑值,為接下來(lái)計(jì)算減少了一半的運(yùn)算量。反復(fù)208次,從16條幸存路徑中選出一條路徑值最小的,反推出這條路徑,得出相應(yīng)的譯碼輸出??紤]到每次譯碼后,譯碼器都能回到初始狀態(tài),所以源數(shù)據(jù)最后加了8 bit的“0”。本設(shè)計(jì)采用并行處理結(jié)構(gòu),經(jīng)214個(gè)周期還原出源碼。
在設(shè)計(jì)FPGA邏輯時(shí),基本采用多條并行的流水線技術(shù),譯碼部分包含4個(gè)子模塊:加比選模塊、回溯模塊、存儲(chǔ)模塊和時(shí)鐘控制模塊。路徑值的計(jì)算和比較在3個(gè)時(shí)鐘周期內(nèi)完成,4個(gè)模塊同時(shí)運(yùn)行,大大的降低了譯碼時(shí)間。另外,為了提高FPGA效率,系統(tǒng)加入采樣觸發(fā)信號(hào),保證系邏輯能夠穩(wěn)定運(yùn)行。
3.1.3 數(shù)據(jù)判選
經(jīng)譯碼后,接收端已接收到2組互為備份的數(shù)據(jù)。經(jīng)實(shí)踐證明,簡(jiǎn)單的并聯(lián)冗余能大大的提高系統(tǒng)的可靠性。具體選擇流程如圖6所示。2路數(shù)據(jù)經(jīng)Viterbi譯碼后,開(kāi)始接收一幀數(shù)據(jù),并寫入RAM中,同時(shí)計(jì)算CRC校驗(yàn)、幀完整性檢測(cè)、ID是否符合本地。上述檢測(cè)都沒(méi)問(wèn)題時(shí),對(duì)2路幸存路徑的度量值進(jìn)行比較,選擇值小的通道作為最終數(shù)據(jù)。

圖6 數(shù)據(jù)的選擇
3.2 同步的實(shí)現(xiàn)
為了保證編碼器和譯碼器之間能嚴(yán)格實(shí)現(xiàn)同步,數(shù)據(jù)幀需要加入同步幀。實(shí)現(xiàn)幀同步的方法通常有2種:起止同步法和集中式插入同步法。起止式同步比較簡(jiǎn)單,一般在數(shù)據(jù)碼元的開(kāi)始和結(jié)束位置加入特定的起始和停止脈沖來(lái)表示數(shù)據(jù)幀的開(kāi)始和結(jié)束。集中插入式同步法中插人的同步碼要求在接收端進(jìn)行同步識(shí)別時(shí)出現(xiàn)偽同步的概率盡可能低,并且要求該碼具有尖銳的自相關(guān)特性以便識(shí)別。7位巴克碼作為幀同步碼,其局部自相關(guān)函數(shù)為:

由上公式計(jì)算可知,7位巴克碼的自相關(guān)函數(shù)在j一0時(shí)出現(xiàn)尖銳的單峰特性。設(shè)計(jì)中采用2組同步幀頭作為同步碼,同步幀頭由7位巴克碼和1 bit的0組成。
到現(xiàn)在為止,待發(fā)數(shù)據(jù)bit數(shù)為:208×2+8×2-432 bits。經(jīng)調(diào)制解調(diào)后,接收端檢測(cè)幀同步信息,同步信息為2組11100100組成。每組同步信息高7位與7位巴克碼相比,允許出錯(cuò)位數(shù)在1位以內(nèi)。設(shè)P為碼元錯(cuò)誤概率,行為同步碼組的碼元數(shù),m為判決其允許碼組中的錯(cuò)誤碼元最大數(shù),在本系統(tǒng)中行n=7,m=1。在P=0.01時(shí),單一barker碼的漏同步概率為:

當(dāng)2組同步幀都滿足時(shí),幀同步建立,接收端保 存接下來(lái)的數(shù)據(jù)。無(wú)線通信電臺(tái)與FPGA以rs485連接,如圖7所示,F(xiàn)PGA檢測(cè)X是否為“0”,當(dāng)檢測(cè)到“0”,不接收端對(duì)接下來(lái)的數(shù)據(jù)X與本地巴克碼對(duì)應(yīng)位進(jìn)行位異或運(yùn)算。當(dāng)檢測(cè)1 byte barker碼,錯(cuò)1位以內(nèi)時(shí),發(fā)出一value脈沖。當(dāng)檢測(cè)到2個(gè)value脈沖時(shí),說(shuō)明同步已建立,接收端開(kāi)始存儲(chǔ)接下來(lái)的數(shù)據(jù)。

圖7 barler碼識(shí)別
4 系統(tǒng)監(jiān)控模塊的實(shí)現(xiàn)
STM32與FPGA連接如圖8所示,由于ARM與FPGA的相互通信直接影響著控制器的性能,所以該并行總線的設(shè)計(jì)就成為一個(gè)非常關(guān)鍵的問(wèn)題。該總線可以包括芯片的地址總線(ADDR[021])、數(shù)據(jù)總線(DB[015])、控制總線、復(fù)位信號(hào)(nRST)以及中斷信號(hào)線(INT),其中控制總線包括使能信號(hào)(nOE)、片選信號(hào)(nCS)、讀信號(hào)(nRD)、寫信號(hào)(nWE),這樣做的好處是,將FPGA芯片存儲(chǔ)器化,即STM32可通過(guò)對(duì)特定地址的訪問(wèn)來(lái)控制FPGA工作,并且可通過(guò)共同的復(fù)位信號(hào)將STM32與FPGA芯片同時(shí)復(fù)位,盡量避免總線競(jìng)爭(zhēng)和冒險(xiǎn)現(xiàn)象的出現(xiàn)。

圖8 STM32與FPGA連接
STM32與FPGA同時(shí)接收命令,在解析完命令后,F(xiàn)PGA應(yīng)在規(guī)定的時(shí)間內(nèi)發(fā)送數(shù)據(jù),F(xiàn)H認(rèn)組幀完成時(shí),發(fā)出INT信號(hào)至黜2申請(qǐng)中斷。如果STM32在規(guī)定時(shí)間內(nèi)沒(méi)有接收到FPGA發(fā)來(lái)的INT信號(hào),將開(kāi)始計(jì)時(shí),計(jì)時(shí)時(shí)間內(nèi)未能接收INT信號(hào),STM32將停止FPGA供電電源工作,由STM32代替FPGA工作,保證整個(gè)系統(tǒng)能穩(wěn)定進(jìn)行。
無(wú)線分布式采集系統(tǒng)?是一種通過(guò)無(wú)線通信技術(shù)實(shí)現(xiàn)數(shù)據(jù)采集的系統(tǒng),主要用于地形復(fù)雜或不適合人類出現(xiàn)的區(qū)域。該系統(tǒng)通常由多個(gè)采集節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)負(fù)責(zé)采集特定區(qū)域的數(shù)據(jù),并通過(guò)無(wú)線方式將這些數(shù)據(jù)傳輸?shù)街醒胩幚韱卧?
無(wú)線分布式采集系統(tǒng)的特點(diǎn)
?靈活性?:由于采用無(wú)線通信,系統(tǒng)部署更加靈活,不受物理布線的限制。
?可靠性?:系統(tǒng)設(shè)計(jì)通常包括數(shù)據(jù)冗余和錯(cuò)誤檢測(cè)機(jī)制,確保數(shù)據(jù)的可靠傳輸。
?擴(kuò)展性?:可以輕松添加或移除節(jié)點(diǎn),適應(yīng)不同場(chǎng)景的需求變化。
?低功耗?:部分系統(tǒng)設(shè)計(jì)采用低功耗硬件和優(yōu)化算法,確保長(zhǎng)時(shí)間運(yùn)行。
無(wú)線分布式采集系統(tǒng)的應(yīng)用場(chǎng)景
無(wú)線分布式采集系統(tǒng)廣泛應(yīng)用于各種需要遠(yuǎn)程監(jiān)測(cè)和數(shù)據(jù)采集的場(chǎng)景,如:
?環(huán)境監(jiān)測(cè)?:監(jiān)測(cè)空氣質(zhì)量、水質(zhì)、溫度、濕度等環(huán)境參數(shù)。
?工業(yè)監(jiān)控?:監(jiān)測(cè)生產(chǎn)線狀態(tài)、設(shè)備運(yùn)行參數(shù)等。
?農(nóng)業(yè)監(jiān)測(cè)?:監(jiān)測(cè)土壤濕度、光照強(qiáng)度、溫度等農(nóng)業(yè)相關(guān)參數(shù)。
?災(zāi)害預(yù)警?:監(jiān)測(cè)地震、洪水等自然災(zāi)害的前兆數(shù)據(jù)。
無(wú)線分布式采集系統(tǒng)的技術(shù)細(xì)節(jié)
?硬件組成?:通常包括編碼器、譯碼器、無(wú)線通信電臺(tái)等組件。編碼器負(fù)責(zé)數(shù)據(jù)收集和發(fā)送,譯碼器負(fù)責(zé)數(shù)據(jù)接收和處理。
?通信技術(shù)?:常用的通信技術(shù)包括ZigBee、LoRa、NB-IoT等,這些技術(shù)提供了不同的覆蓋范圍和傳輸速率。
?數(shù)據(jù)處理?:系統(tǒng)通常采用數(shù)據(jù)壓縮、錯(cuò)誤檢測(cè)和糾正等技術(shù),確保數(shù)據(jù)的完整性和可靠性。