Il y a quelque temps, nous avions un objet dont le mandat incluait l'exigence: "Ethercat protocol". Dans le processus de recherche d'informations, je suis monté dans Habr et j'ai été surpris de constater qu'il n'y avait pas d'analyse de ce protocole là-bas. Et en général, les informations le concernant sont plutôt fragmentées (pour l'avenir - je cherchais juste au mauvais endroit). Nous avons fait un projet, et cet article est pour le "plus jeune moi", une tentative de gagner du temps pour quelqu'un d'autre qui va utiliser ou est simplement intéressé par ce protocole.
La seule mise en garde est que je décrirai le niveau plutôt bas du protocole (Data Layer dans la terminologie EtherCAT). Parce que c'était lui dont nous avions besoin et nous nous sommes limités à lui. Les protocoles de la couche application tels que CanOPEN-over-EtherCAT (CoE) ne seront pas décrits (pour l'instant?).
EtherCAT en une phrase
Il est facile de le rechercher sur Google, mais pour des raisons d'ordre, je vais le dire dans mes propres mots. EtherCAT est un bus de communication industriel avec un haut débit (100 Mbit / s) et une vitesse de réponse (quelques microsecondes pour des dizaines d'appareils sur une ligne, séparés par des dizaines de mètres), utilisant Ethernet à bas niveau, mais en même temps il diffère du concept Ethernet habituel. répondre".
Ethernet — , , . EtherCAT — , ( EtherCAT-) , .
, , . — , . — , , — UDP, EtherCAT . EtherCAT- — , — ARP . EtherCAT-.
"" , . , .
, — Infineon XMC4300\4800 Microchip LAN9252. ( - ), — EtherCAT ( ).
EtherCAT XMC4800 Relax EtherCAT Kit. ? — , ( ) .
.
:
- Beckhoff, TwinCAT, . — , . — . — , . . , .
- Open source , https://github.com/OpenEtherCATsociety/SOEM. STM32F207 FreeRTOS . , , . , .
WireShark. , , .
, . -, , , wkc2 APWRw. : EtherCAT_Communication_EN.pdf. — ethercat.org . EtherCAT association. , ( NDA, Beckhoff - ), , .
— , .
,
-, , Ethercat, Ethercat. , Vendor ID. , . https://ethercat.org/en/membership_application.html
VendorID! , VendorID . — "", .. EtherCAT . - , - — .
ethercat
, . — . . ?
4 , 2 (port 0 port 1). :
: , ( ). . 0 ethercat processing unit, , .
, ethercat , port0 , port 0, ethercat processing unit, .. port0 .
:
port0 port1, port0 , .. , (? 0) .
.
? , — Ethercat .
. ""? . — ethernet . . ? , - , : — . — ( ).
, . , , , — "" 1, 0 . — ethercat. , , .
, "4- " "" , , .
, , "". Ethernet — \ . IP ( ARP ), MAC . 4 .
, infineon, microchip 2.
ethercat — Beckhoff 4- ethercat :
https://www.beckhoff.com/ru/default.htm?ethercat/ek1100.htm
https://www.beckhoff.com/ru/default.htm?ethercat/ek1122.htm
, , - ethernet switch. , ( ).
\. Ethercat — broadcast MAC , . — ( ), , , — , .
slave — DPRAM
, slave — , . Infineon , SPI. 4 ( 0x1000) — , ethercat, .
XMC4800 8
( ) , EtherCAT . , .
( XMC), :
- 0x000 — TYPE = 0x98 ( )
- 0x010 — STATION_ADR, ( , )
- 0x040 — RESET_ECAT, .
- 0x100 — DL_CONTROL, (\)
- 0x110 — DL_STATUS, ( )
. .
master'a — ethercat .
. ethercat .
:
, ( TCP UDP, 0x88A4), UDP . UDP ( ethercat ), Ethercat — - UDP .
:
, Working counter (WKC).
Wkc — . , wkc wkc ( wkc ). , , BRD " " wkc .
- Cmd — . , .
- Idx — , . . SOEM \.
- Address — . Cmd — 16- ADP ADO ( ), 32- (Logical Addr).
- Len — .
- C, R, M, IRQ — , — . SOEM .
, Cmd. . . BRD BRD.
APxx | . ADP " ". ? , 0x0000 . |
FPxx | . STATION_ADR ADP |
Bxx | . . , , OR . .. , 0 |
Lxx | . FMMU, 32- , . . |
xxRD | . ( ) |
xxWR | . , |
xxRW | . LRW - , . . |
xxRMW | . ADP (. ) , . LRW . |
SyncManager
EtherCAT ( ) SyncManager.
SyncManager (SM) — ethercat , .
0x800. SM 8 , .. 0x800-0x807 SM1, 0x808-0x80F SM2 . XMC4800 8 SyncManager.
— mailbox . . , .
Mailbox — - ethercat. , .
Buffered — . .
- Mailbox Read. — ( WKC=0). ( ) — - ( WKC=0). ( ) — ( ), (WKC 1) .
- Mailbox Write. . , , ( ) WKC=0.
- Buffered Read. . , . , .. SyncManager 0x1000-0x1010, 0x1000-0x1030. 0x1000-0x1010, , .
- Buffered Write. , . .. , , .
FMMU
Ethercat, LRW. Fieldbus Memory Management Unit (FMMU). . SyncManager, . , . , , , , StartBit 0, EndBit — 7.
, . FMMU0 0x1000 ( ), 0x12345678+4*
, 4 , READ. FMMU0 0x1000 ( ), 0x12345678+400+4*
, WRITE. LRW 0x12345678, 800 , . . , , ( slave2slave communication), .
, FMMU , SyncManager .
EtherCAT Beckhoff . EEPROM . AL_STATUS, EEPROM . CanOPEN-over-EtherCAT(CoE) \. Ethernet-over-EtherCAT(EoE) Files-over-EtherCAT (FoE) . ESI- c VendorID . . , , EtherCAT , , .