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