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