智能照明控制在我國存在極大發(fā)展?jié)摿爸匾F(xiàn)實意義。本文將無線傳感器網絡、OPC通信與照明控制技術相結合,設計一套智能照明控制系統(tǒng),實現(xiàn)燈具自動控制,提高系統(tǒng)管理水平。
本文的智能照明控制系統(tǒng)由無線傳感器網絡、OPC服務器和用戶界面三部分組成。
底層的無線網絡采用星型結構,包括一個基站和多個從站。其中,從站與被控LED燈連接并將燈的狀態(tài)信息傳送給基站。基站通過RS232與PC機相連,將接受的控制命令下達給從站。系統(tǒng)使用ATmega16L單片機和nRF905無線射頻模塊構成工作于433MHz的無線網絡節(jié)點,兩者通過SPI串行口相連。
圖1 節(jié)點結構
上位機中具有專門開發(fā)的OPC DA服務器。OPC 服務器與組態(tài)軟件中開發(fā)的用戶界面之間采用OPC技術通信,與無線網絡中的基站之間采用RS232串行通信。OPC服務器負責將用戶下達的控制命令傳送給無線網絡中的基站,并將基站傳輸?shù)脑O備狀態(tài)上傳至用戶界面顯示。
在組態(tài)軟件中開發(fā)的用戶界面能實時準確的顯示設備狀態(tài),并可實現(xiàn)對LED燈的組合控制、溫度控制、PWM控制、定時控制及操作記錄等功能。
圖2 系統(tǒng)框圖
2.1 無線傳感器網絡設計
無線傳感器網絡是由一些低功耗、低成本、體積小的傳感器節(jié)點,以無線通訊方式組成的網絡,融合傳感器技術、信息處理技術、嵌入式技術和網絡通信技術,實現(xiàn)信息的采集、處理、傳輸及應用,具有施工成本低、系統(tǒng)擴展性好、運行維護易等優(yōu)點。本系統(tǒng)的無線網絡結構設計如下:
1)網絡拓撲
系統(tǒng)無線網絡采用星型結構,有基站和從站兩類節(jié)點。基站與各從站間進行雙向通信,從站互不通信。網絡中的每個節(jié)點都配有ID地址,有接收、發(fā)送兩種狀態(tài),默認處于接收狀態(tài)。
2)MAC層協(xié)議
為避免多個從站同時向基站發(fā)送信息導致信道沖突,且照明系統(tǒng)對控制時延性要求不高,所以網絡MAC層采用非堅持CSMA/CA協(xié)議。通信前,節(jié)點先利用nRF905的載波檢測引腳CD監(jiān)聽信道是否空閑,若空氣中有同頻信號則CD自動置高。若信道忙碌則節(jié)點隨機延遲一段時間后再重新監(jiān)聽。
信道空閑時,節(jié)點并不立即發(fā)送,而是采取一定的退避機制,將信道沖突的概率降至最小。因為當某從站與基站通信完畢的瞬間,可能有多個要發(fā)送數(shù)據(jù)的從站同時監(jiān)聽到信道空閑,此時信道沖突的可能性最大,所以節(jié)點隨機退避一段時間后再進行發(fā)送。
這里采用二進制指數(shù)退避算法BEB,設爭用期(即節(jié)點發(fā)出數(shù)據(jù)至接收到信道沖突的時間)為2t,各站重傳次數(shù)為N,從整數(shù)集合[0,1,…,(2N-1)]中隨機取數(shù),記為R。節(jié)點重傳產生的時延D為2t的R倍,即D=R×2t。
站點在發(fā)送前若檢測到信道空閑,就立即啟動退避計數(shù)器,只要信道空閑,退避計數(shù)器就遞減,若退避過程中檢測到信道被占用則暫停退避計數(shù)器并保持計數(shù)器值不變,當信道重新空閑時在原有計數(shù)值基礎上再次啟動退避計數(shù)器,當計數(shù)值減到零時節(jié)點發(fā)送數(shù)據(jù)。
圖3 非堅持CSMA/CA流程圖
3)沖突避免策略
CSMA/CA協(xié)議只能解決發(fā)送端的數(shù)據(jù)沖突問題,但接收端仍存在數(shù)據(jù)沖突的可能,即“隱藏節(jié)點”問題。因此系統(tǒng)引入RTS/CTS/DATA/ACK握手機制。具體過程如下:
⑴從站向基站發(fā)送前先通過競爭方式獲得信道使用權,再向基站發(fā)送請求連接幀RTS(Request To Send)。
⑵基站收到從站的RTS幀后,向從站發(fā)送連接確認幀CTS(Clear To Send),建立兩者之間的通信連接。
⑶從站收到基站的CTS幀后,向基站發(fā)送數(shù)據(jù)幀DATA,若沒有收到CTS幀,則重新發(fā)送RTS幀。
⑷基站收到從站的DATA幀后,向從站發(fā)送數(shù)據(jù)確認幀ACK。
⑸從站收到基站的ACK幀后,整個通信過程結束,若沒有收到,則重新發(fā)送DATA。
圖4 從站流程圖
圖5 基站流程圖
4)差錯控制
在差錯控制方面,系統(tǒng)采取數(shù)據(jù)重發(fā)機制與nRF905自身CRC校驗相結合的方式。從站在發(fā)送RTS或DATA后,若在一定時間內沒有收到基站的CTS或ACK,則重新發(fā)送傳輸失敗的幀,直到接收到回復或重發(fā)次數(shù)達到設定值。
另外,nRF905提供對CRC校驗的硬件支持,通過設置RF配置寄存器中的CRC_MODE值,采取8位CRC校驗。當接收的數(shù)據(jù)CRC校驗出錯時,nRF905會自動丟棄錯誤幀。
5)數(shù)據(jù)傳輸
系統(tǒng)有兩種數(shù)據(jù)傳輸模式:點播和廣播。點播是指基站向指定從站發(fā)送命令或某一從站向基站傳輸數(shù)據(jù),是點對點通信。廣播是指基站向所有從站發(fā)送命令,此時目的地址為統(tǒng)一值,是點對多點通信。
6)通信幀
系統(tǒng)有兩種幀類型,分別是控制幀RTS、CTS、ACK和數(shù)據(jù)幀DATA。其中,前導碼表明幀的開始;源地址為發(fā)送的設備地址;目的地址為接收的設備地址;幀類別說明此幀的功能;有效數(shù)據(jù)是傳輸?shù)木唧w內容;結束碼表明此幀的結束。
2.2 OPC DA服務器
OPC技術是用于過程控制的對象鏈接與嵌入技術,其以COM/DCOM/COM+技術為基礎,采用服務器/客戶端模式。本系統(tǒng)針對智能照明控制系統(tǒng)的需求,開發(fā)專門的OPC DA服務器,設計如下
圖6 OPC DA服務器結構圖
1)OPC對象與接口
系統(tǒng)編寫實現(xiàn)OPC DA服務器的定制接口,采用E形式,以OPC3.0規(guī)范為標準,向下兼容OPC2.0版。系統(tǒng)的OPC對象與接口包括OPC Server、OPC Group和OPC Item三種對象。
其中,OPC Server和OPC Group為標準COM對象,服務器對象不支持聚合,支持連接點機制。組對象支持聚合、連接點機制。項對象不是標準的COM對象,通過一個類進行描述,在類中定義項對象的屬性和操作方法。
系統(tǒng)OPC Server對象實現(xiàn)的接口包括:IOPCServer、IOPCommon、
IOPCBrowseServerAddressSpace、IOPCItemIO 、IOPCItemProperties及IOPCBrowse。OPC Group對象實現(xiàn)的接口包括:IOPCItemMgt、IOPCItemDeadbandMgt、IOPCGroupStateMgt2、IOPCGroupStateMgt、 IOPCSyncIO、 IOPCSyncIO2、IOPCAsyncIO、 IOPCAsyncIO2及IOPCAsyncIO3。
2)服務器地址空間
系統(tǒng)的服務器地址空間由OPC服務器內所有可讀寫的數(shù)據(jù)項組成,根據(jù)實際情況預先設計,采用樹型結構。整個服務器地址空間使用一個自定義的結構體數(shù)組進行存儲,其結構體成員包括:結點唯一的ID號、結點的名字、父結點的ID號、左子女結點的ID號和右兄弟結點的ID號。最后,系統(tǒng)通過定義一個類對服務器地址空間進行管理。
3)硬件數(shù)據(jù)采集部分
OPC DA服務器通過RS232串行口與無線網絡中的基站連接。本系統(tǒng)將與串口通信有關的API函數(shù)封裝在一個類中進行管理,并定義一個屬于此類的全局變量。通過對此全局變量的讀操作,將無線網絡基站上傳的設備信息寫入服務器地址空間及相應的OPC Item中。當OPC服務器接收到控制命令后,會自動調用串口全局變量的寫函數(shù),將指令下發(fā)給無線網絡中的基站,并由基站將指令傳輸給具體從站。
4)線程設計
圖7 OPC DA服務器更新及事務處理流程圖
系統(tǒng)的OPC服務器包括一個主線程,兩個輔助線程。主線程由服務器啟動時自動創(chuàng)建,用于初始化COM庫,建立消息循環(huán)和處理消息。第一個輔助線程用于處理服務器數(shù)據(jù)更新及異步事務,線程會周期性更新每個OPC Server對象中所有組對象的數(shù)據(jù)項,同時執(zhí)行異步操作事務,并將操作結果回調給客戶。
第二個輔助線程用于RS232串口監(jiān)測,當串口接收到數(shù)據(jù)后,會以消息方式通知主線程,激發(fā)消息處理函數(shù)對數(shù)據(jù)進行處理,最后將處理好的數(shù)據(jù)寫入服務器地址空間。不同線程間采用臨界區(qū)方式進行同步。
5)數(shù)據(jù)訪問
本系統(tǒng)的OPC服務器支持同步和異步兩種數(shù)據(jù)訪問方式,包括提供六種讀數(shù)據(jù)方式,其中IOPCSyncIO2::ReadMaxAge、IOPCSyncIO::Read和IOPCItemIO::Read用于同步讀;IOPCAsyncIO2::Read、IOPCAsyncIO3::ReadMaxAge用于異步讀;而當數(shù)據(jù)改變或異步刷新被調用時,采用
IOPCCallback::OnDataChange。
本文由于無線網絡中的基站會自動將設備最新狀態(tài)上傳至OPC服務器中的服務器地址空間,因此所有讀操作都直接讀取OPC服務器中的內存數(shù)據(jù)。OPC服務器具有五種寫數(shù)據(jù)方式,其中同步寫操作包括:IOPCSyncIO::Write、IOPCSyncIO2::WriteVQT及IOPCItemIO::WriteVQT;異步寫操作包括:IOPCAsyncIO3::WriteVQT、IOPCAsyncIO2::Write。當用戶下達指令時,OPC服務器通過調用RS232串口寫函數(shù),將命令下傳給無線網絡中的基站。
圖8 異步讀數(shù)據(jù)流程圖
圖9 同步寫數(shù)據(jù)流程
本文使用ATmegal6L和nRF905構成無線節(jié)點模擬組建一個智能照明控制系統(tǒng),模擬實現(xiàn)LED燈的組合控制、PWM控制、定時控制等功能。
圖10 模擬智能照明控制系統(tǒng)實物圖
系統(tǒng)通過ATmega16L開發(fā)板上的LED燈模擬被控燈具。溫度控制方面,采用白熾燈與晶閘管BTA12-600及光耦隔離器MOC3041相連接模擬被控端。從站的微控制器將實際燈溫度值與設定值進行比較,通過PID算法計算修正PWM占空比,調整燈的明暗程度。
最后,系統(tǒng)利用組態(tài)王軟件開發(fā)用戶界面。在操作界面上,可實時顯示設備狀態(tài),對LED燈進行各種控制操作。系統(tǒng)會對各項操作進行歷史記錄,同時可利用組態(tài)王的Web功能使用戶能隨時隨地通過Internet/Intranet實現(xiàn)設備的遠程監(jiān)控。
圖11 用戶操作界面
試驗平臺的模擬運行結果表明,該智能照明控制系統(tǒng)滿足設計要求,具備良好的可擴展性。
部分程序代碼:
uchar csma_ca(void)//載波檢測和退避機制
{
uint s=1;
uchar i=0;
uchar ran=0;
uchar j=0;
for(j=0;j<8;j++)//重傳次數(shù)設置為9次
{
if((PIND&RF_CD)==0)//載波檢測
{
srand(t);//隨機取值R
ran=(uchar)(rand()%s);
ran=ran*30; // D=R×2t
delay_ms(ran);
}
else
{
s=s<<1;//二進制指數(shù)退避
srand(t);
ran=(uchar)(rand()%s);
ran=ran*30;
delay_ms(ran);
}
s=s<<1;
if((PIND&RF_CD)==0)
break;
}
if(j<9)
i=1;//CSMA/CA成功
else
i=0; //CSMA/CA失敗
return i;
}
本文將無線傳感器網絡、OPC DA服務器應用于智能照明控制系統(tǒng)中,實現(xiàn)從用戶界面到無線終端的整體控制。經驗證,系統(tǒng)安裝方便、工作穩(wěn)定、各部分銜接良好,滿足控制要求。此外,系統(tǒng)還易于擴展,具有良好的通用性和一定的可移植性,稍作修改可應用于其他控制領域。
本文編自《電氣技術》,原文標題為“基于無線傳感器網絡的智能照明控制系統(tǒng)”,作者為劉璐、周靖林。