siemens x
工業(yè)以太網

基于赫優(yōu)訊COMX嵌入式模塊開發(fā)EtherCAT從站設備

2025China.cn   2013年05月31日

  摘要:隨著實時工業(yè)以太網技術的發(fā)展,在最新版本的IEC61158 Ed.4標準中已經包含了Profinet,EtherCAT,Ethernet/IP,SERCOS III等11種實時以太網行規(guī)集。以netX網絡控制器為處理器的嵌入式模塊comX,是支持所有主流實時以太網協(xié)議的嵌入式模塊。本文在介紹了實時以太網和netX網絡控制器的基本結構和功能的基礎上,詳細探討了基于該嵌入式模塊comX的實時以太網從站設備的網絡接口硬件組成和軟件實現(xiàn),以及在智能分揀系統(tǒng)中的應用。

  關鍵字:實時以太網;netX網絡控制器;雙端口內存DPM;嵌入式模塊comX

  0 引言

  隨著計算機、通信、網絡等信息技術的發(fā)展,信息交換的領域已經覆蓋了工廠、企業(yè)乃至世界各地的市場,因此,需要建立包含從工業(yè)現(xiàn)場設備層到控制層、管理層等各個層次的綜合自動化網絡平臺,建立以工業(yè)控制網絡技術為基礎的企業(yè)信息化系統(tǒng)。

  20世紀80年代產生和發(fā)展起來的現(xiàn)場總線技術,以全數(shù)字的通信代替4~20mA電流的模擬傳輸方式,使得控制系統(tǒng)與現(xiàn)場儀表之間不僅能傳輸生產過程測量與控制信息,而且能夠傳輸現(xiàn)場儀表的大量非控制信息,使得工業(yè)企業(yè)的管理控制一體化成為可能。然而,現(xiàn)場總線技術在其發(fā)展過程中存在不足:標準過多,不同總線之間不能兼容;專用實時通信網絡,成本高;速度較低,支持的應用有限,不便于和Internet信息集成。

  由于現(xiàn)場總線的互連、互通與互操作性問題很難解決,于是現(xiàn)場總線開始轉向以太網。經過近幾年的努力,以太網技術已經被工業(yè)自動化系統(tǒng)廣泛接受。為了滿足高實時性能應用的需求,各大公司和標準組織紛紛提出各種提升工業(yè)以太網實時性的技術解決方案,從而產生了實時以太網(Real Time Ethernet,簡稱RTE)。目前,在最新版的IEC 61158 Ed.4標準中包含了11種實時以太網行規(guī)集:Profinet,EtherCAT,Ethernet/IP,SERCOS III,PowerLink, EPA, Modbus/TCP,TC-net,Vnet/IP,P-NET和HSE。

  本文介紹了一種基于嵌入式模塊comX的EtherCAT實時以太網從站設備設計方案,該模塊支持目前所有主流的實時以太網協(xié)議,并詳細討論了其硬件組成和軟件實現(xiàn),以及在智能分揀系統(tǒng)中的應用。

  1 netX網絡控制器

  1.1 netX基本結構

  netX網絡控制器是赫優(yōu)訊(Hilscher)公司推出的新一代工業(yè)網絡控制芯片,目前具有netX500、netX100、netX50三種型號,是一種高度集成的網絡控制器,它具有全新的系統(tǒng)優(yōu)化結構,適合工業(yè)通訊和大規(guī)模的數(shù)據吞吐。支持目前所有主流的實時以太網和現(xiàn)場總線系統(tǒng):PROFINET、Ethernet/IP、EtherCAT、Powerlink、SERCOS III、Open Modbus on TCP/IP、AS-Interface、Interbus、CC-Link、CANopen、DeviceNet、Profibus等協(xié)議。

  netX 500的結構如圖1所示。netX 500/100以32位ARM 926EJ-S為CPU核,主頻200MHz,片上集成144KB SRAM、裝有引導程序和實時內核的32KB ROM,通過Memory控制器可以外擴SDRAM、SRAM或FLASH,通過雙端口內存DPM接口還可以連接到主機系統(tǒng)。netX包含豐富的外設功能:如UART,USB,SPI,I2C以及集成的顯示控制器,可以滿足廣泛的應用需求。此外,netX采用中央數(shù)據交換(Data Switch),它連接著各個功能單元,允許同時在不同的主從端口之間通信,同時可以防止它們在傳輸數(shù)據時相互阻塞。netX最大的亮點在于具有可以自由定義4個智能通訊口,可以配置為現(xiàn)場總線或實時以太網通道。因此,netX是名副其實的“高端”網絡控制器。

  圖1 netX 500結構框圖

  1.2 netX基本功能

  netX 500網絡控制器內部集成ARM 926的CPU核,因此可以做為一個單片系統(tǒng),所有的應用都可以在netX上實現(xiàn)。其次,netX具有雙端口內存DPM接口,也可以再外接一個CPU,實現(xiàn)雙核系統(tǒng):CPU負責處理應用程序,netX專門實現(xiàn)網絡通訊。

  netX500最大的特點就是具有可配置的4個通信通道,它們建立在兩層結構上,而且相互等同。它們具有專門的ALU,并且有特殊的邏輯單元,通過Microcode來實現(xiàn)各協(xié)議的基本功能。xMAC(Medium-Access-Controller)分別按照各自的總線存取進程,發(fā)送和接收數(shù)據,加密或者將它們轉化為字節(jié)方式。xPEC(Protocol Execution Controller)負責編譯,并將數(shù)據打包,管理報文通訊。當數(shù)據量大時,可通過DMA通道進行數(shù)據交換。而且,每個通道有一個雙端口內存DPM,可用于保存狀態(tài)信息或本地數(shù)據。

  其中,前兩個通道集成PHY,可直接用于以太網的連接。并且內部已經集成了各種實時以太網協(xié)議所需的ASIC硬件資源,如Hub、Switch、IEEE1588等,如圖2所示。

  圖2 實時以太網通道結構圖

  因此,通過這種智能的通訊ALU,在netX芯片上可以實現(xiàn)各種不同的通訊協(xié)議,可以是現(xiàn)場總線協(xié)議,也可以是各種實時以太網協(xié)議,并且可以自由組合。而且,同步過程不受CPU響應時間的限制。

  2 實時以太網設備的設計

  在該從站設備中,使用的是德國赫優(yōu)訊(Hilscher)自動化系統(tǒng)有限公司的嵌入式模塊comX-CA-RE,模塊內部已經集成專用的ASIC芯片和固化程序Firmware,由該模塊實現(xiàn)實時以太網協(xié)議,主機CPU通過嵌入式模塊提供的雙端口內存(Dual-Port Memory,DPM)接口與模塊進行數(shù)據通信,用戶不需要關心協(xié)議的具體實現(xiàn),只需往DPM接口讀/寫數(shù)據就可以,因此,該模塊就像一個內存,使用起來特別方便。該模塊的另一個特點是,同一個硬件模塊上就能支持各種不同實時以太網協(xié)議:Profinet、EtherCAT、Ethernet/IP、SERCOS III、Powerlink和Modbus TCP,并且還支持主站或從站,只需下載不同的協(xié)議堆棧Firmware。因此,減少了硬件開發(fā)成本,只需在軟件上更改相關協(xié)議的API,這大大的保護了投資,減少了開發(fā)的再投入成本。

  2.1 硬件設計

  嵌入式模塊comX-CA-RE提供給用戶的硬件接口只有X1一個排針連接頭(50根管腳),即雙端口內存接口,該連接頭包含了與主機通信必備的控制線、16位數(shù)據總線和14位地址總線。

  由于該模塊已經集成實現(xiàn)實時以太網接口的所有必備電路,因此在外圍電路設計的時候非常簡單方便,其電路連接與MCU和內存的連接相似。實時以太網協(xié)議都由模塊內部實現(xiàn),用戶應用程序只需通過提供的API接口和訪問方式,對雙端口內存進行讀/寫操作。嵌入式模塊comX與主機接口電路如圖3所示。在該設備中,同時還設計了IO、AD采集電路,DA輸出電路,以及其它的外設接口電路。

  圖3 嵌入式模塊與主機接口電路

  2.2 軟件設計

  嵌入式模塊comX提供的主機接口是雙端口內存DPM,用戶應用程序通過DPM接口來訪問該模塊。同時,為了提高整個系統(tǒng)的實時性和可靠性,主機系統(tǒng)使用的是實時多任務操作系統(tǒng)Linux。因此,在進行軟件設計時,主要完成驅動程序以及應用程序的編寫。

  2.2.1 雙端口內存DPM結構

  用戶應用程序通過雙端口內存DPM來訪問實時以太網嵌入式模塊comX,嵌入式模塊comX提供的雙端口內存DPM接口是16 KByte的地址空間,其具體結構如圖4所示。

  圖4 雙端口內存地址空間

  netX提供的雙端口內存最大地址空間是64KByte,分為系統(tǒng)通道、握手通道、通訊通道0~3、應用通道0~1。對于嵌入式模塊comX,實時以太網的協(xié)議堆棧(如EtherCAT從站的Firmware)已經保存在模塊的Flash中,因此只使用了默認的系統(tǒng)通道、握手通道和通訊通道0,16KByte的地址空間。

  系統(tǒng)通道512個字節(jié),位于雙端口內存DPM的起始位置,是最重要的通道,總是存在。它包含了系統(tǒng)本身(netX硬件和實時操作系統(tǒng)rcX)的關鍵信息,并且提供一種郵箱的傳輸機制,用于發(fā)送/接收跟系統(tǒng)相關的報文。各功能塊如表1所述。

系統(tǒng)通道

名稱

大小

描述

系統(tǒng)信息塊

48 Bytes

系統(tǒng)信息,制造商信息,序列號等

通道信息塊

128 Bytes

所使用的通訊通道和應用通道的配置信息

保留

8 Bytes

握手單元保留

系統(tǒng)控制塊

8 Bytes

系統(tǒng)控制和命令

系統(tǒng)狀態(tài)塊

64 Bytes

系統(tǒng)狀態(tài)信息

系統(tǒng)郵箱

256 Bytes

系統(tǒng)發(fā)送/接收報文郵箱

    表1 系統(tǒng)通道結構

  握手通道256字節(jié),從偏移地址0x0200開始,提供主機系統(tǒng)與netX固件(運行在netX芯片中的協(xié)議堆棧)之間的數(shù)據傳輸同步機制。所有通道的握手寄存器都在此區(qū)域,每個握手寄存器包含兩類握手信息:系統(tǒng)握手信息和通訊握手信息。系統(tǒng)握手信息與“系統(tǒng)設備”相關,由主機應用執(zhí)行netX系統(tǒng)相關的命令,如復位等。通訊握手信息用于同步循環(huán)或非循環(huán)數(shù)據,同時向主機系統(tǒng)提供狀態(tài)變化信息。

  通訊通道m(xù)*256字節(jié),從偏移地址0x0300開始,現(xiàn)場總線協(xié)議堆棧使用該通道,與主機系統(tǒng)進行循環(huán)數(shù)據和非循環(huán)數(shù)據的數(shù)據交換。共有四個通訊通道,每個通訊通道分別對應netX芯片的xMAC/xPEC端口,其結構都相同。通訊通道0的默認大小是16KByte,其各功能塊如表2所述。

通訊通道(默認布局)

名稱

偏移地址

大小

描述

保留

0x0300

8 Bytes

保留,設為0

控制塊

0x0308

8 Bytes

主機系統(tǒng)控制通訊通道功能塊

普通狀態(tài)塊

0x0310

64 Bytes

與協(xié)議堆棧相關的狀態(tài)信息

擴展狀態(tài)塊

0x0350

432 Bytes

網絡特殊的狀態(tài)信息

發(fā)送郵箱

0x0500

1600 Bytes

發(fā)送非循環(huán)數(shù)據給netX

接收郵箱

0x0B40

1600 Bytes

接收來自netX的非循環(huán)數(shù)據

輸出數(shù)據Area1

0x1180

64 Bytes

發(fā)送給網絡的循環(huán)數(shù)據(高優(yōu)先級)

輸入數(shù)據Area1

0x11C0

64 Bytes

接收來自網絡的循環(huán)數(shù)據(高優(yōu)先級)

保留

0x1200

256 Bytes

保留,設為0

輸出數(shù)據Area0

0x1300

5760 Bytes

發(fā)送給網絡的循環(huán)數(shù)據

輸入數(shù)據Area0

0x2980

5760 Bytes

接收來自網絡的循環(huán)數(shù)據

    表2 通訊通道結構

  應用通道m(xù)*256字節(jié),根據實際的需求,并不一定需要該通道,該通道實現(xiàn)用戶特殊的信息交互,由客戶定義使用。

  2.2.2 驅動程序的設計

  赫優(yōu)訊提供嵌入式模塊comX的驅動源碼Toolkit,用戶可以根據實際的需求,在不同的目標系統(tǒng)中集成該Toolkit提供的驅動接口,這樣用戶應用程序就能很方便的訪問嵌入式模塊comX的雙端口內存。Toolkit提供的驅動接口與實時以太網協(xié)議無關,只與comX雙端口內存DPM相關,因此,如果基于comX模塊開發(fā)多種實時以太網協(xié)議(Profinet、EtherCAT、Ethernet/IP主從站等)的設備,其驅動程序是通用的。

  在本系統(tǒng)中,使用Linux實時操作系統(tǒng),設備驅動主要完成對嵌入式模塊comX雙端口內存DPM的訪問,用戶程序通過調用Toolkit提供的接口函數(shù)來訪問實時以太網嵌入式模塊comX。Linux設備驅動的框架如圖5所示。

  圖5 Linux設備驅動框架

  Linux設備驅動主要實現(xiàn)的函數(shù)如表3。

函數(shù)

描述

xDriverOpen()

建立應用程序與驅動的連接

xDriverClose()

斷開應用程序與驅動的連接

xDriverGetInformation()

獲得驅動信息

xDriverGetErrorDescription()

獲得驅動錯誤代碼描述

xDriverEnumBoard()

列舉驅動程序管理的模塊/設備

xDriverEnumChannels()

列舉某模塊上使用的通訊通道

xDriverMemoryPointer()

獲得/釋放指向雙端口內存的指針(僅調試使用)

    表3 Linux設備驅動函數(shù)表

  2.2.3 應用程序的設計

  由于赫優(yōu)訊提供的嵌入式模塊comX,在同一個硬件模塊上就能支持各種主流的實時以太網協(xié)議:Profinet、EtherCAT、Ethernet/IP、SERCOS III、Powerlink和Modbus TCP,并且還支持主站或從站,只需下載不同的協(xié)議堆棧Firmware。也就是說,如果開發(fā)不同實時以太網通訊接口的同類產品,除了不同的實時以太網協(xié)議接口不一樣,其它的程序接口都是一樣的。

  在本系統(tǒng)中,使用嵌入式模塊COMX-CA-RE/ECS,即EtherCAT從站模塊。因此,應用程序主要實現(xiàn)的功能:模塊的初始化,從站熱啟動參數(shù)的下載,外圍采集模塊的數(shù)據采集,以及與EtherCAT主站設備的數(shù)據交換等等。

  嵌入式模塊comX的Flash中已經保存了EtherCAT從站的協(xié)議堆棧,在系統(tǒng)上電后,會自動加載該協(xié)議堆棧。然后再加載從站的熱啟動參數(shù),需應用程序加載。不同的實時以太網從站,其熱啟動參數(shù)是不一樣的,以報文的方式,通過雙端口內存DPM的系統(tǒng)郵箱發(fā)送給comX。EtherCAT從站關鍵的熱啟動參數(shù)如下,

  ptWarmstartReq->emFlags = 0; /* System Flags */

  ptWarmstartReq->hdogTime=1000; /* Watchdog time */

  ptWarmstartReq->orId = 0x44; /* Vendor Id */

  ptWarmstartReq->uctCode = 0x7874656E; /* Product code*/

  ptWarmstartReq->sionNumber = 0x0000FFFE; /* Revision number */

  ptWarmstartReq->alNumber = 0; /* Serial number */

  ptWarmstartReq->essDataOutputSize = 4; /* Process Data Output Size */

  ptWarmstartReq->essDataInputSize = 4; /* Process Data Input Size */

  熱啟動參數(shù)的下載處理代碼如下:

  /***** 從站熱啟動參數(shù)下載 *****/

  if( true != GetWarmstartPacket( ulFirmwareSelection, ulDeviceSelection, &tSendPacket))

  {

  printf("Error reading WARMSTART packet for the given protocol\r\n");

  } else

  {

  // 發(fā)送包

  lRet = ptCifXFnc->pfnChannelPutPacket( hChannel, &tSendPacket, 2000);

  if( CIFX_NO_ERROR == lRet)

  {

  printf("Sending WARMSTART packet: DONE\r\n");

  } else

  {

  printf("Error sending WARMSTART to the device: Error=0x%08X\r\n", lRet);

  }

  // 接收包

  lRet = ptCifXFnc->pfnChannelGetPacket( hChannel, sizeof(tReceivePacket), &tReceivePacket, 2000);

  if(CIFX_NO_ERROR != lRet)

  {

  printf("Error while wait for WARMSTART response: Error=0x%08X\r\n", lRet);

  } else if(0 != (lRet = e))

  {

  printf("Error in WARMSTART response: Error=0x%08X\r\n", e);

  } else

  {

  // 等待,直到BUS位被設置

  CHANNEL_INFORMATION tChannelInfo = {0};

  do

  {

  lRet = ptCifXFnc->pfnChannelInfo( hChannel, sizeof(tChannelInfo), &tChannelInfo);

  printf(".");

  } while ( (CIFX_NO_ERROR == lRet) &&

  (!(ceCOSFlags & (RCX_COMM_COS_RUN | RCX_COMM_COS_READY))) );

  }

  }

  當把熱啟動參數(shù)下載完成后,通過xChannelIOWrite()和xChannelIORead()兩個函數(shù),主機應用程序就可以與comX模塊進行數(shù)據交換了。comX模塊中運行的EtherCAT協(xié)議堆棧會自動將主機應用發(fā)來的循環(huán)數(shù)據或非循環(huán)數(shù)據發(fā)送到EtherCAT網絡上。反之,自動截取EtherCAT主站發(fā)送給該從站的數(shù)據,并傳送給主機應用程序。

  3 EtherCAT從站模塊在智能設備的應用

    圖6 智能分揀系統(tǒng)示意圖

  此智能分揀系統(tǒng)要求以流水方式順序檢測產品的若干個質量特征,并對相應的質量特征作出判別,并由主控制器對各個傳感器的檢測結果加以匯總從而得到某一產品的分揀結果,并控制分揀電機將相應的產品分揀到指定的分揀倉中,同時將該產品的質量信息存入數(shù)據庫中。

  在本系統(tǒng)中,傳感器檢測頻率設計為40Hz,由于傳感器位置和處理時間的原因留給數(shù)據傳輸?shù)臅r間要求小于1ms。同時由于要求質量判定結果要存入數(shù)據庫,所以單一傳感器的傳輸數(shù)據量為10~1kByte,因此,要求采用的現(xiàn)場總線的數(shù)據帶寬不能小于10M。所以,在本系統(tǒng)中選用了EtherCAT實時以太網作為數(shù)據傳輸總線,采用德國赫優(yōu)訊的comX嵌入式模塊作為從站接入模塊,嵌入式系統(tǒng)通過DPM與comX通訊,采用輪詢的方式向主控制器發(fā)送檢測結果。

  4 結束語

  目前,國內廠家多限于對現(xiàn)場總線產品的開發(fā),對實時以太網產品的的研究開發(fā)甚少,本文介紹了一種支持所有主流實時以太網協(xié)議的嵌入式模塊comX,并詳細討論了其關鍵的開發(fā)步驟,對實時以太網產品的開發(fā)具有借鑒作用。從實時工業(yè)以太網技術發(fā)展形勢看,實時以太網在工業(yè)控制系統(tǒng)中的應用必將越來越廣。

  參考文獻:

  [1] 繆學勤。20種類型現(xiàn)場總線進入IEC61158第四版國際標準[J]。自動化儀表,2007

  [2] Hilscher Gesellschaft für Systemautomation mbH. netX Generation of Communication Controller Product Brief [EB/OL].

  [3] Hilscher Gesellschaft für Systemautomation mbH. netX Dual-Port Memory Interface Manual [EB/OL].

  [4] Hilscher Gesellschaft für Systemautomation mbH. cifX Device Driver [EB/OL].

  [5] Hilscher Gesellschaft für Systemautomation mbH. EtherCAT Slave Protocol API [EB/OL].

  作者簡介

  鄧梧鵬(198004 --) 男 工學碩士 德國赫優(yōu)訊自動化系統(tǒng)有限公司技術經理 專門從事現(xiàn)場總線、實時工業(yè)以太網技術的研究。

(轉載)

標簽:赫優(yōu)訊 工業(yè)以太網 網絡控制器 現(xiàn)場總線技術 我要反饋 
2024世界人工智能大會專題
即刻點擊并下載ABB資料,好禮贏不停~
優(yōu)傲機器人下載中心
西克
2024全景工博會
專題報道