基于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所示的格式的報文: