《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > EPA通信協議在μC/OS-II嵌入式系統中的設計與實現
EPA通信協議在μC/OS-II嵌入式系統中的設計與實現
摘要:  本文實現EPA通信協議的硬件結構如圖2所示,通信卡CPU為RABBIT2000微處理器,它是Rabbit半導體公司所生產的8位微處理器,工作主頻22.1MHZ,工作電壓5V,具有40個通用I/O引腳。內建日歷、時鐘、看門狗、定時器、多級中斷、雙DMA通道,數據存儲為128K靜態存儲器和 256K 動態存儲器,可外擴4~8MB FLASH,對于通信協議棧和小型控制應用,其存儲空間是足夠的。
Abstract:
Key words :

         1. 引言

 

      《用于工業測量與控制系統的EPA系統結構與通信規范》(以下簡稱EPA)是基于工業以太網的實時通信規范,它有效地解決了以太網通信的確定性通信問題,進而可以應用于多種工業領域,構成各種工業測量與控制系統。該規范將收錄在制定中的實時以太網國際標準IEC61784-2中,成為我國首例具有自主知識產權的現場總線標準;開發和實現EPA通信協議是應用EPA系統的基礎和前提。
  μC/OS-II是一種占先機制的實時多任務嵌入式操作系統,具有源碼公開、可移植、可固化、可裁剪等特點,已經得到廣泛的應用。相對于同為源碼公開的μClinux,它具有內核小、實時性高等特點,更適合于控制應用。μC/OS-II作為EPA通信協議的實現平臺,能夠較大的提高系統資源利用率,利用優先級劃分獲得較好的實時響應性能,其任務間多種通信方法有助于實現各實體協議狀態機。
  2. EPA通信協議與模型
  EPA系統采用ISO/OSI開放系統互連模型(ISO 7498)的第一、二、三、四和七層,并增加用戶層。系統中除了采用普通以太網協議組件外,有些層增加了部分實體,以適應EPA通信的需求:
  增加的用戶層包含EPA功能塊應用進程與非實時應用進程。應用層增加了由EPA系統管理實體、EPA應用訪問實體和EPA套接字映射實體組成的EPA協議,三個實體分別實現EPA設備管理、應用通信服務、應用層與UDP/IP軟件實體之間的映射接口和報文優先發送管理、報文封裝、響應信息返回、鏈路狀況監視等功能。在MAC層和IP層之間增加EPA通信調度管理實體,對EPA設備向網絡上發送的報文進行調度管理。調度策略采用分時發送機制,將報文分為周期報文和非周期報文,按預先組態的調度方案,在相應的時間段內發送,以避免碰撞。各設備網絡時間由時間同步組件維護其一致性。EPA管理信息庫為各層協議實體提供操作所需信息,包括設備描述對象,鏈接對象等。
  按照EPA通信協議,每個EPA設備由至少一個功能塊實例、EPA應用訪問實體、EPA系統管理實體、EPA套接字映射實體、EPA鏈接對象、通信調度管理實體以及UDP/IP協議等幾個部分組成。各個實體和對象通過互相調用,協同完成設備間通信過程如圖1示。
 
  3. 實現平臺
 
  本文實現EPA通信協議的硬件結構如圖2所示,通信卡CPURABBIT2000" title="RABBIT2000" target="_blank">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000" title="RABBIT2000">RABBIT2000微處理器,它是Rabbit半導體公司所生產的8位微處理器,工作主頻22.1MHZ,工作電壓5V,具有40個通用I/O引腳。內建日歷、時鐘、看門狗、定時器、多級中斷、雙DMA通道,數據存儲為128K靜態存儲器和 256K 動態存儲器,可外擴4~8MB FLASH,對于通信協議棧和小型控制應用,其存儲空間是足夠的。
 
  由zworld公司提供的基于Dynamic C的軟件開發平臺集編程、編譯、鏈接、調試、下載于一體,提供完善的TCP/IP協議棧,支持全功能RS232/485通信,配備了各種I/O驅動函數庫;文件管理系統可在FLASH或SRAM上建立數據文件,便于存儲系統或用戶數據;開源的協議庫不但縮短了軟件開發周期,而且便于修改以更好的實現EPA通信協議。
 
  通信卡通過以太網模塊接口與EPA網絡相連,通過串口RS-232與電動執行器連接形成一個底層IO設備,掛接在EPA網絡上進行測試。
 
  RABBIT2000支持協作式(使用costate)和占先式(移植μC/OS-II)多任務模式,選擇占先式模式基于以下兩點考慮:
 
  (1)對于EPA設備來說,系統實時性是一個很重要的指標,表現在經過組態后功能塊模塊的執行時間精度、通信調度發送周期性報文的時間精度,以及時鐘同步的精度,而且這幾個參數在很大程度上影響了網絡帶寬利用率。μC/OS-II具有任務執行時間的可確定性,可以很好的滿足系統的實時性要求。
 
 ?。?)EPA設備可以直接在通信卡的接口上進一步開發實現,同時需要增加用戶層任務進程,而RABBIT2000是8位微處理器,資源比較有限,因此基于任務可擴展性考慮,也應該采用占先式任務調度方式。
 
  4. 軟件設計與實現
  4.1 通信協議的模塊化設計
  從數據處理角度上看,EPA設備通信是對控制過程所需要數據進行處理和通過EPA網絡傳輸的過程,發送方從上到下各層依次對應用進程或者管理服務數據進行處理和封裝,接收方則進行解包和處理,將服務數據交給應用進程。因此,協議軟件設計主要是系統各模塊對服務數據的處理程序的設計。EPA通信卡的功能主要包含系統管理、應用服務、時鐘同步、實時調度等。需要編寫的功能模塊有EPA服務棧模塊、套接字映射模塊、時間同步模塊、通信調度模塊。
  (1)EPA服務棧模塊:系統管理服務包括設備查詢、設備聲明等服務,應用訪問服務包括域操作服務、事件操作服務、變量操作服務,各種服務對相應的服務報文進行處理。 以域下載服務為例說明服務棧的實現流程如圖3示。
 
  (2)EPA套接字映射模塊:對服務棧數據進行封裝,并作為與UDP層之間的數據接口,其接口函數包括創建與關閉EPA套接字函數、發送應用服務報文與響應報文函數,發送系統管理報文與響應報文函數,從UDP層接收應用服務與系統管理報文函數等。EPA套接字開UDP套接字的實現語句如下:
  if(!udp_open(&gEPA_AP_Sock, EPA_AP_PORT, -1, EPA_AP_PORT, NULL))
  SockErr=1;
  else SockErr=0;
 
 ?。?)時鐘同步服務的實現采用IEEE 1588精確時鐘同步協議,該協議用于分布式系統中的設備通過以太網的亞微秒級時鐘同步。設備與主時鐘通過交換同步報文而實現同步,同步報文分為同步信息(Sync)、附加信息(Follow_Up)、延時請求(Delay_Req)、延時響應(Delay_Rsp)四種報文。同步過程分兩個階段,第一階段通過Sync和Follow_Up報文測量時間偏差,第二個階段通過Delay_Req和Delay_Rsp測量延遲(網絡延遲和協議棧延遲),進一步校正偏差。為了進一步減少協議棧帶來的延遲,可以讓時間同步服務盡量接近物理層,這里通過修改TCP/IP庫文件實現。
 
 ?。?)實時調度的實現,包括時間中斷調度函數——判斷是否到達本設備的周期報文發送時間或非周期報文發送開始時間,以及報文發送函數——實現對幾個優先級的數據隊列報文發送等。
 
  4.2 在μC/OS-II中的實現
  在完成各個模塊的編寫之后,通信協議在μC/OS-II系統中的實現主要是根據應用要求進行任務的創建、劃分以及任務間通信與調度的設計。因為μC/OS-II在RABBIT2000中的移植已經由Dynamic開發平臺實現,這里不再詳細介紹。模塊與任務之間非一一對應關系,因為模塊是基于功能進行劃分,而任務是基于時間優先級進行劃分。劃分任務優先級就是確定任務實時性要求的過程。實時性要求越高的,則任務優先級越高,其對應的優先級號越低。μC/OS-II共支持最多56個用戶任務,對于本系統來說是綽綽有余的。按照優先級由高到低次序的任務劃分與調度方案如下:
 ?。?)設備管理任務:完成設備的上電與初始化組態,之后根據設備狀態機,在設備為正??刹僮鳡顟B下被掛起,直到設備狀態被其他事件改變后由信號量激活。
  (2)周期性報文發送任務:由時間調度任務在宏周期內本設備周期性報文發送時間到達時產生中斷激活而進入就緒狀態,在中斷退出后成為最高優先級任務被執行,立即發送周期性報文,發送完畢即掛起等待下一次激活。
 ?。?)非周期性報文發送任務:與任務(2)相似,在非周期報文發送時間到被激活,通過調度算法發送非周期性報文。以上兩個任務由于不會在同一時間段執行,因此實際運行時的優先級是等同的。
 ?。?)功能塊調度任務:在組態的功能塊調度時間到達時被激活,或者在控制回路中上一個功能塊執行之后被激活,立刻執行后掛起。由于首先要確保EPA網絡通信的確定性,所以此任務的優先級低于前兩個任務。
 ?。?)時間調度任務:通過對網絡時間的判斷,在到達以上三個任務的執行時間時進入時間中斷函數,給相應的任務發送信號量,使任務進入就緒狀態,中斷退出即可以執行就緒的高優先級任務。根據時間精度的要求設置內核調用OSTimeTick的頻率,可以通過#define OS_TICKS_PER_SEC 256,實現每秒256次的Tick頻率。
 ?。?)普通報文接收任務:套接字映射實體偵聽來自EPA網絡的報文并根據需要調用相應的應用層服務處理報文,設為每100ms執行一次。
  (7)時鐘同步任務:獨立接收與發送時間同步報文,以確保設備時間與網絡時間的同步。由于主時鐘發送Sync報文周期為2秒一次,所以其優先級可以低于時間調度任務,設為每2秒執行一次。
  (8)串口通信任務:與電動執行器進行周期性的串口通信,根據電動執行器的物理特性,通信頻率設為每秒2次,其通信方法在后文中介紹。
  各任務之間采用全局變量或者消息機制進行通信,以完成任務狀態機的變化。任務堆棧則根據各任務的實際需要分配,這里不再詳述。
  5. 測試
  為了測試通信協議的實現,使用通信卡的RS-232串口與某型電動執行器的異步串行通信接口相連,形成一個EPA現場設備。EPA通信卡接收來自EPA網絡的閥位指令并通過串行口傳送給電動執行器,電動執行器接到閥位指令后向網板發出應答幀,雙方各自一收一發完成一個周期的通信。通信中網板是主節點,電動執行器為從節點,每周期通信均是由通信卡發起,電動執行器響應。
  通過EPA網橋將該設備加入EPA網絡進行測試,經過專家組的驗收,該實驗系統成功通過了一致性測試、互可操作性測試等服務測試,時鐘同步精度也達到了毫秒級,基本上實現了EPA通信卡的功能。
  6. 結束語
  系統實時性要求越高,對硬件的要求也越高,如果要求時鐘同步精度和通信調度發送報文的時間精度達到實際應用的水平,并且進一步提高EPA設備通信的可靠性,則需要采用硬件實現的方法,即開發EPA專用通信芯片,在芯片級實現通信協議,預計EPA芯片很快會面世。相信在眾多研究機構與廠商的共同努力下,EPA的推廣應用將會取得豐碩的成果。
  本文作者創新點:針對EPA通信協議提出了一種新的實現方法,此方法基于μC/OS-II嵌入式操作系統,用多任務的方式實現了各個協議實體及其調度。
此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 久久精品丝袜高跟鞋 | 国产69精品久久 | 国产高清免费在线观看 | 一级香蕉视频在线观看 | 欧美伦理片| 久久无码中文字幕久久无码app | 成年人av网站 | 国内免费av | 看黄色特级片 | 日韩亚洲欧美中文高清 | 97香蕉久久超级碰碰高清版 | 图片区乱熟图片区小说 | 成年人天堂com | 午夜在线免费视频 | 日韩中文字幕视频在线观看 | 国产精品亚洲一区二区无码 | 女十八毛片aaaaaaa片 | 蜜桃香蕉视频 | 在线免费观看黄视频 | 黄色av网址大全 | 中文字幕超清在线观看 | 国产精品成人av在线观看春天 | 免费av网站观看 | 天堂网在线最新版www中文网 | 久久伊人精品中文字幕有软件 | 精品少妇一区二区视频在线观看 | 亚洲人成影院在线无码按摩店 | 尤物视频在线观看免费 | 午夜精品久久久久久久91蜜桃 | 日韩精品一区二区av在线 | 人与兽黄色毛片 | 欧美在线精品一区 | 午夜精品一区二区三区在线视 | 久久久无码中文字幕久... | 一个人看的www免费视频在线观看 | 日本少妇xxx | 日狠狠 | 国产尤物在线视频 | 黄色大片一级片 | 久久爱稳定资源365 久久爱综合 | 青青草狠狠干 | 天堂网手机版 | 黑人干亚洲 | tianlula成人精品| 国产精品自在在线午夜免费 | 大奶子网站 | 人人爽人人爽少妇免费 | 国产乱子伦精品无码码专区 | 日韩欧美tⅴ一中文字暮 | 成人在线高清视频 | 怡红院毛片 | 精品无码av一区二区三区不卡 | 亚洲第一页综合 | 天堂av日韩 | 懂色av一区二区三区蜜臀 | 欧美最猛性xxxxx大叫 | 91精品国产成人 | 免费看a级黄色片 | 欧美影院成年免费版 | jizz成人| 一级生活毛片 | 国产欧美一区二区精品性色 | xx视频在线 | 亚洲最大av | 无码人妻丰满熟妇a片护士 日本欧美大码a在线观看 | 亚洲国产精品视频一区 | 久久伊人操| 日日天日日夜日日摸 | 99精品国产丝袜在线拍国语 | 巨肉超污巨黄h文小短文 | 性高湖久久久久久久久 | 成人ay| 国产福利一区二区三区在线视频 | 亚洲精品伊人 | 私人毛片免费高清影视院 | 国产成人久久婷婷精品流白浆 | 激情 小说 亚洲 图片 伦 | 校园春色综合版 | 超碰123| 人善交video另类hd侏儒 | 国产tscd人妖同性另类调教 | 久久婷婷成人综合色 | 天堂视频免费看 | 欧美日韩另类在线 | 天天做天天摸天天爽天天爱 | 日日操日日干 | 少妇沉沦哀羞迎合呻吟视频 | 91精品国产乱码久久久久 | 日本性生活一级片 | 麻豆视频在线观看 | 最新免费av | 精品午夜熟女人妻视频毛片 | 亚洲精品午夜久久久久久久 | 亚洲国产成人精品久久久国产成人 | 永久免费看黄 | 日韩中文字幕成人免费视频 | 北条麻妃二三区 | 激情图片区| 日本久久高清一区二区三区毛片 | 在线免费激情视频 | 国产在线精品播放 | 榴莲视频黄色 | 免费线上av | 国产乱人伦真实精品视频 | 日韩在线观看一区 | 少妇精品偷拍高潮少妇 | 国产高清小视频 | 老头与老头性ⅹxx视频 | 色综合999| 日本公妇乱偷中文字幕 | 欧美一级做a爰片久久高潮 欧美一级做a爰片免费视频 | 亚洲色图99p | 欧美在线观看视频免费 | 国产一区二区91 | 久久不卡视频 | 国产精品玖玖玖 | 免费做a爰片久久毛片a片 | 国产极品白嫩精品 | 中文字幕永久免费 | 色五月情 | 男女激情视频免费观看刺激 | 神马久久久久 | 成年人精品视频 | 久久97| 亚洲污污网站 | 国产在线视频一区二区 | 欧美大荫蒂毛茸茸视频 | av观看网址 | 亚洲欧美日韩系列 | 沦为黑人姓奴的少妇 | 免费成人精品 | 日本在线三级 | 一区二区精品国产 | 久久国产一 | 成年人毛片 | 国产成人三级一区二区在线观看一 | 国产一级理论片 | 国产一级二级 | 精品久久久久久久久久久国产字幕 | 少妇挑战黑人3p | 国产网红女主播免费视频 | 日韩在线视频观看免费 | 吃奶呻吟打开双腿 | 成人区人妻精品一区二区不卡视频 | 色校园| 中文字幕成人精品久久不卡 | 91精品众筹嫩模在线私拍 | 国产三级国产精品国产专区50 | 中文字幕第99页 | 黑丝一区二区三区 | 97国精产品无人区一码二码 | av成人在线播放 | www久久精品 | 亚洲天天综合 | 欧美喷潮久久久xxxxx | 粗暴蹂躏av一区二区 | 99久久精品一区二区成人 | 日本a在线| 欧美一区二区三区在线视频观看 | 99极品视频| 美日韩成人av | 99久久精品免费视频 | 污污视频网站在线免费观看 | 日本黄在线观看 | 又粗又硬的毛片aaaaa片 | 久久精品女人天堂av麻 | 国产精品麻豆免费观看 | 国产91精品高潮白浆喷水 | 国产美女极度色诱视频www | 中文字幕av久久爽一区 | 中文字幕五区 | 中文字幕色婷婷在线视频 | 欧美伦理一区二区 | 精品国产乱| 性猛交富婆╳xxx乱大交视频 | 午夜影院一区 | 天天综合永久入口 | 91嫩草私人成人亚洲影院 | 精品国产99 | 韩国av一区二区 | 性chⅰnese国模大尺度视频 | 亚洲成a人片在线观看久 | 北条麻妃在线一区二区 | 免费大片黄在线观看视频网站 | 成人网站免费观看入口 | аⅴ天堂中文在线网 | 国产男女视频在线观看 | 极品尤物magnet | 麻豆一级片 | 国产偷亚洲偷欧美偷精品 | 国产精品天干天干在线 | 青青草视频免费 | 日本乱码一区二区三区芒果 | 日韩福利视频在线观看 | 在线中文视频 | 久久大胆人体 | 日韩在线第二页 | 日韩 在线 中文 制服一区 | 日韩精品系列 | 成人在线观看网站 | 日日操中文字幕 | 国产午夜视频在线 | 香港三日三级少妇三级99 | 人妻无码一区二区三区四区 | 久久九九热 | 亚洲国产精品无码一线岛国 | 成人性能视频在线 | 久久精品久久久久久久 | 2023亚洲精品国偷拍自产在线 | 伊人伊成久久人综合网站 | 亚洲日本久久 | 女教师淫辱の教室蜜av臀 | 四虎1515hh海外永久免费 | 成人国产精品免费观看动漫 | 国产精品女同一区二区软件 | 亚洲天堂婷婷 | 999久久久国产精品消防器材 | 亚洲国产一区二区三区波多野结衣 | 一本大道久久卡一卡二卡三乱码 | 成人三级晚上看 | 人人妻人人澡人人爽人人精品av | 国产人妻一区二区三区四区五区六 | 免费av资源在线观看 | 国产无限制自拍 | 久久精品国产99久久久古代 | 国语自产偷拍精品视频偷拍 | 国产自偷自偷免费一区 | 无码免费一区二区三区免费播放 | 久久久精品人妻一区二区三区 | 欧美一级鲁丝片 | 少妇肥臀大白屁股高清 | 免费毛片在线播放 | 日韩av在线天堂 | 看91| 中文毛片无遮挡高潮免费 | 欧美一级淫片bbb一84 | 欧美国产片 | 国产femdom调教557 | 成年人免费视频观看 | 成人国内精品久久久久影院成人国产9 | 亚洲iv一区二区三区 | 亚洲一区二区三区四区五区不卡 | 亚洲精品二区 | 91av视频网| 精品女同一区二区三区在线观看 | 亚洲乱码一区av春药高潮 | 特级a做爰全过程片 | 国产成人精品男人的天堂 | 亚洲午夜久久久影院 | 久久午夜无码鲁丝片秋霞 | wwwsss在线观看| 毛片tv网站无套内射tv网站 | 久久久综合香蕉尹人综合网 | 亚洲影院av| xx久久| 麻豆果冻传媒2021精品传媒一区下载 | 在线а√天堂中文官网 | a级毛片 黄 免费a级毛片 | 果冻传媒色av国产在线播放 | 亚洲欧美日韩一区二区三区在线 | 午夜精品久久久久久 | 色一情一乱一伦一视频免费看 | 操操日| 日韩视频一区二区三区在线观看 | 国产麻豆9l精品三级站 | 亚洲欧美日韩国产成人精品影院 | 午夜免费观看视频 | 亚洲精品久久久久久 | 丰满蕾丝乳罩少妇呻视频 | 色www视频永久免费 国产欧美日韩专区发布 | 亚洲人成电影在线观看影院 | 国产精品国产成人国产三级 | 丰满岳乱妇在线观看中字无码 | 美女伦理水蜜桃4 | 日韩成人在线视频观看 | 在线人成 | 久久国产精品久久精品国产 | 美女内射毛片在线看3d | 成人免费淫片 | 一本一道色欲综合网中文字幕 | 日本一区二区高清不卡 | 国产国产精品人在线观看 | 黄色一级生活片 | 久久中文字幕免费视频 | 日本妞xxxxxxxxx68 | 美女隐私免费 | 日产精品一区二区三区在线观看 | 亚洲区欧美区综合区自拍区 | 国内精品视频在线播放 | 被灌满精子的少妇视频 | 亚洲人成综合网站7777香蕉 | 亚洲成人一区二区在线观看 | 一区二区三区小说 | 性做久久久久久免费观看欧美 | 日本肉感丰满bbw | 8x国产精品视频 | 78亚洲精品久久久蜜桃网 | 成人天堂资源www在线 | 国产精品久久久久不卡 | 人禽20z0性伦| 日韩欧美高清在线视频 | 一级黄色短片 | 色综合久久成人综合网 | 国外精品jvid在线观看 | 久艹av| 亚洲最大中文字幕 | 欧美成人自拍视频 | 玩弄放荡人妻少妇系列视频 | 久久精品日产第一区二区三区乱码 | 无码国产精品一区二区免费式芒果 | 欧美jizzhd精品欧美巨大 | 亚洲国产成人av | 国产亚洲精品久久久456 | av片免费在线| 免费黡色av | 中文字日产幕乱码免费 | 国产精品久久久久一区二区 | 密乳av| 精品国产一区二区三区香蕉 | 国产熟女一区二区三区四区五区 | 白俄罗斯毛片 | 国产91在线高潮白浆在线观看 | 精品欧美激情精品一区 | 久欠精品国国产99国产精2021 | 一本大道av伊人久久综合 | 国产精品99蜜臀久久不卡二区 | 亚洲人成电影网站色mp4 | 国产大片黄在线观看 | 特黄特色三级在线观看 | 国产精品日韩欧美一区二区 | 欧美日韩精品一区二区在线播放 | 亚洲xxx视频 | 亚洲国产成人a精品不卡在线 | 欧美肥妇视频 | 青青艹在线观看 | 搐搐国产丨区2区精品av | heyzo朝桐光一区二区 | 美女免费网站在线观看 | 毛片一区二区三区无码 | 日韩欧美区 | 瑟瑟av| 九九综合 | 欧美国产综合色视频 | 欧美一级无毛 | r级无码视频在线观看 | 亚洲国产精品丝袜国产自在线 | 在线看色网站 | 国产欧美日韩久久 | 成人乱淫av日日摸夜夜爽 | 狂野猛交ⅹxxx吃奶 狂野欧美性猛交xxⅹ李丽珍 | jizz在线看 | 美国黄色a级片 | 色综合久久88色综合天天 | 亚洲欧美日韩国产精品一区二区 | 欧美一二三| 麻豆观看| 日本老熟妇乱 | 日本黄色xxxx | 国产精品国产三级国产专播精品人 | caopor超碰| 欧美 日韩 国产 在线观看 | 女人高潮a毛片在线看 | 熟妇的奶头又大又长奶水视频 | 午夜影院在线看 | 亚洲欧洲日本国产 | 欧美精品99久久久久久人 | 一女两夫做爰3p高h文 | 天堂在线www中文 | 国产精品美女久久久久图片 | 午夜网站免费 | 好吊日免费视频 | 亚州综合视频 | 女av在线| 亚洲三区在线观看无套内射 | 可以看三级的网站 | 国产精品久久久久婷婷 | 欧美内射rape视频 | 中国videosex高潮hd| 99热一区| 成人网站免费看黄a站视频 欧美性猛交xxxx黑人 | 中文天堂 | 综合网日日天干夜夜久久 | 性丰满白嫩白嫩的hp124 | 国产精品黑色丝袜久久 | 欧美一级α片 | 日日噜噜夜夜狠狠va视频v | 欧美a级大胆视频 | 无码国产精品一区二区免费式直播 | 超清 忍不住的亲子伦中文字幕 | 成人av在线影视 | 亚洲中文字幕在线无码一区二区 | 激情视频网址 | 丰满少妇大力进入 | 青青99| 国产综合久久久久久鬼色 | 高清免费毛片 | 久久亚洲a v | 中文字幕成人精品久久不卡 | 色婷婷久久一区二区三区麻豆 | 国产综合图区 | 中文字幕亚洲精品 | 一个人看的毛片 | 黄色天天影视 | 欧洲精品欧美精品 | www.欧美色| 国产麻豆一区二区三区精品 | 亚洲综合另类小说色区 | 国产精品刺激 | 91在线不卡 | 中文字幕第23页在线 | 欧美1区2区3区 | 香蕉视频免费在线看 | 国产亚洲日本精品无码 | 一区二区精 | 亚洲一区二区三区四 | 免费看黄色网址 | 国产真人毛片 | 农村女人做爰毛片 | 免费看黄av | 中文字幕无码av波多野吉衣 | 国产91丝袜在线播放九色 | 手机av不卡 | 日韩久久久久久久 | 亚洲欧洲色图 | 国产mv欧美mv日产mv免费 | 白色丝袜美女羞羞av | 岛国精品资源网站 | 精品日韩在线 | 国产精品无码翘臀在线观看 | 亚洲综合图片区 | 国产精品美女一区二区三区四区 | 亚洲乱码国产乱码精品精乡村 | 一级黄毛片 | 精品综合久久 | 亚洲无吗av| 无人在线观看的免费高清视频 | 久久亚洲国产成人精品性色 | 亚洲欧美成人在线 | 欧产日产国产蜜网站 | 国产猛男猛女超爽免费视频 | 久操成人 | a免费观看| 夜夜嗨av一区二区三区网页 | 亚洲www啪成人一区二区麻豆 | 亚洲熟妇无码av在线播放 | 少妇啪啪高潮肉谢 | 天天干狠狠插 | 欧美日韩国产片 | 天天插天天爱 | 国产精品99久久久久久猫咪 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 亚洲愉拍99热成人精品 | 欧美三级自拍 | 中文字幕在线观看你懂的 | 日本a v网站 | 亚洲精品动漫成人3d无尽在线 | 清纯唯美经典一区二区 | 明神亚贵在线免费观看 | 国内成人在线 | wwwxxx在线| 色婷婷国产精品视频 | 欧美三级在线看 | wwwav成人| 欧美日韩高清一区 | 日日鲁鲁夜夜狼狼视频 | 天堂av中文网 | 图片区亚洲色图 | 狠狠干在线 | 色综合综合色 | 日韩久久久久 | 国产免费资源 | 精品视频久久久久久久 | fc2ppv在线观看 | 久久人妖| 国产精品办公室沙发 | av成人免费观看 | 亚洲m码 欧洲s码sss222 | 少妇系列之白嫩人妻 | 色欲麻豆国产福利精品 | 免费看黄色一级片 | 久久婷婷五月综合色一区二区 | 黄色一级在线 | 国产高清无套内谢 | 91精品久久久久久久91蜜桃 | 亚洲自偷自偷在线成人网站传媒 | 一级福利视频 | 网站在线免费网站在线免费观看国产网页 | 国产精品igao视频网网址 | 欧美精品一区二区久久久 | 国产md视频一区二区三区 | 日韩在线精品强乱中文字幕 | 欧美日韩在线观看一区二区 | 蜜桃又黄又粗又爽av免 | 国产欧美精品一区二区 | 久久久亚洲精品成人 | 国产精品自在欧美一区 | 久久久久久福利 | h亚洲| 中文字幕精品亚洲 | 日韩精品中文字幕一区二区 | 永久免费看成人av的动态图 | 国产激情无码一区二区三区 | av最新版天堂资源在线 | а天堂中文地址在线 | 看片一区 | 日批动态图 | 免费人成年激情视频在线观看 | 国产肉体ⅹxxx137大胆 | 糖心av | 91porny在线| 黄色片的网站 | 久久一视频 | ass亚洲日本嫩体私拍ass | 日本亚洲一区二区 | 欧美性白人极品hd | av资源天堂| 欧美日韩免费做爰视频 | 色综合欧美 | 丁香五香天堂综合小说 | 国产一区二区三区四区三区四 | 亚洲在线观看视频 | 男人天堂a | 理论av| 窝窝午夜影院 | 亚洲另类色综合网站 | 国产真实野战在线视频 | 热久久久久久 | 在线v| 亚洲欧美中文字幕5发布 | 亚洲国产精品久久久久婷蜜芽 | 喷潮91| 亚洲天堂视频在线观看 | 1000部夫妻午夜免费 | 免费在线观看黄 | 盗摄中年夫妇啪啪免费观看 | 91社区在线高清 | 超碰在线天天 | 狼人伊人久久 | 亚洲乱淫 | 55夜色66夜色国产精品视频 | 一级片的网站 | 亚洲国产va | 成人毛片网站 | 青青草原综合久久大伊人精品 | 最近免费中文字幕mv在线视频3 | 亚洲国产精品久久久久久无码 | 亚洲一区二区三区四区五区六 | 国产女人十八毛片 | 性少妇中国内射xxxx狠干 | 农村真人裸体丰满少妇毛片 | 日韩啊啊啊 | 美女视频黄8视频大全 | 亚洲精品88欧美一区二区 | 日韩图片区 | 黑人巨大亚洲一区二区久 | 成人无码精品一区二区三区 | 午夜鲁鲁 | 久草在线新视觉 | 亚洲色图欧美色 | 国产人妻久久精品二区三区特黄 | 精品免费国产一区二区 | 欧美激情视频二区 | 中文字幕av网站 | 少妇特殊按摩高潮惨叫无码 | 亚洲精品久久久久久久蜜桃臀 | h色在线观看 | 美女少妇翘臀啪啪呻吟网站 | 国产乱xxxxx79国语对白 | 欧美高清一区二区三区四区 | 激情五月婷婷网 | 成品片a免人视频 | 激情xxx | 日韩欧美一区二区在线观看 | 国产精品高潮呻吟av久久 | 麻豆国产精品777777在线 | 亚洲好骚综合 | 东京无码熟妇人妻av在线网址 | 成人久久免费网站 | 免费人成视频在线观看网站 | 成人亚洲国产精品一区不卡 | 五月天久久久 | 日本3p视频 | 国产ts三人妖大战直男 | 超碰在线公开免费 | 久久久久久国产精品视频 | 国产精品日本一区二区不卡视频 | 男人天堂tv| 在线国产一区 | 国产精品96久久久久久又黄又硬 | 九色pony麻豆 | 国产精品女教师av久久 | 亚洲国产精品日韩av不卡在线 | 久久久久爽爽爽爽一区老女人 | 78成人天堂久久成人 | 影音先锋 成人 | 精品不卡一区 | 艳妇荡女欲乱双飞两中年熟妇 | 麻豆蜜桃av蜜臀av色欲av | 胸大美女又黄的网站 | 性色欲网站人妻丰满中文久久不卡 | 91精品国产综合久久久蜜臀九色 | 波多野结衣在线视频网站 | 大尺度做爰啪啪床戏 | 日本黄色美女视频 | 又大又黄又爽视频一区二区 | 99视频久| 欧美另类精品xxxxxx高跟鞋 | 国产麻豆天美果冻无码视频 | 亚洲日本在线观看 | 人少妇精品123在线观看 | 久久精品aⅴ无码中文字字幕重口 | 野花香社区在线视频观看播放 | 欧美日韩一区三区 | 日韩久久高清 | 欧美bbbb内谢 |