天天看點

IgH Master 1.5.2 Documentation 中文版

本部分為IgH Master 1.5.2 Documentation 中文翻譯

英文原文連結 :http://www.etherlab.org/en/ethercat/

原文連結:http://blog.csdn.net/woshidahuaidan2011

作者:[email protected]

第一章 概況

EtherCat-1.5.2理論上适用任何實時性(rtai,xenomai)或者非實時性的核心(linux-2.6以上的版本),一方面考慮到在核心空間相比使用者空間函數的延遲時間短且核心空間可直接操作網絡硬體,另一方面,由于主站大多是周期工作,而周期工作的時間大多有核心定時器觸發,是以作用在核心空間定時器将更準确。是以早期就把主站設計整合到核心空間。

EtherCat-1.5.2提供8139too、e100、e1000、e1000e、 r8169等幾個本地化的網絡驅動,使能這些驅動後,EtherCat-1.5.2将不會調用linux kernel内置的網絡驅動,無中斷直接操作硬體底層,是以實時性比較好;除此之外,EtherCat-1.5.2為了解決相容性的問題,也支援通用的網卡驅動(linux kernel 自帶的網絡驅動),但是相比之下實時性沒有EtherCat-1.5.2本土驅動好。

EtherCat master 代碼提出的域的概念。域可以使過程資料根據不同的從站組或者任務周期進行分組發送。是以說在不同的任務周期可以處理多個的域,FMMU和同步管理單元将對每個域進行配置,進而自動計算過程資料的記憶體映射。

本驅動支援的功能有:

Ø  通過幾個有限的狀态機進行通信

  • 當從機拓撲改變主站自動重新掃描
  • 運作狀态下可進行總線的監控,掉電自動重新配置

Ø  分布時鐘的支援

  • 通過應用程式接口可配置從站的的DC參數
  • 可根據參考時鐘同步(時間偏移和漂移補償)分布式從站

Ø  支援CANopen over EtherCAT (CoE)

  • SDO的上傳下載下傳和資訊服務
  • 從站可通過SDO進行配置
  • SDO可在應用層或者使用者空間進行存取

Ø  此外還支援    EOE VOE FOE SOE

Ø  ethercat還提供了使用者空間指令行工具

  • 可以檢視主站,從站,域和總線配置的詳細資訊
  • 可設定主站的調試水準
  • 讀寫别名位址
  • 監聽從站配置
  • 檢視過程資料
  • SDO下載下傳和上傳,監聽SDO字典
  • 通過FOE下載下傳或者存儲檔案
  • SOE IDN通路
  • 通路從站寄存器
  • 通路從站SII
  • 控制應用層轉台
  • 從現有的從站生成XML配置檔案和C代碼

Ø  為了調試監聽虛拟出隻讀網絡接口

上面簡要介紹了主站子產品的大部分功能,那麼主站的構架圖可以描述為:

IgH Master 1.5.2 Documentation 中文版

上面的圖完整的描述出來主站的整個構架,對于主站驅動來說,一個驅動可生成多個主站,具體驅動加載方法為:

假如驅動隻有一個主站,則為:

insmod ec_master main_devices=00:0E:0C:DA:A2:20

其中後面的為網卡的MAC位址

假如驅動要多個主站,則:

insmod ec_master main_devices=00:0E:0ncC:DA:A2:20,00:e0:81:71:d5:1c

當然加載驅動的時候還可以帶上

1.1 主站運作階段

由主站驅動提供的EtherCat主站可運作在如下圖中幾個階段:

IgH Master 1.5.2 Documentation 中文版

圖中可以看到,主站可運作在孤兒階段、空間階段和可操作階段。

在孤兒階段,主站等待以太網裝置連接配接。

在空閑狀态,主站已經連接配接了以太網裝置,但是應用空間并沒有對主站請求。在此階段,主站會自動掃面從站總線并等待應用空間的操作。在此階段,指令行工具可以通路總線,但是由于缺少總線配置,不能進行過程資料的交換。

在操作狀态,主站被應用層請求,此時可對總線進行配置也可進行過程資料的交換。

1.2 過程資料

主站通過過程資料對象(ProcessData Objects (PDOs))來擷取從站的輸入輸出,PDO既可以通過SII從eeprom(一般存放的固定的PDOs資料)中讀取,也可以使用COE進行配置PDOs。應用層可以在周期資料交換中注冊一個PDOs條目,所有注冊的PDOs條目之和通過邏輯尋址定義了過程資料映像(processdata image)。

通過建立域(Domains)可以友善的管理過程資料映像,,域允許分組PDO交換。域還負責管理pdo交換所需的資料報結構。域為資料交換過程是強制性的,是以至少有一個。因為如下原因提出了域的概念:

  • 每一幀最大傳輸EtherCat資料的大小受以太網資料幀大小的限制。其大小的值為以太網幀的最大值減去EtherCat資料報頭的大小:1500-2-12-2=1484位元組。假如過程資料映像的大小超過了1848位元組,那麼就需要将該資料映像分割成多個幀來傳輸。那麼域将會自動的管理這類的問題。
  • l  有些數值像溫度這樣的PDOs資料值并不是頻繁的變化的,是以高頻率的交換這些變化緩慢的PDO資訊将會造成帶寬的浪費,建立多個不同的域對PDOs進行分組管理和不同周期資料交換可以解決這個問題。

對于域的個數,并沒有數量上的限定,但是由于每個域要占用從站一個FMMU,是以域的個數将會受到從站FMMU個數的限定。

1.3 FMMU的配置

應用層為了交換資料而注冊一個PDOs條目,每一個PDOs和其父類的FDOs都要占用從站實體空間記憶體中的一部分。為了保證同步通路,這片記憶體受同步管理器的保護。為了能使資料報通路對應的記憶體,要確定同步管理器要管理整個資料幀的映射區。否則同步管理器将無法管理資料報,所有的資料也無法進行交換。這就是整個同步記憶體單元必須列入過程資料映像的原因。比如,從站的一個特定的PDO條目依附于一個特定的域,那麼必然有一個FMMU被配置成映射完整同步管理受保護的存儲PDO條目的記憶體。假如同一個從站,同一個域,有第二個PDO條目需存儲在存儲上一條PDO條目的存儲中時,因為這塊記憶體已經是該域過程資料映像的一部分,是以FMMU将不會發生變化。假如上面所述的第二個PDO條目屬于另外的同步管理單元,那麼這個單元将完整的列入域的過程資料映像中。

下圖顯示了FMMU有實體記憶體映射到邏輯過程資料映像的配置原理:

IgH Master 1.5.2 Documentation 中文版

第二部分:應用接口

所謂應用接口就是驅動程式提供的一些應用函數或者資料接口供應用開發者調用進而對主從站進行相關的配置,以便主從站可以正常的工作。

2.1從站的配置

一般在程式的開始階段,都要對從站進行配置以達到應用者的目的。首先應用開發者根據自己的需求建立一個配置從站的資料結構,然後将該資料結構跟實際的從站進行綁定,假如綁定成功後,從站就可按照應用者的配置進行相關的工作。

配置檔案根據設定的從站在總線上面的位置、廠商ID和産品碼與具體的從站進行綁定。對于從站在總線上的位置,驅動提供了别名和位置編碼相結合的方式尋找對應的從站。别名和位置編碼都是16位的數字,其存放在從站的EEPROM中,具體的含義是:

别名 位置 描述
0 - 65535 由于别名為0,是以其位置編碼就是從站在總線上的絕對位置。
1 -65535 0 -65535 别名為非0值,此時,位置編碼就是從站在總線上的相對别名的偏移量,從站的位置是别名的值+位置的值。

舉個例子,比如總線上有如下幾個從站,其資訊為:

   編号

參數

Slave0 Slave1 Slave2 Slave3
Vendor 0X00000001 0X00000002 0X00000001 0X00000001
Product 0X00000001 0X00000004 0X00000002 0X00000002
Alias 0X1000 0X2000

其中假設連接配接順序是Slave0------- Slave1-------Slave2------- Slave3

現假設有如下幾個從站的配置:

   編号

參數

A B C D E
Alias 0x2000 0x3000 0x2000
Position 1 1
Vendor 0X00000002 0X00000001 0X00000001 0X00000001 0X00000001
Product 0X00000004 0X00000002 0X00000002 0X00000002 0X00000002

那麼現在就從編号為A的配置依次說明配置到底跟那個從站進行綁定

  • 編号為A的别名為0表示其配置位置資訊就是從站在總線上的絕對位置資訊也就是對應的Slave1(因為Position為1),其次編号為A的配置的Vendor和Product業與Slave1一直,是以,編号為A的配置将會跟Slave1綁定起來。
  • l編号為B别名為0表示其配置位置資訊就是從站在總線上的絕對位置資訊也就是對應的Slave0(因為Position為0),但是由于編号為B的配置資訊中的Product與Slave0不一緻,是以編号為B的配置不能與Slave0綁定。
  • 編号為C别名為0x2000,是以此時Position為相對位址,是以其對應的是Slave2(Slave2是第一個Alias為0x2000的從站,預設情況下相對偏移量就是0)。其次編号為C的配置的Vendor和Product業與Slave2一緻,是以,編号為C的配置将會跟Slave2綁定起來。
  • 編号為D别名為0x3000,沒有任何一個從站的别名為0X3000,是以無法配對。
  • 編号為E别名為0x2000,是以此時Position為相對位址,是以其對應的是Slave3(Slave2是第一個Alias為0x2000的從站,預設情況下相對偏移量就是0。總線上,Slave3在Slave2後面,是以偏移位址為1)。其次編号為E的配置的Vendor和Product業與Slave3一緻,是以,編号為C的配置将會跟Slave2綁定起來。

2.2主站共享通路

一般情況下,一個EtherCat驅動有多個執行個體,多個執行個體之間是通信可能會出現競争,比如應用程要與從站進行資料交換的的同時,主站同時通過EOE請求與核心交換以太網資料。此時,主站在為每個執行個體共享資源的同時還要保證他們可以順序通路。

由于主站本身無法知道應用層到底是使用那麼鎖機制(主要是實時系統跟普通的系統的鎖機制不太一樣),是以主站不會提供鎖機制。那麼他們之間如何通路方式為:EOE程式在通路之前會詢問應用層是否也在通路,以免發生發文沖突。是以應用層可以通過适當的鎖機制來保證多執行個體間的通路沖突。其原理可用下圖來表示:

IgH Master 1.5.2 Documentation 中文版

2.3 分布時鐘

IgH Master 1.5.2 Documentation 中文版

驅動代碼中,同步時鐘涉及到如下幾個概念:

本地時鐘:每一個支援DC的從站都有一個納秒級分辨率的本地時鐘寄存器。每次從機上電,則寄存器從0開始計時,這就意味着不同的從機因為上電開機的時間不同而本地時鐘也會有差異,是以需要對從機的本地時鐘對比參考時鐘進行偏移補償。再者,從機的時鐘一般由時鐘單元為參考,是以每個從機的時鐘頻率也會有極小的誤差,但是由于這種極小的誤差在長時間的工作中會累積,是以想要完全的時鐘同步,也要對這種時鐘漂移做出補償。

應用時間:應用層為總線提供的基礎時間,應用時間 有如下用途:

配置從站的時間偏移

為從站的同步脈沖發生器設定開始時間

為主站時鐘同步參考時鐘

偏移補償:對于偏移補償,每個從站都有偏移補償寄存器 ,偏移補償值加上從站本地時鐘的初始值就是參考系統時鐘的值,數學表達式為:

IgH Master 1.5.2 Documentation 中文版
  • 漂移補償:所謂的漂移誤差就是由于DC從站使用各自本地時鐘源,它們的計時周期存在一定的漂移,這将導緻時鐘運作不同步。因為支援DC從站的一個特殊機制使得飄移補償成為可能,這個機制就是當有一個寫系統時間寄存器操作的時候,内部時間控制環路(internal time control loop)去比較寫入時間(減去傳輸延遲,具體見下段)和目前的系統時間,比較的誤差将作為時間控制寄存器的輸入,依次來增加或減緩本地時鐘,進而消除漂移誤差。
  • 傳輸延遲:以太網幀在由從站到從站的傳輸過程中需要一些時間,假如不作處理,傳輸的這個時間将會不斷的積累,最終可能達到毫秒級誤差,是以我們必須在漂移補償的時候将傳輸延遲考慮在内。支援DC的EtherCAT從站提供了一個測量傳輸延遲的方案:對于從站的四個端口都配有一個接收時間寄存器,大部分當資料幀到達每個從站後,從站都會分别儲存每個端口接收到的以太網幀的時刻。主站通過讀取記錄的這個時間值來計算EtherCAT幀在從站之間和從站到參考時鐘的傳輸延遲并把從站到參考時鐘的傳輸延遲寫入傳輸延遲寄存器中。通過這種方法,漂移補償可以達到納秒級同步
  • 檢測同步:支援DC的從站提供了32為系統時間差寄存器(位址為0x092c),該寄存器以符号幅度碼(sign-and-magnitude coding)的形式存放着本地時間與參考時鐘之間的內插補點(納秒級分辨率)。在linux中,可以使用指令行工具檢視該寄存器的值,具體操作為:

$ watch -n0 "ethercat reg_read -p4 -tsm32 0x92c"

  • 同步信号:同步時鐘僅僅是總線上同步事件的一個必要條件,每個支援DC從站有兩個可程式設計同步事件,事件觸發的同步信号以備供應用層調用。每個同步事件可根據應用要求既可以隻觸發一次也可以循環觸發。程式設計同步信号是一種所謂的設定“AssignActivate”字和設定同步信号的周期和轉變時間的問題。“AssignActivate“字的設定方式跟具體的從站有關,而且必須從XML檔案中對描述從站對“AssignActivate“字的設定,在典型的同步信号的配置可以找到“OpModes、

第三章 狀态機

在核心代碼中,為了更有效的處理整個流程,主站子產品在很多部分都用到了有限狀态機( finite state machines (FSMs) ),雖然使用較多的狀态機會導緻程式應用更加的複雜,但是這給使用者解決一些問題的提出了更多的可能性。

下面的簡短的代碼說明是如何讀取所有的從站狀态,并在下文說明了順序編碼的限制性:

• ec_datagram_brd ( datagram , 0x0130 , 2); //準備資料報

• if ( ec_master_simple_io (master , datagram ))

• return -1;

• slave_states = EC_READ_U8 ( datagram -> data ); // 處理資料報

上面的代碼中,ec_datagram_brd()函數提供了一個同步發送資料和接受傳回結果的一個簡單的接口。在其函數内部,有一個資料報隊列,然後再調用ec_master_send_datagrams()函數,該函數會将隊列中的資料報以資料幀的形式發送出去,然後主動等待之前發送資料報的傳回結果。

上面按照順序邏輯實作的幾行代碼非常的簡單,當主站隻有一個執行個體的時候,這種方法也确實簡單實用,但是當主站子產品有多個執行個體而且多個執行個體要同步使用主站的時候,這種方法就暴露了其缺點:當主站發送完資料包等待從站傳回資料時可能引起阻塞(因為多個執行個體之前存在着資源等方面的競争)。為了解決這個問題必須替換掉之前的順序模型,改用其他的方案。

假如多個從站想要同步發送接收資料報就必須順序的通路主站。就目前的解決方案(順序通路)來看,這将導緻每一個執行個體會有一個不休眠的等待階段(發送完資料後等待從站的回複)。這個等待階段勢必會浪費大量的時間,對于運作系統尤其是對于實時性系統,這會讓人難以接受。

一個可能的解決方案是,所有的執行個體都依次的将他們的資料報放入隊列,然後将控制權讓給下一個執行個體而不是原地等待從站對資料報回複。最後,總線IO由下一個執行個體來完成的,這意味着所有排隊的資料報都會被發送和接收。下一步驟将再次執行所有執行個體,然後處理其接收到的資料報,并發出新的資料報。

按照上面所述的,由于當一個執行個體當把控制權交給下一個執行個體的時候,該執行個體必須保持其狀态。是以,此時理所當然的要用到有限狀态機模型,下面将通過簡短的代碼說明狀态機的應用:

// 狀态 1

ec_datagram_brd ( datagram , 0x0130 , 2); //準備資料報

ec_master_queue (master , datagram ); // 資料報加入隊列

next_state = state_2 ;

// s狀态處理完畢

當所有的執行個體執行完目前的狀态,并把資料報加入隊列,這些資料報将會被發送,并得到回執。接下來将會執行下一個狀态:

// 狀态 2

if ( datagram -> state != EC_DGRAM_STATE_RECEIVED ) {

next_state = state_error ;

return; // 狀态處理完成

}

slave_states = EC_READ_U8 ( datagram -> data ); // 資料資料報

// 狀态處理完成

3.1主站狀态機

在主站核心代碼執行過程中,總會出現各種情況,比如有些從站被人為的拔下或者從站之間的連接配接的網線斷掉,為了保障主站可以正常的運作,主站必須時刻的檢測網絡拓撲的狀态,是以需要運作一個主站狀态機來完成上面提到的工作,其執行在主站狀态的上下文中,其有如下幾個階段:

 Bus monitoring :監視總線的拓撲結構,假如拓撲改變,總線将重新掃描。

 Bus monitoring:監控從站的應用層狀态,假如檢測的從站狀态非理想狀态,将會進行重新配置。

 Request handling:應用層或者外部源請求處理。比如像SII或者SDO通路等要求需要主站異步處理。

主站狀态機就是在上面三個狀态之間不斷的轉換,具體主要實作流程圖如下:

IgH Master 1.5.2 Documentation 中文版

上圖中隻是列出比較重要的部分做出了介紹,主站驅動被加載之後就會不斷執行此狀态機。期間當檢查到從站狀态出錯的時,還會啟動從站狀态檢測狀态機。同時,在執行過程中也會不斷的檢測是否出現錯誤及其是否需要退出本狀态機。

3.2從站掃描狀态機

主站為了友善的擷取從站的資訊,建立了從站掃描狀态機,其主要有如下幾個 步驟:

 Node Address :為從站設定的節點位址,有了節點位址才可以進行下面的工作。

 AL State :讀取應用層的狀态

 Base Information:從記憶體中讀取一寫基礎資訊(比如從站中FMMU的個數)。

 Data Link :從實體端口讀取一些資訊。

 SII Size SII:内容的大小,以便為SII申請映像記憶體。

 SII Data :從主站的SII映射記憶體中讀取的SII資料。

 PREOP :假如其支援COE,PREOP 被設定成使用狀态變化的FSM使能郵箱通信并通過COE進行PDO的讀取。

 PDOs :通過COE讀取PDOs,通過PDO讀取FSM,假如讀取成功,SII中的PDO資訊将被重寫。

具體的執行流程圖如下:

IgH Master 1.5.2 Documentation 中文版

上圖可以看出從站掃描狀态機就是不斷的讀取從站的資訊,以保障主站可以正常的工作。

3.3從站配置狀态機

NIT:從站處于初始化階段。

 FMMU Clearing :清除FMMU中的配置,以免過程資料對從站造成影響。假如從站不支援FFMU則直接跳過此狀态。

 Mailbox Sync Manager Configuration:假如從站支援郵箱通信, 郵箱同步管理器将被配置,否則直接跳此狀态。

 PREOP:此狀态将會是從站處于預運作狀态。

 SDO Configuration :在從站已經被配置情況下,在此階段,應用層提供的SDO配置将會發送給從站。

 PDO Configuration :該階段用來應用所有的必須的應用配置。

 TPDO Sync Manager Configuration:假如存在PDO同步管理器,則配置它。

 FMMU Configuration :如果應用層提供了FMMUs的配置(比如應用層申請一個PDO條目),則應用此配置。

 SAFEOP :使從站處于安全運作狀态。

 OP:使從站處于運作狀态。

還有其他的感覺沒啥意思,不想翻譯了。。。。。。。。。。。

第五章 指令行工具的使用

EtherCAT為了方面使用者空間對主站進行調試,是以提供一套使用者空間使用的工具用來設定從站參數,觀察調試資訊等等。

正常情況下,每個主站的執行個體都有生成一個字元裝置,名字為:/dev/EtherCATx, 其中 x ∈ {0 . . . n}為主站執行個體的索引。

下面具體的介紹一下各參數的使用,下面的指令的解析可以通過執行ethercat –help指令來檢視,其中 [ ]中為必選參數 < >為可選參數,具體如下:

5.1設定别名位址

形式為:

ethercat alias [ OPTIONS ] <ALIAS >

寫入從機的别名位址

其中, 對于 [ OPTIONS ]可以是如下的操作參數:

 --alias -a <alias >

 -- position -p <pos >

 --force –f 确認寫入多個從站别名

 --alias 表示重新設定别名,後面的參數可為16位無符整形的數,設定為0表示移除别名位址;

 --position -p别是寫入從站位置位址;

 --force –f表示确認寫入多個多個從站的别名。

注:寫入的數字可以是10進制,8進制或者16進制。

5.2顯示總線配置

ethercat config [ OPTIONS ]

假如[ OPTIONS ]沒有寫參數—verbose的話,那麼将會每一行顯示一個從站配置。

比如:

1001:0 0x0000003b /0 x02010000 3 OP

 1001 :從站的别名

 0:從站相對位址

 0x0000003b :從站的廠商ID

 0 x02010000 : 從站的産品碼

 3 :該配置綁定對應從站在總線上的絕對位址,假如該配置沒有對應 的從站,則顯示為“-“。

 OP :該配置綁定對應從站應用層狀态,假如該配置沒有對應的從站, 則顯示為“-“。

假如[ OPTIONS ]有寫參數—verbose的話,那麼除了顯示上面的配置外,還會顯示出對應從站的PDOs和SDOs。

接下看看一下下面的參數的含義:

這條指令既然是顯示配置參數,那麼後面的[ OPTIONS ]肯定是指定顯示安格從站的配置。具體可分為以下幾種情況:

 假如既沒有寫--alias 也沒有寫 – position參數,那麼将會顯示所有的從站。

 假如隻寫– position,則預設—alias為0 (也就是使用position對應的絕對位址)

 假如隻寫—alias,那麼所有為該别名位址的從站的配置都将被顯示。

 假如使用了--alias 和 – position,那麼隻顯示一個比對的從站配置(别名+相對位址)

[ OPTIONS ]具體的設定形式為:

 --alias -a <alias >

 position -p <pos >

 verbose -v 顯示詳細資訊.

注:寫入的數字可以是10進制,8進制或者16進制。

5.3 以c語言的形式輸出PDO資訊

格式為:

ethercat cstruct [ OPTIONS ]

生成的PDO資訊可以直接被應用層的ecrt_slave_config_pdos ()函數調用。

[ OPTIONS ]具體的設定形式為:

 --alias -a <alias > 具體含義參考5.2

 position -p <pos >

注:寫入的數字可以是10進制,8進制或者16進制。

5.4 顯示過程資料

ethercat data [ OPTIONS ]

輸出二進制域的過程資料。

[ OPTIONS ]可使用的參數:

-- domain -d <index > <index > 為域的索引值(為正數) ,假如不寫[ OPTIONS ]則顯示所有用的過程資料。

注:寫入的數字可以是10進制,8進制或者16進制。

5.6 設定主站調試等級

ethercat debug <LEVEL >

設定主站的調試等級,調試資訊将輸出在syslog檔案中。

其中的<LEVEL >可有以下情況:

0 :無任何調試資訊輸出

1 :輸出部分調試資訊

2 :輸出所有的幀的内容 ( 由于輸出資訊比較多,建議謹慎使用).

注:寫入的數字可以是10進制,8進制或者16進制。

5.7 配置域

形式為:

ethercat domains [ OPTIONS ]

假如[ OPTIONS ]沒有使用—verbose參數,則接下來每行顯示一個域的資訊。比如:

Domain0 : LogBaseAddr 0 x00000000 , Size 6, WorkingCounter 0/1

下面解釋下上面數字的含義:

 LogBaseAddr 後面是邏輯尋址的邏輯基位址

 Size 域的交換資料的位元組數

 WorkingCounter 工作計數器的數值,第一個數字是WKC的目前值,第二個數字是期 望WKC的值

假如[ OPTIONS ]使用—verbose參數,那麼于域有關的從站配置參數、FMMU配置參數和目前的過程資料都會顯示出來。比如:

Domain1 : LogBaseAddr 0 x00000006 , Size 6, WorkingCounter 0/1

SlaveConfig 1001:0 , SM3 ( Input ), LogAddr 0 x00000006 , Size 6

00 00 00 00 00 00

下面介紹各參數含義:

 LogBaseAddr 、Size 和WorkingCounter 上同。

 SlaveConfig 從站的配置,分别是從站的别名和相對位址(别名非0)或絕對位址(别名為0)

 SM3 表示使用的是同步管理器3

 LogAddr 是FMMU映射位址的基位址

 Size 為映射位址的大小

 00 00 00資料位十六進制顯示的過程資料

[ OPTIONS ]可使用的參數:

 domain -d <index > <index > 為域的索引值(為正數) ,假如不寫[ OPTIONS ]則顯示所有用的域。

 -- verbose –v 顯示FFMU和過程資料的資訊

注:寫入的數字可以是10進制,8進制或者16進制。

5.8 通路SDO

ethercat download [ OPTIONS ] <INDEX > <SUBINDEX > <VALUE >

[ OPTIONS ] <INDEX > <VALUE >

向從站寫入一條PDO條目。

運作該指令必須指定目标從站。

預設情況下,SDO條目的資料類型是從SDO字典裡擷取的。當然也可以通過—tpye參數指定其類型。假如從站不支援SDO服務或者SDO步子啊對象字典裡面,則必須使用—type指定其類型。

上述的type可使用的類型包括:

bool ,

int8 , int16 , int32 , int64 ,

uint8 , uint16 , uint32 , uint64 ,

float , double ,

string , octet_string , unicode_string .

對于sign -and - magnitude coding有:

sm8 , sm16 , sm32 , sm64

具體的可選參數含義為:

 INDEX 16位無符整型的SDO索引

 SUBINDEX 8位無符整型的SDO子索引

 VALUE 需寫入的SDO的值(必須符合SDO條目的類型),使用“-“讀取标準輸入的值

[ OPTIONS ]可填入的數值:

 --alias -a <alias >

 position -p <pos >

 --type -t <type > SDO條目的資料類型

ethercat upload [ OPTIONS ] <INDEX > <SUBINDEX >

向從站讀取一個SDO條目

該指令的存在的參數含義同上。

5.9 輸出EOE統計資訊

ethercat eoe

顯示EOE的統計資訊,包括主站

的發送率和接受率(Byte/s)。

5.10 FOE通信

ethercat foe_read [ OPTIONS ] <SOURCEFILE >

通過FOE讀取從站的檔案

運作該指令必須指定目标從站。

其中:

<SOURCEFILE >為從站中源檔案的名字。

[ OPTIONS ]有以下可選項

 --output - file -o <file > <file >為讀取資料的存儲檔案,預設的話讀取的資料放到stdout

 --alias -a <alias >

 position -p <pos >

ethercat foe_write [ OPTIONS ] <FILENAME >

通過FOE向從站存儲檔案

運作該指令必須指定目标從站。

其中:

<FILENAME >可為要發送的檔案(制定路徑+名字),也可以為“-“,假如參數為”-“則從标準輸入中讀取檔案。

[ OPTIONS ]有以下可選項

 --output - file -o <file > <file >為從站存儲的目标檔案名,假如不指定名字,則為主站發送<FILENAME >的去掉路徑後的名字。

 --alias -a <alias >

 position -p <pos >

5.11建立一個拓撲圖形

ethercatgraph [ OPTIONS ]

輸出總線拓撲圖

最後輸出是依靠doc工具(位于Graphviz工具包裡)輸出的圖形,(doc 工具可參考http :// www . graphviz . org /doc / info / lang . html ),是以使用如下指令可以看到總線圖形拓撲圖:

ethercat graph |dot -Tsvg > bus . svg

關于doc的更詳細的說明可以參考其說明文檔。

5.12主站和以太網裝置

ethercat master [ OPTIONS ]

顯示主站和以太網裝置資訊。

[ OPTIONS ]可使用如下選擇:

-- master-m <indices > 其中indices為主站的索引,可以是一個具體的值也可以為一個範圍,例如:1 ,4 ,5 ,7 -9。預設情況下顯示所有的裝置資訊。

5.13同步管理,PDOs,PDO條目

ethercat pdos [OPTIONS ]

顯示出同步管理器的參數和PDO任務和映射資訊。

假如[ OPTIONS ]沒有指定參數,使用預設的—skin參數,将會顯示下列三層資訊:

n 同步管理器:顯示包含同步管理器的資訊:索引、實體位址開始位址、預設資料大小、控制寄存器和使能字,例如:

SM3 : PhysAddr 0x1100 , DefaultSize 0, ControlRegister 0x20, Enable 1

上面的資訊可以看出,索引為3,實體開始位址為0x1100,預設大小為0,控制寄存器為0x20,使能。

n 通路PDOs:顯示的資訊包括PDO方向,十六進制表示的索引值,PDO的名字。比如:

TxPDO 0x1a00 "Channel1 "

其中開頭的為“Tx“或者“Rx”,這都是相對于從站端口來說的,比如TxPDO 表示PDOs有從站端口向外發送。0X1a00表示該PDO的索引值,後面的是pdo的名字。

n PDO條目映射:将顯示出PDO條目的索引和子索引(都是以16進制的形式現實的),并顯示出改為的位寬和描述,比如:

PDO entry 0x3101 :01 , 8 bit ," Status "

其中,0x3101 :01表示索引和子索引,8 bit表示該條目的位寬,後面是對該位的描述。

注:這些顯示的PDO任務或者映射資訊,既可以源于SII也可以是COE的通信區域。

[ OPTIONS ]可有如下的參數:

n --alias -a <alias >

n position -p <pos >

n --skin -s <skin > <skin>可以選擇" default " 和 " etherlab ".

5.14 寄存器通路

ethercat reg_read [ OPTIONS ] <ADDRESS > [ SIZE ]

讀取對應從站寄存器的内容

該指令要求針對特定的從站。

對于其中的參數:

<ADDRESS> 16位無符号的寄存器位址

[ SIZE ] 16位無符号的值表示要讀取對應寄存器的位元組數。[ SIZE ] +<ADDRESS>不能超過64K.。假如右面的type參數隐含要讀取的位元組數,則可以忽略掉[ SIZE ]參數。

具體的可選參數含義為:

[ OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

n --type -t <type > 資料類型

上述的type可使用的類型包括:

bool ,

int8 , int16 , int32 , int64 ,

uint8 , uint16 , uint32 , uint64 ,

float , double ,

string , octet_string , unicode_string .

對于sign -and - magnitude coding有:

sm8 , sm16 , sm32 , sm64

ethercat reg_write [ OPTIONS ] <OFFSET > <DATA >

寫入指定從站寄存器的值

該指令要求針對特定的從站。

n <ADDRESS > 16位無符号的寄存器位址

n <DATA > 這裡是要寫入寄存器的資料,具體的要看—type參數指定的參數類型:假如—type沒有指定資料類型,<DATA > 是一個帶有路徑的檔案(檔案記憶體放着要寫入的資料)或者<DATA > 設定為“-“,此時表示從标準輸入中獲得資料。假如—type指定了其資料類型,那麼<DATA > 将根據指定的資料類型對資料進行解析。

[ OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

n --type -t <type > 資料類型

n emergency -e 以緊急事件的方式請求

上述的type可使用的類型包括:

bool ,

int8 , int16 ,int32 , int64 ,

uint8 , uint16 ,uint32 , uint64 ,

float , double ,

string ,octet_string , unicode_string .

對于sign -and - magnitude coding有:

sm8 , sm16 ,sm32 , sm64

5.15 SDO字典

ethercat sdos [OPTIONS ]

列出SDO字典

列出的SDO字典為兩層,分别為SDO資訊和SDO條目資訊:

SDOs:包含SDO的索引值(16進制表示)和名字,比如:

SDO 0x1018 ," Identity object "

其中 0x1018為索引,"Identity object "為名字。

SDO條目:包括SDO索引和SDO條目子索引(均以16進制表示)、通路權,資料類型、資料位寬度和資料描述。例如:

0 x1018 :01, rwrwrw , uint32 , 32 bit , " Vendorid"

解釋如下:0 x1018 :01 表示SDO的索引和子索引;rwrwrw表示通路權限。這個通路權限分别是針對應用層在預運作狀态、安裝運作狀态和運作狀态。‘r‘表示該條目可讀,‘w‘表示該條目可寫。假如對通路權限不太确切,則使用“-”代替;uint32制定了該條目的資料類型;32 bit指出了其位寬;" Vendor id"是對該條目的描述。

[OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

n --quiet -q 表示隻輸出PDOs,不輸出PDO條目資訊。

5.16 SII通路

可以直接讀寫從站的SII的内容的設計是由于一下幾種原因:ifconfig eth0192.168.1.102

n SII的資料格式在不斷的擴充,未來可能會添加更多的類别。隻有能讀寫通路SII,記憶體裡完整的内容才可以很容易的備份和重新整理。

n 有些SII資料必須改變(比如從站的别名),是以必須可以對SII進行讀寫通路。

n 隻有可以讀取SII資料,使用者空間才可以對分類資料進行解析

ethercatsii_read [ OPTIONS ]

讀取從站的SII的内容

這條指令必須針對特定的從站。

假如沒有—verbose參數,那麼僅以二進制的形式輸出SII的内容。假如使用—verbose參數則以文本的形式輸出資料内容并以SII不同的類分開顯示。

[OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

n -- verbose –v 按照不同類的名字顯示資料文本内容。

由于該指令讀到的數二進制形式,一般我們習慣使用16進制的資料,是以習慣的使用hexdump指令将資料轉化為16進制,比如:

$ ethercatsii read --position 3 | hexdump

0000000 0103 0000 0000 0000 0000 0000 0000 008 c

0000010 0002 0000 3052 07 f0 0000 0000 0000 0000

0000020 0000 0000 0000 0000 0000 0000 0000 0000

...

假如想備份一下SII讀取的内容,可以使用:

$ ethercat siiread --position 3 > sii-of-slave3.bin

上面介紹的是讀取SII資料,接下來介紹寫入SII資料:

ethercatsii_write [ OPTIONS ] <FILENAME >

向從站寫入SII内容

這條指令必須針對特定的從站。

<FILENAME >必須是帶有完整路徑的檔案且需包含有正數。假如<FILENAME >設定成“-”則從标準輸入中讀取資料。

[OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

n --force -f 不進行有效性檢查。一般情況下,要對檔案中的内容的有效性和完整性進行檢測,當時有-f參數後不再進行檢測。

給出一個實際寫入SII的執行個體:

# ethercat siiwrite --position 3 sii-of-slave3.bin

上面的指令會把sii-of-slave3.bin絕對位址為3的從站的SII中,由于沒有添加-f參數,是以會檢測資料的有效性和完整性,是以下載下傳可能需要幾秒的時間。

5.17 顯示從站的資訊

ethercatslaves [ OPTIONS ]

顯示總線上的從站的資訊。

假如該指令沒有使用—verbose參數,則每個下面每行顯示一個從站資訊。例如:

1 5555:0 PREOP + EL3162 2C. Ana. Input 0 -10V

依次解釋上面資料的含義:

n 1表示:從站在總線上面的絕對位址。

n 5555:0 冒号前為從站的别名(假如不存在為0),假如從站别名不為0,則冒号後為從站的相對位址。

n PREOP 為目前應用層的運作狀态

n + 為錯誤标志位,“+”表示不存在錯誤,“E”表示存在掃描或者配置錯誤。

n 後面的為SII的名字廠商ID,産品号等資訊(資料均16進制)

假如使用--verbose參數,則會輸出一些詳細的資訊。

關于存在的參數的選擇:

上面很多地方也有提到有關存在的選擇,這裡詳細說明一下對于--alias 和 – position參數不同的組合的含義:

n 假如既沒有--alias 參數也沒有 –position參數,則所有的從站都被選擇。

n 假如隻有– position參數,則參數的數值為從站在總線上面的絕對位址。

n 假如隻有—alias參數,則從設定—alias的從站到下一個設定不同于本次alias從站之間的從站都将被選擇,比如,現有順序連接配接的A、B、C、D、E、F、G、H的八個從站,假設B從站的别名為0x1122,C、D、E都沒有設定别名(或者别名為0),從站F别名為0x2211,假如選擇的參數隻有—alias=0x1122,則被選中的從站有BCDE。

n 假如既有—alias還有--position參數,則position為别名位址的偏移位址,比如,排序還是上面的排序,假如設定的參數為-a=0x1122 –p=2,則被選中從站D。

[ OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

n verbose –v 顯示從站的詳細資訊。

假如執行如下指令:

$ ethercat slaves

則可顯示為:

0 0:0 PREOP + EK1100 Ethernet Kopplerklemme (2A E-Bus)

1 5555:0 PREOP + EL3162 2K. Ana. Eingang 0 -10V

2 5555:1 PREOP + EL4102 2K. Ana. Ausgang 0 -10V

3 5555:2 PREOP + EL2004 4K. Dig. Ausgang 24V, 0,5A

5.18 SOE IDN通路

ethercatsoe_read [ OPTIONS ] <IDN >

ethercatsoe_read [ OPTIONS ] <DRIVE > <IDN >

讀取從站的SOE IDN。

此指令必須設定特定的從站。

對于必選參數,解釋如下:

l <DRIVE > 驅動号(0---7),假如省略,則預設為0

l <IDN > 為一個像’P -0 -150’ 字元串或者是16無符号數字。對于後者,則每一個位的具體含義為:

15

14-12

11-0

含義

分類

參數設定

資料區

數值

0:标準資料

1:過程資料

0-7共8可選參數

0-----4096-1

[ OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

n --type -t <type > 資料類型,根據提供的IDN找到位置,然後根據type指定的類型讀取資料,假如沒沒得則讀取原生16進制位元組。

上述的type可使用的類型包括:

bool ,

int8 ,int16 , int32 , int64 ,

uint8 ,uint16 , uint32 , uint64 ,

float ,double ,

string ,octet_string , unicode_string .

對于sign -and - magnitude coding有:

sm8 , sm16, sm32 , sm64

上面介紹的數讀取資料,假如想要寫入資料則使用如下指令:

ethercat soe_write [OPTIONS ] <IDN > <VALUE >

ethercat soe_write [ OPTIONS ] <DRIVE > <IDN > <VALUE >

寫入的參數的含義與上面讀取資料參數的含義相同,隻不多對了一個必選參數:

<VALUE> 是指要寫入的數值,該數值是根據—type指定的類型定義的。

5.19 請求應用層轉換狀态機

ethercat states [OPTIONS ] <STATE >

請求應用層轉換狀态

<STATE> 可選的參數有:’INIT ’, ’PREOP ’, ’BOOT ’, ’SAFEOP’, 或者 ’OP ’

[OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

5.20 顯示主站版本

ethercat version[ OPTIONS ]

顯示主站的版本

5.21 生成從站配置描述檔案XML

ethercat xml [ OPTIONS ]

生成從站資訊描述檔案

注:PDO資訊既可以源于SII,也可以源于COE通信區域。對于支援PDO任務和映射的配置,将輸出最新的配置

[ OPTIONS ]可填入的數值:

n --alias -a <alias >

n position -p <pos >

英文原文連結 :http://www.etherlab.org/en/ethercat/

原文連結:http://blog.csdn.net/woshidahuaidan2011

作者:[email protected]

繼續閱讀