中科院上海技術(shù)物理研究所 劉方武 張 濤 鄭偉波 鞠洪偉 蔡 萍
空間生物實(shí)驗(yàn)是了解重力在植物生長中的作用機(jī)理[1]的重要手段,空間高等植物培養(yǎng)箱是實(shí)現(xiàn)在太空培養(yǎng)高等植物的載體,它是在一個密閉箱體內(nèi)為高等植物生長提供合適的生長環(huán)境,如光照、溫度、水、營養(yǎng)液等。為實(shí)現(xiàn)這個目標(biāo),控制系統(tǒng)需實(shí)時監(jiān)測箱內(nèi)的環(huán)境因素,并能實(shí)時做出調(diào)整。本控制系統(tǒng)采用TI公司推出的32位定點(diǎn)DSP芯片DSP2812[2,3],其主要面向數(shù)字控制和運(yùn)動控制領(lǐng)域。該DSP的最高主頻可以達(dá)到150MHZ,片內(nèi)集成了128K*16位的FLASH和18K*16位的RAM,調(diào)試時既可以將程序燒錄到RAM中,也可以燒入FLASH以便長期使用。該款DSP可使用TI公司的集成開發(fā)環(huán)境CCS3.3進(jìn)行軟件開發(fā),并支持JTAG在線仿真接口,可以實(shí)時分析以及設(shè)置斷點(diǎn)。
空間高等植物培養(yǎng)箱為長日照植物和短日照植物提供滿足空間培養(yǎng)的實(shí)驗(yàn)條件,科學(xué)家可通過數(shù)據(jù)注入指令控制實(shí)驗(yàn)進(jìn)程,通過在軌下傳的各類數(shù)據(jù),了解植物的生長環(huán)境及狀態(tài),在此基礎(chǔ)上分析獲得實(shí)驗(yàn)研究結(jié)果。因此,控制系統(tǒng)需實(shí)時采集培養(yǎng)箱內(nèi)的溫度、濕度、照度等環(huán)境參數(shù)和燈、相機(jī)、泵、溫控、水循環(huán)的開關(guān)狀態(tài),并下傳給數(shù)管系統(tǒng);根據(jù)實(shí)驗(yàn)流程需要,控制系統(tǒng)需定時控制長日照燈1、短日照燈2、返回單元燈3的開關(guān),可見光相機(jī)1、2和熒光相機(jī)3的開關(guān),水循環(huán)1、2的開關(guān);根據(jù)指令控制溫控的開關(guān)、泵1、2的開關(guān),光照周期的調(diào)整,水循環(huán)周期的調(diào)整;根據(jù)廣播時間碼進(jìn)行系統(tǒng)校時和自守時。培養(yǎng)箱通過422接口與數(shù)管系統(tǒng)進(jìn)行通訊,接收注入指令并返回狀態(tài)參數(shù)。
為了實(shí)現(xiàn)上述任務(wù),給高等植物生長提供所需的適宜環(huán)境,控制系統(tǒng)需實(shí)現(xiàn)以下功能:
(1)實(shí)時與數(shù)管系統(tǒng)通訊,通訊接口為422異步串行通訊,波特率為115200bps??刂葡到y(tǒng)接收數(shù)據(jù)注入,對數(shù)據(jù)包進(jìn)行解析,并執(zhí)行指令;發(fā)送科學(xué)參數(shù)數(shù)據(jù)包,在接收到數(shù)據(jù)采集指令后,將采集到的模擬量和狀態(tài)量按一定格式打包,并發(fā)送給數(shù)管系統(tǒng)。
(2)根據(jù)外部指令,實(shí)時響應(yīng)對燈、溫控、泵、水回收裝置等10路繼電器的開關(guān)操作。
(3)按照實(shí)驗(yàn)流程,對燈1、2開關(guān)(燈1為16h開、8h關(guān),燈2為8h開、16關(guān))、相機(jī)1、2、3開關(guān)(相機(jī)1、2分別在燈開時每2h開關(guān)1次,相機(jī)3根據(jù)數(shù)據(jù)注入進(jìn)行開關(guān)控制)、水回收1、2開關(guān)(在燈開時關(guān)閉、在燈關(guān)時開啟)等進(jìn)行定時控制。
(4)為了監(jiān)控培養(yǎng)箱的工作狀態(tài),控制系統(tǒng)需定時(512ms)采集溫度、濕度、照度、工作電壓等16路模擬量,和燈狀態(tài)、輸運(yùn)泵狀態(tài)、相機(jī)狀態(tài)、激發(fā)光狀態(tài)、溫控狀態(tài)、水回收狀態(tài)等14路數(shù)字量。
(5)控制系統(tǒng)需自守時,并能根據(jù)數(shù)管系統(tǒng)注入的時間碼,實(shí)現(xiàn)校時功能。
圖1 控制系統(tǒng)硬件結(jié)構(gòu)圖
根據(jù)系統(tǒng)需求分析,對控制系統(tǒng)的功能進(jìn)行模塊劃分,如圖1所示,相應(yīng)的硬件模塊有:時鐘晶振模塊、電源變換模塊、RS422通訊模塊、復(fù)位電路模塊、模擬量采集模塊、狀態(tài)量采集模塊、繼電器開關(guān)控制模塊、DSP控制器模塊等八部分。
圖2 空間高等植物培養(yǎng)箱控制系統(tǒng)軟件結(jié)構(gòu)圖
其中時鐘晶振為DSP提供25MHZ的外部時鐘源,電源變換電路使用MSK5101-3.3和LM117電源轉(zhuǎn)換芯片將外部5V電源變換為DSP2812工作所需的3.3V外設(shè)電壓和1.8V內(nèi)核電壓,串口通訊模塊使用DS26LV31T和DS26LV32AT實(shí)現(xiàn)將DSP2812的SCI串口變換為422通訊所需的差分信號,復(fù)位電路實(shí)現(xiàn)系統(tǒng)復(fù)位功能,模擬量采集電路使用LM124放大器實(shí)現(xiàn)將外部模擬量送給DSP2812的內(nèi)部ADC,狀態(tài)量采集電路將外部狀態(tài)量經(jīng)SN74LS244緩沖后送DSP2812的GPIO口,繼電器開關(guān)控制電路是將GPIO口輸出的控制信號經(jīng)達(dá)林頓管SG2003放大后控制繼電器開關(guān)。
根據(jù)系統(tǒng)的需求分析,先將控制軟件按照功能進(jìn)行模塊劃分,其軟件結(jié)構(gòu)如圖2所示。
其功能可分成五部分:數(shù)據(jù)注入接收與解析、模擬量和狀態(tài)量的采集、科學(xué)參數(shù)包發(fā)送、實(shí)驗(yàn)流程控制、DSP系統(tǒng)初始化。對應(yīng)于五個軟件功能,控制軟件分為五個模塊來進(jìn)行詳細(xì)設(shè)計(jì),具體為初始化模塊、主循環(huán)模塊和三個內(nèi)部中斷模塊,按照優(yōu)先級高低依次為:定時器中斷、串口接收中斷、串口發(fā)送中斷。其中,主循環(huán)模塊又由模擬量采集、狀態(tài)量采集、指令響應(yīng)、數(shù)據(jù)注入存儲、立即令執(zhí)行、延時指令處理、實(shí)驗(yàn)流程控制等七個子模塊組成,每個子模塊對應(yīng)一個函數(shù)。指令響應(yīng)子模塊由于分支較多,又調(diào)用了三個單元,每個單元對應(yīng)一個子函數(shù)。時間大小比較功能,相對比較獨(dú)立,也寫成一個子函數(shù),作為一個單元調(diào)用。DSP系統(tǒng)初始化模塊根據(jù)不同的外設(shè)也劃分為系統(tǒng)控制初始化、GPIO口初始化、其它外設(shè)初始化、全局變量初始化、斷電指令響應(yīng)、喂狗等六個子模塊。其中斷電指令響應(yīng)單元實(shí)現(xiàn)將所有繼電器關(guān)斷。
圖3 控制系統(tǒng)軟件流程圖
根據(jù)實(shí)驗(yàn)流程的需要,主控軟件的執(zhí)行次序如圖3所示。系統(tǒng)在上電后首先進(jìn)行系統(tǒng)初始化,將系統(tǒng)時鐘設(shè)為100MHZ,使能相應(yīng)的外設(shè)如SCI口、ADC、GPIO口等,打開看門狗,并關(guān)閉所有的繼電器;然后系統(tǒng)進(jìn)入待機(jī)自檢模式,實(shí)時接收數(shù)管系統(tǒng)發(fā)來的各種指令,并做出響應(yīng),實(shí)現(xiàn)對系統(tǒng)的檢查;直到接收到數(shù)管系統(tǒng)發(fā)送的進(jìn)入正常工作模式的指令,或自檢時間結(jié)束自動進(jìn)入正常工作模式;進(jìn)入正常工作模式后,重新載入系統(tǒng)運(yùn)行的參數(shù),進(jìn)入自主控制流程,按照協(xié)議要求定時開關(guān)燈、相機(jī)、水回收等。在正常工作模式里,控制系統(tǒng)將定時發(fā)送開關(guān)信號;在接收到數(shù)據(jù)采集指令后,將采集到的各類狀態(tài)參數(shù)打包后發(fā)送數(shù)管系統(tǒng);在接收到廣播時間碼后,進(jìn)行系統(tǒng)校時,在兩次廣播時間碼之間,進(jìn)行系統(tǒng)自守時;在接收到斷電指令后,關(guān)閉所有繼電器,使系統(tǒng)進(jìn)入確定狀態(tài),等待數(shù)管系統(tǒng)斷電。
根據(jù)系統(tǒng)的軟硬件設(shè)計(jì),控制系統(tǒng)的實(shí)現(xiàn)按功能劃分為422通信、注入指令的解析、模擬量和狀態(tài)量的采集、開關(guān)指令的執(zhí)行、系統(tǒng)守時校時定時等。由于篇幅有限,下面重點(diǎn)介紹422通信、開關(guān)指令的執(zhí)行、指令解析和實(shí)驗(yàn)流程的控制四個部分。
空間高等植物培養(yǎng)箱控制系統(tǒng)與數(shù)管系統(tǒng)的通訊采用422接口,波特率為115200bps。DSP2812自帶兩路串行通信接口(SCI),可采用查詢和中斷兩種方式進(jìn)行串口通訊。為了實(shí)時接收數(shù)管系統(tǒng)注入的數(shù)據(jù)指令,本系統(tǒng)采用接收中斷和發(fā)送中斷來實(shí)現(xiàn)系統(tǒng)與數(shù)管系統(tǒng)的實(shí)時通信。此處需特別注意的是,在系統(tǒng)上電或復(fù)位操作時,由于422發(fā)送芯片的管腳電平不確定,會出現(xiàn)輸出亂碼的現(xiàn)象,這些亂碼有時會造成不可預(yù)知的結(jié)果。在系統(tǒng)上電或復(fù)位進(jìn)行初始化過程中,為保證422芯片輸出無亂碼,可選擇使用三個措施:DSP輸出信號控制使能,積分延時電路控制使能,RS422芯片輸入端外接上拉電阻。為盡量簡化電路,本系統(tǒng)采用第一種措施:由DSP2812輸出RS422芯片的使能信號,在上電和復(fù)位初始化過程中,將RS422芯片的接口使能端設(shè)為禁止?fàn)顟B(tài),初始化完成后才設(shè)為使能開狀態(tài),以此來達(dá)到禁止向外部發(fā)送亂碼的目的。如圖4所示,RS422接口芯片DS26LV31W有兩個使能端pin4EN和pin12/EN。使用其中任何一個,都可達(dá)到使能控制該芯片的目的,但是因DSP2812的GPIO口為內(nèi)部上拉,上電或復(fù)位至系統(tǒng)初始化完成前,GPIO口會輸出高電平,所以,最終選用422芯片的低電平使能端pin12/EN,具體電路如圖4所示。圖4中肖特基二極管D36起防潛通作用[4]。
圖4 RS422發(fā)送端原理圖
RS422使能端控制信號/EN31的初始化程序?yàn)椋?/p>
開關(guān)指令的執(zhí)行是通過GPIO口輸出控制信號,經(jīng)達(dá)林頓管放大后控制繼電器開關(guān)來實(shí)現(xiàn)的。DSP2812的GPIO口共有6組56個,其中除了GPIOE0、GPIOE1、GPIOF0、GPIOF1、GPIOF2、GPIOF3、GPIOF12、GPIOG4、GPIOG5這九個之外,全部為內(nèi)部上拉[3]。這47個GPIO口在上電瞬間到初始化完成配置前的這段時間輸出為高電平,在主頻100MHZ的情況下,該脈沖寬度大約為60ms,如圖5所示。第一個窄脈沖電平約為1.4V,脈寬為60ms。
圖5 GPIO口未加下拉電阻時的波形
圖6 GPIO口添加下拉電阻后的波形
因系統(tǒng)設(shè)計(jì)時,高電平為繼電器開,低電平為繼電器關(guān),所以,在上電或復(fù)位瞬間這個窄脈沖會短暫打開繼電器,這不僅會造成浪涌電流很大,而且還會造成繼電器誤操作。為了解決這個問題,本系統(tǒng)采用在每個帶內(nèi)部上拉功能的GPIO口增加下拉電阻的辦法,其下拉電阻阻值為3.3KΩ。圖5是增加下拉電阻前,示波器所抓取的帶上拉功能的GPIO口的輸出波形圖。圖6為增加3.3KΩ的下拉電阻后,同一端口所測波形。由圖6可見上電瞬間所輸出的1.4V脈沖已被下拉至0.2V。
控制系統(tǒng)接收的數(shù)管系統(tǒng)指令有廣播時間碼、數(shù)據(jù)采集指令、系統(tǒng)維護(hù)指令、系統(tǒng)斷電指令和數(shù)據(jù)注入指令五種,其中前四種指令相對簡單,而數(shù)據(jù)注入指令內(nèi)含需要解析的參數(shù)設(shè)置等內(nèi)容,相對比較復(fù)雜。為了及時響應(yīng)數(shù)管系統(tǒng)指令,控制系統(tǒng)在串口接收中斷中對5種指令先只做出分類標(biāo)示,并直接放入數(shù)據(jù)緩存區(qū),而將各種指令的解析與響應(yīng)放在主循環(huán)中,當(dāng)主循環(huán)中對指令做出響應(yīng)后則將標(biāo)示清零。
實(shí)驗(yàn)流程的實(shí)現(xiàn)需要有精確的定時,定時器的實(shí)現(xiàn)是由DSP自帶的定時器中斷來完成的??刂葡到y(tǒng)的主頻為100MHZ,定時器中斷設(shè)置為每5ms進(jìn)一次中斷,因此本系統(tǒng)的實(shí)際時間精度為5ms。由于系統(tǒng)流程是在一個無限循環(huán)中輪詢實(shí)現(xiàn),所以實(shí)驗(yàn)流程控制就是將設(shè)置好的時間標(biāo)志與定時器中的累計(jì)時間標(biāo)志做比較,當(dāng)累計(jì)時間大于等于設(shè)置時間時,就實(shí)施某個開關(guān)動作。由于培養(yǎng)箱采用的繼電器是磁保持繼電器,所以,開關(guān)信號只需給出大于80ms的高電平脈沖即可完成開關(guān)動作,無需一直保持高電平。脈沖信號的產(chǎn)生一般使用delay()函數(shù)。使用delay()函數(shù)來實(shí)現(xiàn)高電平脈沖,可以避免同時開啟多個繼電器,避免浪涌電流過大。但是,如果連續(xù)使用多個delay()函數(shù)會造成看門狗超時,而導(dǎo)致系統(tǒng)復(fù)位。例如,在實(shí)驗(yàn)流程中,如果有多個開關(guān)需同時依次打開,則幾個delay()函數(shù)的時間就會累加起來,超過系統(tǒng)看門狗的喂狗時間。綜合考慮以上情況,本控制系統(tǒng)采取設(shè)置繼電器開關(guān)時間標(biāo)志的方法,當(dāng)繼電器開的控制信號置高電平后,在定時器中斷內(nèi)進(jìn)行計(jì)時,當(dāng)時間超過80ms則將控制信號拉低。這樣做不僅避免了狗叫,而且提高了系統(tǒng)的實(shí)時響應(yīng)性。
通過解讀任務(wù)目標(biāo),分析任務(wù)的需求,提煉出空間高等植物培養(yǎng)箱控制系統(tǒng)的五個任務(wù);然后從硬件模塊劃分和軟件功能實(shí)現(xiàn)兩條線給出了控制系統(tǒng)的詳細(xì)設(shè)計(jì);在系統(tǒng)實(shí)現(xiàn)部分,重點(diǎn)介紹了422通訊亂碼的消除方法,上電或復(fù)位瞬間GPIO口的高電平脈沖抑制方法,指令解析的詳細(xì)設(shè)計(jì)說明和實(shí)驗(yàn)流程控制中脈沖電平的實(shí)現(xiàn)。實(shí)驗(yàn)證明,控制系統(tǒng)工作穩(wěn)定,實(shí)時響應(yīng)性能好。
[1]孫建峰,趙琦,郭雙生,等.微重力及模擬微重力對植物生長的影響[J].生物技術(shù)通報,2011(9).
[2]顧衛(wèi)剛.手把手教你學(xué)DSP[M].北京:北京航空航天大學(xué)出版社,2009.
[3]TMS320F281x Datasheet.Texas Instruments,2003.
[4]尹申燕,劉敏,李靚.冷機(jī)低阻通路下的潛通電路分析及隔離方法[J].電訊技術(shù),2010,50(8).