منذ بعض الوقت ، كان لدينا كائن حيث تضمنت الشروط المرجعية المطلب: "بروتوكول Ethercat". أثناء عملية البحث عن المعلومات ، صعدت إلى هبر وفوجئت بعدم وجود تحليل لهذا البروتوكول هناك. وبشكل عام ، فإن المعلومات المتعلقة به مجزأة إلى حد ما (بالنظر إلى الأمام - كنت أبحث في المكان الخطأ فقط). لقد صنعنا مشروعًا ، وهذه المقالة مخصصة لـ "الأصغر سنًا" ، وهي محاولة لتوفير الوقت لشخص آخر سيستخدم هذا البروتوكول أو يهتم به ببساطة.
التحذير الوحيد هو أنني سأصف المستوى المنخفض إلى حد ما للبروتوكول (طبقة البيانات في مصطلحات EtherCAT). لأنه هو الذي كنا بحاجة إليه وكنا نقتصر عليه. ستظل بروتوكولات طبقة التطبيق مثل CanOPEN-over-EtherCAT (CoE) غير موصوفة (في الوقت الحالي؟).

EtherCAT في جملة واحدة
من السهل البحث عنها في google ، ولكن من أجل النظام سأقولها بكلماتي الخاصة. EtherCAT عبارة عن ناقل اتصالات صناعي ذو إنتاجية عالية (100 ميجابت / ثانية) ومعدل استجابة (بضع ميكروثانية لعشرات الأجهزة على خط واحد مفصولة بعشرات الأمتار) ، باستخدام Ethernet بمستوى منخفض ، ولكن في نفس الوقت يختلف عن مفهوم Ethernet المعتاد. إجابة".
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 , , .