李玉霞 狄敬國
摘要為了減輕溫室管理的難度,實現(xiàn)溫室的遠(yuǎn)程監(jiān)控,提出了一種新型智能化的溫室控制方法,采用VC++進(jìn)行編程,實現(xiàn)計算機(jī)與PLC的遠(yuǎn)程通信,可以靈活地監(jiān)測控制溫室里的溫度、潮濕度、光照強(qiáng)度等。操作控制方便,工作可靠穩(wěn)定,環(huán)保節(jié)能。實際操作證實,該遠(yuǎn)程通信技術(shù)在溫室的自動遠(yuǎn)程控制方面起到了很大的作用,提高了勞動效率和農(nóng)業(yè)管理水平。
關(guān)鍵詞PLC;VC++;遠(yuǎn)程通信
中圖分類號S273文獻(xiàn)標(biāo)識碼A文章編號0517-6611(2014)09-02799-02
基金項目山東省星火計劃項目(2012XH11009)。
作者簡介李玉霞(1979- ),女,山東萊蕪人,講師,從事通信技術(shù)研究。
監(jiān)測控制溫室環(huán)境要充分根據(jù)客觀的自然條件,例如太陽光照、雨水等非人為資源,進(jìn)一步通過操作調(diào)節(jié)溫室內(nèi)相應(yīng)的氣溫、潮濕度、光照強(qiáng)度等必須的生長環(huán)境參數(shù),才可以給溫室內(nèi)的植物提供優(yōu)良的生長環(huán)境,達(dá)到優(yōu)質(zhì)、高產(chǎn)、高效的目的,從而提高經(jīng)濟(jì)效益[1]。為了使人們的生活更加方便,多種作物、水果蔬菜必須在溫室中種植。該溫室控制系統(tǒng)采用PLC作為控制器。PLC采集并分析溫室的溫度、濕度、光照等數(shù)據(jù),通過控制加熱器、通風(fēng)機(jī)、移動噴灌等設(shè)備,達(dá)到自動控制各項參數(shù)的目的。
為減輕溫室管理的難度,實現(xiàn)對溫室的遠(yuǎn)程監(jiān)控與管理,筆者基于FINS協(xié)議實現(xiàn)了計算機(jī)與PLC的遠(yuǎn)程通信。計算機(jī)采用VC++ 6.0編程,借助現(xiàn)有的電話網(wǎng)絡(luò)可以方便地讀取參數(shù)數(shù)據(jù),并控制溫室的各種設(shè)備,方法簡單,實用性強(qiáng),特別適合居住地與溫室相距較遠(yuǎn)、數(shù)據(jù)量較小的場合。
1硬件設(shè)計
該設(shè)計以O(shè)MRON公司的CP1H PLC作為溫室控制器。CP1H主機(jī)支持模擬量輸入輸出,無需額外擴(kuò)展,節(jié)省成本。溫室內(nèi)現(xiàn)場數(shù)據(jù)信息的采集是利用不同的傳感器,例如對溫度數(shù)據(jù)的采集使用溫度傳感器,對光照強(qiáng)度參數(shù)的采集利用光電傳感器,對濕度數(shù)據(jù)的采集利用濕度傳感器等。根據(jù)所采集信號控制調(diào)溫抽濕風(fēng)扇、溫室內(nèi)外設(shè)置的遮陽網(wǎng)、灌溉用的水泵、風(fēng)機(jī)等設(shè)備,從而達(dá)到對溫室的智能操控調(diào)節(jié),能夠靈活自主地對溫室內(nèi)的相應(yīng)信號參數(shù)進(jìn)行調(diào)節(jié),對溫室內(nèi)的作物生長參數(shù)能夠進(jìn)行自動監(jiān)控,使系統(tǒng)的可維護(hù)性和可擴(kuò)展性進(jìn)一步得到提升。
下位PLC的監(jiān)測控制是由上位機(jī)來完成的,該系統(tǒng)采用的是計算機(jī),從而完成了計算機(jī)遠(yuǎn)程對溫室相應(yīng)參數(shù)的操作。CP1H型PLC上沒有串行接口,需要加裝 RS232C串行通信模塊(型號為CP1WCIF01),該通信模塊支持多種通信功能。CP1H型PLC是OMRON的新型PLC,數(shù)據(jù)區(qū)有較大擴(kuò)充,其通信協(xié)議也有很大變化,因此該系統(tǒng)采用FINS通信協(xié)議實現(xiàn)通信[2]。計算機(jī)與PLC都要連接調(diào)制解調(diào)器,計算機(jī)可以讀寫PLC的數(shù)據(jù)甚至控制其運行,從而實現(xiàn)上位計算機(jī)對溫室的遠(yuǎn)程管理與監(jiān)控。通信結(jié)構(gòu)如圖1所示。
3FINS通信協(xié)議
FINS通信協(xié)議是OMRON網(wǎng)絡(luò)通信的核心,用于工廠自動化網(wǎng)絡(luò)的指令響應(yīng)系統(tǒng)。FINS通信幀包括FINS指令幀和FINS響應(yīng)幀兩種形式。兩種形式的幀都是由FINS報頭(存儲傳輸控制信息)、FINS指令域(存儲1個FINS指令)以及FINS參數(shù)/數(shù)據(jù)域(存儲指令參數(shù)和發(fā)送/響應(yīng)數(shù)據(jù))3個部分所組成的。需要特別指出的是在用FINS協(xié)議完成電腦與PLC的通訊時,要結(jié)合OMRON公司的HOSTLINK協(xié)議來實現(xiàn),即在FINS數(shù)據(jù)幀前后加入HOSTLINK的起始符、校驗碼和結(jié)束符等信息。通信幀的開始和結(jié)束分別用起始符及設(shè)備號和校驗碼及結(jié)束符標(biāo)示。響應(yīng)幀中還包括響應(yīng)碼。FINS嵌入HOST-LINK后,完整的通信幀格式如圖2所示。
4計算機(jī)程序設(shè)計
VC++6.0中可以利用MSComm控件通過串行口發(fā)送和接收數(shù)據(jù)。如果通過串口連接Modem,則可以經(jīng)過電話線與遠(yuǎn)程設(shè)備進(jìn)行數(shù)據(jù)交換。MSComm控件提供了事件驅(qū)動法來處理串口數(shù)據(jù)交換。該方法利用OnComm事件捕獲通信數(shù)據(jù),當(dāng)CommEvent屬性發(fā)生變化時,就產(chǎn)生事件并等待相應(yīng)處理[3]。
上位機(jī)對PLC進(jìn)行讀寫操作時,上位機(jī)先發(fā)出命令給PLC,啟動通信過程,并接收PLC的返回數(shù)據(jù)[4]。程序主要由串口初始化、Modem撥號、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收與校驗碼計算等幾部分組成。
4.1Modem撥號Modem啟動后首先進(jìn)入命令狀態(tài),準(zhǔn)備接收和解釋上位機(jī)發(fā)來的AT命令,連接后進(jìn)入在線狀態(tài)開始數(shù)據(jù)的發(fā)送和接收,此時不接收用戶命令,直至上位機(jī)發(fā)送“+++”后,再進(jìn)入命令狀態(tài)。Modem命令格式是AT+命令及其參數(shù)。該程序使用音頻撥號ATDT+電話號碼,上位機(jī)通過Modem與遠(yuǎn)程PLC建立通信。撥號成功后,響應(yīng)數(shù)據(jù)顯示: