楊光馬巍陳立蘭范志華牛云鵬楊碩苗錢(qián)義
(1.吉林省農(nóng)業(yè)機(jī)械研究院,吉林 長(zhǎng)春 130022;2.吉林省天安消防安全檢測(cè)有限公司,吉林 長(zhǎng)春 130000;3.吉林工商學(xué)院,吉林 長(zhǎng)春 130000)
我國(guó)作為一個(gè)農(nóng)業(yè)生產(chǎn)力雄厚的國(guó)家,正處于數(shù)字化農(nóng)經(jīng)快速發(fā)展階段。通過(guò)采用傳感技術(shù)、無(wú)線網(wǎng)絡(luò)、云數(shù)據(jù)存儲(chǔ)、物聯(lián)網(wǎng)和人工智能等先進(jìn)技術(shù)手段收集和分析數(shù)據(jù),能夠?qū)ΨN植領(lǐng)域包括糧食作物與經(jīng)濟(jì)作物在內(nèi)的生長(zhǎng)狀態(tài)進(jìn)行詳盡的跟蹤和搜集信息。監(jiān)測(cè)生物和環(huán)境數(shù)據(jù)后以此作為參考,為農(nóng)業(yè)生產(chǎn)的各個(gè)階段提供科學(xué)的建議和指導(dǎo)。數(shù)據(jù)管理與分析在當(dāng)前農(nóng)業(yè)經(jīng)濟(jì)體系下異常關(guān)鍵,以提供堅(jiān)實(shí)的信息支持。我國(guó)已經(jīng)啟動(dòng)了相關(guān)戰(zhàn)略和計(jì)劃,旨在2023年進(jìn)一步推動(dòng)并加速實(shí)現(xiàn)農(nóng)業(yè)產(chǎn)業(yè)的數(shù)字化改造。依照《面向2035年的農(nóng)業(yè)智能化發(fā)展戰(zhàn)略研究》的指引,我國(guó)將持續(xù)增強(qiáng)農(nóng)業(yè)智能技術(shù)的研究及其實(shí)踐應(yīng)用力度,以期于2035年前基本達(dá)成農(nóng)業(yè)全鏈條的數(shù)字化轉(zhuǎn)型,并為構(gòu)建智能化農(nóng)業(yè)體系奠定堅(jiān)實(shí)的技術(shù)基礎(chǔ)。
中國(guó)農(nóng)業(yè)數(shù)字化的軟件及數(shù)據(jù)支撐結(jié)構(gòu)主要有感知與執(zhí)行層面以及運(yùn)算層面,通過(guò)數(shù)據(jù)采集、軟件分析、數(shù)據(jù)儲(chǔ)存和處理等工具,形成數(shù)據(jù)平臺(tái)服務(wù),對(duì)自然環(huán)境、要素投入、市場(chǎng)流通等信息進(jìn)行智能化的處理、分析以及應(yīng)用。農(nóng)業(yè)數(shù)據(jù)服務(wù)平臺(tái)通過(guò)給商家提供解決方案,通過(guò)構(gòu)建農(nóng)業(yè)用戶(hù)的種植數(shù)據(jù),讓商家為農(nóng)戶(hù)提供有針對(duì)性的科學(xué)種植方案和技術(shù)。在數(shù)據(jù)平臺(tái)服務(wù)方面,目前我國(guó)已經(jīng)形成多個(gè)規(guī)模化的為農(nóng)業(yè)種植提供服務(wù)的配套技術(shù)和產(chǎn)品。形成了多家數(shù)字服務(wù)平臺(tái),但各大平臺(tái)的運(yùn)營(yíng)成本比較高,數(shù)據(jù)雖然是共享,但由于農(nóng)業(yè)經(jīng)濟(jì)受不同地域的環(huán)境影響很大,很多種植數(shù)據(jù)并沒(méi)有針對(duì)性。本項(xiàng)目介紹了一種中小規(guī)模的溫室聯(lián)動(dòng)大棚數(shù)據(jù)庫(kù)的建立,通過(guò)在種植基地建立自己的數(shù)據(jù)庫(kù),實(shí)現(xiàn)了為本地種植企業(yè)獨(dú)立建立數(shù)據(jù)庫(kù),通過(guò)數(shù)據(jù)內(nèi)容及數(shù)據(jù)分析提供方案,同時(shí)也為企業(yè)的發(fā)展自身獨(dú)特農(nóng)業(yè)經(jīng)濟(jì)提供了可能性。
數(shù)據(jù)庫(kù)是某組數(shù)據(jù)的集合,數(shù)據(jù)庫(kù)中有表,表由列組成。數(shù)據(jù)庫(kù)有動(dòng)態(tài)數(shù)據(jù)庫(kù)和靜態(tài)數(shù)據(jù)庫(kù),本文中的測(cè)控參數(shù)會(huì)變化,所以需要建立動(dòng)態(tài)數(shù)據(jù)庫(kù)。
根據(jù)聯(lián)動(dòng)溫室大棚種植種類(lèi)和數(shù)量,對(duì)溫室大棚的控制參數(shù)進(jìn)行存儲(chǔ)與設(shè)定,包括溫室中作物種植種類(lèi),溫室溫濕度、光照參數(shù)、土壤溫濕度等的控制范圍,是否需要人工單獨(dú)控制還是采用智能控制,攝像頭的IP地址、數(shù)據(jù)采集時(shí)間間隔等信息。以上信息需要人工進(jìn)行輸入后并存儲(chǔ)到數(shù)據(jù)庫(kù)中保存。
溫室大棚內(nèi)有許多控制元素,這些控制單元包括灌溉水泵、各個(gè)地塊的灌溉閥門(mén)、濕簾水泵、遮光簾的電機(jī)正反轉(zhuǎn)控制、保溫被蓋或不蓋的控制、補(bǔ)光系統(tǒng)的控制,由于以上設(shè)備均有自己的工作狀態(tài),在數(shù)據(jù)庫(kù)的運(yùn)行中需要進(jìn)行實(shí)時(shí)記錄和更改,同時(shí)要能記錄到最后一次動(dòng)作的狀態(tài),這樣才能為下一次系統(tǒng)動(dòng)作提供有效的執(zhí)行信息。這就要求數(shù)據(jù)庫(kù)必須有以上各個(gè)執(zhí)行機(jī)構(gòu)的動(dòng)態(tài)變量。
實(shí)現(xiàn)對(duì)溫室環(huán)境條件的記錄和存儲(chǔ),參數(shù)包括:空氣溫濕度、光照、二氧化碳、大氣壓力、不同地塊的土壤溫濕度、室外的溫濕度、室外的方向和風(fēng)速。
用戶(hù)可以通過(guò)輸入固定時(shí)間來(lái)查詢(xún)不同地塊作物的生長(zhǎng)數(shù)據(jù),包括1.3中涉及到的測(cè)量數(shù)據(jù),監(jiān)測(cè)、分析各區(qū)域的環(huán)境數(shù)據(jù)。
在筆記本、臺(tái)式機(jī)或者工控機(jī)中都可以安裝數(shù)據(jù)庫(kù),其本質(zhì)是將測(cè)量控制系統(tǒng)工作的電腦作為服務(wù)器使用。
MySQL是一個(gè)應(yīng)用比較廣泛的小型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)[2],其規(guī)模比較小,功能不復(fù)雜,速度快、成本低,但是已經(jīng)能夠滿(mǎn)足多數(shù)用戶(hù)的需求,其可以在Windows平臺(tái)下進(jìn)行安裝包的安裝,運(yùn)行安裝目錄下的MySQL,如E:數(shù)據(jù)庫(kù)MySQL驅(qū)動(dòng)MySQL-版本號(hào)。安裝10個(gè)左右程序,都要100%安裝,如遇到最后2個(gè)安裝到30%不動(dòng)的情況,即為安裝失敗,需要卸載所有MySQL開(kāi)頭的文件,重新安裝,安裝時(shí)提示設(shè)定賬戶(hù)和密碼。安裝結(jié)束,檢查電腦管理界面下的“服務(wù)”選項(xiàng),若發(fā)現(xiàn)MySQL57服務(wù)已激活便無(wú)需擔(dān)心;若服務(wù)尚未運(yùn)行,需打開(kāi)“運(yùn)行”窗口,敲入“cmd”以調(diào)出命令提示界面,輸入“net start mysql”即可啟動(dòng)服務(wù)。注意,如果在安裝過(guò)程中對(duì)數(shù)據(jù)庫(kù)的名稱(chēng)進(jìn)行了修改,那么啟動(dòng)服務(wù)的命令中的“mysql”應(yīng)替換為相應(yīng)的數(shù)據(jù)庫(kù)新名稱(chēng)。
應(yīng)以管理員身份安裝運(yùn)行,如,The myodbc-installer executable is located within the bin directory at the following path:E:MySQLdriveMySQL-connector-odbc-win32MySQL-connector-odbc-noinstall-5.3.7-win32.exe。這里需要注意安裝驅(qū)動(dòng)程序的位數(shù)應(yīng)該與Windows系統(tǒng)位數(shù)一致。
實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接需先設(shè)定DSN(DataSource Name數(shù)據(jù)源名稱(chēng)),操作流程:打開(kāi)“開(kāi)始”菜單,選擇“設(shè)置”,進(jìn)入“控制面板”,尋找“數(shù)據(jù)源”項(xiàng)。處于Windows系統(tǒng)的控制面板中,可找到ODBC數(shù)據(jù)源管理器,點(diǎn)擊進(jìn)入“ODBC數(shù)據(jù)源”,這里展示了3類(lèi)DSN:用戶(hù)DSN、系統(tǒng)DSN、文件DSN。本項(xiàng)目使用的是基于MySQL搭建的數(shù)據(jù)庫(kù),因此在“用戶(hù)DSN”頁(yè)面中點(diǎn)擊“添加”按鈕,會(huì)跳出一個(gè)“創(chuàng)建數(shù)據(jù)源”的窗口。在此步驟中,要選取已部署的MySQL ODBC 5.3 ANSI驅(qū)動(dòng)。選擇“MySQL ODBC 5.3.7 驅(qū)動(dòng)程序”,在新彈出的界面中,請(qǐng)于登錄分頁(yè)鍵入數(shù)據(jù)源詳情;在數(shù)據(jù)源名稱(chēng)一項(xiàng)中錄入“Data Source Name”;若需要,可在說(shuō)明欄位填寫(xiě)DiscrIPtion;數(shù)據(jù)源所在服務(wù)器的IP地址應(yīng)記錄在指定位置;而數(shù)據(jù)庫(kù)登錄用戶(hù)名需填寫(xiě)在用戶(hù)名一欄;相應(yīng)用戶(hù)的登錄密碼則輸入密碼字段;而數(shù)據(jù)庫(kù)類(lèi)型欄目則要明確選擇要連接的數(shù)據(jù)庫(kù)系統(tǒng)。設(shè)定完畢后,點(diǎn)擊“測(cè)試”以驗(yàn)配置無(wú)誤,如測(cè)試通過(guò)顯示配置成功,點(diǎn)擊“確定”按鈕即可返回至用戶(hù)DSN管理界面,如圖1所示。
圖1 數(shù)據(jù)庫(kù)安裝測(cè)試成功
Navicat是一款流行的多功能數(shù)據(jù)庫(kù)管理工具軟件。其支持多種數(shù)據(jù)庫(kù),包括MySQL、Oracle、PostgreSQL和SQLite等。Navicat可以執(zhí)行許多不同的操作,如執(zhí)行查詢(xún)語(yǔ)句、設(shè)計(jì)和管理數(shù)據(jù)庫(kù)表、導(dǎo)入和導(dǎo)出數(shù)據(jù)、執(zhí)行備份和恢復(fù)等任務(wù)。該軟件可以幫助用戶(hù)更輕松地管理各種數(shù)據(jù)庫(kù)。
安裝后的設(shè)置,安裝完成后點(diǎn)擊“連接”,選擇數(shù)據(jù)庫(kù)的名字和IP地址、端口、用戶(hù)名。輸入初始密碼,因?yàn)楸卷?xiàng)目需要本機(jī)作服務(wù)器,所以本機(jī)IP為localhost,如果想用外網(wǎng)IP,則可以輸入公網(wǎng)IP,點(diǎn)擊“連接測(cè)試”,查看是否成功。
在連接中新建數(shù)據(jù)庫(kù)命名為jlau,在jlau上點(diǎn)擊右鍵,字符集選utf8—UTF-8 Unicode,排序規(guī)則選utf8z-genersl-ci。在jlau表里點(diǎn)右鍵“運(yùn)行SQL文件”,把之前建立好的數(shù)據(jù)庫(kù)jlau.sql轉(zhuǎn)儲(chǔ)并導(dǎo)入進(jìn)來(lái)。導(dǎo)入成功后的信息界面如圖2所示。
圖2 變量參數(shù)表
圖3 數(shù)據(jù)庫(kù)的調(diào)取程序
圖4 數(shù)據(jù)庫(kù)訪問(wèn)程序
圖5 數(shù)據(jù)查詢(xún)結(jié)果
表格globalpara是全局變量,該表格中保存了以下信息。設(shè)置參數(shù)信息:室溫上下限、采集數(shù)據(jù)間隔、攝像頭IP、數(shù)據(jù)采集卡的串口號(hào)、每個(gè)地塊的作物名稱(chēng)。溫室執(zhí)行機(jī)構(gòu)開(kāi)關(guān)量工作狀態(tài)信息:噴灌泵、滴灌泵、濕簾泵、風(fēng)機(jī)、小遮陽(yáng)1、小遮陽(yáng)2、保溫被。實(shí)時(shí)測(cè)量值:室外風(fēng)速、室外風(fēng)向、室內(nèi)溫度、室外溫度、室內(nèi)濕度、室外濕度、室內(nèi)光照、室外光照、室內(nèi)空氣濕度、室外空氣濕度、二氧化碳、大氣壓力。表格globarecord按照設(shè)定好的數(shù)據(jù)采集間隔定期保存了采集溫室中實(shí)時(shí)測(cè)量值的保存數(shù)據(jù)。表格land和para中有代碼和名字的對(duì)應(yīng)關(guān)系,表格landpara中記錄各個(gè)地塊的實(shí)際設(shè)定值,表格landrecord記錄各個(gè)地塊的環(huán)境測(cè)量值。
通過(guò)MySQL建立一個(gè)本機(jī)作為服務(wù)器的鏈接。實(shí)現(xiàn)以下功能:參數(shù)設(shè)置,根據(jù)溫室大棚中種植作物的環(huán)境要求設(shè)置各項(xiàng)測(cè)量控制環(huán)境指標(biāo)要求及參數(shù);數(shù)據(jù)采集,可以實(shí)時(shí)采集數(shù)據(jù)信息;數(shù)據(jù)庫(kù)建立;數(shù)據(jù)存儲(chǔ)與分析,可以將數(shù)據(jù)進(jìn)行存儲(chǔ),并進(jìn)行調(diào)用;控制方式,計(jì)算機(jī)自動(dòng)控制與人工控制2種方式自由選擇。
多數(shù)先進(jìn)的編程語(yǔ)言都支持執(zhí)行數(shù)據(jù)庫(kù)操作,并提供必要的輔助功能。這一能力主要源自操作系統(tǒng)中的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,其克服了與數(shù)據(jù)庫(kù)底層通信的復(fù)雜性。無(wú)論哪種高級(jí)編程語(yǔ)言,其實(shí)質(zhì)是利用ODBC、DAO或ADO等技術(shù),通過(guò)API接口來(lái)進(jìn)行數(shù)據(jù)庫(kù)操作的。以LabVIEW編程平臺(tái)為例,其通過(guò)采用ADO技術(shù)并對(duì)其接口封裝,以簡(jiǎn)化了數(shù)據(jù)庫(kù)的訪問(wèn)過(guò)程。
ActiveX數(shù)據(jù)對(duì)象(ADO)是微軟基于OLE DB技術(shù)打造的一套高級(jí)數(shù)據(jù)訪問(wèn)應(yīng)用程序接口(API),旨在確保數(shù)據(jù)訪問(wèn)層能夠兼顧伸展性。ADO作為一套程序編制架構(gòu),其內(nèi)包涉及了多個(gè)構(gòu)件,包含連接(Connection)、命令(Command)、參數(shù)(Parameter)、字段(Field)、記錄集(Recordset)、異常(Error)、屬性(Property)、活動(dòng)(Event)以及集合(Collection)等。在眾多構(gòu)件中,以連接(Connection)、命令(Command)、記錄集(Recordset)為3大主要組成部分,參數(shù)(Parameters)、字段(Fields)、異常(Errors)、屬性(Properties)組建了4個(gè)主要的對(duì)象集。ADO的操作過(guò)程主要涉及建立數(shù)據(jù)源鏈接、設(shè)定訪問(wèn)模式、下達(dá)命令、結(jié)果保存到內(nèi)存緩存及更新數(shù)據(jù)庫(kù)資料多個(gè)環(huán)節(jié)。ADO的使用特點(diǎn)在于其簡(jiǎn)易性、高效率以及對(duì)內(nèi)存和硬盤(pán)資源占用較少等利益。
在LabVIEW中操縱數(shù)據(jù)庫(kù)需遵循流程:建立數(shù)據(jù)庫(kù)聯(lián)接,該流程起始于利用ADO Connection Create.vi創(chuàng)建Connection對(duì)象,繼而透過(guò)ADO Connection Open.vi完成對(duì)數(shù)據(jù)庫(kù)的接入,ADO Connection Open.vi里的ConnectionString參數(shù)指明目標(biāo)數(shù)據(jù)庫(kù),此參數(shù)依賴(lài)于用戶(hù)界面中文本框的輸入而定;撰寫(xiě)及實(shí)施SQL查詢(xún),這涉及到用戶(hù)界面的表格輸入字段指定相關(guān)表,同時(shí)在姓名和年齡的輸入框內(nèi)填寫(xiě)相應(yīng)的列信息,在程序的結(jié)構(gòu)圖區(qū),利用Format Into String拼接SQL查詢(xún)指令,并通過(guò)連線投遞至ADO Connection Execute.vi執(zhí)行,用戶(hù)還能在界面的Command Text展示區(qū)查閱生成的查詢(xún)語(yǔ)句;終止與數(shù)據(jù)庫(kù)的連接,在這一階段,需使用ADO Connection Close.vi關(guān)掉Connection對(duì)象,然后通過(guò)ADO Connection Destroy.vi徹底刪除該對(duì)象。
3.2.1 建立全局變量
需要建立全局變量,這些全局變量需要在整個(gè)程序中被調(diào)用并進(jìn)行賦值,數(shù)據(jù)的存儲(chǔ)需要將全局變量組成1個(gè)新的數(shù)組,再將數(shù)組信息依次寫(xiě)入數(shù)據(jù)庫(kù)。
3.2.2 數(shù)據(jù)的調(diào)取
程序每次啟動(dòng)運(yùn)行時(shí)需要將數(shù)據(jù)庫(kù)中設(shè)定好的參數(shù)調(diào)出并存入全局變量,這樣才能得到溫室大棚設(shè)備狀態(tài)的信息,由于數(shù)據(jù)庫(kù)中的信息是以字符串的形式體現(xiàn),需要對(duì)提取的信息進(jìn)行計(jì)算,將某些帶有數(shù)字信息的字符串轉(zhuǎn)換成數(shù)值類(lèi)型。
3.2.3 數(shù)據(jù)庫(kù)的訪問(wèn)
設(shè)置服務(wù)器的驅(qū)動(dòng),服務(wù)器的IP,Driver=MySQL ODBC 5.3 ANSI Driver;server=222.168.61.190;需要訪問(wèn)的表格名稱(chēng)DATABASE=jlau;訪問(wèn)的賬號(hào)UID=jlau7234;密碼PWD=qwer1234。具體操作內(nèi)容為“當(dāng)代碼penguanbeng”啟動(dòng)時(shí)設(shè)置全局變量“globalpara”為“1”,(update globalpara set value=‘1’where code=‘penguanbeng’)這樣就可以更改全局變量的值。
數(shù)據(jù)查詢(xún)的前面板設(shè)計(jì)了輸入控件,包括起始時(shí)間和停止時(shí)間,查詢(xún)的地塊對(duì)象,可實(shí)現(xiàn)數(shù)據(jù)的查詢(xún)、保存和退出3個(gè)功能。查詢(xún)的數(shù)據(jù)會(huì)在屏幕窗口進(jìn)行顯示,同時(shí)可以將查詢(xún)的數(shù)據(jù)進(jìn)行保存。
數(shù)據(jù)查詢(xún)后臺(tái)程序被打包成查詢(xún)底層子VI。啟動(dòng)服務(wù)端的執(zhí)行代碼示例:“連接器=MySQL ODBC 5.3 ANSI 驅(qū)動(dòng)程序;服務(wù)器=當(dāng)前主機(jī)地址;數(shù)據(jù)庫(kù)名=jlau;用戶(hù)名=jlau7234;密碼=Aa!‘123123’”。執(zhí)行地塊選擇、參數(shù)和查詢(xún)時(shí)間命令如下:“select time from landrecord where landcode=‘land1’and paracode=‘dishi1’and time>=‘起始時(shí)間’and time<=‘停止時(shí)間’”。執(zhí)行地塊選擇和種植品種命令如下:“select value from landpara where paracode=‘pinzhong’and landcode=‘ land8’”。其他查詢(xún)的指令都是通過(guò)數(shù)據(jù)串命令的集合形成。上述命令使用了select語(yǔ)句,對(duì)數(shù)據(jù)進(jìn)行了檢索,檢索需要提供檢索條件[3],從上述命令中可見(jiàn)相關(guān)條件的選擇。
查詢(xún)后數(shù)據(jù)形成1維數(shù)組,1維數(shù)組再組成2維數(shù)組顯示在程序前面板。
TDMS格式檔案:由NI企業(yè)開(kāi)發(fā)的TDMS格式為一種數(shù)據(jù)管理檔案規(guī)范,該規(guī)范采用二進(jìn)制形式記錄信息,因體積輕巧、處理速度迅捷而能有效應(yīng)對(duì)即時(shí)數(shù)據(jù)記錄的需求。
生成TDMS文件同時(shí),也會(huì)產(chǎn)生與之相匹配的tdms_index文件,通過(guò)此索引文件能夠提高數(shù)據(jù)檢索速率。如需節(jié)省內(nèi)存空間,亦可選擇不利用tdms_index文件。
4.2.1 TDMS打開(kāi)
打開(kāi)用于讀寫(xiě)操作的.tdms格式的文檔,子級(jí)虛擬儀器同樣適用于生成新檔案或更新舊檔案。使用TDMS關(guān)閉函數(shù)可關(guān)閉文件的引用。
4.2.2 TDMS載入
按照輸入接口所需的數(shù)據(jù)類(lèi)型格式,載入特定的.tdms文件并返回其數(shù)據(jù)內(nèi)容。如數(shù)據(jù)包含縮放信息,VI可自動(dòng)換算數(shù)據(jù)。匯總輸入與位移參數(shù)作用于提取特定的數(shù)據(jù)片段。
4.2.3 TDMS關(guān)閉
關(guān)閉用TDMS打開(kāi)函數(shù)打開(kāi)的.tdms文件。
現(xiàn)在已經(jīng)進(jìn)入了AI的時(shí)代,而大數(shù)據(jù)已經(jīng)成為了各行各業(yè)數(shù)字化發(fā)展的基石,在農(nóng)業(yè)生產(chǎn)方面更是離不開(kāi)數(shù)字化信息的支持,農(nóng)業(yè)生產(chǎn)需要科學(xué)化,農(nóng)業(yè)生產(chǎn)涉及到環(huán)境條件的限制,面臨的不確定因素比工業(yè)化更多,更難控制,再加上農(nóng)作物種植科學(xué)的要求,生物技術(shù)的要求,就更加復(fù)雜,種植數(shù)據(jù)的信息需要采集,統(tǒng)計(jì)才能被科學(xué)分析和利用。本項(xiàng)目?jī)H在數(shù)據(jù)采集與存儲(chǔ)調(diào)用方面進(jìn)行了粗淺的研究,目的在于提供一種精準(zhǔn)的可定制的數(shù)據(jù)采集系統(tǒng),涉及到小型數(shù)據(jù)庫(kù)服務(wù)器的設(shè)立及采集數(shù)據(jù)的存儲(chǔ)和調(diào)用,在數(shù)據(jù)共享的時(shí)代,數(shù)據(jù)需要積累和分析。本文以溫室種植為載體闡明了數(shù)據(jù)庫(kù)的建立與操作,該方案也可以用于畜牧業(yè)、林業(yè)等多個(gè)行業(yè)生產(chǎn)的數(shù)據(jù)庫(kù)建立。