Last update: @1/15/2024
EtherCAT이란?
•
Ethernet for Control Automation Technology의 약자로, 2003년 Beckhoff 사에 의해 개발된 공개 기술로, 2007년에 국제 표준이 되었다(IEC 61158). 안정성이 높고 효율적인 프로토콜로, 현재 가장 많이 쓰이는 산업용 이더넷 프로토콜 중 하나이다.
•
IEEE 802.3 이더넷 표준에 의해 정의된 산업용 이더넷을 기반으로 한다. Cat5 이상의 FTP, STP Cable(with RJ45 connector)을 통해 연결할 수 있다.
•
Master/slave 구조를 사용한다. 마스터 노드가 컨트롤러가 되어 같은 네트워크 내의 다른 노드에게 명령을 내리고 응답을 받는다. Master-master, slave-slave 통신 또한 가능하다.
•
공개 기술이면서 지연 시간이 낮고 속도가 빠른 것이 큰 장점이다.
EtherCAT의 작동 원리와 특징
작동 원리
•
EtherCAT 마스터(컨트롤 노드)는 EtherCAT 프레임을 보낼 수 있도록 허가된 노드를 뜻한다. 이 컨트롤 노드는 표준 Ethernet Media Access Controller(MAC)를 사용할 수 있기 때문에 추가적인 통신 장치가 필요하지 않고, 이더넷 포트만 있다면 어떤 노드도 마스터가 될 수 있다.
•
Master 노드가 EtherCAT 프레임(텔레그램)을 네트워크에 쏘아 보내면 앞쪽의 슬레이브 노드부터 해당 프레임을 받아서 차례대로 처리하고 뒤로 넘긴다. 마지막 노드에 도달한 프레임은 이더넷의 Full Duplex(양방향 통신) 채널을 통해 다시 마스터로 돌아온다.
송신(Tx)선과 수신(Rx)선이 따로 있어 동시에 송수신 할 수 있는 채널을 Duplex라고 한다. 하나만 있으면 Simplex라고 한다. 우리가 보통 전화 통화를 할 때 듣고 말하기가 동시에 되는데, 이는 통화 채널이 송수신 주파수가 나뉘어진 Full Duplex 채널이기 때문이다. 반대로 선박 간 통신 등에서는 하나의 주파수로 송수신하는 simplex를 사용하기 때문에 한쪽이 말 하는 동안은 한쪽이 듣기만 해야 한다.
•
즉, 일반적인 네트워크에서 사용하는 CSMA/CD(Carrier Sense Multiple Access/Colision Detection) 방식이 아니기 때문에 스위치나 허브가 없이도 높은 대역폭을 가질 수 있기 때문에 효율적이고, CPU 사용량이 25~30% 더 낮다. 같은 네트워크 내의 다른 통신이 끝날 때까지 기다리는 시간이 필요 없이 각 노드가 데이터 프레임을 처리하고 다음 노드로 보내는 시간만이 지연되기 때문이다. 이 지연시간 또한 Media Access Controller(MAC)의 Direct Memory Access(DMA)를 이용하여 CPU가 개입하지 않고 데이터가 메모리에 직접 복사되기 때문에 매우 짧다.
•
EtherCAT 슬레이브 노드는 EtherCAT Slave Controller(ESC)를 사용해서 프레임을 처리한다.
Cyclic이라는 단어는 순환적이 아니라 주기적을 의미한다. 필요할 때만 받아오는 것을 non-cyclic(acyclic), 주기적으로 받아오는 것을 cyclic이라 한다.
자유로운 토폴로지(topology)
•
line, bus, tree, star 등 토폴로지의 제약 없이 65,535개의 노드까지 등록할 수 있다.
사용 편의성
•
노드 주소가 자동으로 세팅되고, 네트워크 설정을 별도로 할 필요가 없으며, 에러 지점을 찾기 쉽다.
•
그 외에 빠르고(이론 상 100Mb/s 이상), 비용이 저렴하고, 안전하고, FTP, HTTP 등의 다른 프로토콜도 전송할 수 있는 등의 장점이 있다. 그 중 특히 CANOpen 통신에 주로 사용된다.
EtherCAT 프레임(telegram) 구조
•
EtherCAT은 이더넷 프레임을 기반으로 한 특별한 방법으로 구조화 돼있다.
EtherCAT의 프레임 구조는 내부에 들어가는 데이터그램(datagram)이 그 핵심이다.
•
EtherCAT 프레임은 이더넷 프레임 내부에 들어간다. EtherCAT 프레임은 이더넷 헤더 EtherType에 0x88A4 값을 가진다.
한 EtherCAT 프레임은 데이터에 1,498 바이트까지 담을 수 있는데, 이 크기를 넘어갈 경우 마스터는 이후 보내는 프레임에 추가적인 데이터가 있다는 정보를 프레임에 심는다.
•
EtherCAT 헤더는 아래처럼 구성되어 있다.
Field | Data type | Value/Description |
Length | 11 bits | FCS를 제외한 데이터그램의 길이 |
Reserved | 1 bit | Reserved, 0 (나중을 위해 아껴둠) |
Type | 4 bits | 프로토콜 타입. EtherCAT Slave Controller(ESC)는 EtherCAT 커맨드만을 지원한다(0x1 타입). |
type은 어차피 0x1 고정이고, 데이터그램의 길이를 제외하면 별다른 의미가 없는 것을 알 수 있다.
•
EtherCAT 프레임은 최대 15개의 데이터그램을 가질 수 있다. EtherCAT 프레임이 64바이트보다 작으면 1~32 바이트가 EtherCAT 데이터에 패딩으로 붙는다.
•
EtherCAT 데이터그램은 아래처럼 Header, Data, Working counter(WKC)로 구성되어 있다.
◦
데이터그램 헤더는 EtherCAT 커맨드 타입에 대한 정보, 마스터가 중복되거나 누락된 데이터그램을 식별하기 위한 식별자, 주소 명세로 구성되어 있다.
Field | Data type | Value/Description |
Cmd | BYTE | |
Idx | BYTE | Master가 중복되거나 누락된 Datagram을 식별하기 위한 식별자 |
Address | BYTE[4] | 주소(auto-increment 또는 configured station address 또는 logical address) |
Len | 11 bits | 데이터 길이 |
R | 3 bits | Reserved, 0 |
C | 1 bit | 순환 프레임 여부:
0: 순환하지 않음
1: 한 차례 순환함 |
M | 1 bit | Multiple EtherCAT datagrams
0: Last EtherCAT datagram
1: At least one further EtherCAT datagram follows |
IRQ | WORD | 논리적 OR로 묶인 장치들이 사용하는 EtherCAT event request register |
Data | BYTE[n] | 읽거나 쓰기 위한 데이터 |
WKC | WORD | Working Counter |
주소 체계
•
데이터그램 내의 address(주소) 부분은 아래 세 가지가 될 수 있는데, command가 무엇인지에 따라 달라진다.
Mode | Field | Data type | Value/Description |
Position address / auto-increment address | Position | WORD | 각 슬레이브는 position 값을 증가시킨다. position 값이 0이 되는 노드가 목적 노드이다. |
Position address / auto-increment address | Offset | WORD | ESC의 논리적 레지스터 주소 또는 메모리 주소 |
Node address / configured station address and configured station alias | Address | WORD | 주소가 슬레이브의 Configured Station Address 또는 Configured Station Alias와 일치하면 목적 노드가 된다. |
Node address / configured station address and configured station alias | Offset | WORD | ESC의 논리적 레지스터 주소 또는 메모리 주소 |
Broadcast | Position | WORD | 각 슬레이브는 position 필드의 값을 증가시키는데, 특정 노드를 찾는 데 사용되지는 않는다. |
Broadcast | Offset | WORD | ESC의 논리적 레지스터 주소 또는 메모리 주소 |
Logical address | Address | DWORD | 슬레이브의 FFMU 설정이 주소 필드와 일치할 경우 목적 노드가 된다. |
Offset은 각 슬레이브 장치 내부 메모리의 위치를 나타낸다. 한 슬레이브 장치 내부에서도 여러가지 값이 존재할 수 있는데, 이를 구분하기 위해 슬레이브 주소 외에 데이터의 메모리상 주소도 같이 보내는 것이다.
상술했듯이, 위의 mode는 데이터그램의 command type에 따라 결정된다.
Position Addressing
마스터는 네트워크 상의 순서에 따라 슬레이브 장치들을 지목할 수 있는데, 이게 Position Addressing이다. 이 방법은 EtherCAT 시스템이 시작되어 네트워크 토폴로지(구성)를 파악할 때 사용되고, 이후에는 새로운 슬레이브 장치가 감지된 경우에만 사용된다. 마스터 노드는 네트워크를 쭉 훑어 파악하면서 각 노드에게 고정된 주소(configured address)를 지정한 후 해당 노드를 지목할 이 고정 주소를 사용한다.
데이터그램은 Address 필드에 이 position address로 슬레이브 장치의 주소를 음(-)의 값으로 가지고 있는데, 각 슬레이브 장치는 이 주소값을 먼저 1 증가시킨 후, 연산 결괏값을 0으로 읽으면 본인을 목적 노드로 해석하고 데이터그램에 적힌 명령을 수행한다.
Node Addressing (= Configured addressing = Configured station addressing = Fixed addressing)
Node addressing은 EtherCAT 시스템이 시작될 때 마스터에 의해 할당되고 슬레이브가 변경할수 없다. 마스터 노드가 특정 슬레이브 노드에 접근할 때 사용된다.
Configured Station Alias address는 ESI-EEPROM(ESI: EtherCAT Slave Information)에 저장되고 슬레이브가 변경할 수 있는데, 마스터에 의해 활성화 돼야 한다. 각각의 커맨드는 노드 주소가 Configured Station Address나 Configured Station Alias와 일치할 때 실행된다.
Broadcast addressing
모든 노드에 방송할 경우 사용된다. 예를 들면 모든 슬레이브 장치들을 초기화할 때 사용된다.
Logical addressing
하나의 EtherCAT 프레임에 데이터 그램은 최대 15개까지 밖에 들어가지 않는데, 노드 개수가 15개를 넘어가는 일은 흔하다. 하나의 슬레이브 노드와의 통신에 하나의 데이터그램만을 써야 한다면 한 번의 통신에 최대 15개의 노드밖에 쓸 수 없다는 말이 된다. 이를 해결 하기 위한 것이 Logical addressing이다.
Logical addressing은 하나의 데이터그램에 여러 노드의 데이터를 비트 단위로 할당할 때 사용한다. 이를 통해 데이터를 주고받을 때 필요한 데이터그램 개수를 줄일 수 있다.
맨 위에서 봤던 동영상을 다시 보자.
하나의 데이터그램이 지나가면서 여러 슬레이브와 데이터를 주고받는 것을 볼 수 있다. 이때 각 슬레이브의 input, output 데이터가 데이터그램 데이터의 몇 번째 바이트, 몇 번째 비트에 위치하는지 알아야 정확한 통신이 가능할 것이다. 이렇게 여러 슬레이브 노드의 데이터가 연결된 데이터 모음을 logical process image(논리적 처리 이미지)라고 한다. 슬레이브는 이런 이미지 상 본인의 데이터 위치를 알아야 하는데, 이 위치 정보를 가지고 있는 것이 FMMU(FMMU, Fieldbus Memory Management Unit)다.
여기서 이미지라는 단어의 의미가 모호하게 느껴질 수도 있다. 현실에서 돌아가고 있는 기계가 특정 시점에 어떤 상태인지를 센서, 액추에이터 값 등을 통해 디지털 데이터로 묶어서 표현해놓은 것을 이미지라고 생각하면 된다. 즉, 이미지는 현재 시스템 상태에 대한 은유적인 표현이다.
마스터는 시스템을 시작할 때 각 슬레이브의 FMMU를 설정한다. 각 슬레이브 노드는 이 FMMU의 설정 정보를 통해 logical process image의 어떤 부분에 대한 데이터를 처리해야하는 지 알 수 있다.
아래 예제를 보면 좌측의 master 메모리에 여러 슬레이브들의 input/output이 최대한 빈 칸 없이 매핑된 것을 볼 수 있다. 이것이 logical process image이고, 마스터 노드의 메모리에 저장된 맵(지도)이기 때문에 I/O map이라고도 부른다. 이 I/O 맵에 특정 순간에 실제 데이터가 들어오면 해당 시점의 process image가 된다.
아웃풋들이 메모리의 앞부분(맨 오른쪽 아래)에 먼저 채워지고 그 다음 인풋이 따라오는 것을 볼 수 있다(리눅스 EtherCAT 마스터 라이브러리인 SOEM 튜토리얼 기준이기 때문에 라이브러리 별로 다를 수도 있다). 이렇게 하면 슬레이브로 보내는 명령과 슬레이브에서 넘어온 상태를 분리할 수 있기 때문에 관리가 매우 쉬워진다.
여기서 인풋/아웃풋은 마스터 기준이다. 마스터가 슬레이브에 데이터를 보내면 아웃풋, 받으면 인풋이다. 슬레이브 입장에서 마스터의 아웃풋은 본인의 메모리에 쓰는 write가 되고, 마스터의 인풋은 본인의 메모리 데이터를 읽는 read가 된다. 이 부분이 헷갈릴 수 있으니 주의하자.
위 예제 slave 8의 상태를 나타내보면 아래와 같다.
Slave:8
Name:EL2622
Output size: 2bits
Input size: 0bits
Configured address: 1008
Outputs address: 18cf6
Inputs address: 0
FMMU0 Ls:2 Ll: 1 Lsb:4 Leb:5 Ps:f00 Psb:0 Ty:2 Act:1
C
복사
네트워크 토폴로지(구성) 상 슬레이브의 순서는 8번째이고, 장치 이름은 EL2622이며, 2 비트의 아웃풋이 있고 인풋은 없다. 고정 주소(configured address)는 1008번이고 아웃풋 주소는 18cf6인데, 아웃풋 주소는 마스터의 메모리 주소임을 알 수 있다. 추상적으로 생각되는 FFMU를 뜯어서 살펴보면 결국 마스터의 논리적 주소 상에 슬레이브 본인의 데이터가 어떻게 차지하고 있는 지를 매핑하고 있음을 알 수 있다.
FMMU0 Ls:2 Ll: 1 Lsb:4 Leb:5 Ps:f00 Psb:0 Ty:2 Act:1
C
복사
•
FMMU0: 이 슬레이브 노드의 첫번째 FFMU인 FFMU0의 설정이라는 뜻이다.
•
Ls (Logical Start): 2 - 논리적 시작 주소가 이미지(I/O 맵) 상에서 2번 인덱스(offset)에 위치해있다는 뜻이다. 즉, 세 번째 바이트를 의미한다.
•
Ll (Logical Length): 1 - 매핑된 구역의 길이. 실제는 2비트 이지만 메모리 단위가 최소 1바이트이기 때문에 1이다.
•
Lsb (Logical Start Bit): 4 - 매핑된 주소에서 데이터가 시작되는 비트의 인덱스(offset)를 말한다.
•
Leb (Logical End Bit): 5 - 논리적 바이트 내에서 데이터가 끝나는 비트의 인덱스(offset)를 말한다.
•
Ps (Physical Start): f00 - 슬레이브 장치에서 데이터가 위치하는 물리적 메모리 위치를 말한다.
•
Psb (Physical Start Bit): 0 - 슬레이브 장치에서 데이터가 위치하는 물리적 메모리 바이트 내에서 데이터가 시작되는 비트를 말한다.
•
Ty (Type): 2 - FMMU의 타입. 2는 output만 있는 매핑을 뜻한다.
•
Act (Active): 1 - 1은 FMMU가 활성화된 상태를 뜻한다.
Legacy IO-map과 Overlapping IO-map
기존의 legacy(구식) IO-map에서는 각각의 인풋과 아웃풋이 개별적인 공간을 차지하고 있는데, 인풋이 빠져나간 공간에 다른 아웃풋을 채워넣을 수 있도록 해서 이미지 크기를 줄인 것이 Overlapping IO-map이다.
EtherCAT Command type
EtherCAT의 커맨드 종류는 아래와 같다. Read와 write가 같이 있을 경우, read 작업이 먼저 실행된다. 다시 말하지만, EtherCAT에서 말하는 read/write는 슬레이브의 메모리를 기준으로 한다. Read는 슬레이브가 본인의 메모리에 있는 센서값 등을 읽어서 데이터그램에 쓰는 것이고, write는 데이터그램의 데이터를 읽어서 본인의 메모리에 쓰는 것이다.
Cmd | Abbreviation | Name | Description |
0 | NOP | No Operation | 슬레이브는 해당 커맨드를 무시한다. |
1 | APRD | Auto Increment Read | 주소를 1 증가시킨다. 주소가 0일 경우 본인의 데이터를 읽은 후 데이터그램에 쓴다. |
2 | APWR | Auto Increment Write | 주소를 1 증가시킨다. 주소가 0일 경우 데이터그램의 데이터를 읽은 후 본인의 메모리에 쓴다. |
3 | APRW | Auto Increment Read Write | 주소를 1 증가시킨다. 주소가 0일 경우 본인의 데이터를 읽은 후 데이터그램에 쓰고 새로 읽은 본인의 데이터를 같은 메모리 영역에 쓴다. |
4 | FPRD | Configured Address Read | 슬레이브 주소가 데이터그램에 설정된 주소와 일치할 경우 본인의 데이터를 읽어서 데이터그램에 쓴다. |
5 | FPWR | Configured Address Write | 슬레이브 주소가 데이터그램에 설정된 주소와 일치할 경우 데이터그램의 데이터를 읽어서 본인의 메모리에 쓴다. |
6 | FPRW | Configured Address Read Write | 슬레이브 주소가 데이터그램에 설정된 주소와 일치할 경우 본인의 데이터를 데이터그램에 쓴 후 새로 읽은 본인의 데이터를 같은 메모리 영역에 쓴다. |
7 | BRD | Broadcast Read | 모든 슬레이브가 메모리 영역의 데이터와 데이터그램의 데이터를 논리적 OR 연산을 하고, 그 결과값을 데이터그램에 다시 쓴다. 모든 슬레이브는 position field를 1 증가시킨다. |
8 | BWR | Broadcast Write | 모든 슬레이브는 메모리 영역에 데이터를 쓴다. 모든 슬레이브는 position field를 1 증가시킨다. |
9 | BRW | Broadcast Read Write | 모든 슬레이브가 메모리 영역의 데이터와 데이터그램의 데이터를 논리적 OR 연산을 하고, 그 결과값을 데이터그램에 다시 쓴다. 모든 슬레이브는 데이터를 메모리 영역에 쓴다. BRW는 보통 거의 사용되지 않는다. 모든 슬레이브는 position field를 1 증가시킨다. |
10 | LRD | Logical Memory Read | 슬레이브는 주소가 read를 위해 FFMU 영역에 설정된 것들 중 하나와 일치할 경우 본인의 데이터를 읽어서 데이터그램에 쓴다. |
11 | LWR | Logical Memory Write | 슬레이브는 주소가 write를 위해 FFMU 영역에 설정된 것들 중 하나와 일치할 경우 데이터를 본인의 메모리 영역에 쓴다. |
12 | LRW | Logical Memory Read Write | 슬레이브는 주소가 읽기를 위해 FFMU 영역에 설정된 것들 중 하나와 일치할 경우 본인의 데이터를 읽어서 데이터그램에 쓰고, 쓰기를 위해 FFMU 영역에 설정된 것들 중 하나와 일치할 경우 새로운 데이터를 본인의 메모리 영역에 쓴다. |
13 | ARMW | Auto Increment Read Multiple Write | 슬레이브는 주소 필드를 1 증가시킨다. 슬레이브는 주소값이 0인 경우 본인의 데이터를 데이터그램에 쓰고, 그렇지 않으면 본인의 메모리 영역에 쓴다. |
Working Counter
Working counter는 EtherCAT 장치에 전달되어 명령이 잘 수행된 경우 경우 증가된다. 각 데이터그램은 모든 장치를 거치고 나서 기대되는 working counter 값이 할당될 수 있는데, 이를 통해 데이터그램이 네트워크 한 바퀴를 온전히 잘 돌고 왔는 지 알 수 있다.
Working counter는 아래와 같이 계산된다.
Command | Success | Increment |
Read command | No success | No change |
Reading successful | +1 | |
Write command | No success | No change |
Writing successful | +1 | |
Read/write command | No success | No change |
Reading successful | +1 | |
Writing successful | +2 | |
Reading and writing successful | +3 |
SOEM이나 IgH 등 EtherCAT Master 라이브러리를 보면 working counter 검증 시 output working counter에 2를 곱해주는데, LRW 명령어에서 output FMMU만 쓰인 경우 working counter가 2 증가하기 때문이다.
expectedWKC = (ec_group[0].outputsWKC * 2) + ec_group[0].inputsWKC;
C
복사
EtherCAT slave controller
각 EtherCAT 슬레이브 장치는 내부에 EtherCAT Slave Controller(ESC)를 내장하고 있다.
Mailbox Protocols - CAN over EtherCAT
Cyclic process data 외에도 EtherCAT은 다양한 Mailbox 프로토콜을 포함한 acyclic 통신을 지원한다. 이를 통해 다양한 통신 방식을 지원하는데, 그 중 하나가 CANopen 통신이다(CANopen 프로토콜이란? ). 이CAN Application Protocol over EtherCAT (CoE)을 통해 CANopen 통신을 EtherCAT을 통해 구현할 수 있다. CANopen의 OD(Object Dictionary), PDOs(Process Data Objects), SDOs(Service Data Objects) 등을 지원한다. 또한 CiA 402, CiA 406 등 표준화된 CANopen 프로파일도 EtherCAT 통신에 재사용될 수 있다.
Mailbox 프로토콜은 운영체제가 CPU 및 메모리를 관리하는 한 방법이다. 수신자에게 일정한 메모리 영역(mailbox)을 할당하고, FIFO 방식으로 들어온 메시지(mail)를 저장해놓으면 수신자는 먼저 들어온 메시지부터 읽어나간다. 이 방법은 메일 박스가 꽉 차서 에러가 나지 않는 이상 데이터의 손실이 생기지 않는 특징이 있다. 이런 특성 때문에 CANopen의 SDO 프로토콜(non-cyclic)은 메일박스 형태로 데이터를 수신한다.
EtherCAT의 구현과 시스템 아키텍쳐
EtherCAT의 시스템 아키텍처는 설정파일, 마스터, 슬레이브 세 가지 주요 요소로 나누어볼 수 있다.
•
EtherCAT 설정파일은 마스터가 EtherCAT을 초기화하고 설정하는데 사용된다.
•
EtherCAT 마스터는 EtherCAT 네트워크, 슬레이브 장치 간의 데이터 교환과 외부 애플리케이션과의 인터페이싱을 관리한다. 보통 PC, 임베디드 마이크로 프로세서, PLC 등이 된다.
•
슬레이브 장치들은 자동화 시스템의 구체적인 센서, 드라이브, 액추에이터 등의 장치들을 말한다.
EtherCAT Slave Information (ESI)
EtherCAT 슬레이브 장치들의 기능과 설정을 기술한 XML 형식의 설정 파일이다. 보통 장치 제조사에 의해 제공되고 마스터가 슬레이브 장치를 설정하고 통신하는 데 사용된다. 아래와 같은 내용들이 있다.
•
장치의 종류
•
지원하는 mailbox 프로토콜
•
동기화 설정
•
input/output process data(PDO) 매핑 정보 등
슬레이브 장치는 Service Data Objects(SDOs)와 그 리스트인 Object Dictionary(OD)를 가지고 있을 수도 있는데, 이 경우에는 ESI 파일이 모든 오브젝트의 목록을 가지고 있다.
EtherCAT Netword Information (ENI)
ENI는 EtherCAT 시스템의 네트워크 토폴로지, 슬레이브의 네트워크 상 위치, 모든 슬레이브 장치들의 process data structure 등을 정의하기 위해 사용되는 파일이다. 보통 EtherCAT 설정 툴을 사용해서 빌드된다. ENI 파일은 마스터가 네트워크를 초기화하고 각 슬레이브 노드와 통신하는 데 사용된다.
SyncManager와 FMMU
SyncManager
Synchronization Managers는 각 슬레이브 장치들에 있는 동기화 데이터 교환을 담당한다. 웹으로 비유하자면 웹소켓이나 AJAX 통신을 생각하면 된다.
SyncManager는 두 가지가 있다.
1.
Process Data SyncManager
센서값이나 액추에이터 포지션 등 마스터와 슬레이브 간의 cyclic process data를 교환하는 데 사용된다(PDO). Process Data SyncManager는 이 데이터를 읽고 쓰는 역할을 담당한다. 웹으로 비유하자면 실시간 주식 가격 같은 실시간 정보를 실어 나르는 웹소켓, AJAX 등을 생각하면 된다.
2.
Mailbox SyncManager
non-cyclic(acyclic) data를 교환하는 데 사용된다(SDO). 그렇게 급하지 않은 데이터이기 때문에 mailbox(메모리 버퍼)에 데이터를 FIFO로 쌓아둔다. 웹으로 비유하면 데이터베이스에 접근하는 부분이라고 보면 된다.
SyncManager는 아래와 같은 정책으로 세팅될 수 있다.
•
Free Run: 마스터 클럭과 동기화 하지 않고 데이터를 교환하는 것
•
Synchronized: 레퍼런스 클락을 기준으로 데이터를 교환하는 것
•
DC Synchronization: 분산된 클락을 기준으로 여러 장치가 더 타이트하게 동기화하는 것
출처: FASTECH Ezi-SERVO2-EtherCAT 4x 유저 매뉴얼
FMMU(Fieldbus Memory Management Units)
Fieldbus Memory Management Units (FMMUs)는 논리적인 주소를 장치 내의 물리적 메모리 주소로 매핑한다.
•
마스터는 슬레이브 장치들의 물리적인 메모리 구조를 알 필요가 없고
•
process 데이터가 슬레이브 장치의 메모리 어디에 있던 간에 EtherCAT 프레임 안에 일정하게 들어간다.
웹으로 비유하자면 EtherCAT 프레임에 들어있는 주소는 URL같은 것이고, FMMU는 이 URL이 요청하는 데이터를 특정 DB(메모리)에서 데이터를 가져오는 역할이다.