新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Ethernet/IP通信適配器的設(shè)計(jì)與實(shí)現(xiàn)

Ethernet/IP通信適配器的設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2016-12-20 來源:網(wǎng)絡(luò) 收藏

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

IST在完成初始化工作后進(jìn)入循環(huán)等待中斷事件,直到觸發(fā)事件從內(nèi)核返回。一旦產(chǎn)生中斷,IST將與I/O接口通信,并從I/O接口中讀取所有必要的數(shù)據(jù),完成其中斷交互操作。然后,1ST用關(guān)聯(lián)的邏輯中斷標(biāo)識(shí)來調(diào)用In.terruptDone函數(shù),通知內(nèi)核中斷處理已完成。內(nèi)核將重新啟用指定的巾斷,以便接收該設(shè)備的下一個(gè)中斷請(qǐng)求。在完成驅(qū)動(dòng)程序的編寫之后,還需將編譯后產(chǎn)生的驅(qū)動(dòng)文件封裝進(jìn)操作系統(tǒng)映像中。至此,應(yīng)用程序通過訪問文件系統(tǒng)的一個(gè)特殊文件便可實(shí)現(xiàn)對(duì)設(shè)備的訪問和控制。

5 EtherNet/IP通信適配器的應(yīng)用軟件開發(fā)

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

5.1 通信適配器的軟件整體架構(gòu)

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

應(yīng)用軟件整體功能結(jié)構(gòu)圖

圖2 應(yīng)用軟件整體功能結(jié)構(gòu)圖

在程序開始運(yùn)行后,首先初始化EADK協(xié)議棧,動(dòng)態(tài)注冊(cè)自定義的CIP類;接著,啟動(dòng)UCMM服務(wù)器和客戶端以及娃式報(bào)文服務(wù)器,以便發(fā)送和接收UCMM報(bào)文和顯式報(bào)文,進(jìn)行組態(tài)、參數(shù)設(shè)置等;然后,根據(jù)連接在該EtherNet/IP通信適配器上的I/O模塊配置匹配的組合對(duì)象實(shí)例,并啟動(dòng)I/O連接服務(wù)器;最后,讓應(yīng)用程序的執(zhí)行線程在回調(diào)函數(shù)中等待,以便接收正確連接請(qǐng)求,與遠(yuǎn)程EtherNet/IP掃描器建立顯式報(bào)文連接和I/O連接,交換顯式報(bào)文和實(shí)時(shí)I/O數(shù)據(jù)。

5.2 應(yīng)用程序的實(shí)現(xiàn)

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

#define CONNMGR—CLASS 6//連接管理對(duì)象類ID#define FWD—OPEN—CMD—CODE 0x54//連接請(qǐng)求服務(wù)

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



評(píng)論


技術(shù)專區(qū)

關(guān)閉