SyncManager
SyncManager는 EtherCAT 슬레이브 디바이스 내에서 프로세스 데이터와 메일박스 데이터의 안전하고 일관된 교환을 관리하는 하드웨어 모듈입니다. EtherCAT의 특성상 슬레이브들은 독립적인 장치로서, 마스터와 슬레이브 간의 데이터 교환 시 데이터 무결성을 유지하고 효율적인 통신을 위해 메모리 영역의 접근 제어가 필요합니다. SyncManager는 이러한 역할을 수행하며, 데이터의 입출력 제어와 데이터 일관성 보장을 담당합니다.
SyncManager의 역할
SyncManagerSM는 EtherCAT Slave ControllerESC가 데이터 송수신 시 사용자 데이터 메모리 영역을 읽고 쓰기 위해 사용하는 메커니즘입니다. 이 역할은 PDO 또는 Mailbox 통신과 같은 사용자 데이터 교환 방식에서 매우 중요합니다.
데이터 메모리 관리
- ESC의 메모리 영역 중 사용자 데이터 영역PDO, Mailbox을 동기적으로 접근하기 위해 사용됩니다.
- 이 영역은 ESC의 기본 레지스터Register area와는 독립적으로 동작하며, 기본 레지스터 접근 시에는 SyncManager가 필요하지 않습니다.
주소 관리
- ESC는 EtherCAT 프레임 내 ADOApplication Data Offset 값이 SyncManager가 관리하는 메모리 주소 영역에 포함되는지 확인합니다.
- 포함될 경우 SyncManager 정보를 참조하여 데이터를 송수신합니다.
데이터 버퍼 관리 및 접근 제어
- 메모리 접근 동기화: SyncManager는 마스터와 슬레이브 애플리케이션이 동일한 메모리 영역에 동시에 접근하여 발생할 수 있는 데이터 충돌을 방지합니다. 이를 위해 Producer-Consumer 모델을 사용하여 데이터의 읽기/쓰기 타이밍을 제어합니다.
데이터 일관성 보장
- 데이터 컨시스턴시Data Consistency: SyncManager는 데이터 전송 중에 발생할 수 있는 부분적 업데이트나 불완전한 데이터 교환을 방지하여, 항상 완전하고 일관된 데이터 세트를 제공합니다.
- 동기화 이벤트Sync Events: 데이터 교환 시점을 동기화하기 위해 이벤트 제어 방식Event-driven Control을 사용합니다. 이를 통해 마스터는 슬레이브가 데이터 준비를 완료했을 때만 데이터를 읽을 수 있습니다.
전송 채널 설정
- 다중 채널 지원: SyncManager는 여러 개의 채널을 통해 다양한 유형의 데이터를 분리하여 전송합니다. 일반적으로 SyncManager 0~3번이 사용되며, 각각 메일박스 입력/출력 및 프로세스 데이터 입력/출력에 할당됩니다.
- 메일박스 통신 지원: 비주기적이고 관리적인 데이터(예: 설정 파라미터, 진단 정보)를 전송하기 위한 메일박스 통신을 지원합니다. 이는 CoECAN over EtherCAT, FoEFile over EtherCAT 등과 같은 상위 프로토콜의 데이터 교환에 사용됩니다.
SyncManager의 동작 방식
FMMU와의 연계
- FMMUFieldbus Memory Management Unit: EtherCAT 프레임의 특정 바이트를 슬레이브의 메모리 주소와 매핑하는 역할을 합니다.
- SyncManager와 FMMU의 협력: FMMU는 EtherCAT 프레임과 슬레이브 메모리 간의 주소 변환을 담당하고, SyncManager는 해당 메모리 영역의 접근 권한과 데이터 일관성을 관리합니다.
데이터 전송 흐름
- 데이터 준비: 슬레이브 애플리케이션은 프로세스 데이터를 PDI에 기록하고, 데이터 준비 완료 플래그를 설정합니다.
- SyncManager의 접근 허용: SyncManager는 데이터가 준비된 것을 감지하고, 마스터가 해당 메모리 영역에 접근할 수 있도록 허용합니다.
- 마스터의 데이터 읽기/쓰기: 마스터는 EtherCAT 프레임을 통해 슬레이브의 메모리 영역에 접근하여 데이터를 읽거나 씁니다.
- 데이터 교환 완료: 데이터 전송이 완료되면 SyncManager는 메모리 영역을 다시 슬레이브 애플리케이션에 할당합니다.
접근 권한 관리
- 읽기/쓰기 제어: SyncManager는 메모리 영역에 대한 읽기 및 쓰기 권한을 관리하여 동시 접근으로 인한 데이터 손상을 방지합니다.
- 상태 머신State Machine: SyncManager는 내부적으로 상태 머신을 통해 데이터 교환의 각 단계를 관리하고, 오류 발생 시 적절한 조치를 취합니다.
다중 SyncManager의 활용
입력 및 출력 데이터의 분리
- 프로세스 데이터 입력/출력 채널: 일반적으로 SyncManager 2번은 프로세스 데이터 출력(마스터에서 슬레이브로), SyncManager 3번은 프로세스 데이터 입력(슬레이브에서 마스터로)에 사용됩니다.
- 데이터 충돌 방지: 입력과 출력 데이터를 분리하여 각각의 SyncManager가 관리함으로써 데이터 충돌과 일관성 문제를 방지합니다.
메일박스 통신의 분리
- 메일박스 입력/출력 채널: SyncManager 0번과 1번은 메일박스 데이터의 입력과 출력에 사용됩니다.
- 비주기적 데이터 처리: 메일박스 통신은 프로세스 데이터와 분리된 채널을 사용하여 주기적인 프로세스 데이터 전송에 영향을 주지 않고 관리적인 데이터를 교환합니다.
각 SyncManager의 독립성 및 구성
- 독립적인 설정: 각 SyncManager는 활성화 여부, 전송 방향(읽기/쓰기), 동작 모드 등을 개별적으로 설정할 수 있습니다.
- 버퍼 크기 및 주소 설정: SyncManager마다 버퍼의 시작 주소와 크기를 설정하여 메모리 영역을 할당합니다.
SyncManager의 장점
데이터 무결성 및 신뢰성 향상
- 원자적 데이터 교환: SyncManager는 데이터의 원자적 전송을 보장하여, 데이터 일관성을 유지합니다.
- 오류 감지 및 처리: 상태 머신을 통해 데이터 전송 중 발생하는 오류를 감지하고, 필요한 경우 재시도나 오류 보고를 수행합니다.
실시간 성능 향상
- 지연 시간 최소화: 마스터와 슬레이브 간의 효율적인 데이터 교환을 통해 통신 지연을 최소화합니다.
- 주기적 데이터 전송 최적화: 프로세스 데이터와 메일박스 데이터를 분리하여, 주기적인 실시간 데이터 전송의 효율성을 높입니다.
유연한 시스템 구성
- 다양한 데이터 유형 지원: 여러 개의 SyncManager를 활용하여 다양한 데이터 유형과 전송 요구 사항을 충족할 수 있습니다.
- 확장성: 필요에 따라 SyncManager의 수와 설정을 조정하여 시스템의 확장과 변경에 유연하게 대응할 수 있습니다.
사용 시 고려 사항
- SyncManager 설정의 정확성: 각 SyncManager의 버퍼 크기, 시작 주소, 동작 모드 등을 정확히 설정해야 데이터 교환이 원활히 이루어집니다.
- 데이터 일관성 관리: 슬레이브 애플리케이션은 SyncManager의 상태를 확인하고, 데이터 준비 및 처리 타이밍을 조절해야 합니다.
- 에러 처리 및 디버깅: 상태 머신에서 발생하는 오류 코드를 모니터링하여 문제를 신속히 파악하고 대응할 수 있어야 합니다.