前一段时间,我们有一个对象,其职责范围包括以下要求:“ Ethercat协议”。在搜索信息的过程中,我走进了Habr,惊讶地发现那里没有对该协议的分析。通常,关于他的信息比较零散(向前看-我只是在错误的位置看)。我们做了一个项目,这篇文章是为“年轻的我”准备的,它是为那些打算使用该协议或只是对此协议感兴趣的人节省时间的一种尝试。
唯一需要注意的是,我将描述协议的较低级别(EtherCAT术语中的数据层)。因为我们需要的是他,所以我们只限于他。诸如CanOPEN-over-EtherCAT(CoE)之类的应用层协议将保持不变(目前?)。
一句话EtherCAT
用谷歌搜索很容易,但是为了顺序,我会用自己的话说。EtherCAT是一种工业通信总线,具有高吞吐率(100 Mbit / s)和响应速率(一条线上数十个设备的距离为几十微秒,相隔数十米),在较低级别上使用以太网,但同时又不同于通常的以太网概念。回答”。
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 , , .