基于I-7188 的EIB 網(wǎng)關(guān)的設(shè)計與實現(xiàn)
3.2 pei-16 協(xié)議描述
pei-16 協(xié)議的數(shù)據(jù)交換包含如下四個階段:
1) 通信請求(硬件握手)2) 傳輸長度字節(jié)(軟件握手)3) 數(shù)據(jù)交換4) 暫停(2 條消息最小時間間隔3ms)下面給出pei-16 通信時序圖:其中為bcu 網(wǎng)關(guān)接收數(shù)據(jù)時序圖,為eib網(wǎng)關(guān)發(fā)送數(shù)據(jù)時序圖。
4. eib 網(wǎng)關(guān)總體設(shè)計
通過對 eib 系統(tǒng)的報文格式以及eib 的pei-16 消息格式通信時序進(jìn)行了詳細(xì)的介紹,接著可以進(jìn)行eib 網(wǎng)關(guān)的設(shè)計了。由于各個eib 廠家都提供一個rs232 通訊模塊,此模塊對外部的接口協(xié)議為pei-16,網(wǎng)關(guān)就利用此模塊與eib 總線通信。eib 網(wǎng)關(guān)的應(yīng)用拓?fù)鋱D如圖4-1 所示,其中pc 可用來監(jiān)視eib 總線數(shù)據(jù)。
4.1 硬件設(shè)計
eib 網(wǎng)關(guān)的硬件直接采用鴻格公司生產(chǎn)的i-7188 控制器模塊,內(nèi)部硬件結(jié)構(gòu)如上圖4-2所示。
i-7188 模塊采用美國amd 公司的80188 芯片,主頻為40mhz,內(nèi)部有256k 的sram,512k 的flash rom,2k 的eeprom 和rtc 功能等。同時本模塊還具有強(qiáng)大的通信功能,具有四個串口,其中com1 為9 線串口,非常適合用來連接eib 的rs232 通訊模塊,com2連接at-bus 總線,com3 連接pc,com4 為程序下載口。i-7188 配有minios7 嵌入式操作系統(tǒng),極大提高系統(tǒng)的可靠性和運(yùn)行的穩(wěn)定性,同時給開發(fā)者提供了極為便利的開發(fā)環(huán)境和豐富的庫函數(shù),給編程帶來極大方便[6]。因此采用此模塊來構(gòu)建eib 網(wǎng)關(guān)不僅可縮短設(shè)計時間和減少開發(fā)費(fèi)用,而且可以降低技術(shù)風(fēng)險便于提供更可靠的產(chǎn)品。
4.2 軟件設(shè)計
eib 網(wǎng)關(guān)主要進(jìn)行at-bus 協(xié)議,eib 協(xié)議相互轉(zhuǎn)換及總線監(jiān)視功能,在程序開始之前首先初始化串口,然后對eib 系統(tǒng)的rs232 模塊進(jìn)行配置,使其工作在數(shù)據(jù)鏈路層,因為工作在鏈路層,消息簡單和功能靈活性較大,接下來就可以進(jìn)行協(xié)議之間的相互轉(zhuǎn)換了。其軟件總體設(shè)計框圖如下圖4-3 所示。
4.2.1 pei-16 協(xié)議驅(qū)動設(shè)計
pei-16 協(xié)議驅(qū)動主要是完成eib 網(wǎng)關(guān)與eib 的rs232 通信模塊的通信,一共包含兩個模塊:發(fā)送數(shù)據(jù)模塊,接收數(shù)據(jù)模塊,這兩個模塊的數(shù)據(jù)處理流程分別。
4.2.2 eib 系統(tǒng)rs232 通信模塊配置設(shè)計為了將 rs232 通信模塊配置在數(shù)據(jù)鏈路層,必須使用pc_set_value.request 原語,它能直接訪問bau 的內(nèi)存,進(jìn)行工作層的設(shè)置,其pei-16 格式的鏈路層配置消息如圖4-6所示。
4.2.3 eib 數(shù)據(jù)解析與封裝模塊
當(dāng)使 eib 的rs232 通信模塊工作在數(shù)據(jù)鏈路層上后,eib 網(wǎng)關(guān)就需要解析和封裝鏈路層數(shù)據(jù)。首先介紹如何解析eib 鏈路層數(shù)據(jù),這里將用到l_data.indication 服務(wù)原語,即能監(jiān)測到eib 總線上的數(shù)據(jù),假設(shè)某個開關(guān)按下,對應(yīng)的燈被打開,監(jiān)測到所示數(shù)據(jù):
通過分析可以發(fā)現(xiàn),長度字節(jié)為pei-16 協(xié)議的頭字節(jié),因為后面共有9 個字節(jié)數(shù)據(jù),故為0xa9;消息代碼0x49 為l_data.indication 原語服務(wù)代碼;而用戶數(shù)據(jù)為標(biāo)準(zhǔn)eib 協(xié)議報文,可以對照前面分析進(jìn)行參考,注意因為工作在鏈路層,故此報文不含校驗位。
下面介紹如何封裝eib 鏈路層數(shù)據(jù),這里將用到l_data.request 和l_data.confirm 兩個服務(wù)原語,分別表示數(shù)據(jù)鏈路層發(fā)送數(shù)據(jù)請求和鏈路層發(fā)送數(shù)據(jù)反饋,兩者對應(yīng)的消息代碼分別為0x11,0x4e。下面舉例分析,如控制組地址為0x0100 的燈關(guān)閉,只需發(fā)送如圖4-8所示的格式的報文: