2014年7月17日 星期四

Wireshark with EtherCAT debug

EtherCAT

EtherCAT is an open, high performance Ethernet-based fieldbus system. The development goal of EtherCAT was to apply Ethernet to automation applications which require short data update times (also called cycle times) with low communication jitter (for synchronization purposes) and low hardware costs. The EtherCAT protocol is optimised for process data and is transported directly within the standard IEEE 802.3 Ethernet frame using Ethertype 0x88a4. It may consist of several sub-datagrams, each serving a particular memory area of the logical process images that can be up to 4 gigabytes in size. The data sequence is independent of the physical order of the nodes in the network; addressing can be in any order. Broadcast, multicast and communication between slaves are possible. If IP routing is required, the EtherCAT protocol can be inserted into UDP/IP or TCP/IP datagrams. This also enables any control with Ethernet protocol stack to address EtherCAT systems.

History

Protocol dependencies

  • Ethernet: EtherCAT can use Ethernet as its transport mechanism. The assigned Ethernet type for EtherCAT traffic is 0x88A4.
  • UDP: EtherCAT protocol can be transported in UDP datagrams. The assigned UDP port for EtherCAT is 0x88a4.

Example traffic

Frame 1 (128 bytes on wire, 128 bytes captured)
Ethernet II, Src: MS-NLB-PhysServer-14_a6:c9:01:8e (02:0e:a6:c9:01:8e), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
EtherCAT frame header
    .... .000 0111 0000 = Length: 0x0070
    .... 0... .... .... = Reserved: Valid (0x0000)
    0001 .... .... .... = Type: EtherCAT command (0x0001)
EtherCAT datagram(s): 'LRW': Len: 100, Adp 0x0, Ado 0x1, Wc 2
    EtherCAT datagram: Cmd: 'LRW' (12), Len: 100, Addr 0x10000, Cnt 2
        Header
            Command    : Logical memory read write (0x0c)
            Index      : 0x39
            Log Addr   : 0x00010000
            Length     : 100 (0x64) - No Roundtrip - Last Sub Command
                .... .000 0110 0100 = Length: 100
                ..00 0... .... .... = Reserved: Valid (0)
                .0.. .... .... .... = Round trip: Frame is not circulating (0)
                0... .... .... .... = Last indicator: Last EtherCAT datagram (0)
            Interrupt  : 0x0000
        Data      : 000000000000000000000000000000000000000000000000...
        Working Cnt: 2

Wireshark

Preference Settings

There are no EtherCAT specific preference settings. Allowing sub dissectors to handle data based on heuristic analysis is always enabled and cannot be turned off.

Sub dissectors

Dissectors that are interested in dissecting the EtherCAT datagram portion of the EtherCAT frame (there may be multiple EtherCAT datagrams in each frame), may do so using heuristic analysis by registering themselves using the function heur_dissector_add("ecat.data", ...).
'

Example capture file

Capture of startup sequence for some Beckhoff devices.

Display Filter

A complete list of IP display filter fields can be found in the display filter reference
  • Show only the EtherCAT based traffic:
     ecat
    Filter on a specific address offset (ado):
     ecat.ado == 0x130
    Filter on a specific slave by its position or fixed EtherCAT address (adp):
     ecat.adp == 0x3e9
    Filter on a specific cmd (here APRD):
     ecat.cmd == 0x1
    Filter on a specific field of a sub command :
     ecat.sub1.idx < 0x80
    Show only the EtherCAT mailbox traffic:
     ecat_mailbox

Capture Filter

  • Capture Ethercat-over-Ethernet traffic only:
     ether proto 0x88a4 
    Capture Ethercat-over-UDP traffic only:
     udp port 0x88a4 
More information about EtherCAT can be found on the website of the EtherCAT Technology Group:http://www.ethercat.org/
Open-source EtherCAT driver can be found at http://ethercatmaster.berlios.de/ (no longer available - April 2010)
IgH EtherCAT Master for Linux can be found at http://www.etherlab.org/en/ethercat/index.php

Discussion

......

Wireshark Wiki


This is the wiki site for the Wireshark network protocol analyzer.
You can edit any page by pressing the link at the bottom of the page, see HowToEdit for details. If you want to try out wiki editing, you should use the WikiSandBox page. To learn more about what a WikiWikiWeb is, read about WhyWikiWorks and the WikiNature. Also, consult the WikiWikiWebFaq.

General


Prepare Wireshark / TShark


Use Wireshark / TShark


Things not (yet) part of the Wireshark User's Guide.
  • CaptureFilters: A collection of capture filter examples
  • DisplayFilters: A collection of display filter examples
  • ColoringRules: A collection of coloring rules examples
  • HowTo: How to do various things with Wireshark
  • Preferences: Preference settings controlling the behaviour of Wireshark and TShark
  • Statistics: Statistics range from general capture file information to protocol specific statistics
  • Security: how to use Wireshark as securely as possible
  • Performance: how to "fine tune" Wireshark's performance
  • Timestamps: Accuracy, precision, and resolution
  • Tools: tools and scripts that relate to the use of Wireshark and TShark

References


Miscellaneous


Interesting starting points


  • HowToEdit: how to edit anything in this wiki
  • RecentChanges: see where people are currently working
  • SiteNavigation: get an overview over this site and what it contains
  • FindPage: search or browse the database in various ways
  • TitleIndex: look at the index of all available wiki page titles

Q and A


Q1)I installed Wireshark v1.4.3

When I tried to capture EtherCAT packet from my Realtek NIC, I can not see the EtherCAT packet.

I only can capture DHCP protocol packet.

Should I have to config other option to capture EtherCAT packet?


Q2)Hello i have a similiar problem. I cant capture ethercat messages. I am connecting to a beckhoff i/o module(EK1100) using a cross network cable. I use Twincat program for ethercat master protocol. There is no problem with the operation of the device. On same pc i use wireshark to monitor messages.
The program has two modes: run and config mode. I can capture an ethercat message which shows the switching between modes but when input and output values change i can not get a message. In twincat program i can see what has changed. I did not change anythin in wireshark and i have all the plugins, i use version 1.4.3. I could notunderstand what is going on any help will be helpful.

0
According to http://www.ethercat.org/en/technology.html#3.1, EtherCAT uses either Ethertype 0x88A4 or UDP port 0x88A4. And at the link layer, it's just ethernet.So you don't have to do anything special to be able to capture EtherCAT packets. Take a look at http://wiki.wireshark.org/CaptureSetup/Ethernet for information on how to capture in different setups.
Regarding dissecting of the EtherCAT frame, it's done in a separate plugin, have you installed all the plugins that came with Wireshark?
link
answered 16 Feb '11, 22:52
SYN-bit's gravatar image
SYN-bit ♦♦
15.0k848219
accept rate: 19%

I am sure I already installed ethercat plugin for wireshark.
I can see ethercat.dll in Wiresharkplugins1.4.3 directory.
I don`t know why this problem happened to me.
Does anyboy has another idea?
(16 Feb '11, 23:00)Younghyun Jo

(I converted your "answer" to a "comment" to adhere to the Q&A nature of this site)
Is the PC you are capturing on communicating over EtherCAT itself? If not, did you enable "promiscuous mode"? How is your capturing PC connected to the network that transfers EtherCAT messages? Did you check the CaptureSetup link I mentioned earlier?
(17 Feb '11, 00:35)SYN-bit ♦♦

0
Hello, i have come across the same problem. I have found the solution in the Slave Implementation Guide. The steps below are the solution.
  1. I/O Devices->your device->Adapter->set the Promiscuous Mode( use with Netmon/ Wireshark only)
  2. Scan Boxes

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。