<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于S3C2440的Ethercat實(shí)時(shí)工業(yè)以太網(wǎng)

          基于S3C2440的Ethercat實(shí)時(shí)工業(yè)以太網(wǎng)

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

          本文設(shè)計(jì)的從站節(jié)點(diǎn)硬件包括從站協(xié)議控制器、從站CPU和網(wǎng)絡(luò)接口等部分組成。從站中最關(guān)鍵部分是協(xié)議控制器,它實(shí)現(xiàn)Ethercat的物理層與數(shù)據(jù)鏈路層的協(xié)議?,F(xiàn)在市場(chǎng)上有多種Ethercat協(xié)議控制器可供使用,如FPGA實(shí)現(xiàn)和ASIC實(shí)現(xiàn)。從站CPU采用ARM920T核的芯片。接口連接方式采用16位異步微處理器方式[7]。從站的硬件實(shí)現(xiàn)如圖3所示。
          其中ARM控制器實(shí)現(xiàn)Ethercat對(duì)現(xiàn)場(chǎng)任務(wù)的收集與調(diào)度;Ethercat從站控制器實(shí)現(xiàn)Ethercat協(xié)議;EEPROM用于保存從站配置數(shù)據(jù)和從站描述數(shù)據(jù);網(wǎng)絡(luò)接口用于主從站之間或從站與從站之間的連接,根據(jù)Ethercat從站控制器的不同網(wǎng)絡(luò)接口可以分別為2-4個(gè),網(wǎng)絡(luò)接口采用標(biāo)準(zhǔn)以太網(wǎng)物理層器件就可以。

          圖3 從站節(jié)點(diǎn)結(jié)構(gòu)框圖
          4 數(shù)據(jù)交換
          主從站之間交換的數(shù)據(jù)主要分兩種形式:一種是周期性數(shù)據(jù);另一種是非周期性數(shù)據(jù)。周期性數(shù)據(jù)傳輸可以根據(jù)任務(wù)的緊迫性劃分其優(yōu)先級(jí),通過(guò)采用調(diào)度任務(wù),把劃分好優(yōu)先級(jí)的任務(wù)放入緩沖區(qū)供系統(tǒng)調(diào)用。緩沖區(qū)為在內(nèi)存中分配的一段空間,兩端都可以訪問(wèn)緩沖區(qū)中的數(shù)據(jù);非周期性數(shù)據(jù)采用郵箱方式傳輸,此時(shí)一端寫入數(shù)據(jù)到內(nèi)存,且只有此段內(nèi)存寫滿后另一端才能開始從內(nèi)存中讀取數(shù)據(jù),并且只能當(dāng)內(nèi)存中的數(shù)據(jù)全部讀出時(shí),才能重新寫入數(shù)據(jù)。針對(duì)這兩種數(shù)據(jù)通信方式,從站程序可以對(duì)非周期性數(shù)據(jù)通信采用查詢方式,對(duì)周期性通信采用中斷方式,程序流程圖如圖4、圖5所示[8]。

          圖4 中斷方式

          圖5 查詢方式



          關(guān)鍵詞: S3C2440 Ethercat EDF算法

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();