摘 要: 介紹海水有機磷農(nóng)藥現(xiàn)場實時數(shù)據(jù)采集系統(tǒng)的設(shè)計,。具體討論了由PIC單片機構(gòu)成的子系統(tǒng)和基于網(wǎng)絡(luò)單片機Sx52BD實現(xiàn)的數(shù)據(jù)傳輸模塊,,并對LabWindows/CVI編寫的數(shù)據(jù)處理軟件進行了說明,。
關(guān)鍵詞: FIFO 實時數(shù)據(jù)采集 TCP/IP協(xié)議
海洋生態(tài)環(huán)境越來越受到人們的重視。如何快速有效,、實時,、定量地對海水中有機磷農(nóng)藥的濃度進行現(xiàn)場監(jiān)測,是海洋生態(tài)環(huán)境現(xiàn)場快速監(jiān)測系統(tǒng)要解決的問題之一,。為此,,研制了用于海水有機磷農(nóng)藥現(xiàn)場監(jiān)測的生物傳感器。該傳感器通過含有農(nóng)藥的海水和不含農(nóng)藥海水對生物酶的抑制作用的不同,,用標(biāo)準(zhǔn)加入法[1][2]檢測海水中有機磷農(nóng)藥的濃度,。為實現(xiàn)對整個測試裝置的自動控制和實時、快速地讀取測量數(shù)據(jù),,設(shè)計,、開發(fā)了基于PIC單片機和嵌入式TCP/IP技術(shù)的快速、實時數(shù)據(jù)采集系統(tǒng),。
1 有機磷濃度的測量原理[2]
對有機磷濃度的測量采用生物傳感器,。利用含不同濃度農(nóng)藥的海水對生物酶抑制作用不同,通過電極把抑制轉(zhuǎn)換成電信號,,不同的濃度得到不同的峰值,,通過峰值得到抑制率。抑制率的計算公式為:
其中,,f1為在標(biāo)準(zhǔn)海水中測得的峰值,,f2為加入農(nóng)藥之后測得的峰值。
系統(tǒng)中設(shè)置四個測試通道,,第一通道是純凈的海水,,是參照通道;第二通道是要測試的海水,;第三通道為加入已知濃度農(nóng)藥的海水,;第四通道為加入另外一個已知濃度的海水(和第三通道不同)。根據(jù)有機磷農(nóng)藥濃度的對數(shù)與相應(yīng)的酶活抑制率(即峰值下降百分率)在一定范圍內(nèi)呈線性的關(guān)系,,可以采用加標(biāo)法原理推算得到海水樣品有機磷農(nóng)藥的濃度,。原理如圖1所示。由圖1得到計算有機磷濃度的公式:
其中,,c1,、c2為三、四通道加入標(biāo)準(zhǔn)農(nóng)藥的濃度,,cx為要測試海水中農(nóng)藥的濃度,,η0、η1,、η2為二,、三,、四通道的抑制率。通過公式(2)可以求出在第二通道待測海水中農(nóng)藥的濃度,。
2 系統(tǒng)硬件原理
由測試原理可知,,需要同時采集四通道的信號,每通道求取二次基線和峰值,,整個測試過程需要50分鐘,。為確保精度,每隔1ms采集一次四個通道的數(shù)據(jù),,要求系統(tǒng)能快速采集并完成數(shù)據(jù)傳輸,。為實現(xiàn)快速采集,設(shè)計了由精簡指令集單片機PIC1673[3]和快速A/D轉(zhuǎn)換器組成的單片機數(shù)據(jù)采集控制模塊為實現(xiàn)大容量,、快速的數(shù)據(jù)傳輸,,系統(tǒng)設(shè)計了基于嵌入式TCP/IP技術(shù)的網(wǎng)絡(luò)傳輸模塊。鑒于PC機在數(shù)據(jù)處理上的優(yōu)勢,,由上位機數(shù)據(jù)處理模塊對數(shù)據(jù)進行處理,。單片機數(shù)據(jù)采集控制模塊和網(wǎng)絡(luò)傳輸模塊之間通過FIFO高速緩沖存儲器進行通信。系統(tǒng)框圖如圖2所示,。
2.1 系統(tǒng)工作流程
由上位機發(fā)出啟動命令和用于控制反應(yīng)裝置工作的各電磁閥動作的時間參數(shù)給網(wǎng)絡(luò)傳輸模塊,;網(wǎng)絡(luò)傳輸模塊把命令存入FIFO高速緩沖存儲器;采集模塊從FIFO高速緩沖存儲器中讀到命令,,按照上位機傳來的時間參數(shù),,控制整個反應(yīng)裝置自動工作,同時把采集到的數(shù)據(jù)放入FIFO高速緩沖存儲器,。網(wǎng)絡(luò)接口模塊采用TCP/IP協(xié)議對FIFO中的數(shù)據(jù)打包,,傳給上位機。上位機對接到的數(shù)據(jù)進行處理,,得到最后的濃度,。
2.2 單片機數(shù)據(jù)采集模塊
采集模塊的原理框圖如圖3所示。
選擇多通道串行十二位A/D轉(zhuǎn)換器TCL2543進行A/D轉(zhuǎn)換,。TCL2543的轉(zhuǎn)換速度為10?滋s一次,以滿足系統(tǒng)對采樣頻率的要求,。同時由于是串行的A/D,,所以占用系統(tǒng)的I/O線較少。TCL2543的基準(zhǔn)電壓接入2.5V,,因此要求輸入模擬信號的電壓范圍為0~2.5V,。系統(tǒng)生物傳感器來的阻抗大約為1012Ω,范圍是-0.2V~+0.2V的電信號,所以信號在進入A/D轉(zhuǎn)換器之前,,通過預(yù)處理電路進行了阻抗和電壓變換,。
CPU選擇PIC16C73B單片機,,它是Microchip公司生產(chǎn)的一款基于EPROM 的8 位高性能微控制器。芯片上集成了一個8位算術(shù)邏輯單元和工作寄存器,,4KB程序存儲器,,192個數(shù)據(jù)寄存器,三個端口共22根I/O線,,三個定時/計數(shù)器及二個串行口等,。它具有精簡指令集(RISC)和哈佛結(jié)構(gòu),同時可運用二級流水線指令進行取數(shù)和執(zhí)行,,指令大部分可在單周期執(zhí)行,。該機可靠性好,速度比同類單片機快幾倍[3],。系統(tǒng)連接時,,RA0~RA3與TLC2543進行通信;RB0~RB7接FIFO的數(shù)據(jù)端口,;RC4~RC7作為雙向FIFO的控制線,。
上位機發(fā)來的命令由網(wǎng)絡(luò)傳輸模塊存入命令FIFO。為使PIC1673B單片機能隨時判斷FIFO命令緩沖存儲器中是否有命令,,把FIFO命令緩沖存儲器的不空狀態(tài)線接到單片機PIC1673的外部中斷引腳,,一旦有中斷來,則馬上讀命令進行處理,。采集來的數(shù)據(jù)寫入數(shù)據(jù)FIFO緩沖存儲器中,,等待網(wǎng)絡(luò)傳輸模塊的讀取。
2.3 網(wǎng)絡(luò)傳輸模塊
網(wǎng)絡(luò)傳輸模塊原理框圖如圖4所示,。CPU采用網(wǎng)絡(luò)單片機Sx52BD芯片,。Sx52BD是UBICOM公司的8位MCU,速度可達(dá)100 MHz,,工作在50 MHz時執(zhí)行指令速度可達(dá)到50MIPS,。它主要完成數(shù)據(jù)協(xié)議在網(wǎng)絡(luò)層和傳輸層的解包打包。當(dāng)有數(shù)據(jù)從RJ45傳輸過來時,,單片機對數(shù)據(jù)報進行分析,,并將得到的數(shù)據(jù)存入FIFO高速命令緩沖存儲器;反之,,當(dāng)數(shù)據(jù)緩沖器不為空時,,單片機對數(shù)據(jù)以TCP/IP協(xié)議打包,通過網(wǎng)絡(luò)傳輸?shù)缴衔粰C,。
以太網(wǎng)接口芯片CS8900主要完成數(shù)據(jù)鏈路層的協(xié)議,。CS8900A是Cirrus Logic公司生產(chǎn)的低功耗、高性能的16位可編程以太網(wǎng)控制器[4],。它內(nèi)部集成了在片RAM,、10BASE-T收發(fā)濾波器,,提供8位和16位二種接口,支持I/O,、Memory,、DMA三種傳輸模式。本系統(tǒng)選擇比較簡單易用的I/O模式,,通過8位數(shù)據(jù)總線對其進行配置和數(shù)據(jù)的讀寫,。
在發(fā)送過程中,如果在一定的時間內(nèi)接不到上位機接收數(shù)據(jù)的確認(rèn),,則需要重發(fā),。如果要將數(shù)據(jù)從FIFO高速數(shù)據(jù)緩沖存儲器中再次讀出,則需要再次打包,。為節(jié)約時間,,在系統(tǒng)中擴展2KBSRAM,把當(dāng)前發(fā)送的數(shù)據(jù)報備份,,如果需要重發(fā),,直接從SRAM中取出。
2.4 網(wǎng)絡(luò)傳輸模塊和數(shù)據(jù)采集模塊之間的數(shù)據(jù)傳輸
PIC1673B單片機和SX52BD單片機I/O線都為三態(tài)線,,理論上可以直接相連,,通過I/O線傳送數(shù)據(jù)。但正因為是三態(tài)線,,每次傳輸數(shù)據(jù)時首先要對端口初始化設(shè)置數(shù)據(jù)的傳輸方向,,同時一方在發(fā)送時,要保證另一方處于接收狀態(tài),,即雙方要同步,。而且一次只能傳輸一個數(shù)據(jù),速度慢,。因此,,網(wǎng)絡(luò)傳輸模塊和數(shù)據(jù)采集模塊之間的數(shù)據(jù)傳輸采用共享存儲器的方式。用二個FIFO高速緩沖存儲器作為共享存儲器實現(xiàn)數(shù)據(jù)采集模塊和傳輸模塊之間的數(shù)據(jù)傳送,。不需要Sx52BD單片機即可直接和PIC1673單片機通信,,從而節(jié)省了單片機的開銷,提高了速度,。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件主要包括:采集模塊的數(shù)據(jù)采集程序,,網(wǎng)絡(luò)傳輸模塊的通信程序,上位機的數(shù)據(jù)處理程序,。
3.1 采集模塊程序
采集模塊主要在命令FIFO存儲器不為空時,,讀取啟動命令,,控制反應(yīng)裝置自動工作,,同時采集數(shù)據(jù),。程序流程如圖5所示。
03h命令是發(fā)送測試反應(yīng)裝置各電磁閥動作時間參數(shù)的命令,。單片機從命令FIFO存儲器讀到此命令后,,把緊跟其后的13個數(shù)據(jù)作為裝置中13個電磁閥何時動作的參數(shù)賦值給相應(yīng)的內(nèi)部寄存器,以此做為電磁閥開關(guān)的定時時間,。02h命令是啟動采集系統(tǒng)工作的命令,。單片機讀到此命令后,控制裝置開始工作,,同時啟動A/D轉(zhuǎn)換,,開始數(shù)據(jù)采集。
A/D轉(zhuǎn)換器TCL2543轉(zhuǎn)換的通道號和讀出數(shù)據(jù)的長度以及導(dǎo)前位由I/O周期的前8位設(shè)置[5],,選擇輸出的數(shù)據(jù)長度為12位,。注意在每次I/O周期讀取的數(shù)據(jù)都是上次轉(zhuǎn)換的結(jié)果,當(dāng)前的轉(zhuǎn)換結(jié)果在下一個I/O周期中被串行移出,。第一次讀數(shù)時由于內(nèi)部的調(diào)整,,讀取的結(jié)果可能不正確,應(yīng)丟棄,。為使讀取的數(shù)據(jù)更準(zhǔn)確,,消除干擾的影響,程序中對讀取的數(shù)據(jù)進行了均值濾波,。讀入的A/D轉(zhuǎn)換的數(shù)據(jù)是單極性的,,但輸入電壓范圍是-0.2V~+0.2V, 因此,在程序中需做數(shù)據(jù)的處理和定標(biāo),,把單極性的電壓值變成雙極性的電壓值,。
3.2 網(wǎng)絡(luò)傳輸模塊采用的TCP/IP協(xié)議
網(wǎng)絡(luò)傳輸模塊采用簡化了的TCP/IP協(xié)議,主要有以下幾種:
(1)ARP:地址解析協(xié)議,,ARP為IP地址到對應(yīng)的硬件地址之間提供動態(tài)映射,。歸根結(jié)底,網(wǎng)內(nèi)設(shè)備是靠其端口地址,,即MAC地址來區(qū)分的,,這個過程是自動完成的。因此系統(tǒng)要隨時響應(yīng)主機發(fā)出的ARP請求,,才能實現(xiàn)主機對它的訪問[6],。
(2)ICMP:Internet控制報文協(xié)議,ICMP經(jīng)常被認(rèn)為是IP層的一個組成部分,。它傳遞差錯報文以及其他需要注意的信息,。ICMP實現(xiàn)了主機對本系統(tǒng)的連接故障檢測。
(3)UDP:傳輸層協(xié)議。其作用是為不同的應(yīng)用進程提供端口號,。對于服務(wù)器而言,,不同的端口對應(yīng)不同的服務(wù)。它主要用于實時數(shù)據(jù)流的傳輸,。
(4)IP協(xié)議:負(fù)責(zé)整個通信子網(wǎng)數(shù)據(jù)包的傳輸,。它只提供對數(shù)據(jù)包的盡力傳輸服務(wù),如有連接,、可靠傳輸?shù)绕渌?wù),,則要在更高層去實現(xiàn)。
系統(tǒng)實現(xiàn)的協(xié)議間的承載關(guān)系為:IP/UDP,,IP/ICMP,,ARP直接在鏈路層之上。
3.3 網(wǎng)絡(luò)傳輸模塊通信程序
網(wǎng)絡(luò)傳輸模塊收發(fā)數(shù)據(jù)流程如圖6所示,。
程序在初始化網(wǎng)卡時把CS8900的RXCFG寄存器設(shè)置為0103H,。當(dāng)接收到一個正確的數(shù)據(jù)報后,CS8900產(chǎn)生一個接收中斷,。初始化后,,主機方先要與本模塊建立握手連接。然后,,如果CS8900有中斷產(chǎn)生,,則接收上位機的數(shù)據(jù)報,把數(shù)據(jù)報讀入內(nèi)部的RAM,,根據(jù)數(shù)據(jù)報不同的類型做相應(yīng)的處理,。CS8900無中斷,說明無接收數(shù)據(jù),,則檢測數(shù)據(jù)緩存FIFO是否為空,。若不為空則讀出數(shù)據(jù),按照UDP協(xié)議進行打包后,,送入CS8900發(fā)送,。同時把打包后的數(shù)據(jù)暫存到外部SRAM中,啟動定時器,。若在一定的時間內(nèi)沒有從主機方收到確認(rèn),,則重發(fā)該幀。
對接收到的數(shù)據(jù)幀,,如果收到ARP請求,,則立刻發(fā)送ARP響應(yīng),以便主機得到本系統(tǒng)的MAC地址,;若收到ICMP,,則置其TTL值為128,,再將原數(shù)據(jù)發(fā)出。系統(tǒng)收到UDP數(shù)據(jù)幀時,,要判斷是上位機發(fā)來的命令還是接收數(shù)據(jù)確認(rèn)的回應(yīng),。如果是命令,則解碼后存入FIFO命令緩沖存儲器,;如果是接收數(shù)據(jù)的確認(rèn)回應(yīng),則清除SRAM中對應(yīng)的數(shù)據(jù)報,。
3.4 上位機數(shù)據(jù)處理程序
上位機數(shù)據(jù)處理軟件采用LabWindows/CVI編寫,。LabWindows/CVI是美國NI公司開發(fā)的32位面向計算機測控領(lǐng)域的軟件開發(fā)平臺。它將C語言平臺與數(shù)據(jù)采集,、分析和表達(dá)等測控專業(yè)工具有機地結(jié)合起來,,提供強大的函數(shù)庫以便于對采集的數(shù)據(jù)進行分析處理[7]。在本系統(tǒng)中,,用LabWindows/CVI編寫了簡單易用的虛擬儀器面板,,可以通過此面板對采集的參數(shù)進行設(shè)置,將工作時間參數(shù)和系統(tǒng)啟動信號打包發(fā)送給網(wǎng)絡(luò)傳輸模塊,以實現(xiàn)對數(shù)據(jù)采集全過程的控制,;對上傳數(shù)據(jù)進行解碼,;對解碼后的采集數(shù)據(jù)進行處理,形成四通道的時間-電壓曲線,,求出最終的濃度,。
4 結(jié)束語
本采集系統(tǒng)用在海水有機磷農(nóng)藥的現(xiàn)場實時監(jiān)測上,對馬拉硫磷的檢測限為0.5μg/L,,測定值與理論值之間的誤差在10%以內(nèi),。用Labwindows編寫的數(shù)據(jù)處理程序具有易于操作的界面,直觀的圖形顯示形式,,能自動計算基線和峰值以及最終的濃度,。同時,本系統(tǒng)還可以用在其他要求多通道快速實時數(shù)據(jù)采集的場合,,只要根據(jù)不同的要求相應(yīng)改變系統(tǒng)軟件即可,。
參考文獻(xiàn)
1 孟范平,唐學(xué)璽,,李永祺.有機磷農(nóng)藥海洋生物傳感器監(jiān)測技術(shù).海洋高新技術(shù)產(chǎn)業(yè)化高級論壇論文集,,中國工程院,2000
2 何東海.利用乙酰膽堿酯酶生物傳感器監(jiān)測海水有機磷農(nóng)藥.中國海洋大學(xué)碩士學(xué)位論文,,2004,,6
3 竇振中.PIC系列單片機原理和程序設(shè)計.北京:北京航空航天大學(xué)出版社,1998
4 陳學(xué)全,,關(guān)宇東.嵌入式TCP/IP協(xié)議單片機技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用.電子技術(shù)應(yīng)用,,2002,;(8)
5 潘志東,劉增華.串行A/D轉(zhuǎn)換器TLC2543原理及應(yīng)用.電測與儀表,,2001,;(3)
6 科默.TCP/IP網(wǎng)絡(luò)互連技術(shù).北京:清華大學(xué)出版社,1995
7 王承,,何志偉,,許東芹.虛擬儀器-現(xiàn)代儀器發(fā)展的新階段. 測控技術(shù),2001,;20(10)