黃在范 丁筱玲 施國英 郎需強 鄭成淑
摘 要:本研究設計了一種花卉無土栽培營養液主要成分在線檢測系統。該系統能夠實時檢測營養液NO-3、PO3-4和K+濃度以及溫度、pH、EC的瞬時值,并且提供上述測量值的歷史數據以供查詢和分析。試用結果表明,該系統能夠滿足在設施內花卉無土栽培中實現自動化控制營養液氮、磷、鉀等主要離子濃度,并具有可靠性和準確性。
關鍵詞:花卉;無土栽培;營養液;離子濃度;檢測系統
中圖分類號:TP274 文獻標識號:A 文章編號:1001-4942(2009)12-0017-05
花卉無土營養液栽培模式,可以達到高產、優質、高效的目標,并已成為一種技術上高度密集配套、生產及管理上集約化、自動化、現代化程度很高的農藝生產技術體系[1]。在花卉無土栽培中,不同花卉及不同生長發育時期對營養液及其濃度的要求不同。氮、磷、鉀在花卉生長和發育過程中起著重要作用,且不同生長發育時期對其要求不同[5]。因此,隨時監測氮、磷、鉀的離子濃度對生產優質花卉產品具有重要意義。傳統檢測通常采用離線實驗分析或儀表測量的方法。這些離線檢測方法的優點是分析精度高,能夠分析的成分種類全面,但分析過程緩慢,取樣、預處理和測定過程復雜,不能直接和全面地分析營養液成分的變化情況,無法滿足建立可控環境農業綜合智能自動化控制系統的要求[6]。Kupers(1992)等[7]通過試驗獲得了離子選擇電極用于營養液成分檢測的實踐經驗,并且指出,相對于傳統的測量元件,離子選擇電極對于建立實用的控制系統具有很大優勢[2]。但目前這類設備基本以國外引進為主。Morimoto(1992)等[3]經實驗證明,在蔬菜無土營養液栽培中,通過監控K+和Ca2+濃度可以較好地實現營養液濃度的循環控制。賴勝(2004)等[4]也設計一個在線檢測和控制營養液中氮、鉀和鈣離子濃度以及溫度、pH值和EC值的系統。
但上述檢測技術都還不成熟,缺乏快速性和準確性,而且也沒有建立真正實用的營養液在線檢測系統。本試驗通過選擇合適的離子選擇電極和溫度傳感器,設計電導傳感器和信號調理模塊,完成數據采集卡和PC機的通信,使用Delphi 6.0編制系統軟件,最終建立了營養液成分N、P、K濃度的在線檢測系統,不僅可達到既符合生產要求又降低生產成本的目的,還可推動我國花卉無土栽培技術的發展和推廣。
1 系統硬件設計
1.1 花卉無土栽培營養液循環系統
該系統由栽培床、營養液池、水泵、攪拌器、清水罐、母液罐、電磁閥門組、供液管道及回流管道組成。營養液池儲存配制好的營養液,營養母液罐向池內添加各種母液,通過攪拌器使母液與營養液充分混合,以實現營養液成分的調整。營養液通過供液管道輸送到花卉栽培床,流經植物的根部之后,經回收管道回流到營養液池循環利用。
1.2 花卉無土栽培營養液在線檢測系統
在花卉無土栽培營養液循環系統基礎上,加入一臺高性能的計算機,配以離子選擇電極、信號調理模塊和數據采集卡,再進行適當的系統設計,即構成了營養液成分在線檢測系統,見圖1。
1.3 花卉無土栽培營養液在線檢測系統硬件部分
1.3.1 離子選擇電極 離子選擇電極的離子濃度測量原理是電化學分析中的能斯特方程,即平衡電極電位與溶液中給定離子濃度的對數值呈線性關系,通過離子選擇電極可以將濃度信號轉化

成電信號[3]。在該檢測系統中,采用PVC塑料膜電極作為離子選擇電極,飽和甘汞電極作為參比電極,以便在測量電池中提供和保持一個固定的參比電勢。離子選擇電極包含由特殊的電活性物質組成的敏感膜,特定的敏感膜對溶液中某種離子的活度具有選擇性響應,從而在參比電極之間產生一定的NO-3、PO3-4和K+電勢,這樣就可以測量營養液中NO-3、PO3-4和K+的濃度。
1.3.2 電導和溫度傳感器
常用的電導測量方法為間接測量法,即根據電解導電的原理測量營養液電阻進而間接測量營養液電導,在測量電極對兩側施加一等幅恒定頻率的交變方波E(t)(防止電極極化),在電極中產生正比于營養液電導率的電流i(t),該電流經標準采樣電阻R分壓后產生正比于營養液電導的交變電壓V(t),該電壓經阻抗變換、放大和濾波后送入A/D轉換器數字化,計算機采集數據后進行溫度補償和非線性校正獲得電導測量結果。電導傳感器測量電路圖見圖2。為克服電極極化和電極極間電容對測量精度的影響,選擇由555定時器(VCC,電源電壓+5V;R為復位端;Q為輸出端;TRIG為低電平觸發端;THR為高電平觸發端;GND為接地端)、電阻和電容組成的800 Hz對稱方波交流電源作為測量電源,含有電導信息的分壓信號經第1級交流放大器進行阻抗變換,經整流后送入第2級直流放大器調理成0~5V的直流信號送入A/D轉換器。溫度傳感器選擇具有較高測量精度的AD590,它的非線性誤差<0.5℃,工作電壓為(4~30)V,檢測范圍為(-55~+155)℃,均符合系統要求。

1.3.3 信號調理模塊 信號調理模塊對接入的離子選擇電極和電導、溫度傳感器傳來的電信號進行預處理,調理模塊中各通道的輸出信號在0~5V范圍內,然后送到數據采集卡進行A/D變換。其具體實現可以參照圖2中的第2級直流放大器。
1.3.4 數據采集卡
數據采集卡采用研華公司的PCL-711S多功能數據采集卡,其主要特征包括:8通道模擬信號輸入,12位A/D信號轉換,可編程的模擬信號輸入范圍(±5V,±2.5V等),最大25 μs的快速A/D轉換率,最大支持25 000次/s的采樣速率,支持多種語言驅動(BASIC、PASCAL、C和C++)。
2 系統軟件設計
設計軟件結構系統完成營養液中pH值、EC值、溫度值以及NO-3、PO3-4和K+的濃度值檢測,并且實時顯示上述成分的動態變化過程。將結果存入數據庫以便查詢和分析(見圖3)。

2.1 通信模塊
先安裝PCL-711S驅動程序,并單獨建立一個數據通信模塊單元Op Device.pas來完成數據的采集。具體調用函數接口完成這部分功能的語言如下:
2.1.1 開啟數據采集卡 ErrCde: = DRV_Device Open(0,Device Handle);
2.1.2 關閉數據采集卡 ErrCde: = DRV_Device Close(Device Handle);
2.1.3 設置數據采集卡 for i: = 0 to 5 do,begin;ptAI Config.DasChan: = i;{采樣通道i};ptAI Config.DasGain: = 0;{增益模式:0};ErrCde: = DRV_AIConfig(Device Handle,ptAI Config),end;
2.1.4 數據采集 for i: = 0 to 5 do;for j: = 1 to SampleRate do;{Sample Rate = 3000},begin;
AiVol In.chan: = i;{采樣通道i};AiVol In.gain: = 0;{增益模式:0};AiVol In.Trig Mode: = 0;{觸發模式:0};AiVol In.voltage: = @voltage;ErrCde: = DRV_AIVoltage In(Device Handle,AiVol In);
DataVol[i+1][j]: = voltage * 1000;end;
2.1.5 數據濾波及多線程處理 本試驗利用了Windows多線程技術。線程是一種操作系統對象,它表示在進程中代碼的一條執行路徑。在每一個Win32應用程序中都至少有一個主線程,但可以在任何地方創建多個附屬線程,它們在后臺進行其它各種類型的處理。Delphi把有關線程的API封裝在TThread這個Object Pascal的對象中。TThread類是一個抽象類,不能創建TThread的實例,而只能創建其派生類的實例。在程序中,新創建的線程對象如下:
TGet Data Thread = class(TThread)
private
{Private declarations}
protected
procedure Execute;override;
end;
派生類中唯一必須覆蓋的方法是Execute。由于要在子線程TGetDataThread中完成數據濾波,可以如下定義Execute:
Free On Terminate := True;{釋放線程對象}
Priority := tpHigher;{設置優先級}
Device_GetData;{采集數據}
for i := 1 to 6 do
Temp Val[i] := 0;{數組Temp Val為濾波后各通道的數據}
for i := 1 to 6 do
for j := 1 to Sample Rate do
begin
Temp Val[i] := Temp Val[i] + DataVol[i,j];
end;
for i := 1 to 6 do
TempVal[i] := Temp Val[i]/Sample Rate;
然后,可通過調用線程對象的Create使上述代碼執行:TGet Data Thread.Create(False);
{參數設置成False,當調用Create后,Execute自動執行;否則需要運行Resume來喚醒線程。}
2.2 數據模塊
2.2.1 數據擬合處理 由于采集來的只是各個測量點的電壓值,需要在程序中對其進行處理,使之變成相應的營養液成分值。程序中加入了二次添加法、逐步最小二乘擬合法等算法模塊,最終得到溫度、pH值、EC值,以及NO-3、PO3-4和K+的濃度值[8,9]。
2.2.2 數據存儲 數據模塊用VCL中的TData待Module類來操縱[4]。TData Module可以看作是一個不可見的窗體,在該窗體內可以放置需要用到的數據訪問組件。因此,要在一個項目的多個窗體和單元之間共享數據,有效的方法就是把數據訪問組件TTable和TDataSource放在數據模塊中,然后對它們進行適當關聯,并且定義字段級的操作規則,諸如顯示格式、字段的最小/最大值等。在數據模塊創建時的觸發事件代碼為:
Create Data DB(DirName,TabName);{建立路徑為DirName,表名為Tab Name的庫文件}
Data Table.Database Name := DirName;
Data Table.Table Name := TabName;{指定路徑及表名給TTable對象DataTable}
DataTable.Active := True;{打開數據庫} 其中的CreateDataDB函數用來創建一個新的數據庫,并且定義字段和索引,主要代碼如下:
if not NewTable.Exists then begin
with FieldDefs do
begin
Clear;
with Add Field Def do {添加字段}
begin
Name :=“數據序號”;
Data Type := ft Integer;
Required := True;
end;
...
with IndexDefs.AddIndexDef do {添加索引}
begin
Fields := “數據序號”;
Name := “MainIndex”;
Options := [ixPrimary,ixUnique];
end;
...
end;
CreateTable;
{按照定義的字段以及索引建立數據庫}
end
完成這部分工作以后,如果在程序其它功能模塊中需要對數據庫中的數據進行操作,只要將數據模塊單元的名稱加入到uses子句中即可。2.2.3 動態顯示
因為以圖形方式動態顯示的數據,都是經過處理以后存儲在數據表中的,所以動態顯示單元首先要從數據表中讀取已存儲的各個營養液成分對應的數值,然后,再利用Delphi提供的繪圖功能以及非可視控件TTimer,就可以在TImage對象上實現動態模擬顯示(見圖4)。用TTimer可以在指定的時間間隔有規律地觸發一個事件On Timer,程序中,定義Refresh Timer為TTimer類,并且定義Refresh Timer.Interval: = 1000,即每一秒刷新一次畫面,同時在事件Refresh Timer中完成在TImage對象上繪圖的功能:
with Image1.Canvas do
for i:=0 to 5 do
begin
Move To(DrawIndex + 1,
Round (To Draw Data [Draw Index - 2][i]));
Line To(Draw Index + 2,
Round(To Draw Data [Draw Index - 1][i]));
{分別繪制對應的6條曲線}
end;

3 結論
該系統軟件基本實現了花卉無土栽培營養液主要成分NO-3、PO3-4、K+等的在線檢測。通過對歷史數據的查詢和分析,可以方便地檢測營養液主要成分的變化趨勢,進一步利用Matlab等數學工具進行深入研究,可以得到很多有關pH值、EC值和其它離子濃度的數學模型[10,11]。相對于國內外傳統營養液成分檢測的離線方法,本研究從硬件和軟件兩個方面著手設計,并結合最小二乘辨識等建模方法,最終實現了花卉無土栽培營養液主要成分在線實時檢測系統。
參 考 文 獻:
[1] 筵麗萍,曹東興,鄭志敏,等.無土栽培營養液自動控制系統的最佳方案設計[J]. 河北工業大學學報,2001,30(12):107-110.
[2] 于海業,馬明建.營養液檢測與控制技術概況[J].山東工程學院學報,2002,16(1):69-72.
[3] Morimoto T, Nishina H, Hashimoto Y, et al. Sensor for Ion-control: An approach to control of nutrient solution in hydroponics[J]. Acta Hort., 1992, 304: 301-308.
[4] 賴 勝,王 永,孫德敏,等.營養液成分在線檢測系統的設計與實現[J].計算機工程,2004,30(21):146-148.
[5] 邱雪峰,薛美盛,孫德敏,等.設施栽培中營養液成分的在線檢測[J].農業工程學報,2000,16(1):83-86.
[6] 秦琳琳,王 永,孫德敏.營養液組分檢測與控制系統的設計與實現[J].中國科學技術大學學報,2004,34(2): 202-204.
[7] Kupers G, Van Gaalen J, Gieling T, et al.Diurnal changes in the ion concentration of the supple and return water of a tomato crop grown on rockwool[J].Acta Hort.,1992,304:291-300.
[8] 邱雪峰,薛美盛,孫德敏,等.在線檢測與估計營養液成分[J]. 中國科學技術大學學報,2000,30(3):351-355.
[9] Savvas D, Gizas G. Response of hydroponically grown gerbera to nutrient solution recycling and different nutrient cation ratios[J]. Scientia Horticulturae,2002,96(1):267-270.
[10]Ferentinos K P, Albright L D, Selman B. Neural network-based detection of mechanical, sensor and biological faults indeep-trough hydroponics[J]. Computers and Electronics in Agriculture,2003,40:65-85.
[11]藺金元.無土栽培營養液的自動配比控制系統[J].寧夏農林科技,2006,6:34-35.