家居控制軟件 KNX通訊協(xié)議模塊 概要設(shè)計(jì)說明書 V1.00_第1頁
家居控制軟件 KNX通訊協(xié)議模塊 概要設(shè)計(jì)說明書 V1.00_第2頁
家居控制軟件 KNX通訊協(xié)議模塊 概要設(shè)計(jì)說明書 V1.00_第3頁
家居控制軟件 KNX通訊協(xié)議模塊 概要設(shè)計(jì)說明書 V1.00_第4頁
家居控制軟件 KNX通訊協(xié)議模塊 概要設(shè)計(jì)說明書 V1.00_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGE家居控制軟件KNX通訊協(xié)議模塊概要設(shè)計(jì)說明書文件編號保密級別總頁數(shù)編制

評審記錄上述問題修改驗(yàn)證后,由驗(yàn)證后,本文件即可發(fā)布。評審人員簽字:問題修改驗(yàn)證結(jié)果:驗(yàn)證人簽字:時(shí)間:年月日

變更日志編號版本修改內(nèi)容修改人修改日期1234

目錄1 引言 11.1編寫目的 11.2背景 11.3定義 11.4參考資料 12 總體設(shè)計(jì) 22.1需求規(guī)定 22.1.1主角 22.1.2系統(tǒng)邊界 22.2運(yùn)行環(huán)境 22.2.1硬件環(huán)境 22.2.2軟件環(huán)境 32.3概要設(shè)計(jì)決策 32.3.1設(shè)計(jì)原則 32.3.2設(shè)計(jì)決策 32.4開發(fā)環(huán)境 33 模塊設(shè)計(jì) 53.1接口模塊定義 53.1.1功能說明 53.1.2數(shù)據(jù)與接口的定義 53.1.3接口設(shè)計(jì) 73.1.4Objective-C調(diào)用接口模塊源碼示例 104 質(zhì)量要求 134.1性能要求 134.2功能測試要求 134.2.1測試內(nèi)容 134.2.2測試方法 13PAGE13引言1.1編寫目的本文檔是對家居控制軟件的需求規(guī)格進(jìn)行詳細(xì)分析和討論后得出的概要設(shè)計(jì)說明書,旨在明確家居控制軟件通訊協(xié)議模塊的設(shè)計(jì)目標(biāo)。通過本概要設(shè)計(jì)說明書,可以了解到家居控制軟件的通訊協(xié)議模塊開發(fā)的技術(shù)路線、功能邊界、模塊設(shè)計(jì)等。本文檔面向的讀者是:家居控制軟件的開發(fā)人員及測試人員,家居控制軟件的通訊協(xié)議模塊概要設(shè)計(jì)說明書的評審人員。1.2背景軟件名稱:家居控制軟件通訊協(xié)議模塊。家居控制軟件通訊協(xié)議模塊,是家居控制軟件與設(shè)備之間通訊的核心模塊,主要用于實(shí)現(xiàn)EIB網(wǎng)絡(luò)的互聯(lián)接入、KNXnet/IP網(wǎng)關(guān)的配置和通信,以及設(shè)備數(shù)據(jù)的讀寫、設(shè)備管理等功能。1.3定義下表列出本報(bào)告中專門術(shù)語的定義、英文縮寫詞的原詞組和意義、項(xiàng)目組內(nèi)達(dá)成一致意見的專用詞匯,同時(shí)繼承全部的先前過程中定義過的詞匯。詞匯名稱詞匯含義備注1.4參考資料編號資料名稱說明1《家居控制軟件項(xiàng)目立項(xiàng)書》2《家居控制軟件項(xiàng)目計(jì)劃書》3《家居控制軟件需求規(guī)格說明書》總體設(shè)計(jì)2.1需求規(guī)定2.1.1主角EIB網(wǎng)關(guān)EIB網(wǎng)關(guān)包括EIB/RS232網(wǎng)關(guān)、EIB/USB網(wǎng)關(guān)以及EIB/IP網(wǎng)關(guān)三種。家居控制軟件通過EIB網(wǎng)關(guān)實(shí)現(xiàn)對EIB總線系統(tǒng)的通訊,本軟件采用IP網(wǎng)關(guān)。EIB通訊群組在EIB總線標(biāo)準(zhǔn)中定義了實(shí)現(xiàn)具體通訊功能的通訊群組,家居控制軟件也需要按照標(biāo)準(zhǔn)定義通訊群組功能并通過EIB網(wǎng)關(guān)收發(fā)總線數(shù)據(jù),實(shí)現(xiàn)EIB總線設(shè)備狀態(tài)的監(jiān)視和控制。UI軟件模塊UI軟件模塊是家居控制軟件的用戶與EIB總線的人機(jī)接口界面,它通過以太網(wǎng)連接到EIB網(wǎng)關(guān),通過調(diào)用通訊協(xié)議模塊的通訊幀,實(shí)現(xiàn)EIB總線設(shè)備數(shù)據(jù)的操作和管理功能。通訊協(xié)議模塊家居控制軟件通訊協(xié)議模塊,實(shí)現(xiàn)EIB/IP網(wǎng)關(guān)的TCP/IP通訊管理、設(shè)備數(shù)據(jù)的讀寫等功能。通訊協(xié)議模塊主要為家居控制軟件的UI軟件模塊提供通訊接口。2.1.2系統(tǒng)邊界系統(tǒng)邊界定義了本模塊對其它模塊提供的外部接口,應(yīng)包括:數(shù)據(jù)結(jié)構(gòu)與回調(diào)接口的定義;EIB/IP網(wǎng)關(guān)的TCP/IP通訊管理;邏輯組數(shù)據(jù)的讀寫;2.2運(yùn)行環(huán)境2.2.1硬件環(huán)境硬件環(huán)境類別要求備注CPU2.0MHz及以上內(nèi)存1GB及以上硬盤10GB及以上以太網(wǎng)口1個(gè)或更多2.2.2軟件環(huán)境軟件環(huán)境類別要求備注操作系統(tǒng)MacOS/iOS2.3概要設(shè)計(jì)決策2.3.1設(shè)計(jì)原則軟件需要有一個(gè)良好的設(shè)計(jì)框架。為了軟件能適應(yīng)未來幾年的現(xiàn)場需要,軟件應(yīng)該根據(jù)實(shí)際需要保持一定的可擴(kuò)展,這就要求系統(tǒng)升級時(shí)對已基于該系統(tǒng)實(shí)施的系統(tǒng)兼容,軟件設(shè)計(jì)必須有良好的設(shè)計(jì)框架。其中包括:第一、多采用復(fù)用技術(shù)。第二、底層業(yè)務(wù)模塊相對獨(dú)立,低耦合度。第三、保持業(yè)務(wù)模型穩(wěn)定,表現(xiàn)出來就是Interface穩(wěn)定。軟件需要具有持續(xù)開發(fā),功能完善能力,具有良好的向前兼容性。考慮到目前該軟件模塊使用對象的實(shí)際操作水平以及需求,軟件開發(fā)不可能一步到位,但是必須考慮到未來的需求,目前系統(tǒng)必須為以后的功能完善,擴(kuò)展留有充分的接口,系統(tǒng)具有良好的向前兼容性。2.3.2設(shè)計(jì)決策本節(jié)記錄對概要設(shè)計(jì)具有重要影響的軟件需求和約束,描述相關(guān)的重要決策和決策的原因。這些決策一般對設(shè)計(jì)有很大影響,它們的改變很難通過設(shè)計(jì)技巧來屏蔽,例如所選用的開發(fā)語言,所選用的平臺、組件和框架,對關(guān)鍵業(yè)務(wù),類和方法的處理等。決策:通訊模塊開發(fā)語言選擇一方面,Objective-C是對C的擴(kuò)展,它對C++的支持也很好,考慮模塊與Objective-C程序的兼容性,應(yīng)選擇Objective-C或C或C++來實(shí)現(xiàn);另一方面,考慮到模塊移植與跨平臺的方便性,模塊使用C或C++開發(fā)無論是在MacOS/iOS,還是Windows或Linux平臺均可應(yīng)用。因些,該模塊使用C或C++開發(fā);再考慮到接口設(shè)計(jì)的方便性和易用性,將使用到C++中的類、虛函數(shù)等相關(guān)的概念,因此選用C++。2.4開發(fā)環(huán)境開發(fā)用機(jī)器類別要求備注CPU2.0GHz或以上內(nèi)存最少1GB主機(jī)硬盤最少80GB網(wǎng)卡10/100Mb/sUSB口至少1個(gè)軟件環(huán)境類別要求備注操作系統(tǒng)MacOS開發(fā)軟件XCode模塊設(shè)計(jì)3.1接口模塊定義3.1.1功能說明(1)由于家居控制軟件的UI軟件模塊與EIB/IP網(wǎng)關(guān)之間的通訊,兩者之間需要定義公共的數(shù)據(jù)結(jié)構(gòu)和接口,用于統(tǒng)一二者之間的通訊方式和通訊規(guī)格。(2)家居控制軟件的UI軟件模塊與EIB/IP網(wǎng)關(guān)之間的通訊,是使用基于TCP/IP協(xié)議的UDP報(bào)文來傳輸KNX幀的,因此,需要在UI軟件模塊與IP網(wǎng)關(guān)之間建立TCP/IP通訊。(3)KNX協(xié)議模塊應(yīng)該為家居控制軟件的通訊相關(guān)模塊(主要為UI模塊),提供邏輯組數(shù)據(jù)的讀寫功能。(4)KNX協(xié)議模塊在發(fā)生異常的情況下,應(yīng)給其調(diào)用者一個(gè)交待,返回一定的錯(cuò)誤碼。3.1.2數(shù)據(jù)與接口的定義(1)數(shù)據(jù)類型定義: #defineTXT_DATA_SIZE 32 //文本值最大長度 //KNXdatapointtypes typedefenum { DPT_Unknown=0, DPT_Boolean, DPT_1BitCtrl, DPT_3BitCtrl, DPT_CharSet, DPT_8BitUnSign, DPT_8BitSign, DPT_2OctUnSign, DPT_2OctSign, DPT_2OctFloat, DPT_Time, DPT_Date, DPT_4OctUnSign, DPT_4OctSign, DPT_4OctFloat, DPT_Access, DPT_String }DATA_POINT_TYPE; //KNXdatatypes typedefenum { DATA_TYPE_UNKNOWN=0, //未知類型 DATA_TYPE_BINARY, //布爾量類型 DATA_TYPE_ANALOG, //模擬量類型 DATA_TYPE_TEXT, //文本類型 DATA_TYPE_DATE, //日期類型 DATA_TYPE_TIME //時(shí)間類型}DATA_TYPE; (2)數(shù)據(jù)結(jié)構(gòu)定義: 時(shí)間類型數(shù)據(jù)結(jié)構(gòu): typedefstruct_TIMEDATA { intyear; //年 intmonth; //月 intday; //日 inthour; //時(shí) intminute; //分 intsecond; //秒 intweekday; //星期 }TIMEDATA; 數(shù)據(jù)域結(jié)構(gòu): unionDataArea { boolBinData; //布爾類型值 doubleAnaData; //模擬量值 charTxtData[TXT_DATA_SIZE];//文本值 TIMEDATATimeData; //時(shí)間日期類型值 }; 邏輯組數(shù)據(jù)域結(jié)構(gòu): typedefstruct_GroupData { int nMainAddr; //主組地址 int nMidAddr; //中組地址 int nGrpAddr; //邏輯組地址 int nGrpDPT; //KNX數(shù)據(jù)類型(17種數(shù)據(jù)類型之一) DataAreaData; }GroupData;3.1.3接口設(shè)計(jì)3.1.3.1異常類設(shè)計(jì) 為了避免命名上的沖突,保證接口方法名的唯一性,異常類我們將放在自定義的命名空間tsknx中,包括后繼章節(jié)的類和接口,均放在該空間內(nèi)。namespacetsknx{ typedefenum { KNX_ERR_UNKNOWN=0, KNX_ERR_INPUT, KNX_ERR_NETWORK, KNX_ERR_UDP, KNX_ERR_CALLBACK, KNX_ERR_DPTCONVERTION }KNX_EXCEPTION_ID; classCKNXException { public: virtualKNX_EXCEPTION_IDGetExceptionId()=0 };}//endnamespacetsknx3.1.3.2公共接口設(shè)計(jì)公共接口(包括回調(diào)方法和提供外部模塊使用的接口)的定義如下:namespacetsknx{ typedefDATA_POINT_TYPE(CALLBACK*GetDPT)(intnMainAddr,intnMidAddr,intnGrpAddr); //回調(diào)方法,獲取邏輯組的數(shù)據(jù)類型 typedefvoid(CALLBACK*OnReadResponse)(GroupDatagrpData); //回調(diào)方法,接收到讀邏輯組值的結(jié)果 typedefvoid(CALLBACK*OnWriteResponse)(intnMainAddr,intnMidAddr,intnGrpAddr,intnResult); //回調(diào)方法,接收到寫邏輯組值的結(jié)果 classCKNXKernel { public: voidSetCallBacks(GetDPT*pGetDPT,OnReadResponse*pReadResponse,OnWriteResponse *pWriteResponse);//設(shè)置回調(diào)函數(shù)指針 intUDPSocketInit(char*serverIp,intserverPort);//初始化UDPsocket intReadGrpVal(intnMainAddr,intnMidAddr,intnGrpAddr);//讀邏輯組值 intWriteGrpVal(GroupDatagrpData);//寫邏輯組值 };}類CKNXKernel對外接口類結(jié)構(gòu)的UML描述如下:classCKNXKernel+SetCallBacks(GetDPT*,OnReadResponse*,OnWriteResponse*):void+UDPSocketInit(char*,int):int+ReadGrpVal(int,int,int0:int+WriteGrpVal(GroupData):int(1)公共接口回調(diào)方法由KNX協(xié)議模塊的調(diào)用者UI模塊實(shí)現(xiàn),它包括以獲取邏輯組數(shù)據(jù)類型、讀邏輯值回復(fù)和寫邏輯組值回復(fù)的回調(diào)三個(gè)方法,對它們的具體說明分別如下:接口原型DATA_POINT_TYPEGetDPT(intnMainAddr,intnMidAddr,intnGrpAddr)接口說明獲取給定邏輯組的數(shù)據(jù)類型(17種數(shù)據(jù)類型之一):由UI模塊實(shí)現(xiàn),通訊協(xié)議模塊調(diào)用。輸入?yún)?shù)邏輯組的主組地址、中組地址、邏輯組地址。輸出參數(shù)無返回值初始化成功則返回0,否則返回-1接口原型voidOnReadResponse(GroupDatagrpData)接口說明當(dāng)從總線接收到讀邏輯組值請求所返回報(bào)文時(shí),所要執(zhí)行的操作:由UI模塊實(shí)現(xiàn),通訊協(xié)議模塊調(diào)用。通訊協(xié)議模塊在調(diào)用該接口之前,需要調(diào)用GetDPT來獲取相應(yīng)的數(shù)據(jù)類型,用于將KNX幀中的數(shù)據(jù)轉(zhuǎn)換到正確類型的數(shù)據(jù),再將數(shù)據(jù)填入?yún)?shù)grpData中。輸入?yún)?shù)邏輯組數(shù)據(jù)的實(shí)例。輸出參數(shù)無返回值void接口原型voidOnWriteResponse(intnMainAddr,intnMidAddr,intnGrpAddr,intnResult)接口說明當(dāng)從總線接收到寫邏輯組值請求所返回報(bào)文時(shí),所要執(zhí)行的操作:由UI模塊實(shí)現(xiàn),由協(xié)議模塊調(diào)用。輸入?yún)?shù)邏輯組的主組地址、中組地址、邏輯組地址,寫邏輯組值的結(jié)果(成功:0,失?。?1)。輸出參數(shù)無返回值void (2)CKNXKernel類由協(xié)議模塊實(shí)現(xiàn),UI模塊通過調(diào)用CKNXKernel類的KNX_SetCallBacks()函數(shù)來設(shè)置相應(yīng)的回調(diào)函數(shù)。接口原型voidSetCallBacks(knx_callbacks::GetDPT*pGetDPT,knx_callbacks::OnReadResponse*pReadResponse,knx_callbacks::OnWriteResponse*pWriteResponse);接口說明設(shè)置各回調(diào)函數(shù)的指針。輸入?yún)?shù)各回調(diào)函數(shù)指針,包括:獲取邏輯組數(shù)據(jù)類型、讀值返回和寫值返回的回調(diào)函數(shù)。輸出參數(shù)無返回值void (3)CKNXKernel類對外部模塊提供的UDP初始化接口方法的具體說明如下:接口原型intUDPSocketInit(char*serverIp,intserverPort)接口說明初始化UDP通訊Socket,Socket對象由該模塊自身維護(hù)。內(nèi)部操作:由CKNXKernel調(diào)用CUDPManager類中相應(yīng)的函數(shù)。輸入?yún)?shù)EIB/IP網(wǎng)關(guān)IP地址及端口號。輸出參數(shù)無返回值初始化成功返回0,失敗則通過try…catch捕獲異常,調(diào)用GetExceptionId()獲得錯(cuò)誤ID??赡墚惓DKNX_ERR_UNKNOWN、KNX_ERR_INPUT、KNX_ERR_NETWORK (4)CKNXKernel類對外部模塊提供的讀、寫邏輯組數(shù)據(jù)的接口的具體說明如下:接口原型intReadGrpVal(intnMainAddr,intnMidAddr,intnGrpAddr)接口說明通過IP網(wǎng)關(guān),從EIB總線讀取組地址為(nMainAddr,nMidAddr,nGrpAddr)的邏輯組的值。輸入?yún)?shù)邏輯組的主組地址nMainAddr,中組地址nMidAddr,邏輯組地址nGrpAddr。輸出參數(shù)無返回值發(fā)送成功返回0,失敗則通過try…catch捕獲異常??赡墚惓DKNX_ERR_UNKNOWN、KNX_ERR_INPUT、KNX_ERR_NETWORK、KNX_ERR_UDP接口原型intWriteGrpVal(GroupDatagrpData)接口說明通過IP網(wǎng)關(guān),向EIB總線的組地址為(nMainAddr,nMidAddr,nGrpAddr)的邏輯組寫值。輸入?yún)?shù)邏輯組數(shù)據(jù)GroupData結(jié)構(gòu)的實(shí)例。輸出參數(shù)無返回值發(fā)送成功返回0,失敗則通過try…catch捕獲異常。可能異常IDKNX_ERR_UNKNOWN、KNX_ERR_INPUT、KNX_ERR_NETWORK、KNX_ERR_UDP、KNX_ERR_CALLBACK、KNX_ERR_DPTCONVERTION3.1.4Objective-C調(diào)用接口模塊源碼示例 #import“KNXException.h” //異常類頭文件 #import“KNXKernel.h” //knx核心處理類頭文件//UDPSocketInit()使用示例 tsknx::CKNXKernelknxKernel; charserverIP[32]="192.168.10.123"; intserverPort=12345; intnRet=-1; try { nRet=knxKernel.UDPSocketInit(serverIP,serverPort); } catch(tsknx::CKNXException*e) { switch(e->GetExceptionId()) { casetsknx::KNX_ERR_INPUT: NSLog(@"Therearesomeerrorsinyourinputparameters!"); break; casetsknx::KNX_ERR_NETWORK: NSLog(@"Therearesomeerrorsaboutthenetwork!"); break; default: NSLog(@"Unknowerror!"); break; }; } //ReadGrpVal()使用示例 intnMainAddr=0; intnMidAddr=0; intnGrpAddr=1; try { nRet=knxKernel.ReadGrpVal(nMainAddr,nMidAddr,nGrpAddr); } catch(tsknx::CKNXException*e) { switch(e->GetExceptionId()) { casetsknx::KNX_ERR_INPUT: NSLog(@"Therearesomeerrorsinyourinputparameters!"); break; casetsknx::KNX_ERR_NETWORK: NSLog(@"Therearesomeerrorsaboutthenetwork!"); break; casetsknx::KNX_ERR_UDP: NSLog(@"TherearesomeerrorsaboutUDPtransmission!"); break; default: NSLog(@"Unknowerror!"); break; }; } //WriteGrpVal()使用示例 GroupDatagrpData; grpData.nMainAddr=0; grpData.nMidAddr=0; grpData.nGrpAddr=1; grpData.nGrpDPT=DATA_TYPE_ANALOG; grpData.Dat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論