新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種智能多協議通信適配器的設計

        一種智能多協議通信適配器的設計

        作者: 時間:2013-12-06 來源:網絡 收藏

          當選擇從智能終端采集數據時,單片機通過順序查詢上述儲存的搜索結果,得到終端的類型。然后,根據不同的終端調用相應的協議,發出采集數據的指令。適配器上的CPU與下位機之間是一對多的通信模式,默認狀態下,采用循環采集,各終端有一預先指定的固定的通信地址。對一個固定的終端而言,CPU發出握手信號,遠方終端響應,則相應的信息經RS232/RS485接收,由CPU存入RAM62256的指定地址;接收完成后,CPU將接收到的數據經D12傳給上位機;上位機的客戶服務程序對上傳上來的數據進行解碼、校驗,如有誤,通知終端重傳;如無誤,則將解碼后的信息轉存入計算機指定的內存,并備份到相應的文檔,供其他的客戶服務程序使用。根據系統的特點,還可以采用定點采集方式對指定終端進行數據采集與監控。以下給出單片機主程序流程圖(圖2)。

        圖2:微控制器主程序流程圖

        3.2 上位機的程序設計

          從上位機來看,適配器為它的一個USB外設。因此上位機必須提供USB外設的驅動程序。上位機的管理軟件包括客戶服務程序以及USB驅動程序。

          客戶服務程序(Client software)是駐留在上位機的與USB系統軟件交互作用的軟件。它確定需要與功能(即USB外設)進行什么樣的傳輸,當它需要與功能進行傳輸時,提出一個請求,并生成一個IRP(I/O中斷請求包),然后進行USBD(USB Driver)調用,把IRP通過USBD接口傳送給USBD。當該傳輸請求被服務后,客戶服務軟件接收IRP完成狀態的通知。如果該傳輸涉及功能到主機的數據傳輸,則客戶服務軟件可以訪問與該IRP有關的數據緩沖區中的數據。

          USB驅動程序(USBD)是駐留在上位機的為客戶提供通用服務的軟件實體,它管理主控制器上的一個或多個功能。它通過調用適當的主控制器驅動程序(HCD)將用戶IRP中的數據轉化為設備端點的數據,或通過回調適當的HCD將設備端點的數據轉化為客戶IRP中的數據。USBD接收來自配置軟件的配置請求,該配置軟件是駐留在上位機上的負責配置USB設備的軟件,它描述所希望的設備配置:端點、傳輸類型、傳輸周期、數據規模等。USBD基于帶寬有效性以及總線容納該請求類型的能力,接受或拒絕配置請求。如果它接受了一個請求,則USBD為所希望類型的請求者創建一個管道。一旦設備被配置,軟件客戶可以請求IRP在它與其功能端點之間進行數據傳送。

          主控制器驅動程序(HCD)是從主控制器中抽象出來的USB軟件層,它提供了一個SPI(系統編程接口)與主控制器交互作用,并隱藏了主控制器的硬件實現細節。當用管道傳送IRP時,HCD把它們添加到事務表中。當一個IRP完成時,HCD會通知發出該請求的軟件客戶IRP已經完成。如果IRP包括從功能到軟件客戶的數據傳送時,則把數據放在客戶指定的數據緩沖區。

          USB驅動程序的編寫往往是USB設備開發過程中最困難的,通常采用Windows DDK來實現。目前有許多軟件廠商提供各種各樣的驅動程序生成工具,如Computerware的DriverStudio,BlueWaters的DriverWizard等。本設計中筆者就是采用DriverStudio軟件生成的程序框架,添加了適當的用戶代碼,完成了適合與本設計的驅動程序的編寫。

          上位機的客戶服務程序是用VC++6.0編寫的,協議轉換是根據智能終端與協議識別所形成的終端信息表調用相應的協議轉換程序來實現的。用戶可以很方便的擴展用戶所需的協議。

        4 結語

          USB由于其連接的方便性、通信速度的快速性、接口的簡單性,必將在計算機技術應用領域得到廣泛的應用。本文提出的智能多協議可以廣泛地應用于實時監控、實時數據采集等場合,也可以增強協議辨識和增加協議轉換功能,使它能自適應地應用于與具有標準通信協議和規范化的數據格式而又缺少詳細技術資料的智能終端通信中。

        數字通信相關文章:數字通信原理


        通信相關文章:通信原理


        光電開關相關文章:光電開關原理
        上拉電阻相關文章:上拉電阻原理
        雙控開關相關文章:雙控開關原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 巴塘县| 庐江县| 湟中县| 信宜市| 山丹县| 永兴县| 余干县| 依安县| 梅州市| 隆化县| 泗阳县| 鹤壁市| 贵溪市| 扎囊县| 扎兰屯市| 延边| 鹤岗市| 商丘市| 工布江达县| 谢通门县| 平凉市| 南和县| 焉耆| 玉林市| 三穗县| 鄂托克前旗| 连州市| 黑龙江省| 苍南县| 湖州市| 卢龙县| 金阳县| 商都县| 兴文县| 鄢陵县| 凤翔县| 开化县| 渑池县| 开江县| 尉犁县| 武清区|