<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于μC/OS-II嵌入式系統的EPA通信協(xié)議的實(shí)現方案

基于μC/OS-II嵌入式系統的EPA通信協(xié)議的實(shí)現方案

作者: 時(shí)間:2012-03-13 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要: 本文提出了一種μ。簡(jiǎn)要介紹了和模型,針對在以μ為平臺設備的需求,提出了設計思路及其構建方法,并在實(shí)驗上得到應用。

本文引用地址:http://dyxdggzs.com/article/149448.htm

1. 引言

《用于工業(yè)測量與控制系統的EPA系統結構與通信規范》(以下簡(jiǎn)稱(chēng)EPA)是工業(yè)以太網(wǎng)的實(shí)時(shí)通信規范,它有效地解決了以太網(wǎng)通信的確定性通信問(wèn)題,進(jìn)而可以應用于多種工業(yè)領(lǐng)域,構成各種工業(yè)測量與控制系統。該規范將收錄在制定中的實(shí)時(shí)以太網(wǎng)國際標準IEC61784-2中,成為我國首例具有自主知識產(chǎn)權的現場(chǎng)總線(xiàn)標準;開(kāi)發(fā)和EPA通信是應用EPA系統的基礎和前提。

μ是一種占先機制的實(shí)時(shí)多任務(wù)操作系統,具有源碼公開(kāi)、可移植、可固化、可裁剪等特點(diǎn),已經(jīng)得到廣泛的應用。相對于同為源碼公開(kāi)的μClinux,它具有內核小、實(shí)時(shí)性高等特點(diǎn),更適合于控制應用。μC/OS-II作為EPA通信協(xié)議的實(shí)現平臺,能夠較大的提高系統資源利用率,利用優(yōu)先級劃分獲得較好的實(shí)時(shí)響應性能,其任務(wù)間多種通信方法有助于實(shí)現各實(shí)體協(xié)議狀態(tài)機。

2. EPA通信協(xié)議與模型

EPA系統采用ISO/OSI開(kāi)放系統互連模型(ISO 7498)的第一、二、三、四和七層,并增加用戶(hù)層。系統中除了采用普通以太網(wǎng)協(xié)議組件外,有些層增加了部分實(shí)體,以適應EPA通信的需求:

增加的用戶(hù)層包含EPA功能塊應用進(jìn)程與非實(shí)時(shí)應用進(jìn)程。應用層增加了由EPA系統管理實(shí)體、EPA應用訪(fǎng)問(wèn)實(shí)體和EPA套接字映射實(shí)體組成的EPA協(xié)議,三個(gè)實(shí)體分別實(shí)現EPA設備管理、應用通信服務(wù)、應用層與UDP/IP軟件實(shí)體之間的映射接口和報文優(yōu)先發(fā)送管理、報文封裝、響應信息返回、鏈路狀況監視等功能。在MAC層和IP層之間增加EPA通信調度管理實(shí)體,對EPA設備向網(wǎng)絡(luò )上發(fā)送的報文進(jìn)行調度管理。調度策略采用分時(shí)發(fā)送機制,將報文分為周期報文和非周期報文,按預先組態(tài)的調度,在相應的時(shí)間段內發(fā)送,以避免碰撞。各設備網(wǎng)絡(luò )時(shí)間由時(shí)間同步組件維護其一致性。EPA管理信息庫為各層協(xié)議實(shí)體提供操作所需信息,包括設備描述對象,鏈接對象等。

按照EPA通信協(xié)議,每個(gè)EPA設備由至少一個(gè)功能塊實(shí)例、EPA應用訪(fǎng)問(wèn)實(shí)體、EPA系統管理實(shí)體、EPA套接字映射實(shí)體、EPA鏈接對象、通信調度管理實(shí)體以及UDP/IP協(xié)議等幾個(gè)部分組成。各個(gè)實(shí)體和對象通過(guò)互相調用,協(xié)同完成設備間通信過(guò)程如圖1示:

3. 實(shí)現平臺

本文實(shí)現EPA通信協(xié)議的硬件結構如圖2所示,通信卡CPU為Rabbit2000微處理器,它是Rabbit半導體公司所生產(chǎn)的8位微處理器,工作主頻22.1MHZ,工作電壓5V,具有40個(gè)通用I/O引腳。內建日歷、時(shí)鐘、看門(mén)狗、定時(shí)器、多級中斷、雙DMA通道,數據存儲為128K靜態(tài)存儲器和 256K 動(dòng)態(tài)存儲器,可外擴4~8MB Flash,對于通信協(xié)議棧和小型控制應用,其存儲空間是足夠的。

由zworld公司提供的Dynamic C的軟件開(kāi)發(fā)平臺集編程、編譯、鏈接、調試、下載于一體,提供完善的TCP/IP協(xié)議棧,支持全功能RS232/485通信,配備了各種I/O驅動(dòng)函數庫;文件管理系統可在Flash或SRAM上建立數據文件,便于存儲系統或用戶(hù)數據;開(kāi)源的協(xié)議庫不但縮短了軟件開(kāi)發(fā)周期,而且便于修改以更好的實(shí)現EPA通信協(xié)議。

通信卡通過(guò)以太網(wǎng)模塊接口與EPA網(wǎng)絡(luò )相連,通過(guò)串口RS-232與電動(dòng)執行器連接形成一個(gè)底層IO設備,掛接在EPA網(wǎng)絡(luò )上進(jìn)行測試。

RaBBit2000支持協(xié)作式(使用coSTate)和占先式(移植μC/OS-II)多任務(wù)模式,選擇占先式模式基于以下兩點(diǎn)考慮:

(1)對于EPA設備來(lái)說(shuō),系統實(shí)時(shí)性是一個(gè)很重要的指標,表現在經(jīng)過(guò)組態(tài)后功能塊模塊的執行時(shí)間精度、通信調度發(fā)送周期性報文的時(shí)間精度,以及時(shí)鐘同步的精度,而且這幾個(gè)參數在很大程度上影響了網(wǎng)絡(luò )帶寬利用率。μC/OS-II具有任務(wù)執行時(shí)間的可確定性,可以很好的滿(mǎn)足系統的實(shí)時(shí)性要求。

(2)EPA設備可以直接在通信卡的接口上進(jìn)一步開(kāi)發(fā)實(shí)現,同時(shí)需要增加用戶(hù)層任務(wù)進(jìn)程,而Rabbit2000是8位微處理器,資源比較有限,因此基于任務(wù)可擴展性考慮,也應該采用占先式任務(wù)調度方式。

4. 軟件設計與實(shí)現

4.1 通信協(xié)議的模塊化設計

從數據處理角度上看,EPA設備通信是對控制過(guò)程所需要數據進(jìn)行處理和通過(guò)EPA網(wǎng)絡(luò )傳輸的過(guò)程,發(fā)送方從上到下各層依次對應用進(jìn)程或者管理服務(wù)數據進(jìn)行處理和封裝,接收方則進(jìn)行解包和處理,將服務(wù)數據交給應用進(jìn)程。因此,協(xié)議軟件設計主要是系統各模塊對服務(wù)數據的處理程序的設計。EPA通信卡的功能主要包含系統管理、應用服務(wù)、時(shí)鐘同步、實(shí)時(shí)調度等。需要編寫(xiě)的功能模塊有EPA服務(wù)棧模塊、套接字映射模塊、時(shí)間同步模塊、通信調度模塊。

(1)EPA服務(wù)棧模塊:系統管理服務(wù)包括設備查詢(xún)、設備聲明等服務(wù),應用訪(fǎng)問(wèn)服務(wù)包括域操作服務(wù)、事件操作服務(wù)、變量操作服務(wù),各種服務(wù)對相應的服務(wù)報文進(jìn)行處理。 以域下載服務(wù)為例說(shuō)明服務(wù)棧的實(shí)現流程如圖3示。

(2)EPA套接字映射模塊:對服務(wù)棧數據進(jìn)行封裝,并作為與UDP層之間的數據接口,其接口函數包括創(chuàng )建與關(guān)閉EPA套接字函數、發(fā)送應用服務(wù)報文與響應報文函數,發(fā)送系統管理報文與響應報文函數,從UDP層接收應用服務(wù)與系統管理報文函數等。EPA套接字開(kāi)UDP套接字的實(shí)現語(yǔ)句如下:

  if(!udp_open(gEPA_AP_Sock, EPA_AP_PORT, -1, EPA_AP_PORT, NULL))

  SockErr=1;

  else SockErr=0;

(3)時(shí)鐘同步服務(wù)的實(shí)現采用IEEE 1588精確時(shí)鐘同步協(xié)議,該協(xié)議用于分布式系統中的設備通過(guò)以太網(wǎng)的亞微秒級時(shí)鐘同步。設備與主時(shí)鐘通過(guò)交換同步報文而實(shí)現同步,同步報文分為同步信息(Sync)、附加信息(Follow_Up)、延時(shí)請求(Delay_Req)、延時(shí)響應(Delay_Rsp)四種報文。同步過(guò)程分兩個(gè)階段,第一階段通過(guò)Sync和Follow_Up報文測量時(shí)間偏差,第二個(gè)階段通過(guò)Delay_Req和Delay_Rsp測量延遲(網(wǎng)絡(luò )延遲和協(xié)議棧延遲),進(jìn)一步校正偏差。為了進(jìn)一步減少協(xié)議棧帶來(lái)的延遲,可以讓時(shí)間同步服務(wù)盡量接近物理層,這里通過(guò)修改TCP/IP庫文件實(shí)現。

(4)實(shí)時(shí)調度的實(shí)現,包括時(shí)間中斷調度函數——判斷是否到達本設備的周期報文發(fā)送時(shí)間或非周期報文發(fā)送開(kāi)始時(shí)間,以及報文發(fā)送函數——實(shí)現對幾個(gè)優(yōu)先級的數據隊列報文發(fā)送等。

4.2 在μC/OS-II中的實(shí)現

在完成各個(gè)模塊的編寫(xiě)之后,通信協(xié)議在μC/OS-II系統中的實(shí)現主要是根據應用要求進(jìn)行任務(wù)的創(chuàng )建、劃分以及任務(wù)間通信與調度的設計。因為μC/OS-II在Rabbit2000中的移植已經(jīng)由Dynamic開(kāi)發(fā)平臺實(shí)現,這里不再詳細介紹。模塊與任務(wù)之間非一一對應關(guān)系,因為模塊是基于功能進(jìn)行劃分,而任務(wù)是基于時(shí)間優(yōu)先級進(jìn)行劃分。劃分任務(wù)優(yōu)先級就是確定任務(wù)實(shí)時(shí)性要求的過(guò)程。實(shí)時(shí)性要求越高的,則任務(wù)優(yōu)先級越高,其對應的優(yōu)先級號越低。μC/OS-II共支持最多56個(gè)用戶(hù)任務(wù),對于本系統來(lái)說(shuō)是綽綽有余的。按照優(yōu)先級由高到低次序的任務(wù)劃分與調度如下:

(1)設備管理任務(wù):完成設備的上電與初始化組態(tài),之后根據設備狀態(tài)機,在設備為正??刹僮鳡顟B(tài)下被掛起,直到設備狀態(tài)被其他事件改變后由信號量激活。

(2)周期性報文發(fā)送任務(wù):由時(shí)間調度任務(wù)在宏周期內本設備周期性報文發(fā)送時(shí)間到達時(shí)產(chǎn)生中斷激活而進(jìn)入就緒狀態(tài),在中斷退出后成為最高優(yōu)先級任務(wù)被執行,立即發(fā)送周期性報文,發(fā)送完畢即掛起等待下一次激活。

(3)非周期性報文發(fā)送任務(wù):與任務(wù)(2)相似,在非周期報文發(fā)送時(shí)間到被激活,通過(guò)調度算法發(fā)送非周期性報文。以上兩個(gè)任務(wù)由于不會(huì )在同一時(shí)間段執行,因此實(shí)際運行時(shí)的優(yōu)先級是等同的。

(4)功能塊調度任務(wù):在組態(tài)的功能塊調度時(shí)間到達時(shí)被激活,或者在控制回路中上一個(gè)功能塊執行之后被激活,立刻執行后掛起。由于首先要確保EPA網(wǎng)絡(luò )通信的確定性,所以此任務(wù)的優(yōu)先級低于前兩個(gè)任務(wù)。

(5)時(shí)間調度任務(wù):通過(guò)對網(wǎng)絡(luò )時(shí)間的判斷,在到達以上三個(gè)任務(wù)的執行時(shí)間時(shí)進(jìn)入時(shí)間中斷函數,給相應的任務(wù)發(fā)送信號量,使任務(wù)進(jìn)入就緒狀態(tài),中斷退出即可以執行就緒的高優(yōu)先級任務(wù)。根據時(shí)間精度的要求設置內核調用OSTImeTick的頻率,可以通過(guò)#define OS_TICKS_PER_SEC 256,實(shí)現每秒256次的Tick頻率。

(6)普通報文接收任務(wù):套接字映射實(shí)體偵聽(tīng)來(lái)自EPA網(wǎng)絡(luò )的報文并根據需要調用相應的應用層服務(wù)處理報文,設為每100ms執行一次。

(7)時(shí)鐘同步任務(wù):獨立接收與發(fā)送時(shí)間同步報文,以確保設備時(shí)間與網(wǎng)絡(luò )時(shí)間的同步。由于主時(shí)鐘發(fā)送Sync報文周期為2秒一次,所以其優(yōu)先級可以低于時(shí)間調度任務(wù),設為每2秒執行一次。

(8)串口通信任務(wù):與電動(dòng)執行器進(jìn)行周期性的串口通信,根據電動(dòng)執行器的物理特性,通信頻率設為每秒2次,其通信方法在后文中介紹。

各任務(wù)之間采用全局變量或者消息機制進(jìn)行通信,以完成任務(wù)狀態(tài)機的變化。任務(wù)堆棧則根據各任務(wù)的實(shí)際需要分配,這里不再詳述。

5. 測試

為了測試通信協(xié)議的實(shí)現,使用通信卡的RS-232串口與某型電動(dòng)執行器的異步串行通信接口相連,形成一個(gè)EPA現場(chǎng)設備。EPA通信卡接收來(lái)自EPA網(wǎng)絡(luò )的閥位指令并通過(guò)串行口傳送給電動(dòng)執行器,電動(dòng)執行器接到閥位指令后向網(wǎng)板發(fā)出應答幀,雙方各自一收一發(fā)完成一個(gè)周期的通信。通信中網(wǎng)板是主節點(diǎn),電動(dòng)執行器為從節點(diǎn),每周期通信均是由通信卡發(fā)起,電動(dòng)執行器響應。

通過(guò)EPA網(wǎng)橋將該設備加入EPA網(wǎng)絡(luò )進(jìn)行測試,經(jīng)過(guò)專(zhuān)家組的驗收,該實(shí)驗系統成功通過(guò)了一致性測試、互可操作性測試等服務(wù)測試,時(shí)鐘同步精度也達到了毫秒級,基本上實(shí)現了EPA通信卡的功能。

6. 結束語(yǔ)

系統實(shí)時(shí)性要求越高,對硬件的要求也越高,如果要求時(shí)鐘同步精度和通信調度發(fā)送報文的時(shí)間精度達到實(shí)際應用的水平,并且進(jìn)一步提高EPA設備通信的可靠性,則需要采用硬件實(shí)現的方法,即開(kāi)發(fā)EPA專(zhuān)用通信芯片,在芯片級實(shí)現通信協(xié)議,預計EPA芯片很快會(huì )面世。相信在眾多研究機構與廠(chǎng)商的共同努力下,EPA的推廣應用將會(huì )取得豐碩的成果。

本文作者創(chuàng )新點(diǎn):針對EPA通信協(xié)議提出了一種新的實(shí)現方法,此方法基于μC/OS-II嵌入式操作系統,用多任務(wù)的方式實(shí)現了各個(gè)協(xié)議實(shí)體及其調度。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

tcp/ip相關(guān)文章:tcp/ip是什么




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>