周永明,黃 偉,葉朝輝
(1.清華大學(xué)自動(dòng)化系,北京 100084;2.北京睿清智華信息技術(shù)有限公司,北京 100084)
在多路測(cè)控系統(tǒng)中,多采用單片機(jī)或ARM級(jí)聯(lián)的方式,如文獻(xiàn)[1]所述基于RS485總線的多路溫度測(cè)量系統(tǒng)和文獻(xiàn)[2]所述基于串口通信的分布式大壩自動(dòng)測(cè)控系統(tǒng),在這些系統(tǒng)中,受單片機(jī)資源的限制,需要多片單片機(jī)級(jí)聯(lián)才可完成任務(wù),這樣增大了系統(tǒng)的體積和復(fù)雜性,降低了系統(tǒng)的集成度和可靠性。圖1為文獻(xiàn)[2]所述大壩測(cè)控系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖。
圖1 某分布式大壩自動(dòng)測(cè)控系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
某些多路測(cè)控系統(tǒng)則使用了DSP或FPGA作為控制核心[3-4],由于DSP和FPGA成本相對(duì)較高,這些系統(tǒng)多采用單核,因此需外接多選一數(shù)據(jù)選擇器或多路A/D轉(zhuǎn)換器來(lái)實(shí)現(xiàn)多路測(cè)量,如文獻(xiàn)[3]所述基于FPGA的多路采集系統(tǒng),系統(tǒng)框圖如圖2所示,該系統(tǒng)雖然充分利用了FPGA I/O口多、可編程的優(yōu)勢(shì),用單核完成多路測(cè)量,但由于FPGA不能處理模擬信號(hào),因此需外接多路選擇器和模數(shù)轉(zhuǎn)換器來(lái)實(shí)現(xiàn)功能,且HDL相對(duì)C語(yǔ)言開(kāi)發(fā)難度稍大,開(kāi)發(fā)周期長(zhǎng)。
圖2 基于FPGA的多路信號(hào)采集系統(tǒng)
近年來(lái),將微控制器、存儲(chǔ)器、模擬和數(shù)字外設(shè)集成在單一芯片上的片上系統(tǒng)得到了越來(lái)越多的應(yīng)用,PSoC(可編程片上系統(tǒng))單芯片集成微控制器、存儲(chǔ)器、模擬和數(shù)字外設(shè),最新的PSoC5可處理數(shù)10個(gè)采集通道。具有可配置的邏輯陣列、至所有I/O引腳的靈活路由以及一個(gè)高性能的32位ARM Cortex-M3內(nèi)核[5]。因此可以簡(jiǎn)化系統(tǒng)設(shè)計(jì),通過(guò)將系統(tǒng)資源配置為需要的模塊,提高芯片資源利用率,使單芯片完成多路數(shù)字、模擬信號(hào)的采集。
文中介紹用于大壩監(jiān)測(cè)的基于PSoC的多路測(cè)量系統(tǒng),單PSoC芯片可同時(shí)處理30路溫度和16路流量脈沖信號(hào),采集數(shù)據(jù)可通過(guò)以太網(wǎng)實(shí)時(shí)上傳到上位機(jī),每30 s實(shí)時(shí)采樣1次。要處理30路溫度和16路脈沖流量信號(hào),需46個(gè)I/O口和16個(gè)計(jì)數(shù)器,表1顯示了需要的不同類型的處理器芯片數(shù)量,包括Atmel的AT89S52、TI的ARM cortex M4系列LM4F232H5QD、TI的C2000系列DSP TMS320F2812以及文中介紹的PSoC,不難看出,要完成所述測(cè)量功能,需要的PSoC芯片數(shù)量是最少的。
表1 不同類型的處理器需求對(duì)比
基于PSoC的遠(yuǎn)程多路測(cè)量系統(tǒng)由以太網(wǎng)通信板、傳感器采集板和傳感器3部分組成,總體設(shè)計(jì)框圖如圖3所示。
圖3 總體設(shè)計(jì)框圖
傳感器采集板負(fù)責(zé)所有傳感器的數(shù)據(jù)采集,每個(gè)采集板連接30路DS18B20數(shù)字溫度傳感器和16路脈沖式流量傳感器。它通過(guò)導(dǎo)線與傳感器直接相連,周期性地采集溫度和流量數(shù)據(jù),收到上傳命令后,將采集的數(shù)據(jù)通過(guò)I2C總線上傳給以太網(wǎng)通信板。
以太網(wǎng)通信板負(fù)責(zé)系統(tǒng)的過(guò)程控制、數(shù)據(jù)的存儲(chǔ)和上傳,它控制采集板進(jìn)行數(shù)據(jù)采集和上傳,并在內(nèi)部E2PROM中存儲(chǔ)部分采集數(shù)據(jù),同時(shí)可以根據(jù)上位機(jī)的指令,通過(guò)以太網(wǎng)使用TCP協(xié)議將采集的溫度和流量數(shù)據(jù)實(shí)時(shí)上傳。
如果一個(gè)采集板不能完成所有的測(cè)量,那么可在I2C總線上掛接更多的采集板,即可以根據(jù)傳感器的多少靈活確定傳感器采集板的數(shù)量。PSoC5具有易于配置的數(shù)字、模擬模塊,每個(gè)模塊的接口可靈活地路由到任意I/O口,使得系統(tǒng)具有很好的靈活性和可擴(kuò)展性。與圖1中所示大壩監(jiān)測(cè)系統(tǒng)相比,該系統(tǒng)不需要PC工控機(jī),數(shù)據(jù)傳輸通過(guò)以太網(wǎng)通信板實(shí)現(xiàn),而且需要的采集板的數(shù)量減少,這些都降低了系統(tǒng)的復(fù)雜性。
由于PSoC5芯片內(nèi)部集成了數(shù)據(jù)采集需要的各種數(shù)字、模擬模塊和通信接口,使得傳感器采集板和以太網(wǎng)通信板需要的外圍芯片大為減少,硬件電路大為簡(jiǎn)化。
傳感器采集板由PSoC5芯片與基本的電平轉(zhuǎn)換芯片、晶振和JTAG接口組成。PSoC5芯片選用CY8C5588AXI-060,速度可達(dá)80 MHz,存儲(chǔ)器包含F(xiàn)lash、SRAM和E2PROM,模擬部分包含ADC、DAC、比較器、運(yùn)放,數(shù)字部分包含定時(shí)器/PWM模塊、全速USB、CAN控制器等。此外,模擬部分還有可編程的開(kāi)關(guān)電容/連續(xù)時(shí)間模塊,可配置為可編程增益放大器、互阻放大器等;數(shù)字部分包含可配置的通用數(shù)字模塊,能夠針對(duì)應(yīng)用或設(shè)計(jì)創(chuàng)建所有常用嵌入式外設(shè)和定制功能。
以太網(wǎng)通信板除PSoC5、電平轉(zhuǎn)換芯片、晶振和JTAG接口外,還包含ENC28J60以太網(wǎng)控制芯片和HR911105A帶網(wǎng)絡(luò)變壓器的RJ45以太網(wǎng)口。 ENC28J0是帶有標(biāo)準(zhǔn)SPI接口的獨(dú)立以太網(wǎng)控制器[6],僅有28個(gè)引腳,是全球目前最小封裝的以太網(wǎng)控制器,非常適合在微控制器上使用,ENC28J60連接示意圖如圖4所示。
圖4 ENC28J60連接示意圖
系統(tǒng)的硬件設(shè)計(jì)框圖如圖5所示。
圖5 硬件設(shè)計(jì)框圖
以太網(wǎng)通信板上,PSoC5內(nèi)部使用的模塊包括與ENC28J60通信的SPI模塊、與采集板通信的I2C模塊、同步采集板的PWM模塊、存儲(chǔ)數(shù)據(jù)的E2PROM,如圖6所示。
圖6 以太網(wǎng)通信板模塊圖
傳感器采集板上,PSoC5芯片內(nèi)部使用的模塊有外接30路溫度和16路流量傳感器的46個(gè)I/O口,一個(gè)I2C模塊用于上傳數(shù)據(jù),8個(gè)二選一多路選擇器模塊和8個(gè)16位計(jì)數(shù)器對(duì)脈沖流量傳感器進(jìn)行計(jì)數(shù)。一個(gè)二選一多路選擇器模塊結(jié)合一個(gè)計(jì)數(shù)器模塊,就可以對(duì)兩路流量脈沖分時(shí)計(jì)數(shù),流量測(cè)量部分的模塊圖如圖7所示。
圖6和圖7為在PSoC Creator中配置PSoC內(nèi)部模塊,PSoC Creator引入了獨(dú)特的基于電路圖的設(shè)計(jì)方式,將最新的軟件開(kāi)發(fā)IDE與圖形設(shè)計(jì)編輯器結(jié)合,形成強(qiáng)大的軟硬件協(xié)調(diào)設(shè)計(jì)集成開(kāi)發(fā)環(huán)境,為PSoC的可編程、可配置提供了強(qiáng)有力的支撐。如果系統(tǒng)中使用的傳感器種類發(fā)生變化,無(wú)需改變硬件,只需在PSoC Creator中簡(jiǎn)單的修改,即可適應(yīng)新的應(yīng)用環(huán)境。
圖7 流量測(cè)量模塊圖
軟件設(shè)計(jì)包括傳感器采集板的程序設(shè)計(jì)、以太網(wǎng)通信板的程序設(shè)計(jì)以及兩者之間的同步與通信。
4.1板間同步與通信
程序每30 s完成1次采集和上傳,為使以太網(wǎng)通信板和采集板同步,也為在掛接多個(gè)采集板時(shí)各板同時(shí)開(kāi)始采集,設(shè)計(jì)同步PWM波進(jìn)行同步。由以太網(wǎng)通信板產(chǎn)生周期為30 s的PWM波傳給每個(gè)采集板,采集板在PWM波的下降沿同時(shí)開(kāi)始采集周期,這樣就能保證通信板與采集板之間、不同的采集板之間是同步的。
通過(guò)計(jì)算,采集板完成所有采集需24 s,因此設(shè)置PWM波的低電平時(shí)間為26 s(2 s時(shí)間裕量),這樣在PWM波的上升沿所有傳感器數(shù)據(jù)都已完成更新,以太網(wǎng)通信板在此時(shí)通過(guò)I2C總線讀取采集板數(shù)據(jù)。時(shí)序上,采集板在PWM波的下降沿開(kāi)始采集,通信板在PWM波的上升沿讀取數(shù)據(jù),即使系統(tǒng)中存在多個(gè)CPU,仍能有條不紊地工作。
4.2傳感器采集板的軟件設(shè)計(jì)
如圖8所示,測(cè)量電路板首先進(jìn)行初始化,然后等待同步PWM下降沿,PWM波下降沿會(huì)觸發(fā)中斷,開(kāi)始一個(gè)周期的采集。
圖8 傳感器采集板的程序流程圖
在一個(gè)采集周期內(nèi),需采集16路流量和30路溫度傳感器,因只有8個(gè)計(jì)數(shù)器,所以利用8個(gè)數(shù)據(jù)選擇器對(duì)計(jì)數(shù)器進(jìn)行分時(shí)復(fù)用,前12 s對(duì)前8路流量脈沖進(jìn)行計(jì)數(shù),后12 s對(duì)后8路流量脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)完成以后,將計(jì)數(shù)值轉(zhuǎn)換為流量值。在12 s計(jì)時(shí)中間,內(nèi)核是空閑的,在這段時(shí)間內(nèi)進(jìn)行溫度采集。
采集完成以后,在PWM波的上升沿,通信板會(huì)從I2C總線讀取采集板最新的采集數(shù)據(jù),在傳感器采集板中調(diào)用的從I2C模塊稱為EZI2C Slave,在使用時(shí),需在初始化代碼中為EZI2C Slave定義一個(gè)緩沖區(qū),I2C主控就可以查看/修改此緩沖區(qū)中的任何變量,初始化時(shí)定義的緩沖區(qū)表現(xiàn)為主控與從器件之間的共享存儲(chǔ)器[7],因此,在采集板的程序中,只需將最新的采集數(shù)據(jù)放在這個(gè)緩沖區(qū)中,通信板的主I2C接口就可以進(jìn)行讀取,而不需要采集板程序的干預(yù)。
4.3以太網(wǎng)通信板的軟件設(shè)計(jì)
以太網(wǎng)通信板的程序主要包含2部分,通過(guò)I2C總線讀取采集板的數(shù)據(jù),通過(guò)以太網(wǎng)按照TCP協(xié)議將數(shù)據(jù)上傳。
以太網(wǎng)通信板對(duì)采集板的數(shù)據(jù)讀取是中斷驅(qū)動(dòng)的,當(dāng)通信板捕捉到PWM的上升沿,通信板進(jìn)入中斷服務(wù)程序,通過(guò)I2C總線讀取采集板數(shù)據(jù)。而在主函數(shù)中,移植Microchip公司提供的協(xié)議棧,運(yùn)行以太網(wǎng)通信程序,循環(huán)檢測(cè)是否收到上位機(jī)的數(shù)據(jù)請(qǐng)求包,將存儲(chǔ)的傳感器數(shù)據(jù)按TCP協(xié)議傳輸給上位機(jī)。以太網(wǎng)通信的流程圖如圖9所示。
圖9 以太網(wǎng)通信的程序流程圖
本文用PSoC設(shè)計(jì)多路測(cè)量系統(tǒng),達(dá)到了預(yù)期的性能指標(biāo),結(jié)果表明:該系統(tǒng)單板能同時(shí)采集30路數(shù)字溫度傳感器和16路脈沖流量傳感器的數(shù)據(jù);傳感器和采集板之間的導(dǎo)線可長(zhǎng)達(dá)200 m,即單板測(cè)量半徑達(dá)200 m;一個(gè)采集周期為30 s;上下位機(jī)能夠通過(guò)TCP/IP協(xié)議進(jìn)行遠(yuǎn)程通信。
系統(tǒng)不僅可根據(jù)傳感器的多少來(lái)靈活確定傳感器采集板的數(shù)量,而且由于PSoC可在系統(tǒng)編程,且內(nèi)部模塊易于配置,所以通過(guò)簡(jiǎn)單的內(nèi)部模塊重配置,即可使系統(tǒng)適用于其他類型的傳感器測(cè)量,而不需要更改系統(tǒng)硬件,從而縮短開(kāi)發(fā)周期。因此系統(tǒng)具有集成度高、可配置、可擴(kuò)展、單芯片可采集信號(hào)的路數(shù)多、數(shù)據(jù)可傳輸?shù)竭h(yuǎn)程計(jì)算機(jī)等優(yōu)點(diǎn)。
參考文獻(xiàn):
[1]用RS-485實(shí)現(xiàn)多路溫度測(cè)量.電子產(chǎn)品世界,2010 (3):42-44.
[2]鄒海,姜建國(guó),李朝峰,等.基于串口通訊的分布式大壩監(jiān)測(cè)自動(dòng)測(cè)控系統(tǒng).工業(yè)控制計(jì)算機(jī),2003,16(2):23-24.
[3]張學(xué)強(qiáng),秦龍勇,謝拴勤.基于 FPGA 的多路模擬量,數(shù)字量采集與處理系統(tǒng).單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(4):68-72.
[4]黃鶴,彭曉,楊躍龍.基于 FPGA 多路同步數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).儀表技術(shù)與傳感器,2012 (11):139-140.
[5]Cypress.PSoC5 family datasheet.Cypress Inc.2010.
[6]Microchip.ENC28J60 Stand-Alone Ethernet Controller with SPI Interface.Microchip Technology Inc.2012.
[7]Cypress.CyEZI2C_Slave datasheet.Cypress Inc.2012.