新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Ethernet/IP通信適配器的設計與實現

        Ethernet/IP通信適配器的設計與實現

        作者: 時間:2016-12-20 來源:網絡 收藏

        該驅動程序開發一個重要的步驟是中斷處理的實現。中斷處理分為2個階段:中斷服務例程(ISR)和中斷服務線程(IST)。當硬件中斷發生時,操作系統內核調用OAL的函數OEMInterruptDisable來通知硬件關閉該特定中斷直到必要的處理結束。然后。內核調用ISR將物理中斷映射成邏輯中斷值,觸發一個事件喚醒掛起的IST。IST啟動運行之后,需要完成初始化工作包括虛擬內存映射和相關寄存器的配置,然后完成具體的數據處理。IST的結構如下:

        IST在完成初始化工作后進入循環等待中斷事件,直到觸發事件從內核返回。一旦產生中斷,IST將與I/O接口通信,并從I/O接口中讀取所有必要的數據,完成其中斷交互操作。然后,1ST用關聯的邏輯中斷標識來調用In.terruptDone函數,通知內核中斷處理已完成。內核將重新啟用指定的巾斷,以便接收該設備的下一個中斷請求。在完成驅動程序的編寫之后,還需將編譯后產生的驅動文件封裝進操作系統映像中。至此,應用程序通過訪問文件系統的一個特殊文件便可實現對設備的訪問和控制。

        5 EtherNet/IP通信適配器的應用軟件開發

        CIP設備描述中定義的通信適配器必須包含標識對象、消息路由對象、連接對象以及同網絡連接相關的對象,對于EtherNet/IP而言,同網絡連接相關的對象包括TCWIP接口對象和EtherNet連接對象。此外,通信適配器可選對象為組合對象、應用對象等。根據Ether-Net/IP定義的設備對象模型,本文在EADK(EtherNet/IPadapter developers kit)的基礎上設計了EtherNet/IP通信適配器應用軟件,完成EtherNet/IP通信適配器所需的各項功能。EADK是一種軟件協議棧,使開發者能很快地將EhterNet/IP適配器功能增加到產品的特征中去。

        5.1 通信適配器的軟件整體架構

        EtherNet/IP通信適配器需實現UCMM(未連接管理器)客戶端和服務器、顯式報文服務器以及I/0服務器;其中UCMM處理未連接信息,為Ethemet/IP控制網絡中尚未連接的設備建茳連接;顯式報文連接服務器和I/0連接服務器主要用來與Ethemet/IP掃描器之間建立連接,交換娃式報文和實時I/O數據。該通信適配器軟件整體架構如圖2所示。

        應用軟件整體功能結構圖

        圖2 應用軟件整體功能結構圖

        在程序開始運行后,首先初始化EADK協議棧,動態注冊自定義的CIP類;接著,啟動UCMM服務器和客戶端以及娃式報文服務器,以便發送和接收UCMM報文和顯式報文,進行組態、參數設置等;然后,根據連接在該EtherNet/IP通信適配器上的I/O模塊配置匹配的組合對象實例,并啟動I/O連接服務器;最后,讓應用程序的執行線程在回調函數中等待,以便接收正確連接請求,與遠程EtherNet/IP掃描器建立顯式報文連接和I/O連接,交換顯式報文和實時I/O數據。

        5.2 應用程序的實現

        CIP是面向連接的協議,因此連接對象在EtherNet/IP扮演了相當重要的角色。連接對象主要負責記錄每個連接的設定值和連接狀態等信息,每個節點內至少需要2個連接實例來分別處理I/O連接和娩式報文連接。每個CIP連接都可以用一個連接對象的實例來表示,連接建立可以通過使用連接對象的Create服務或者連接管理(connection manager)對象的Forward Open服務。該通信適配器的顯式報文連接和I/0連接的建立都是通過連接管理對象的Forward Open服務實現的埔1。以下給出連接管理對象的部分頭文件定義:

        #define CONNMGR—CLASS 6//連接管理對象類ID#define FWD—OPEN—CMD—CODE 0x54//連接請求服務

        對象發送Get—Attributes—All服務來獲取該設備的信息。連接在通信適配器上的I/0模塊本身不支持EtherNet/IP協議,并且在不同應用場合連接在通信適配器上的L/O模塊數量和類型都是不確定的,因此需注冊一個自定義的CIP類,使組態工具可以通過一個UCMM請求報文獲取連接在通信適配器上的I/O模塊信息。該類的類代碼是定義78Hex,屬于廠商自定義(vendor specific)的范圍。該CIP類通過響應Get—Attributes—All請求將各個IVO模塊的外部ID(external ID)返回給配置軟件,這樣用戶在配置軟件上便可作正確的配置和選擇。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 岐山县| 定州市| 乳山市| 丹凤县| 龙岩市| 晋城| 砚山县| 枣强县| 平邑县| 三台县| 普定县| 河间市| 汨罗市| 曲松县| 大兴区| 朝阳县| 凌源市| 郓城县| 鸡西市| 建阳市| 奉化市| 利津县| 鹤岗市| 岐山县| 雷州市| 原平市| 玉屏| 辉县市| 遂川县| 桓仁| 吴川市| 奎屯市| 原阳县| 南皮县| 耒阳市| 瑞丽市| 华池县| 四子王旗| 太康县| 电白县| 连山|