基於I-7188 的EIB 網關的設計與實現

3.2 pei-16 協定描述

pei-16 協定的數據交換包含如下四個階段:

1) 通信請求(硬體握手)2) 傳輸長度位元組(軟體握手)3) 數據交換4) 暫停(2 條訊息最小時間間隔3ms)下面給出pei-16 通信時序圖:其中為bcu 網關接收數據時序圖,為eib網關傳送數據時序圖。

4. eib 網關總體設計

通過對 eib 系統的報文格式以及eib 的pei-16 訊息格式通信時序進行了詳細的介紹,接著可以進行eib 網關的設計了。由於各個eib 廠家都提供一個rs232 通訊模組,此模組對外部的接口協定為pei-16,網關就利用此模組與eib 匯流排通信。eib 網關的套用拓撲圖如圖4-1 所示,其中pc 可用來監視eib 匯流排數據。

4.1 硬體設計

eib 網關的硬體直接採用鴻格公司生產的i-7188 控制器模組,內部硬體結構如上圖4-2所示。

i-7188 模組採用美國amd 公司的80188 晶片,主頻為40mhz,內部有256k 的sram,512k 的flash rom,2k 的eeprom 和rtc 功能等。同時本模組還具有強大的通信功能,具有四個串口,其中com1 為9 線串口,非常適合用來連線eib 的rs232 通訊模組,com2連線at-bus 匯流排,com3 連線pc,com4 為程式下載口。i-7188 配有minios7 嵌入式作業系統,極大提高系統的可靠性和運行的穩定性,同時給開發者提供了極為便利的開發環境和豐富的庫函式,給編程帶來極大方便[6]。因此採用此模組來構建eib 網關不僅可縮短設計時間和減少開發費用,而且可以降低技術風險便於提供更可靠的產品。

4.2 軟體設計

eib 網關主要進行at-bus 協定,eib 協定相互轉換及匯流排監視功能,在程式開始之前首先初始化串口,然後對eib 系統的rs232 模組進行配置,使其工作在數據鏈路層,因為工作在鏈路層,訊息簡單和功能靈活性較大,接下來就可以進行協定之間的相互轉換了。其軟體總體設計框圖如下圖4-3 所示。

4.2.1 pei-16 協定驅動設計

pei-16 協定驅動主要是完成eib 網關與eib 的rs232 通信模組的通信,一共包含兩個模組:傳送數據模組,接收數據模組,這兩個模組的數據處理流程分別。

4.2.2 eib 系統rs232 通信模組配置設計為了將 rs232 通信模組配置在數據鏈路層,必須使用pc_set_value.request 原語,它能直接訪問bau 的記憶體,進行工作層的設定,其pei-16 格式的鏈路層配置訊息如圖4-6所示。

4.2.3 eib 數據解析與封裝模組

當使 eib 的rs232 通信模組工作在數據鏈路層上後,eib 網關就需要解析和封裝鏈路層數據。首先介紹如何解析eib 鏈路層數據,這裡將用到l_data.indication 服務原語,即能監測到eib 匯流排上的數據,假設某個開關按下,對應的燈被打開,監測到所示數據:

通過分析可以發現,長度位元組為pei-16 協定的頭位元組,因為後面共有9 個位元組數據,故為0xa9;訊息代碼0x49 為l_data.indication 原語服務代碼;而用戶數據為標準eib 協定報文,可以對照前面分析進行參考,注意因為工作在鏈路層,故此報文不含校驗位。

下面介紹如何封裝eib 鏈路層數據,這裡將用到l_data.request 和l_data.confirm 兩個服務原語,分別表示數據鏈路層傳送數據請求和鏈路層傳送數據反饋,兩者對應的訊息代碼分別為0x11,0x4e。下面舉例分析,如控制組地址為0x0100 的燈關閉,只需傳送如圖4-8所示的格式的報文: