Skip to content

EtherCAT 통신


개요

CORE 모듈은 CiA402 CANopen 프로파일을 준수하고, CoE (CANopen over EtherCAT)라 부르는 EtherCAT을 통해 구현됩니다. 현재 FW 개정반(R1.10)에서는 ‘Cyclic Synchronization Torque’ (CST) 만 지원되며, 속도, 속도 제어 같은 다른 작동 모드는 CST 모드의 적용 레벨에서 얻어야 한다. CST 모드에서 CORE는 최대 12kHz의 마스터 업데이트 속도를 지원한다. 내부 토크 컨트롤러의 게인 값들은 각 모듈 유형에 맞게 조정 되었습니다. EtherCAT FoE (File over EtherCAT)를 이용하여 EtherCAT SDO CORE 지원 펌웨어 업데이트를 통해 이 게인 값들을 바꿀 수 있습니다.


일반 EtherCAT 장치 정보

장치 ID:

  • 벤더 ID - 0x0000089a: Neuromeka EtherCAT vender ID
  • 상품 코드 - 0x30000000: Neuromeka motion device

지원 프로토콜:

  • CoE: EtherCAT 프로토콜을 통한 표준 CANopen
  • FoE: 드라이버 펌웨어 업데이트에 사용되는 EtherCAT 기반 표준 파일

CoE 세부사항:

  • SDO 활성화 및 전체 액세스 : 사용자가 SDO를 통해 사용 가능한 개체에 완전히 접근 가능
  • PDO 할당 및 구성 지원 하지 않음 : PDO 맵핑이 고정되어 있어 사용자가 변경 불가능
  • LWR 사용: 마스터가 동일한 EtherCAT 데이터그램에서 PDO 데이터를 읽거나 쓰기 가능

Distributed clock (DC):

  • DC는 모든 EtherCAT 슬레이브 장치와 EtherCAT 마스터를 작은 오차(~100ns)에서 동기화하는 EtherCAT의 기능입니다.
  • 뉴로메카 CORE는 64 bit DC clock을 지원합니다.
  • CST mode에서는 DC의 활성화 여부에 상관 없이 모듈이 동작합니다.

SDO 접근

사용자는 SDO를 통해 CiA402에서 정의한 드라이브 변수에 완전히 접근이 가능합니다.
SDO 객체는 두 가지로 분류 됩니다. * 원본 기능 목록: 이 목록들은 정의된 함수들로 사용되는 CiA402 표준 객체를 포함합니다. 이 목록의 목든 객체가 업데이트가 된 것은 아니다.(일부 객체는 항상 0입니다.) * 대체 기능 목록 : 드라이버 온도 데이타, 모듈 설정, 모듈 보정, 디버그 같은 다른 함수들에 몇몇의 객체가 사용됩니다.

아래 두 표는 모든 객체 목록을 보여줍니다. Neuromeka_CompleteSDO_List.pdf

원본 함수 객체 목록:


Figure 1. 원본 함수 객체 목록

대체 험수 객체 목록:


Figure 2. 대체 함수 객체 목록

Index: 객체의 표준 인덱스, 16진수
Sub-index: 각 객체는 하위 객체를 가지기도 하며, 그 객체의 하위 객체에 대한 인덱스
Name: 표준 객체 이름, 객체의 함수를 나타냄
Type: 객체의 데이터 타입
Attribute: OP mode의 접근 권한
Description: 객체에 대한 추가 설명


Slave process data (PDO)

PDO 데이터는 마스터 장치와 슬레이브 장치간에 주기적으로 송수신됩니다. 이것은 실시간(realtime) 통신 데이터입니다. 뉴로메카의 CORE는 최대 20kHz(50us)의 PDO 전송 속도를 제공합니다. CORE는 PDO 할당 및 구성을 지원하지 않으므로 사용자는 제조업체에서 할당한 기본 구성을 사용해야 합니다. 기본 PDO 맵핑은 모션 제어를 위해 지향되므로, 사전에 구성된 객체는 모션 제어 목적(위치, 속도, 토크)만 제공 됩니다. 온도와 같은 기타 드라이버 정보는, 사용자가 SDO를 통해 접근해야 합니다.

기본 PDO 맵핑

RxPDO
기본 RxPDO 객체 'Drive RxPDO'(index : 0x1600)는 sync-manager2(SM2)에 맵핑됩니다. RxPDO에는 5개의 PDO 항목이 있습니다.

PDO 이름 항목
Drive RxPDO Index Sub-index Bit len Name Data type
0x6040 0 16 controlword UINT
0x607a 0 32 target_velocity DINT
0x60ff 0 32 target_velocity DINT
0x6071 0 16 target_torque INT
0x6060 0 8 modes_of_operation SINT

Table 1. 기본 RxPDO 맵핑

TxPDO
기본 TxPDO 객체 'Drive TxPDO'(index : 0x1A00)는 sync-manager3 (SM3)에 맵핑됩니다. RxPDO에는 5개의 PDO 항목이 있습니다.

PDO 이름 항목
Drive TxPDO Index Sub-index Bit len Name Data type
0x6041 0 16 statusword UINT
0x6064 0 32 position_actual_value DINT
0x606c 0 32 velocity_actual_value DINT
0x6077 0 16 torque_actual_value INT
0x6061 0 8 modes_of_operation_display SINT
Table 2. 기본 TxPDO 맵핑


CiA402 상태 기계(state machine)

  • CoE CiA402 모션 프로파일이 구현된 CORE, SERVO-ON, SERVO-OFF은 CiA402 state machine에 따라 제어됩니다.
  • state 그룹 3가지:
    • 전원 비활성화(Power disabled): 드라이버 전압이 아직 활성화 되지 않음
    • 전원 활성화(Power enabled): 고전압 상요 가능
    • 고장(Fault): 모든 알람 신호는 드라이버를 고장 상태(fault sate)를 만듬
  • 사각 블락은 드라이버의 상태
  • 노란색의 강조된 숫자들은 상태 전이 경로(state transition path)


Figure 3. CiA402 state machine 다이어그램


드라이버 상태

드라이버 상태 설명
Not Ready to Switch On 초기상태, 전원을 켠 후 아주 빠르게 전달
Switch On Disabled 시작이 완료료됨, 서보가 꺼진 상태(off state)
Ready to Switch On 꺼진 상태에서 control word로 서보에 명령
Switched On 주 전압이 공급되어 활성화할 준비가 됨
Operation Enable 완전히 활성화됨. 서보가 작동중
Quick Stop Active 서보 드라이브가 사전 정의된 방법으로 중지
Fault Reaction Active 서보는 켜진 상태(on state)지만 알람이 감지되어, 서보는 곧 꺼진 상태(off state)로 진입
Fault 서보 꺼짐(off state)
Table 3. 드라이버 상태(state) 요약

드라이버의 상태는 Statusword 객체로 표시됩니다. 한 상태에서 다른 상태로 변경하려면 마스터는 알맞은 COntrolword 값을 전송해야 합니다.


Figure 4. CiA402 state machine 다이어그램


Control word (object 0x6040)

사용자별로 설정되며, 드라이브의 상태를 변경합니다.

Index 0x6040
이름 controlword
객체 코드 VAR
데이터 타입 UINT
접근 RW
PDO 맵핑 (pre-mapped) Yes
단위 -
범위 -
기본 값 0
Table 4.Controlword 설명


Controlword는 비트단위 객체로, 각 비트는 각각의 제어의 의미를 가집니다. 몇개의 비트는 필수적(M)이고, 다른 것들은 선택적(O)입니다.


Figure 5. Controlword의 자세한 설명


Status word (object 0x6041)

드라이브 내부적으로 설정되며, 현재 드라이브의 상태를 표시합니다.

Index 0x6041
이름 statusword
객체 코드 VAR
데이터 타입 UINT
접근 RO
PDO 맵핑 (pre-mapped) Yes
단위 -
범위 -
기본 값 -
Table 5.Statusword 설명


Statusword는 비트 단위로 정의되고, 각 비트는 특정 상태를 나타냅니다.


Figure 6. Detail information of Statusword

SDO를 통한 서보의 on/off 변경

controlword, statusword를 포함한 모든 객체들을 SDO를 통해 접근할 수 있습니다. 그러므로 사용자들은 SDO를 통해 controlword의 적당한 값을 써 CORE 모듈의 on/off를 변경할 수 있습니다. CiA402 state machine에 따르면, 적당한 SERVO-ON 경로는 다음과 같습니다.\


Figure 7. Servo ON 경로


servo를 끄기 위한(SERVO-OFF) 가장 간단한 방법은 controword의 값을 0(transition#9) 0으로 설정하는 것입니다. 모듈을 켜기 전에, mode_of_operation을 먼저 설정하는 것을 권장합니다.

에러 코드(Error_code) (object 0x603F)

  • 에러 코드(Error_code): 드라이브 내부의 오류를 나타냄
  • 에러 코드(Error_code)는 작업을 시작하기 전과 고장 비트(Fault bit) statusword가 나타낼 때 확인해야 합니다.

Index 0x603F
이름 error_code
객체 코드 VAR
데이터 타입 UINT
접근 RO
PDO 맵핑 (pre-mapped) No
단위 -
범위 -
기본 값 0
Table 6.Error_code 설명


CORE의 가능한 표준 에러 코드(FW revision 1.10까지):

코드 이름 설명
0x2310 ERROR_CONTINUOUS_OVER_CURRENT 하드웨어 과전류, 재실행 전 리셋 필요
0x3110 ERROR_MAINS_OVER_VOLTAGE 주 공급의 전압(48V)이 너무 높음 (> 63V)
0x3120 ERROR_MAINS_UNDER_VOLTAGE 주 공급의 전압(48V)이 너무 낮음 (< 41V)
0x3210 ERROR_DC_LINK_OVER_VOLTAGE 드라이버 전압(활성화 후)이 너무 높음 (> 62V)
0x3220 ERROR_DC_LINK_UNDER_VOLTAGE 드라이버 전압(활성화 후)이 너무 낮음 (< 40V)
0x7310 ERROR_SPEED 드라이버 과속, 자동적으로 에러 복구
0xFF10 ERROR_ENCODER_BAT_LOW 엔코더 배터리 부족 -> 배터리 교환
0xFF11 ERROR_ENCODER_ERR_BIT 엔코더에 에러 비트-> 비트 카운트 확인
0xFF20 ERROR_5V_SOURCE_OVER 내부 5V 전원 너무 높음 (> 5.5V)
0xFF21 ERROR_5V_SOURCE_UNDER 내부 5V 전원 너무 낮음 (< 4V)
0xFF22 ERROR_3_3V_SOURCE_OVER 내부 3.3V 전원 너무 높음 (> 3.6V)
0xFF23 ERROR_3_3V_SOURCE_UNDER 내부 3.3V 전원 너무 낮음 (< 3.0V)
0xFF24 ERROR_GATE_DRV_VOLTAGE_OVER 내부 게이트 드라이버 전압이 너무 높음(> 13V)
0xFF25 ERROR_GATE_DRV_VOLTAGE_UNDER 내부 게이트 드라이버 전압이 너무 높음(< 9V)
0xFF31 ERROR_MOSFET_UL_THRU Low side MOSFET, 채널 U 손상
0xFF32 ERROR_MOSFET_VL_THRU Low side MOSFET, 채널 V 손상
0xFF34 ERROR_MOSFET_WL_THRU Low side MOSFET, 채널 W 손상
0xFF39 ERROR_MOSFET_UH_THRU High side MOSFET, 채널 U 손상
0xFF3A ERROR_MOSFET_VH_THRU High side MOSFET, 채널 V 손상
0xFF3C ERROR_MOSFET_WH_THRU High side MOSFET, 채널 W 손상
0xFF3F ERROR_MOSFET_UNKNOWN_THRU 일부 MOSFET 손상 -> 과전류
Table 7. CORE 모듈 에러 코드

주기적 동기 토크 모드(Cyclic synchronization torque mode, CST)

SERVO-ON 운전 모드가 CST(10)으로 설정되면, 타겟 토크는 드라이브에 의해 업데이트 될 것입니다.
프로세스 데이타의 시간제한은 50ms : EtherCAT 상태가 OP 모드로 변경되면, 50ms 미만의 주기로, 드라이브에 프로세스 데이터를 전송해야 합니다.
계속 진행 하기 전에 타켓 토크를 최대 토크(max_torque) 값(object 0x6072)와 비교 하게 됩니다.max_torque의 기본 값은 2048로 CORE500에서 42.5A에 해당하는 값입니다.
실제 모터 속도를 측정하고 최대 모터 속도(max_motor_speed, 객체 0x6080)와 비교합니다. max_motor_speed의 기본 값은 4600rpm입니다.
max_torque와 max_motor_speed의 값을 사용자가 SDO 접근을 통해 변경할 수 있습니다.


Figure 8. 토크 제어 루프

기타

데이터 변환

토크 (전류): 이전 장에서 설명하였듯이, 모든 target_torque, actual_torque and max_torque values (called ecat_data)은 ADC 드라이버의 'count' 단위로 측정됩니다.
그러므로 각 값들을 토크 상수와 기어 비로 의미있는 물리적 단위(Amps, Nm)로 변환해야 합니다.

데이터 변환을 위한 기본 정보

CORE 모듈 기어비 토크 상수(Nm/A) Single-turn 엔코더 분해능(counts)
CORE100 101 0.058 65536
CORE200 121 0.087 65536
CORE500 121 0.0884 65536
Table 8. CORE 모듈 - 데이터 변환을 위한 기본 정보

토크 (전류) 데이터 변환

CORE100 ecat data 모터 전류 (A) 모터 토크 (Nm) CORE 출력 토크 (Nm)
공식 a I = a/96 t = 0.058I = 0.00060417a T = 101t = 0.061004a
96 1.0 0.058 5.858
Table 9. CORE100 토크 (전류) 데이터 변환
CORE200 ecat data 모터 전류 (A) 모터 토크(Nm) CORE 출력 토크 (Nm)
공식 a I = a/96 t = 0.087I = 0.00090625a T = 121t = 0.10965625a
96 1.0 0.087 10.527
Table 10. CORE200 토크 (전류) 데이터 변환
CORE500 ecat data 모터 전류 (A) 모터 토크 (Nm) CORE 출력 토크(Nm)
공식 a I = a/48 t = 0.0884I = 0.0018417a T = 121t = 0.2228457a
96 2.0 0.1768 21.393
Table 11. CORE500 토크 (전류) 데이터 변환

위치 데이터 변환

CORE100 ecat data 모터 회전(turns) CORE 회전(turns) CORE 축 각도(deg)
공식 p n = p/65536 N = n/101= p/6619136 A = 360N = 360p/6619136
1241088 18.9375 0.1875 67.5
Table 12. CORE100 위치 데이터 변환
CORE200
CORE500
ecat data 모터 회전(turns) CORE 회전(turns) CORE 축 각도 (deg)
공식 p n = p/65536 N = n/121= p/7929856 A = 360N = 360p/7929856
예제 1982464 30.25 0.25 90
Table 13. CORE200/500 위치 데이터 변환

속도 데이터 변환

CORE100 ecat data 모터 속도 (deg/s) 모터 속도 (rpm) CORE 축 속도 (deg/s)
공식 y v = 360y/65536 r = 60y/65536=v/6 V = v/101=360y/6619136
1311000 7201.538 1200.256 71.302
Table 14. CORE100 속도 데이터 변환
CORE200
CORE500
ecat data 모터 속도 (deg/s) 모터 속도 (rpm) CORE 축 속도 (deg/s)
공식 y v = 360y/65536 r = 60y/65536=v/6 V = v/121=360y/7929856
1311000 7201.538 1200.256 59.517
Table 15. CORE200/CORE500 데이터 변환

브레이크 제어

기본적으로, 브레이크 제어 회로는 활성화 되지 않고, 브레이크는 CORE을 정지 시킵니다.
CORE 모듈 브레이크를 해제하는데 3가지 방법이 있습니다.

  • 서보 켜기(Servo on): CORE가 servo-on(SDO나 PDO에 의해) 상태에 있을 경우 브레이크는 자동적으로 해제 됩니다.
  • digital_output 객체 사용하기: 이 객체는 2가지 하위 index를 가지며(digital_output:0 and digital_output:1) 두 번째 하위 객체가 제어를 조절할 수 있습니다. 이 방법은 servo-off 상태에서만 작동한다는 점에 유의하십시오.
           digital_output:1 = 0xAAAA : 브레이크 해제
           digital_output:1 = other values: 브레이크 상태
  • 브레이크 해제 선 사용: 드라이버의 각 브레이크 선(Brake lines) 커넥터 (J2)은 'Brake release' 선을 가지고 있으며, 이 선이 GND에 연결될 때 브레이크는 모터의 상태와 상관없이 해제됩니다.