Skip to content

튜토리얼 1: Maxon 모터 예제

본 장에서는 CoE (CANopen-over-EtherCAT) 슬레이브 장치와 EtherCAT IO 모듈을 이용한 예제를 다룹니다. CoE 슬레이브 장치로는 맥슨 모터를 제어하기 위한 맥슨 사의 MAXPOS 서보 드라이브를 사용하며 엔코더와 경사계의 값을 측정하기 위한 IO 모듈들을 사용합니다. 요소별 상세 내용은 아래 와 같습니다.

종류 설명 수량
MAXPOS 서보 드라이브 MAXPOS 50/5 위치 제어기 2
맥슨 모터 45 flat Ø42.8 mm, brushless, 70 Watt 1
맥슨 모터 60 flat Ø60 mm, brushless, 100 Watt 1
벡호프 EL5101 인크리멘탈 엔코더 인터페이스 1
오토닉스 (Autonics) 엔코더 인크리멘탈 엔코더, Ø50mm 샤프트 타입 1
벡호프 EL3162 2-채널 아날로그 입력 터미널 0…10 V, single-ended, 16 비트 1
포지탈 (Posital) 경사계 2 축, ±80 도 1

EtherCAT 슬레이브 시스템 구성 요소

1) 아래 그림과 같이 EtherCAT 슬레이브 장치들을 마스터 장치(STEP)에 연결한다.


EtherCAT 시스템 구조

2) EtherCAT 슬레이브 스캔을 위해 PuTTY (또는 다른 SSH 클라이언트 도구)를 이용하여 STEP에 로그인 합니다.

3) PuTTY 터미널에서 아래 명령어를 실행하여 필드 버스 위 EtherCAT 슬레이브 장치의 상태를 확인합니다. 슬레이브 장치들이 성공적으로 연결이 되었다면 아래 그림과 같이 MAXPOS 드라이버, 벡호프 EtherCAT 커플러, 벡호프 IO 모듈 (EL5101, EL3162) 을 포함한 EtherCAT 슬레이브 리스트를 확인할 수 있습니다.

1
root@NRMKStep-PC:~# ethercattool slaves


EtherCAT 슬레이브 리스트

4) NRMKEcatService 를 실행하여 모든 정보를 호스트 PC 로 보냅니다.

1
2
3
root@NRMKStep-PC:~# NRMKEcatService
EcatInfo server started at IP of: 127.0.0.1,192.168.0.2,192.168.137.100 on Port: 8888
Waiting for Configuration Tool to connect...

5) NRMK Launcher 에서 NRMK EtherCAT Tool(이하 EcatTool)을 실행합니다.

주의

다음 단계를 진행하기 전에 필요한 모든 ESI 파일(MAXPOS.xml, Beckhoff EL5xxx.xml, EL3xxx.xml)들을 다음의 EcatTool 경로에 복사해 두어야 합니다. <neuromeka_install_dir>\NRMKFoundation\bin\NRMKEcatTool\resources

6) 아래 그림에서와 같이 EcatTool에서 Searching System Information 메뉴를 선택합니다. (4번째 단계에서 NRMKEcatService를 통해 얻은) STEP의 TCP/IP 연결 정보를 다이어로그에 입력하고 connect 버튼을 누릅니다 (*포트번호: 8888).


이캣툴의 Searching System Infromation 메뉴

NRMKEcatService가 정상적으로 연결되었다면 아래 그림처럼 불러온 슬레이브 장치들의 리스트와 정보가 나타날 것입니다. 이제 다이어로그를 닫고 슬레이브 장치들를 설정할 준비합니다.


EtherCAT 스캔 결과

7) 아래 그림과 같이 스캔 된 각 슬레이브 장치들의 아이콘, 제조 업체명, 슬레이브 명, 알리어스, 슬레이브 위치등을 사용자가 원하는대로 수정하고 Apply 버튼을 클릭합니다.


EtherCAT 슬레이브 설정

주의

코드 자동 생성을 위해서는 제조 업체명과 슬레이브 장치명을 알파벳으로 시작해야 하며 알파벳, 숫자, 공백 외에는 넣을 수 없습니다.

8) MAXPOS PDO 항목을 도메인 구성에 매핑합니다.

8.1) MAXPOS에는 4개의 RxPDO 매핑 (0x1600, 0x1601, 0x1602, 0x1603)과 4개의 TxPDO 매핑 (0x1A00, 0x1A01, 0x1A02, 0x1A03)이 있습니다. PDO 매핑을 클릭하면 각 매핑이 포함하고 있는 PDO 항목들을 Entry Configuration 패널에서 확인할 수 있습니다.

8.2) 아래 그림은 RxPDO 의 0x1603을 예시로 나타냅니다. RxPDO 0x1603의 왼쪽의 체크 버튼은 해당 0x1603에 포함 된 PDO 항목들을 도메인에 매핑 할 수 있다는 것을 의미합니다. 이와 같이 사용자가 사용하기 원하는 PDO 항목을 포함한 PDO 매핑을 선택하면 됩니다.

8.3) Targetposition, Targetvelocity, Targettorque 는 각각 CST (Cyclic Synchronous Torque), CSP (Cyclic Synchronous Position), CSV (Cyclic Synchronous Velocity) 모드와 관련이 있습니다. 각 모드를 사용하기 위해서는 타겟 위치, 타겟 속도, 타겟 토크의 사이클릭 업데이트를 필요로 합니다. 앞서 선택했던 RxPDO 0x1603은 위치와 속도모드만 제공한다는 것을 아래 그림의 Entry Configuration 패널에서 알 수 있습니다.


RxPDO 0x1603 의 항목 리스트

8.4) 본 예제에서는 토크 모드를 추가적으로 사용하기 위해 해당 PDO 매핑에 타켓 토크 항목을 추가하도록 합니다. 이를 위해 아래 그림과 같이 RxPDO 매핑을 오른쪽 클릭하여 Setting 메뉴를 선택합니다.


RxPDO 매핑 수정

참고

사용자는 토크모드를 사용하기 위해서 타겟 토크 항목을 포함하는 다른 RxPDO 매핑을 찾을 수 있습니다.

8.5) 아래 그림과 같이 Entry 다이어로그가 나타나면 아래의 순서대로 Available Entries 에서 TargetTorque (0x6071) 항목을 선택하고 >> 버튼을 눌러 리스트에 추가합니다.


타겟 토크 항목의 추가

8.6) 이로써 RxPDO 0x1603의 항목은 9개가 되었습니다. 하지만 최대로 허용되는 PDO 항목 갯수는 8개이기 때문에 불필요한 항목을 리스트에서 제거해 주어야 합니다 (기본 항목 수를 보면 최대 항목 수를 알 수 있다). 본 예제에서는 아래 그림과 같이 DigitalOutput 항목을 선택하고 << 버튼을 눌러 제거합니다. 마지막으로 “OK” 버튼을 눌러 변경 사항을 반영합니다.


DigitalOutput 의 제거

8.7) 다음 단계로 PDO 항목을 도메인에 배치합니다. 필요한 항목을 선택한 후 마우스 오른쪽 버튼을 클릭하고 Add to Domain 메뉴를 클릭합니다. 그 결과 아래 그림과 같이 EcatTool이 선택 된 모든 항목을 자동적으로 RxDomain에 배치합니다.


RxPDO 항목 불러오기 (RxDomain)

8.8) RxDomain에 PDO 항목을 배치한 후 사용하기 원하는 TxPDO 항목 역시 배치하여야 합니다. 본 예제에서는 맥슨 모터의 실제 위치, 실제 속도, 실제 토크 등의 PDO 항목들을 포함하고 있는 TxPDO 0x1A01을 선택하였습니다. 아래 그림과 같이 사용하고자 하는 TxPDO 항목들을 선택한 후 TxDomain에 배치합니다.


TxPDO 항목 불러오기 (TxDomain)

9) 사용하고자 하는 벡호프 EL5101 PDO 항목을 도메인에 배치합니다.

9.1) 아래 그림과 같이 벡호프 EL5101은 한 개의 RxPDO 0x1600와 한 개의 TxPDO 0x1A00로 구성됩니다.


벡호프 EL5101: (a) RxPDO 0x1600, (b) TxPDO 0x1A00

주의

그림에서 볼 수 있듯이 두 PDO 매핑의 서로 다른 항목이 같은 이름(Value)을 공유하기 때문에 자동으로 생성 된 코드에서 오류가 발생할 수 있습니다. 이를 방지하기 위해서 항목명을 변경해 주어야 합니다.

9.2) 다음으로 “Name” 필드 부분을 수정하여 각 항목명을 구분합니다. 아래 그림와 같이 본 예제에서는 항목명을 각각 SendValue와 GetValue로 변경합니다.

9.3) 마지막으로 RxPDO 0x1600와 TxPDO 0x1A00의 항목들을 MAXPOS에서와 동일한 방법으로 도메인에 배치합니다.


벡호프 EL5101 변경 내용– (a) RxPDO 0x1600, (b) TxPDO 0x1A00

10) 벡호프 EL3162의 PDO 항목들을 도메인에 배치합니다.

10.1) 벡호프 EL3162는 3개의 TxPDOs (0x1A00, 0x1A01, 0x1A10)를 제공하기 때문에 이전 장치들(MAXPOS, EL5101)의 과정보다 훨씬 간단합니다. 본 예제에서는 아래 그림과 같이 두 개의 아날로그 신호를 측정하기 위해 TxPDO 0x1A10를 선택합니다. 이 후 과정은 앞에서 설정한 두 장치들과 동일합니다.


벡호프 EL3162 의 TxPDO 0x1A10

10.2) MAXPOS, EL5101, EL3162의 모든 구성을 끝냈다면 아래 그림과 같이 선택한 모든 PDO 항목들이 RxDomain과 TxDomain에 배치되어 있어야 합니다.


RxDomain, TxDomain 의 최종 화면

11) 분산 클럭 (Distributed Clock) 구성을 진행합니다.

11.1) 분산 클럭은 EtherCAT 기능 중 하나이며 클럭원(주로 분산 클럭을 지원하는 첫번째 슬레이브 장치)을 기준으로 슬레이브 장치들 간의 동기화 된 통신을 제공합니다. 이번 장에서는 EtherCAT 시스템 인터페이스 개발 시 분산 클럭 모드를 설정하는 방법에 대하여 설명합니다.

참고

MAXPOS 서보 드라이브는 분산 클럭 기능을 제공하는 반면 벡호프 DIO 슬레이브 장치는 제공하지 않습니다.

11.2) 아래 그림에서 볼 수 있듯이 Domain Configuration 패널 하단의 DC 체크 박스를 클릭하면 Distributed Clock Setting 다이어로그가 나타납니다. 각 EtherCAT 슬레이브 장치마다 분산 클럭을 설정할 수 있습니다.


Distributed Clock Configuration

11.3) Distributed Clock Setting 다이어로그에서 MAXPOS의 분산 클럭에 체크하고 나머지 두 벡호프 IO 모듈은 체크 해제합니다. 1 또한 두 개의 MAXPOS 중 하나를 Reference Clock으로 설정합니다. 설정 후 OK 버튼을 눌러 변경사항을 반영합니다.

12) 현재 시스템에 대한 리얼타임 코드를 생성합니다.

12.1) 아래 그림과 같이 Export PDO Configuration 버튼을 클릭하면 System Setting 다이어로그가 나타납니다.

  • System Name: 이클립스 C++ 프로젝트 명
  • Control Period: 실시간 사이클 주기 (기본셋팅: 1 ms)
  • Platform PC: Intel x86 아키텍쳐 기반 STEP (STEP2, STEP HPC)
  • Platform IMX: ARM 아키텍쳐 기반 STEP (STEP iMX, STEP BBB)


이클립스 C++ 프로젝트 설정

12.2) System Setting 다이어로그를 기입하고 OK 버튼을 클릭하면 EtherCAT PDO Generator 다이어로그가 아래 그림과 같이 나타납니다. 다이어로그에서는 생성 된 C++ 코드를 내보내기 전에 제대로 생성되었는지 확인할 수 있습니다. 이상이 없다면 소스 코드와 프로젝트 생성을 위해서 File 메뉴의 Export 를 클릭합니다.


EtherCAT C++ 코드 리뷰

12.3) Save As 다이어로그가 표시되면 새 폴더(예:EcatDemonstration)를 작업공간에 만든 후 Save를 클릭합니다.

13) 이클립스를 이용하여 실시간 EtherCAT 프로젝트를 컴파일하고 실행합니다.

13.1) 아래 그림과 같이 이클립스 실행 후 FileImport 메뉴를 클릭합니다.


이클립스 프로젝트 불러오기

13.2) 아래 그림과 같이 Import 다이어로그에서 Existing Projects into Workspace 옵션을 선택합니다.


불러오기 옵션 선택

13.3) EcatTool을 이용하여 소스 파일을 저장했던 작업공간 경로를 선택합니다. 경로가 정상적으로 선택되면 아래 그림과 같이 EtherCAT 프로젝트가 리스트에 표시됩니다.


EtherCAT 프로젝트 경로 선택 화면

13.4) Finish 버튼을 클릭하면 아래 그림과 같이 이클립스의 Project Explorer창에 프로젝트가 로드된 것을 확인할 수 있습니다.


이클립스 Project Explorer 화면

13.5) 프로젝트 컴파일을 위해 아래 그림과 같이 Build Configuration 에서 Release 를 선택합니다. 이는 이클립스가 EtherCAT 어플리케이션의 릴리즈 버전을 생성할 수 있도록 합니다.


Build Configuration 선택 메뉴

13.6) 아래 그림과 같이 EtherCAT 프로젝트 컴파일은 상단의 Project | Build Project 메뉴를 통해 진행할 수 있습니다. 아래와 같은 메세지가 이클립스 콘솔 창에 나타난다면 성공적으로 빌드된 것입니다.

1
2
Build complete for project EcatDemonstration
Time consumed: 4631  ms.  


EtherCAT 프로젝트 컴파일


  1. ESI xml 파일에는 분산 클럭의 지원 유무에 대한 내용이 표시되어 있다. 하지만, 슬레이브마다 종종 잘못된 정보가 기입되어 있는 경우가 있으므로 각 슬레이브의 제조 업체에서 제공하는 메뉴얼을 참고하는 것이 좋다. 분산 클럭을 지원하지 않는 슬레이브에 분산 클럭 모드를 사용하면 EtherCAT 어플리케이션 실행 시 오류를 발생시키니 주의해야 한다.