113
MoonWalker MW DCM 01 User’s Manual ver. 1.00 Updated in September 2013

MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

  • Upload
    others

  • View
    7

  • Download
    2

Embed Size (px)

Citation preview

Page 1: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker MW DCM 01

User’s Manual

ver. 1.00

Updated in September 2013

Page 2: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

http://ntrexgo.com

Page 3: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

1

0. 머리말 7

1. MOONWALKER DCM01 제어기의 특장점 8

DC 모터의 전압 / 속도 / 위치 제어가 가능한 고급형 제어기 8

다양한 센서를 이용한 제어기 Close-Loop 구성 8

다양한 구동 방식 채택 8

각종 사용자 편의 기능 및 보호 기능 탑재 9

2. 개요 10

2-1. 사용 전 유의 사항 10

2-2. 제원 11

2-3. 외형 및 기능 12

2-3-1. 리셋 스위치 12

2-3-3. LED 상태표시 13

2-3-4. I/O 커넥터 14

2-3-5. 전원 커넥터 14

3. 전원 및 모터의 연결 15

4. 통신의 연결 16

4-1. Serial 통신의 기본연결 16

4-2. CAN 통신의 기본연결 16

5. 입/출력 포트의 연결 18

5-1. Digital Output 기본연결 18

5-2. Digital Input 기본연결 18

Page 4: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

2

5-3. Analog Input 기본연결 19

5-4. Pulse Input 기본연결 20

6. 내부 회로 및 제어기 구성 21

6-1. 내부 회로 구성 21

6-2. 제어기 구성 22

6-2-1. 제어기의 전체 구성 22

6-2-2. 전류 제어기 23

6-2-3. 속도 제어기 24

6-2-4. 위치 제어기 26

6-2-5. 프로파일 생성기 27

7. 명령어 구조와 종류 28

7-1. 용어의 정의 및 기본 구조 28

7-1-1. 공통 용어의 정의 28

7-1-2. Serial(RS-232/USB) text 패킷 통신의 기본 명령 구조 29

7-1-2-1. 변수 내용 읽어오기 29

7-1-2-2. 명령을 인가하기 30

7-1-2-3. 변수 읽기/쓰기 요청에 대한 응답 31

7-1-2-4. 변수에 내용을 쓰거나 읽기에 대한 오류 메시지 31

7-1-3. CAN 통신의 기본 명령 구조 32

7-1-3-1. CAN 통신을 하기 위한 패킷의 기본구조 32

7-1-3-2. 변수 내용 읽어오기 32

7-1-3-3. 변수에 내용을 쓰기 – 명령을 인가하기 33

7-1-3-4. 변수 읽기/쓰기 요청에 대한 응답 33

7-1-3-5. 변수 읽기/쓰기 요청에 대한 오류 메시지 33

7-1-4. Serial binary 패킷 통신의 명령 구조 34

7-1-4-1. Serial binary 패킷 통신의 기본 구조 34

7-1-4-2. 변수 내용 읽어오기 34

Page 5: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

3

7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35

7-1-4-4. 변수 읽기/쓰기 요청에 대한 응답 35

7-1-4-5. 변수 읽기/쓰기 요청에 대한 오류 메시지 35

7-2. 상태 확인 및 구동 명령 36

7-2-1. 내부 상태를 확인 36

7-2-2. 모터 제어기의 환경적 상태 확인 38

7-2-3. 구동에 관련된 명령 39

7-3. 내부 설정 변경 40

7-3-1. 제어기의 파워 스테이지 스위칭 소자의 구동에 관련된 설정 40

7-3-2. 통신에 관련된 설정 41

7-3-3. 위치 센서에 대한 설정 43

7-3-4. 모터 구동 환경에 대한 설정 43

7-3-5. 모터 드라이버(스위칭 모듈)의 환경 설정 44

7-3-6. 시스템 Fault 감지 조건 설정 45

7-3-7. 제어기 시작 시 모터 구동과 관련된 설정 46

7-4. 내부 제어기의 설정 47

7-4-1. Closed Loop Controller 기본설정 47

7-4-2. 위치 제어기 게인 설정 48

7-4-3. 속도 제어기 게인 설정 48

7-4-4. 전류 제어기 게인 설정 48

7-5. 외부 IO에 대한 설정 49

7-5-1. Digital Input 포트 49

7-5-1-1. Digital Input 포트에서 사용되는 변수 49

7-5-1-2. Digital Input 기능 요약 50

7-5-2. Digital Output 포트 51

7-5-2-1. Digital Output에서 사용되는 변수 51

7-5-2-2. Digital Output 기능 요약 52

7-5-3. Analog Input 포트 52

7-5-3-1. Analog Input에서 사용되는 변수 52

Page 6: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

4

7-5-4. Pulse Input 포트 54

7-5-4-1. Pulse input에서 사용되는 변수 54

7-6. 스크립트(Script)에 대한 설정 56

8. MOTOR CONTROL UI 프로그램 56

8-1. Motor Control UI 프로그램 다운로드 57

8-2. Motor Control UI 프로그램 PC 연결 57

8-3. Motor Control UI 프로그램 메뉴 및 기능 60

8-3-1. Control List 60

8-3-2. Motor Control 61

8-3-2-1. Motor Control Status 62

8-3-2-2. Motor Fault Flags 63

8-3-2-3. Motor Control 64

8-3-2-4. Controller Monitoring 64

8-3-2-5. Mapped Analog Input 64

8-3-3. IO Monitoring 64

8-3-4. Configuration 65

8-3-4-1. Motor 1 / Motor 2 67

8-3-4-2. Digital Input / Digital Output / Analog Input / Pulse Input 68

8-3-5. Script 70

8-3-5-1. 스크립트 언어 70

8-3-5-2. 스크립트 명령어 72

8-3-5-3. Motor Control UI 프로그램을 이용한 스크립트 메뉴 사용의 예 76

8-3-6. Real-time Plot 77

8-4. Motor Control UI 프로그램을 이용한 제어기 설정방법 78

8-4-1. 전압 제어 설정 방법 78

8-4-2. 전류 제어 설정 방법 80

8-4-3. 속도 제어 설정 방법 82

8-4-4. 위치 제어 설정 방법 84

Page 7: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

5

8-5. Motor Control UI 프로그램 사용시 유의사항 86

8-5-1. Encoder Resolution 86

8-5-2. Motor Characteristics 86

8-5-3. Fault Condition 87

8-5-4. Write Properties & Save to Flash 87

8-5-5. Calibration 87

9. 참고 및 응용 88

9-1. 위치나 속도를 측정하는 센서의 연결 88

9-2-1. Incremental형 엔코더와의 연결 88

9-2-2. Absolute형 엔코더와의 연결 89

9-2-2-1 펄스 출력을 가지는 Absolute형 엔코더와의 연결 89

9-2-2-2. 아날로그 출력을 가지는 Absolute형 엔코더와의 연결 90

9-2-3. Tachometer와의 연결 90

9-2-3-1 펄스 출력을 가지는 타코메타와의 연결 90

9-2-3-2 아날로그 출력을 가지는 타코메타와의 연결 91

9-2-4. Potentiometer와의 연결 91

9-2. Joystick 연결 92

9-2-1. Joystick 연결 구성 92

9-2-2. Joystick 사용을 위한 Motor Control UI 프로그램 설정 92

9-3. RC 조종기 연결 96

9-3-1. RC 조종기 연결 구성 96

9-3-2. RC 조종기 사용을 위한 Motor Control UI 프로그램 설정 96

9-4. 고급 기능 99

9-4-1. Mixing 모드 99

9-4-2. Linearity 100

9-4-2. Dead-band 102

9-5. 제어 대상에 따른 제어기 설정 103

Page 8: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

6

10. 공장 출하 시 초기 설정 106

10-1. 내부 설정 변경 106

10-2. 내부 제어기의 설정 108

10-3. 외부 IO에 대한 설정 109

10-4. 스크립트(Script)에 대한 설정 110

11. 제품의 보증 111

Page 9: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

7

0. 머리말

저희 NTREX는 여러분께 MoonWalker 시리즈라고 이름 붙여진 이 강력한 모터 제어기

를 소개할 수 있게 된 것이 정말 기쁩니다. 아마 귀하가 1개 혹은 2개의 DC 모터를 좀

더 강력하게 구동하기 위해 저희 제품을 선택하였다면 아주 올바른 선택이라고 자신합

니다. MoonWalker 시리즈는 기본적으로 전류/속도/위치 제어기를 탑재하고 있어서 로봇

암이나 주행로봇, 산업용 기기 등을 실제 적용부터 연구용까지 아주 광범위한 적용이 가

능합니다.

저희가 제공하는 Control UI 프로그램을 사용하여 PC에서 손쉽게 각 종 설정을 조절할

수 있으며 저가의 제어기에서 제공하는 프로그램에서는 거의 볼 수 없는 실시간 상태

확인을 그래프로도 확인할 수 있습니다. 특히 직관적이고 손쉬운 다양한 구동 방식을 제

공하므로 본 제품의 구입 후 간단히 제품의 연결에 관련된 3장의 내용을 숙지하고, 일반

적인 시리얼 통신 포트나 혹은 Mini-USB 단자를 이용하여 PC와 연결한 후 8장의 내용

을 확인하면 됩니다. 이렇게 괜찮은 가격에 좋은 프로그램을 번들로 제공할 수 있는 것

이 저희도 역시 즐겁습니다.

기존의 제어기라는 개념이 아닌 단순한 DC 모터 구동용 드라이버만 가지고 무선 RC

조종기나 조이스틱을 이용하여 로봇을 구동하면서 부족한 기능에 실망하셨다면 역시 저

희 MoonWalker 시리즈가 제공하는 솔루션에서 그 해답을 얻을 수 있을 겁니다. 간편히

Control UI 프로그램으로 원하는 설정을 조절한 다음 9-2절이나 9-3절을 통해 RC 조종

기나 조이스틱을 이용하여 구동할 수 있도록 되어 있습니다. 특히 조종기 레버의 감도

조절이나 다양한 안전상의 설정들을 확인할 수 있습니다.

또한 MoonWalker 시리즈는 단순히 Incremental형 엔코더뿐만 아니라 Absolute형 엔코

더와 Tachometer, Potentiometer 등의 다양한 센서를 적용할 수 있습니다. 특히 Control

UI 프로그램이 제공하는 Mini-C 컴파일러로 구현된 스크립트 기능을 Digital Input /

Output과 Analog Input 단자와 함께 응용하면 별도의 중계용 보드와 같은 장치 없이 직

접 구현이 가능합니다. 이런 강력한 기능을 바로 경험하고 싶다면 8-3-5절의 내용을 지

금 바로 읽어보면 됩니다.

저희 MoonWalker 시리즈를 선택해 주셔서 감사합니다. 그리고 그 선택에 결코 부족하

지 않은 제품이라고 저희 NTREX는 자신합니다. 마지막으로 저희 제품에 대한 많은 응용

예제와 구동방법 및 기술 대응을 원하시면 ntrexgo.com의 엔티렉스 연구소 메뉴에 있는

MoonWalker 카테고리를 방문하면 됩니다.

Page 10: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

8

1. MoonWalker DCM01 제어기의 특장점

DC 모터의 전압 / 속도 / 위치 제어가 가능한 고급형 제어기

- 8V에서 30V의 넓은 전압범위와 10A의 연속 최대 구동 전류 범위

- Unipolar / Bipolar 구동 방식 선택 가능

- 18kHz에서 40kHz의 PWM 주파수 범위

- 각 구동 방식별로 Open-Loop / Close-Loop 제어 방식 선택 가능

- 전압 / 속도 제어기에 각각 Anti-Windup 적용

- 사다리꼴 프로파일을 이용한 속도 제어 가능

- Open-Loop 상태에서 구동 시에 사다리꼴 프로파일 적용 가능

다양한 센서를 이용한 제어기 Close-Loop 구성

- Incremental 엔코더 신호의 피드백을 이용한 정밀한 위치 및 속도 제어 지원

- Absolute 엔코더 신호의 피드백을 이용한 정밀한 위치 및 속도 제어 지원

- Tachometer 신호의 피드백을 통한 속도제어 지원

- Potentiometer 신호의 피드백을 통한 위치제어 지원

다양한 구동 방식 채택

- Serial / CAN 통신을 이용한 구동

- Joystick과 같은 아날로그 신호를 이용한 구동

- RC 조종기와 같은 디지털 신호를 이용한 구동

- Serial 통신 / 아날로그 신호 / 디지털 신호를 이용한 구동 시 명령어 동시 사용 가능

- 전압을 이용한 Open-Loop 제어 제공

- Joystick과 RC 조종기 사용 시 Min/Max 범위 설정과 센터 부근의 Dead-band 영역 설

Page 11: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

9

정 가능

- Joystick과 RC 조종기 사용 시 입력 신호에 대한 Calibration과 Linearity 설정 기능 탑

각종 사용자 편의 기능 및 보호 기능 탑재

- Digital Input / Output Port와 Analog Input Port 등을 이용하여 사용자 스크립트(Script)

를 지원

- 사용자 스크립트 사용 시 내부 변수의 모니터링 가능

- 제품의 설정과 구동을 편하게 할 수 있는 환경 설정 및 구동용 PC 프로그램 제공

- EEPROM을 이용한 사용자 세팅 값 저장 및 재부팅 시 자동 불러오기

- CAN 통신에서 멀티드롭(Multidrop) 연결을 위한 Device ID 최대 255개까지 설정 가능

- 배터리 전압 측정 및 제어기의 과전압 / 저전압 보호 기능

- 모터의 전류 측정 및 과전류 보호 기능

- 통신 연결 중단 시 모터 정지를 위한 Watchdog Timer 기능

- 내부 FET 방열판의 온도 측정을 통해 과열 보호 기능 탑재

- RGB LED를 사용한 에러, 동작, 통신상태 표시 기능

Page 12: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

10

2. 개요

2-1. 사용 전 유의 사항

- 인명이나 재산상의 영향이 큰 기기, 또는 이동형 로봇에 사용할 경우 안전장치(fuse,

기계적 브레이크 장치)을 설치 후 사용 하시길 권장 합니다.

- 제품을 분해 또는 개조하지 마십시오. 화재, 감전 및 파손의 위험이 있습니다.

- 제품의 주변에 폭발성 물질이나, 인화성 가스가 있는 장소, 부식성 분위기, 물이 닿을

가능성이 있는 장소, 가연성 물질이 있는 부근에서는 사용을 피하여 주십시오. 화재의

위험이 있습니다.

- 전원을 연결할 경우 반드시 극성(배터리 단자)을 확인하여 주시기 바랍니다. 역극성

입력에 의한 파손은 치명적이므로 수리가 불가하니 유의하시기 바랍니다.

- 전원을 연결하기 전 구동 모드의 설정 상태를 확인하여 주시기 바랍니다.

- 모터 드라이버의 정격 전압 이상의 과도한 전압을 인가하지 마십시오.

- 모든 선의 연결 또는 제거를 할 때 전원이 꺼져 있는지 확인 하시기 바랍니다.

- 제품을 장시간 운전 중 이거나 또는 전원을 끄고 잠시 동안은 만지지 마십시오. 방열

판의 열에 의한 화상의 위험이 있습니다.

- 전원이 인가된 상태에서는 이동, 설치, 접속, 점검 등의 작업을 하지 마십시오. 오작동

의 원인이 되기 때문에 반드시 전원을 차단 후 실시하여 주십시오.

- 비 정상적으로 전원을 차단 하였을 경우, 다시 전원 인가 시 전체적인 설정 상태를 재

확인 하시기 바랍니다. 갑작스런 모터 기동으로 인한 상해의 위험이 있습니다.

- 방열 및 성능 향상을 위하여 통풍이 잘 되도록 유지하여 주시기 바랍니다.

- 장시간 연속 구동 시 되도록 방열판의 열을 흡수할 수 있는 형태의 샷시에 마운트 시

켜 주시고, 2차 방열판을 권장 합니다.

Page 13: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

11

2-2. 제원

[표 2-1] 제원

Power Stage

Operating Voltage 8~30VDC

Number of Channels 1

Max. Current 10A

Surge Current <20A

Waiting Current 60mA

Encoder Output Voltage +5VDC (I<80mA)

I/O Connector Output Voltage +5VDC (I<60mA)

Command

R/C Inputs 1.0ms - 1.5ms center - 2ms. Adjustable

Serial Interface RS232, CAN

USB Interface 12-Mbit/s, type mini-B connector

Analog Interface 0V - 2.5V center - 5V. Adjustable

Input / Output

Optical Encoder Inputs 1 incremental encoder. 30kHz max

Analog Inputs 1 input, 12-bit resolution

Digital Outputs 2 outputs, 5V 40mA max

Digital Inputs 2 general purpose inputs

Pulse Inputs Duty Cycle or Frequency 1 input

Operating Modes

Open Loop Speed Forward & Reverse Speed Control. Separate or Mixed

Closed Loop Speed Using Encoder or Tachometer feedback & PID

Position Mode Using Potentiometer, PWM sensor, or encoder & PID

Controller Configuration Jumper-less using PC utility

Mini-C Scripting

Max Program Size ~1500 lines of C-language code, 256 user variables

Physical

Operating Temperature -40 to +80oC heat sink temperature

Controller Size W:L:H = 72:65:19(mm)

Weight 100g

Page 14: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

12

2-3. 외형 및 기능

본 절은 MoonWalker DCM01(이하 MW DCM01) 제어기의 외형 구성 및 기능에 대해

설명합니다.

[그림 2-1] MW DCM01 제어기

[그림 2-1]는 제어기의 외형 이미지 입니다. 제어기는 MoonWalker 로고 기준으로 위에

는 I/O 15핀 커넥터로 구성되어 있고, 아래는 주 전원과 모터 전원 커넥터로 구성되어

있습니다.

2-3-1. 리셋 스위치

[그림 2-2] 제어기 외부 구성 (정면)

리셋 스위치는 단순히 짧게 한 번 누르는 것으로는 동작하지 않습니다. 아래 두 가지

사항에 따라 리셋 스위치가 동작합니다.

Page 15: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

13

먼저 리셋 스위치를 누른 상태로 제어기의 전원을 인가하면서 누름 동작을 5초간 유지

하면, 제어기의 모든 설정이 공장 출하 상태로 바뀝니다. 또한, 리셋 기능을 사용하고 싶

을 때는 제어기의 전원이 이미 들어온 상태에서 리셋 버튼을 5초간 누르면 됩니다.

그리고 동작 중에 리셋 스위치를 0.5초간 누르면 두 채널에 연결된 모터의 전원 모두를

토글합니다. 만약 두 채널 중 하나만 Motor Power ON 상태라고 해도, 구동 중에 리셋

스위치를 0.5초간 누르면 두 채널의 Motor Power를 모두 OFF 합니다.

2-3-3. LED 상태표시

제어기에는 세 개의 LED를 이용해 제어기의 현 상태를 표시해 주고 있습니다.

[표 2-2]에는 [그림 2-2]의 위치에 있는 상태 LED의 색상별 의미하는 내용에 대해 설명

합니다. 표 2-1의 패턴에서 ‘1’은 LED가 ON, ‘0’은 LED가 OFF 된 상태를 의미하며, 각 패

턴의 0과 1이 유지되는 시간 간격은 100ms입니다. 예를 들어 모터에 전원 공급이 원활

하고 동작 준비가 끝났다면, Run LED가 500ms간 켜지고, 500ms간 꺼지는 동작을 반복

합니다.

[표 2-2] 상태 LED별 기능

LED 설명 패턴 내용

Run [동작중]

제어기의 동작 상태

1000000000 모터 제어기에 전원이 공급되지 않

은 상태

1111100000 모터 제어기에 전원이 공급되고 동

작 가능한 상태

1111111110 모터가 구동되고 있는 상태

Fault

[Fault 상황]

Warning이나 Error

등의 Fault 상태

1111100000 제어기에 Fault가 발생한 상태

0 제어기가 정상 동작 상태

Comm [통신중]

현재 통신 상태

1 RS-232, CAN 등의 통신을 통해 데이

터를 송수신하고 있는 상태

0 현재 통신을 통해 송수신하는 데이

터가 없는 상태

제어기에 최초로 전원이 투입되면 3개의 LED가 동시에 0.5초간 켜졌다가 꺼지며, 이후

동작상태만 표시하는 LED만 깜빡이게 됩니다.

만약 전원을 연결한 후에 세 개의 LED가 모두 동시에 켜지거나 꺼져있는 상태인 경우

Page 16: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

14

에는 제어기가 정상적으로 초기화되지 못했음을 의미합니다. 세 개의 LED가 0.5초간 켜

졌다 꺼진 후 동작상태를 의미하는 Run LED가 1초를 주기로 깜박거리고 있어야만 정상

적으로 초기화가 되고 동작 가능한 상태가 된 것입니다.

3개의 LED가 모두 0.25초 주기로 깜박이는 경우에는 제어기의 H/W나 S/W가 오작동을

일으켜 소프트웨어 실행이 중단된 상황으로 제어기를 하드웨어적으로 리셋 하거나 전원

을 껐다가 켜야 합니다.

2-3-4. I/O 커넥터

제어기는 [그림 2-3]과 같이 Serial / CAN 통신, Digital Input / Output, Analog Input,

Pulse Input, 외부 전원(+5V)를 사용할 수 있는 I/O 15핀 커넥터가 있습니다.

사용자는 [표 2-3]의 I/O 15핀 커넥터의 핀맵 정보를 숙지한 후 환경에 맞게 사용해야

합니다.

[그림 2-3] I/O 16핀 커넥터

[표 2-3] I/O 16핀 커넥터 핀맵 정보

01 - CAN H 06 - Analog Input 1 11 - Digital Output 1

02 - CAN L 07 - Pulse Input 1 12 - Digital Output 1

03 - RS-232 RX 08 - VCC (+5V) 13 - VCC (+5V)

04 - RS-232 TX 09 - Digital Input 1 14 - Encoder A

05 - GND 10 - Digital Input 2 15 - Encoder B

16 - GND

2-3-5. 전원 커넥터

제어기 아래에는 [그림 2-4]와 같이 주 전원과 모터 전원 1개를 연결할 수 있는 커넥터

가 있습니다.

Page 17: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

15

[그림 2-4] 제어기 외부 구성 (아래)

※ 주 전원 단자에 배터리와 같은 전원 공급 장치와 연결할 때 반드시 극성(+, -)에 주

의해서 연결해야 합니다.

※ DC 모터를 연결할 때는 사용자가 고려하고 있는 방향성에 맞게 연결하여야 합니다.

만약 모터의 극성이 반대로 연결되면 모터가 역방향으로 회전합니다.

3. 전원 및 모터의 연결

[그림 3-1] 제어기와 모터 및 배터리 연결 예시

본 절의 모든 내용은 중요하므로 꼭 숙지하기 바랍니다. 그래야만 제어기와 모터 혹은

사용자가 구성한 주변 회로를 보호할 수 있습니다.

사용자는 [그림 3-1]처럼 적절한 용량에 맞는 퓨즈(Fuse)를 연결하기를 권장합니다. 퓨

즈는 사용하고자 하는 용량의 80~90% 선의 용량을 선택하기를 권장합니다. 만약 본 제

어기의 퓨즈를 선정할 때는 안전을 위해 두 모터의 용량을 합에서 80~90% 사이의 용량

을 선택하는 것을 권장합니다.

Page 18: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

16

또한, 시스템의 전원을 ON/OFF 할 수 있는 전체 전원 스위치의 연결을 권장합니다.

Power Supply처럼 전원 스위치가 없는 배터리를 직접 연결할 때는, 비상시 전원을 차단

하기 위해 비상 정지 버튼(Emergency Disconnect Switch)을 [그림 3-1]처럼 설치하기를

권장합니다.

※ [그림 3-1]은 제어기를 사용하기 위한 기본적인 전원 연결에 대한 예시입니다. 본 그

림은 단순한 예시일 뿐이며, 사용자의 환경에 맞춰 안전을 위한 부가 회로가 필요할 수

있습니다.

※ 주 전원 단자에 배터리와 같은 전원 공급 장치와 연결할 때 반드시 극성(+, -)에 주

의해서 연결해야 합니다. 제어기는 주 전원에서 내부 전원을 변환하여 사용하므로 극성

을 올바르게 연결하지 않으면 제품 파손의 원인이 됩니다. 사용자가 극성을 잘못 판단하

여 발생한 제품의 파손 및 그로 인한 오작동 등은 모두 당사의 책임이 아니며, 이와 같

은 이유로 발생한 A/S는 무상 기간이라 하여도 유상으로 진행됩니다.

4. 통신의 연결

4-1. Serial 통신의 기본연결

Serial 통신을 사용하기 위해서는 [그림 4-1]과 같이 통신하고자 하는 대상의 Data In에

I/O 15핀 커넥터 2번 핀을 Data Out에 3번 핀을 그리고 그라운드(GND)에 13번 핀을 연

결하면 됩니다.

[그림 4-1] Serial 통신을 위한 기본 연결

4-2. CAN 통신의 기본연결

CAN 통신을 사용하기 위해서는 [그림 4-2]와 같이 I/O 15핀 커넥터의 6번 핀을 CAN

L(CAN Bus Low)에 7번 핀을 CAN H(CAN Bus High)에 연결하면 됩니다.

Page 19: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

17

[그림 4-2] CAN 통신을 위한 기본 연결

이때 CAN 통신 종단에 120Ω 저항을 달아 줌으로서 CAN H와 CAN L 사이의 전압을

2V로 유지해 줌으로써 버스라인 종단에서 데이터가 중첩될 가능성이 있는 메아리 현상

을 제거해줍니다.

Page 20: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

18

5. 입/출력 포트의 연결

Digital Output, Digital Input, Analog Input, Pulse Input 회로의 설계 방법은 꽤 다양합니

다. 가장 일반적으로는 LED와 저항을 사용해서 설계하는 방법(신호의 기본 동작 테스트)

과 포토커플러(Photo Coupler)를 사용하여 설계하는 방법(내부와 외부의 신호를 분리)이

있으며, 환경과 목적에 따라 다양하게 설계할 수 있습니다.

본 절은 입/출력 포트의 기본적인 연결에 대해서 설명하며, 많은 응용예제와 그 밖에

기술에 대해서는 ntrexgo.com의 엔티렉스 연구소 메뉴에 있는 MoonWalker 카테고리를

방문하기 바랍니다.

5-1. Digital Output 기본연결

Digital Output은 on/off 전기 장치들을 제어하거나 외부 신호와 분리하기 위해 [그림

5-1]과 같은 LED, 포토커플러, 스위치와 다이오드를 가지고 사용자의 환경과 목적에 맞

는 회로를 설계할 수 있습니다. 이때 저항 R은 제어기의 최대 로드 전류가 40mA이므로

사용자는 외부 입력 전압에 따라 계산해서 저항을 연결해 주어야 하며 Max. Input

Voltage는 +30 VDC 그리고 Max. Load Current는 40mA입니다.

[그림 5-1] Digital Output 연결

5-2. Digital Input 기본연결

Digital Input은 근접센서, 터치센서 등의 외부 입력 신호를 받으면 모터 정지, 정/역방

향 리미트 기능을 실행할 수 있습니다.

Page 21: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

19

[그림 5-2]은 스위치 ON/OFF에 따라 Digital Input의 정상 동작 여부를 확인하기 위해

설계한 것으로, R에는 사용자의 환경에 맞게 저항을 연결해 주시면 됩니다. 사용자의 환

경과 목적에 따라 주변 회로 연결을 다르게 설계할 수 있습니다.

[그림 5-2] Digital Input 연결

5-3. Analog Input 기본연결

Analog Input은 [그림 5-3]과 같이 아날로그 입력 포트(Voltage 0~5)와 그라운드(GND)

를 연결해서 아날로그 출력을 가지는 Absolute형 엔코더를 사용할 수 있고 또한, 고정된

전압에서 일종의 가변저항과 같은 출력을 가지는 센서인 포텐셔미터의 출력을 아날로그

입력 포트에 연결해서 사용할 수 있습니다.

[그림 5-3] Analog Input 연결

Page 22: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

20

5-4. Pulse Input 기본연결

Pulse Input은 RC 조종기를 사용하기 위한 포트이며, Pulse Input은 최소 20Hz에서 최대

20kHz 사이에서 동작합니다.

Pulse Width (0 ~ 5000 μs), Frequency (20Hz ~ 20kHz), Duty Cycle (0 ~ 1000 ‰) 등 세

가지 Pulse Capture Type이 있으며, 사용자는 자신이 선택할 Pulse Capture Type에 따라

입력범위에 주의해야 합니다. Capture Type은 또한 연결하고자 하는 외부 장비의 출력

신호의 형태에 따라 결정되므로 사용하고자 하는 장비의 종류를 선정할 때도 주의하기

바랍니다.

[그림 5-4] Pulse Input 연결

Page 23: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

21

6. 내부 회로 및 제어기 구성

6-1. 내부 회로 구성

[그림 6-1] MW DCM01 내부 회로 구성

[그림 6-1]과 같이 MW DCM02에는 한 개에서 두 개의 모터를 구동할 수 있는 회로와

여러 개의 Pulse Input, Analog Input, Digital Input, Digital Output 포트 그리고 전원과

PWM을 관리하는 Power Stage가 있습니다. Power Stage 단에는 전류를 감지(Sensing)하

기 위한 소자들이 구성되어 전류제어기의 피드백 소스를 제공하고 있고, 방열판에는 온

도 센서를 장착하여 제어기의 과열을 감지하여 알람 혹은 비상 정지용으로 사용하고 있

습니다. 그리고 배터리의 저전압이나 과전압을 감지하기 위한 전압 감지용 소자도 설치

되어 있습니다.

Page 24: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

22

6-2. 제어기 구성

6-2-1. 제어기의 전체 구성

[그림 6-2] 제어기 내부에 설계된 제어기의 전체 구성도

[그림 6-2]에는 제어기에 적용된 내부 제어기 전체 구성도가 나타나 있습니다. 여기서

Position Ref.는 사용자가 입력해야 하는 모터의 회전 각도(혹은 설정에 따라 거리)가 됩

니다. 만약 사용자가 설정을 통해 위치 제어기를 동작시키지 않는다면 사용자는 원하는

속도 명령(Velocity Ref.)을 인가해야 합니다.

또한 단순히 Open-Loop로 구동하고자 한다면, 설정을 통해 모터의 전압을 직접 조절

하여 구동할 수 있습니다. 단, [그림 6-2]의 구성도에서 나타나 있지는 않지만, Open-

Loop 구동이라도 가감속 구간을 설정할 수 있습니다.

[그림 6-2]의 프로파일 생성기(Profile Generator)는 사용자가 원하는 위치 명령을 받으

면 그에 맞는 속도 명령을 생성할 때, 급가감속을 하지 않도록 사다리꼴로 속도 프로파

일을 만드는 역할을 수행합니다. 사용자 설정에 따라 프로파일 생성기를 사용하지 않을

수도 있습니다.

Page 25: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

23

6-2-2. 전류 제어기

[그림 6-3] 제어기 내부에 설계된 전류 제어기

전류 제어기는 모터의 현재 속도(), 모터에 흐르는 현재 전류(), 속도 제어기에서 내

려온 전류 명령( )이 전체 입력으로 인가되며, 동작 주파수 는 = 10입니다.

또한, PI 제어기로 구현되어 있으며, 이때 사용하는 비례 게인은 이고 적분 게인은 입니다.

전류 제어기에는 안티와인드업(Anti-Windup) 제어기가 설계되어 있습니다. 먼저 와인드

업(Windup) 현상은 적분 제어기에 누적된 값이 제어기의 제한 폭을 넘어서 제어입력이

쌓이게 되는 경우를 말합니다. 와인드업 현상이 발생하면 제어기의 입력 부호가 바뀌어

도 누적된 적분 제어기로 인해 실제 모터의 방향이 바뀌지 않는 현상이 생기게 됩니다.

그래서 적분기에 누적된 수치가 제어기 출력의 제한 값에 따라 포화되지 않도록 제한하

는 기능이 필요하며 이것을 안티와인드업 제어기라고 합니다. [그림 6-3]에서 가 안티

와인드업 제어기의 게인입니다.

DC 모터는 회전속도에 비례해서 모터가 발생하는 힘인 토크를 방해하는 요소들이 있습

니다. 이 중에 가장 많은 영향을 미치는 것 중 하나가 역기전력(Back EMF)입니다. 역기

전력은 모터의 회전속도에 비례해서 모터의 토크를 감소하게 만듭니다. 모터가 고속으로

회전하고 있을 때는 이 역기전력에 의한 모터 토크의 감쇠를 보상해 주어야 하는데, 이

를 전류 제어기에서는 전향 보상 이득 (단위: / )를 이용해서 보상하고 있습

니다.

Page 26: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

24

[표 6-1] 전류 제어기에서 사용하는 변수

변수이름 의미 단위 사용자 설정 가능 여부 비례 게인 - 가능 적분 게인 - 가능 안티와인드업 게인 - 불가능, = 역기전력 전향 보상 게인 - 가능 모터에 인가되는 최대 전압 V 가능

[표 6-1]에는 전류 제어기의 내부 변수가 정리되어 있습니다. 특히 사용자가 설정할 수

있는지 아닌지를 명시하고 있습니다. 특히 의 경우는 일반적으로 많이 사용하는 의

역수를 사용하도록 설정되어 있으며, 사용자가 설정할 수는 없습니다.

다음은 간단하게 전류 제어기의 비례, 적분 게인 값을 튜닝하는 방법에 대해 설명합니

다. 먼저 적분 게인 값을 0으로 설정한 후 비례 게인 값을 증가시킵니다. 비례 게인 값

을 통해서 실제 속도가 목표 전류(Reference Current)까지 어느 정도 도달되면 사용자의

환경에 따라 발생하는 편차를 줄이기 위해 적당한(Minimal Amount) 적분 게인 값을 설

정합니다.

※ 사용자는 위와 같은 튜닝을 통해서 테스트를 진행한 후 비례, 적분 게인 값을 찾아

설정해야 줘야 합니다.

6-2-3. 속도 제어기

[그림 6-4] 제어기 내부에 설계된 속도 제어기

Page 27: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

25

속도 제어기는 속도 모터의 현재 속도(), 위치 제어기에서 내려온 속도 명령()이 입

력으로 인가며, 동작 주파수 는 = 1 입니다. 또한, 6-2-2절의 전류 제어기와 같

이 속도 제어기도 PI 제어기로 구성되어 있으며, 사용하는 비례 게인은 이고 적분 게

인은 입니다.

속도 제어기에 전류 제어기와 같이 안티와인드업 제어기가 설계되어 있으며, [그림 6-4]

에서 나타난 가 안티와인드업 제어기의 게인입니다.

제어기는 내부적으로 속도 명령( )을 적절한 단위변환을 거쳐 바로 전류 제어기의 전

류 명령( )으로 인가하는 일종의 스케일 팩터(Scale Factor)의 역할을 수행하는 장치

를 두고 있습니다. 사용자의 환경상 속도 제어기를 바이패스 시켜야 할 상황이라면 비례

게인과 적분 게인을 ‘0’로 두고, 속도 명령이 전류 명령 이 되도록 스케일(단위변환을 포

함)만 변경하여 바로 사용할 수 있도록 하고 있습니다.

[표 6-2] 속도 제어기에서 사용하는 변수

변수이름 의미 단위 사용자 설정 가능 여부 비례 게인 - 가능 적분 게인 - 가능 안티와인드업 게인 - 불가능, = 스케일 팩터 - 가능 전류 제어기에 인가되는

최대 전류 A 가능

[표 6-2]에는 제어기에 사용하는 속도 제어기의 내부 변수가 정리되어 있습니다. 특히

사용자가 설정할 수 있는지 아닌지를 명시하고 있습니다. 특히 의 경우는 일반적으로

많이 사용하는 의 역수를 사용하도록 설정되어 있으며, 사용자가 설정할 수는 없습니

다.

다음은 간단하게 속도 제어기의 비례, 적분 게인 값을 튜닝하는 방법에 대해 설명합니

다. 먼저 적분 게인 값을 0으로 설정한 후 비례 게인 값을 증가시킵니다. 비례 게인 값

을 통해서 실제 속도가 목표 속도(Reference Velocity)까지 어느 정도 도달되면 사용자의

환경에 따라 발생하는 편차를 줄이기 위해 적당한(Minimal Amount) 적분 게인 값을 설

정합니다.

※ 사용자는 위와 같은 튜닝을 통해서 테스트를 진행한 후 비례, 적분 게인 값을 찾아

설정해야 줘야 합니다.

Page 28: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

26

6-2-4. 위치 제어기

[그림 6-5] 제어기 내부에 설계된 위치 제어기

위치 제어기는 모터의 현재 위치( ), 사용자가 지정하는 위치 목표값( )이 입력으로

인가며, 동작 주파수 는 = 100 입니다. 위치 제어기는 PID 제어기로 구성되어

있으며, 사용하는 비례 게인은 이고 적분 게인은 , 미분 게인은 입니다. 위치 제

어기에 전류나 속도 제어기와 같이 안티와인드업 제어기가 설계되어 있으며, [그림 6-5]

에서 나타난 가 안티와인드업 제어기의 게인입니다.

[표 6-3] 위치 제어기에서 사용하는 변수

변수이름 의미 단위 사용자 설정 가능 여부 비례 게인 - 가능 적분 게인 - 가능 미분 게인 - 가능 안티와인드업 게인 - 불가능, = 속도 제어기에 인가되는

최대 속도 RPM 가능

다음은 간단하게 위치 제어기의 비례, 적분, 미분 게인 값을 튜닝하는 방법에 대해 설

명합니다. 먼저 적분 게인 값을 0으로 설정한 후 모터의 오버 슈트(Overshoots) 및 진동

(Oscillates)이 발생할 때까지 비례 게인 값을 증가시킵니다. 그리고 더 이상의 오버 슈트

가 발생하지 않으면 미분 게인 값을 설정하고 마지막으로 편차를 줄이기 위한 적당한

(Minimal Amount) 적분 게인 값을 설정합니다. 만약 오버 슈트가 계속 지속된다면 비례

Page 29: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

27

게인 값을 감소시켜야 합니다.

※ 사용자는 위와 같은 튜닝을 통해서 테스트를 진행한 후 비례, 적분, 미분 게인 값을

찾아 설정해야 줘야 합니다.

6-2-5. 프로파일 생성기

[그림 6-2]의 프로파일 생성기(Profile Generator)는 기본적으로 모터나 모터가 연결된

전체 시스템에 급격한 충격을 방지하기 위해 급가감속을 줄이는 역할을 수행합니다. 제

어기는 속도에 대해 사다리꼴의 프로파일을 생성하며, 사용자는 프로파일 생성 기능 자

체의 사용 여부를 선택할 수 있습니다.

제어기의 프로파일 생성기는 6-2-3절의 속도 제어기와 같은 동작 주파수를 가집니다.

또한, 사용자가 지정한 위치 명령( ), 6-2-4절의 위치 제어기가 생성한 속도 명령( ),

현재의 위치값( )과 위치값을 차분한 현재의 속도값( )을 입력으로 가집니다. 여기서

6-2-4절의 위치 제어기가 생성한 속도 명령과 프로파일 생성기가 생성하는 속도 제어기

에 인가할 속도 명령의 구분을 위해 위치 제어기가 생성한 속도 명령을 다시 로 합니

다.

[그림 6-6] 기본적인 사다리꼴 프로파일

사용자는 최대 허용 속도( )와 가속 구간의 기울기( ), 감속 구간의 기울기( )를

설정하여 사다리꼴 가감속 프로파일을 설정할 수 있도록 하고 있습니다. 만약 위치 제어

기를 사용하지 않고 속도 제어기를 동작시켜서 속도 명령을 사용자가 인가하는 경우라

면, 현재 속도 대비 높은 속도를 인가하면 가속 구간이, 낮은 속도를 인가하면 감속 구

간이 적용됩니다. 또한, 사용자가 설정한 최대 허용 속도( ) 보다 높은 속도를 인가

하면 제어기는 설정된 최대 허용 속도( )로만 동작을 하므로, 사용자는 사용하는 모

터와 환경에 따라 최대 허용 속도( )를 잘 설정해야 합니다.

Page 30: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

28

7. 명령어 구조와 종류

본 장에서는 제어기가 가지는 명령어의 구조와 종류 및 사용법과 기능 전체에 대해 설

명합니다. 이 장을 모두 숙지하기 어렵다면, 이후의 장들에서 필요로 하는 부분만 발췌

해서 읽으면 됩니다. 만약 사용자가 Serial(RS-232/USB) 통신을 통해 속도제어를 하고자

한다면 해당 내용을 읽은 다음 필요한 명령어만 본 장에서 읽으면 됩니다. 또한, 8장에서

소개하는 Motor Control UI 프로그램을 사용하면 본 7장의 내용을 먼저 익힐 필요는 없

습니다. 그러나 7장의 내용을 알게 되면 제어기의 강력한 기능을 사용하는 데 도움이 될

것입니다.

기본적으로 저희 제어기의 설정을 변경하고 모터를 구동하면서, 모터와 제어기의 현 상

태를 읽는 과정을 Serial / CAN 통신을 통해 사용자가 직접 수행하고자 한다면 기본적으

로 필요한 내용이 됩니다. 또한, 7장 이후 장에서 필요한 부분이나 전체 명령을 참조하는

장이 되기도 합니다.

7-1. 용어의 정의 및 기본 구조

7-1-1. 공통 용어의 정의

[표 7-1] 사용되는 명령어의 공통 용어

용 어 내 용

index 변수의 참조 색인

sub-index 변수의 참조 부색인

short name index와 호환되는 변수의 짧은 이름

long name index와 호환되는 변수의 전체 이름

int8 [variable type] 부호를 가지는 8 bit 정수형

int16 [variable type] 부호를 가지는 16 bit 정수형

int32 [variable type] 부호를 가지는 32 bit 정수형

float [variable type] 부호를 가지는 32 bit 실수형

RO [access] 액세스 권한 중 읽기 전용 (read only)

WO [access] 액세스 권한 중 쓰기 전용 (write only)

RW [access] 액세스 권한 중 읽고 쓰기 가능

본 절에서 기본적으로 사용되는 공통 혹은 자주 사용되는 용어를 [표 7-1]에서 정의합

니다. 제어기 동작을 명령하거나 제어기의 특성을 설정하는 것은 내부의 해당 변수에 특

Page 31: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

29

정한 값을 쓰는 것을 의미하며, 제어기의 상태를 읽어오는 것은 제어기 내부의 해당 변

수의 값을 읽어오는 것을 의미합니다. 이후 설명서에서 명령한다는 말은 곧 구동에 관련

된 변수에 특정한 값을 쓰는 행동이 됩니다.

[표 7-1]에서 사용되는 용어 중 index, short name, long name은 변수를 지정하는 방식

의 차이입니다. 7-2-1절의 제품에 인가된 주 전원의 전압을 체크하는 변수의 내용을 읽

고자 할 때, 만약 7-1-2절처럼 Serial(RS-232/USB) text 기반으로 통신하는 경우는 해당

명령의 short name인 bv나 long name인 battery_voltage를 사용하면 되고, CAN 패킷통

신(7-1-3절)이나 Serial binary 패킷 통신(7-1-4절)을 사용하는 경우는 해당 변수의 index

인 8을 사용하면 됩니다.

또한, sub-index는 통상 모터의 채널 수를 의미합니다. 채널 1에 연결된 모터에 대한 명

령이나 설정이라면 1을, 채널 2에 연결된 모터의 경우는 sub-index를 2를 사용하면 됩니

다. 연결된 모터가 아니라 제어기 자체에 대한 것이라면 통산 sub-index는 0가 됩니다.

또한, sub-index는 상황에 따라 연결된 외부 IO의 번호가 되기도 합니다.

7-1-2. Serial(RS-232/USB) text 패킷 통신의 기본 명령 구조

Serial 통신에서는 하이퍼 터미널이나 사용자가 외부에서 RS-232를 통해 텍스트(text)기

반으로 제어기에 쉽게 액세스 가능하도록 명령을 지원하고 있습니다. Serial text 기반 통

신에서는 [표 7-1]의 short name이나 long name과 sub-index를 사용합니다.

7-1-2-1. 변수 내용 읽어오기

short/long name sub-index CR/LF

Short/long name은 변수의 색인이며, sub-index는 해당 명령에 따라 필요하면 모터 채

널 혹은 외부 IO를 의미합니다. Sub-Index는 또한 해당 값이 ‘0’인 경우 생략 가능합니다.

본 장에서 설정한 특정한 변수의 내용을 사용자가 읽기 위한 요청에 대한 제어기의 응

답은 7-1-2-3절에서 설명합니다.

CR/LF는 Carriage Return/Line Feed의 약자로 ASCII 코드상 각각 0x0D, 0x0A입니다. 일

반적으로는 키보드의 Enter 키에 해당하며 하이퍼터미널 등으로 PC에서 연결했다면 명

령 입력 후 Enter 키를 입력하는 것입니다.

※ 본 설명서에서 보이는 예제에서는 이후 CR/LF는 ‘’ 기호로 대체합니다.

Page 32: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

30

만약 채널 1에 연결된 모터에 현재 인가된 모터의 전압을 알고자 할 때는 이후 절에서

언급하겠지만, short name은 ‘vtc’로 sub-index는 채널 1로 다음 아래와 같이 입력하면

채널 1에 연결된 모터에 인가된 현재 모터의 전압을 알 수 있습니다.

vtc1

7-1-2-2. 명령을 인가하기

short/long name sub-index = value CR/LF

Short/long name은 변수의 색인이며, sub-index는 해당 명령에 따라 필요하면 모터 채

널 혹은 외부 IO를 의미합니다. Sub-Index는 또한 해당 값이 ‘0’인 경우 생략 가능합니다.

변수에 값을 쓰는 행위는 다음과 같은 구문을 따릅니다.

변수=값 만약 제어기 채널 1에 연결된 모터를 10V 전압으로 구동시키고자 할 때 아래와 같이

명령을 인가하면 됩니다.

vtc1=10 그리고 본 제어기의 가장 큰 장점 중의 하나는 2축 구동형 모바일 로봇에 특화된 명령

을 가지고 있습니다. 그래서 특별히 두 채널의 변수를 동시에 설정 혹은 구동하는 명령

을 가지고 있습니다. 해당 명령은 7-6절에서 확인하면 되며 명령을 인가하는 방법은 다

음과 같은 형식을 가지며, 여기서 value1은 1번 채널을, value2는 2번 채널을 의미합니다.

short/long name sub-index = value1 , value1 CR/LF

만약 두 모터에 위치 명령을 인가하는 mpc라는 변수를 통해 동시에 명령을 내리고자

할 때 다음과 같이 인가하면 됩니다.

mpc=100,100

Page 33: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

31

7-1-2-3. 변수 읽기/쓰기 요청에 대한 응답

지금까지 Serial 통신을 통해 변수의 내용을 읽어오기 위한 내용에 대해 설명했습니다.

본 장은 사용자가 통신을 통해 변수의 내용을 요청한 후 해당 내용의 전송이 성공했을

경우, 제어기가 응답하는 형식에 대해 설명합니다. 다음과 같은 형태로 제어기가 응답합

니다.

short/long name sub-index = value CR/LF

사용자가 short/long name 형식 중 하나로 질의를 하면, 같은 형식으로 대답합니다. 또

한, 문장의 답변하는 문장의 끝에 CR 문자와 LF 문자가 같이 붙어서 전송됩니다. 그뿐만

아니라 7-1-2-2절 후반에 언급한 두 채널을 동시에 다루는 경우 변수의 내용을 읽는 요

청에 대해 다음과 같이 응답합니다.

short/long name sub-index = value1 , value1 CR/LF

※ 본 제어기는 사용자가 쓴 값이 적용되지 않을 수 있기 때문에 사용자의 변수 내용을

읽는 요청뿐만 아니라, 변수에 쓰기 동작, 즉 명령을 내려도 해당 변수의 내용을 전송합

니다.

7-1-2-4. 변수에 내용을 쓰거나 읽기에 대한 오류 메시지

7-1-2-1절이나 7-1-2-2절의 내용대로 변수의 내용을 읽거나 쓰기 위해 제어기에 명령을

인가했을 때, 오류가 발생하는 경우 다음과 같은 형식으로 오류 메시지를 전달합니다.

이때 메시지의 전송에 관련된 오류로 제품의 Fault 상황이나 오작동에 대한 부분이 아닙

니다.

! error code , error message CR/LF

[표 7-2] 변수의 읽고 쓰는 동작에서 발생하는 오류 메시지

Error Code Error Message 내 용

1 undefined index index나 sub-index로 지정한 변수가 존재하지 않음

2 packet format error 패킷의 구성이 잘못 되었음

3 variable access error 읽기 전용 변수에 쓰거나, 쓰기 전용 변수의 읽기

시도함

Page 34: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

32

7-1-3. CAN 통신의 기본 명령 구조

7-1-3-1. CAN 통신을 하기 위한 패킷의 기본구조

[표 7-3]은 CAN 통신의 기본 패킷의 구조가 나타나 있습니다. 기본적으로 8byte 단위

의 패킷으로 통신하며, 1byte의 command와 2byte의 index, 1byte의 sub-index와 나머지

는 상황에 맞는 value로 구성되어 있습니다. 상황에 따라 5~8byte 지점의 값은 존재할

수도 있고 아닐 수도 있습니다. 만약 5byte 지점까지만 변수가 존재한다면 5byte까지의

내용만 전송하면 됩니다. 여기서 command는 액세스 형식(access code)과 변수 형식

(variable type)의 조합으로 1byte를 구성하며 내용은 아래의 [표 7-4]에 나타나 있습니다.

[표 7-3] CAN 통신을 하기 위한 패킷의 기본구조

1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8 byte

command index sub-index value

[표 7-4] 액세스 형식(access code)과 변수 형식(variable type)

구분 코드 내용

Access

Code

0x10 index로 지정된 주소에 값을 쓰기 요청

0x20 쓰기 요청에 대한 응답

0x30 index로 지정된 주소에서 값을 읽기 요청

0x40 읽기 요청에 대한 응답

0x80 에러 패킷

Variable

Type

0x00 8 bit signed integer

0x04 16 bit signed integer

0x08 32 bit signed integer

0x0C 32 bit float type

(IEEE Standard 754 floating-point)

7-1-3-2. 변수 내용 읽어오기

1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8 byte

command index sub-index

Page 35: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

33

CAN 통신을 통해 변수의 내용을 읽을 때, [표 7-4]의 access code 0x30과 읽고자 하는

변수의 형(variable type)을 조합해서 command를 먼저 구성해야 합니다. 읽고자 하는 변

수의 형이 16비트 integer형이라면 command에는 0x34를 사용합니다.

7-1-3-3. 변수에 내용을 쓰기 – 명령을 인가하기

1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8 byte

command index sub-index

value(int8)

value(int16)

value(int32)

value(float)

변수에 내용을 쓰는 동작, 즉 설정 값 변경 등의 명령을 인가하는 동작은 7-1-3-2절의

읽고 동작과 4byte 지점의 sub-index까지는 위 표에서처럼 동일합니다. 단 command는

[표 7-4]의 access code에 의해 0x10과 변수형에 맞는 조합으로 작성되어야 하며, 그 형

에 맞춰 5byte 지점 이후의 데이터가 만들어집니다.

7-1-3-4. 변수 읽기/쓰기 요청에 대한 응답

1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8 byte

command index sub-index

value(int8)

value(int16)

value(int32)

value(float)

변수의 내용을 읽어 오거나, 쓰기 동작에 대한 응답 형식은 7-1-3-3절의 변수에 내용을

쓰는 형식과 같은 형식으로 돌아옵니다. 단, command는 [표 7-4]의 access code에 제시

된 것처럼 0x20이나 0x40중 하나와 변수형에 맞는 조합으로 작성되어 돌아옵니다.

7-1-3-5. 변수 읽기/쓰기 요청에 대한 오류 메시지

1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8 byte

command error code

7-1-3-2절과 7-1-3-3절의 내용대로 변수의 내용을 읽거나 쓰기 위해 제어기에 명령을

인가했을 때, 오류가 발생하는 경우는 위 표의 형식으로 오류 메시지를 전달합니다. 오

Page 36: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

34

류 메시지는 7-1-2-4절의 [표 7-2]에 나타나 있는 것과 같습니다. 단, CAN 통신에서는

메시지 내용은 전달되지 않으며, error code만 반환됩니다. 그리고 command는 0x80이

반환됩니다. 본 절의 오류 메시지는 메시지의 전송에 관련된 오류로 제품의 Fault 상황이

나 오작동에 대한 부분이 아닙니다.

7-1-4. Serial binary 패킷 통신의 명령 구조

7-1-4-1. Serial binary 패킷 통신의 기본 구조

7-1-2절에서 다루었듯이 text 기반의 Serial 통신과 함께 binary 패킷으로 구성된 Serial

통신도 함께 지원합니다. Binary 패킷 통신의 기본적인 메시지는 7-1-2절에서 언급한

CAN 통신과 비슷한 구조를 가집니다. 단 CAN 통신에서는 변수의 type에 따라 패킷의

길이가 바뀌지만, binary 패킷 구조에서는 메시지의 내부 변수의 최대 길이를 4byte로

고정하고 전체 길이를 13byte로 고정합니다.

1byte 2byte 3byte 4~11byte 12byte 13byte

STX

(0x02)

Length

(=13)

device

ID message checksum

ETX

(0x03)

위 표의 구성으로 binary 패킷 전송이 이뤄지며, 처음과 끝의 STX, ETX의 시작과 끝을

의미하는 문자로 구성됩니다. 4~11byte를 구성하는 message의 길이를 2byte의 length로

잡고, checksum은 3byte의 device ID부터 message의 끝인 11byte까지를 합산한 것입니

다. 4~11byte 영역을 가지는 message는 7-1-2절에서 다룬 CAN 통신의 데이터 패킷과

같은 구조를 가집니다. 단 CAN은 상황에 따라 8byte의 메시지 크기를 채우지 않아도 되

지만, Serial binary 패킷 통신에서는 4~11byte를 구성하는 8byte의 크기를 모두 채워야

합니다. 만약 메시지의 전체 크기가 8byte가 되지 않는다면, 8byte가 될 때까지 아무 데

이터나 채워서 전송하면 됩니다.

7-1-4-2. 변수 내용 읽어오기

4 byte 5 byte 6 byte 7 byte 8 byte 9 byte 10 byte 11 byte

command index sub-index

Page 37: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

35

7-1-4-1절에 나타난 기본 구조의 4~11byte에 위치하는 message를 CAN 통신처럼 위와

같이 구성하면 됩니다. command는 [표 7-4]의 access code 0x30과 읽고자 하는 변수의

형(variable type)을 조합해서 command를 먼저 구성해야 합니다.

7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기

4 byte 5 byte 6 byte 7 byte 8 byte 9 byte 10 byte 11 byte

command index sub-index

value(int8)

value(int16)

value(int32)

value(float)

변수에 내용을 쓰는 동작, 즉 설정 값 변경 등의 명령을 인가하는 동작은 7-1-4-2절의

읽고 동작과 4~7byte 지점의 sub-index까지는 위 표에서처럼 같습니다. 단 command는

[표 7-4]의 access code에 의해 0x10과 변수형에 맞는 조합으로 작성되어야 하며, 그 형

에 맞춰 5byte 지점 이후의 데이터가 만들어집니다.

7-1-4-4. 변수 읽기/쓰기 요청에 대한 응답

4 byte 5 byte 6 byte 7 byte 8 byte 9 byte 10 byte 11 byte

command index sub-index

value(int8)

value(int16)

value(int32)

value(float)

변수의 내용을 읽어 오거나, 쓰기 동작에 대한 응답 형식은 7-1-4-3절의 변수에 내용을

쓰는 형식과 같은 형식으로 돌아옵니다. 단, command는 [표 7-4]의 access code에 제시

된 것처럼 0x20이나 0x40중 하나와 변수형에 맞는 조합으로 작성되어 돌아옵니다.

7-1-4-5. 변수 읽기/쓰기 요청에 대한 오류 메시지

4 byte 5 byte 6 byte 7 byte 8 byte 9 byte 10 byte 11 byte

command error code

7-1-4-2절과 7-1-4-3절의 내용대로 변수의 내용을 읽거나 쓰기 위해 제어기에 명령을

인가했을 때, 오류가 발생하는 경우는 위 표의 형식으로 오류 메시지를 전달합니다. 오

Page 38: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

36

류 메시지는 7-1-2-4절의 [표 7-2]에 나타나 있는 것과 같습니다. 단, binary 패킷 구조에

서는 메시지 내용은 전달되지 않으며, error code만 반환됩니다. 그리고 command는

0x80이 반환됩니다. 본 절의 오류 메시지는 메시지의 전송에 관련된 오류로 제품의

Fault 상황이나 오작동에 대한 부분이 아닙니다.

7-2. 상태 확인 및 구동 명령

7-2-1. 내부 상태를 확인

제어기의 내부상태를 확인하기 위해 배터리 등의 주 전원으로부터 유입되는 전압 / 전

류를 확인하는 명령과 모터 제어기의 구동 상태 및 외부 IO와의 연결 상태를 확인하는

내용을 저장하는 변수를 준비해 두었습니다.

※ 설명서는 이후 설명의 편의를 위해 표의 항목을 아래와 같은 기준으로 작성합니다.

- short name (long name) = short (long)

- index (sub-index) = i (s)

- data type = type

※ 설명서는 이후 설명의 편의를 위해 모든 변수를 본문에서 언급할 때는 short name

을 기준으로 작성합니다.

[표 7-5] 제어기의 상태를 확인하기 위한 변수

short (long) i (s) type 내 용

bv

(battery_voltage)

8

(0) float 주 전원에서 공급되는 전압

bc

(battery_current)

9

(0) float 주 전원에서 제어기로 흐르는 전류

nm

(num_motors)

80

(0) Int8 제어기에 연결 가능한 모터의 수를 확인

Page 39: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

37

[표 7-6] 모터 드라이버의 상태를 확인하기 위한 변수

short (long) i (s) type 내 용

s

(status)

102

(0~2) int32 모터 드라이버의 현재 상태

f

(fault)

103

(0~2) int32 모터 드라이버 및 관련 IO에서 발생한 Fault 상태

[표 7-5]에서 주 전원으로부터 공급되어 흐르는 전류를 측정하는 변수인 bc의 경우는

주 전원의 공급 단에서 직접 측정하는 것이 아니라 소비되는 전력과 각 모터에 실제 흐

르는 전류의 합으로 측정합니다. 이 때문에 파워서플라이 등을 전원 공급장치로 사용할

때, 파워서플라이에서 표기되는 전류와 차이가 있을 수 있습니다.

[표 7-6]에서 모터의 현재 상태를 저장하는 변수 s의 저장 값은 [표 7-7]에 나타나 있습

니다. 사용자가 모터 드라이버의 현 상태를 질의하면 변수 s에 [표 7-7]의 반환 값이 저

장됩니다.

[표 7-7] 상태 확인 변수 s의 반환 값과 그 내용

반환된 값 내 용

0x0001 모터에 전원이 공급되고 있으며, 구동 명령을 받아들일 준비가 된 상태

0x0002 모터가 회전 중인 상태

0x0004 제어기에 Fault가 발생했으며, 그로 인해 모터에 공급되는 전원을 차단한

상태

0x0008 비상 정지 버튼이 눌림 상태

0x0010 위치 제어기 동작 중인 상태

0x0020 속도 제어기 동작 중인 상태

0x0040 전류 제어기 동작 중인 상태

0x0100 모터가 구동 가능한 상태가 되면서 Analog Input 값이 중앙에 있지 않은

상태

0x0200 모터가 구동 가능한 상태가 되면서 Pulse Input 값이 중앙에 있지 않은 상

0x0400 설정된 Analog Input 값이 최대, 최소값의 범위를 벗어났거나 적절한 값이

아닌 상태

0x0800 설정된 Pulse Input 값이 최대, 최소값의 범위를 벗어났거나 적절한 값이

아닌 상태

0x1000 Digital Input에서 Stop이나 Quick stop 명령이 실행된 상태

Page 40: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

38

0x2000 Position 센서의 입력값이 Limit를 벗어난 상태

0x4000 RS-232, USB, CAN을 통해 모터 구동 명령이 내려진 상태

0x8000 Analog나 Pulse Input 단자로부터 모터 구동 명령이 실행 상태

0x10000 스크립트(Script)가 실행 중인 상태

0x0004과 0x0008 등의 상황이 발생하면 모터에 전원 공급을 차단하고, 0x0100, 0x0200,

0x0400, 0x0800 등의 상황에서는 해당 포트의 명령만 무시하게 됩니다. 그리고 0x1000

상황에서는 모터가 정지 상태가 되며, 0x2000 상황에서는 벗어난 방향으로만 정지 상태

가 됩니다. 사용자는 위 상황에서 에러 등의 오작동 원인을 제거하고 다시 모터의 구동

을 시작해야 합니다.

특히 [표 7-7]의 상태를 저장하는 변수에서 반환된 값이 0x0004인 경우 모터 제어기의

상황이 Fault 상황입니다. 이 경우는 별도로 사용자는 [표 7-6]의 f(fault) 변수를 확인하

여야 합니다. 해당 상황은 [표 7-8]에 정리되어 있습니다.

[표 7-8] 제어기의 Fault 상태 확인 변수 f의 반환 값과 그 내용

반환된 값 내 용

0x0001 모터에 흐르는 전류가 설정된 최대값(overcurrent_limit)을 초과 상태

0x0002 제어기에 공급되는 전압이 설정된 최대값(overvoltage_limit)을 초과 상태

0x0004 제어기에 공급되는 전압이 설정된 최소값(undervoltage_limit) 이하 상태

0x0008 내부 스위칭 소자(FET)나 방열판의 온도가 최대 한계 온도(overheat_limit)

이상 상태

0x0010 모터의 +,- 단자가 단락되거나 내부 스위칭 소자(FET)가 잘못된 조합으로

운용

0x0020 지정된 PWM duty 이상에서 모터가 회전하지 않는 경우로 Stall 상황으로

판단 상태

0x0040 속도 제어 모드에서 속도 오차가 지정된 값 이상이어서 속도 제어에 문제

가 있는 것으로 판단 상태

0x0080 위치 제어 모드에서 위치 오차가 지정된 값 이상이어서 위치 제어에 문제

가 있는 것으로 판단 상태

7-2-2. 모터 제어기의 환경적 상태 확인

본 절에서 다루는 내용은 모터 제어기의 동작과 관련된 환경적 상태를 확인하는 변수

입니다. 온도, 전압, 전류, 위치, 속도 등의 상황을 확인하는 변수들을 [표 7-9]와 같이 준

비하고 있습니다.

Page 41: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

39

[표 7-9] 모터의 환경적 상태 확인 변수

7-2-3. 구동에 관련된 명령

[표 7-10] 설정 변수 구동에 관한 시스템 명령

short (long) i (s) type 내 용

sco

(system_command)

7

(0) int16

제어기에 내려지는 명령:

1 - Save properties in Flash Memory

2 - Load properties from Flash Memory

3 - Script Run

4 - Script Stop

98 - Reset Factory Default

99 - Reset Controller

사용자가 설정 값을 변경하는 경우 전원이 인가된 동안 설정 값은 내부 RAM에 기록되

어 있습니다. 그 후 사용자는 전원을 재 시작하면 다시 기존의 Flash Memory에 저장되

었던 설정 값들이 RAM으로 로드되므로 재 시작 전에 설정한 값은 사라집니다. 그러므

로 전원이 인가된 동안 테스트 설정을 전원 재 시작 후에도 사용하고 싶다면 [표 7-10]

의 sco 명령을 통해 RAM에 있는 각종 설정을 제어기 내부의 Flash Memory에 저장해야

합니다.

short (long) i (s) type 내 용

tp

(temperature)

121

(0~2) float FET에 장착된 Heat sink의 온도 (단위: °C)

vt

(voltage)

122

(0~2) float 모터에 공급되고 있는 전압 (단위: V)

c

(current)

123

(0~2) float 모터에 흐르고 있는 전류 (단위: A)

v

(velocity)

124

(0~2) float 모터의 현재 회전속도 (단위: RPM)

p

(position)

125

(0~2) int32 모터의 현재 엔코더 펄스 (단위: Pulse)

pt

(ai_potentiometer)

131

(0~2) int32

Analog Input 포트에 연결된 위치 센서의 피드백 값

(단위: ‰)

ta

(ai_tachometer)

132

(0~2) int32

Analog Input 포트에 연결된 속도 센서의 피드백 값

(단위: ‰)

Page 42: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

40

[표 7-11] 모터 구동에 관련된 명령

short (long) i (s) type 내 용

co

(command)

101

(0~2) int16

모터에 전원공급과 모터의 Fault 상황 해제:

0 - Motor Power OFF

1 - Motor Power ON

2 - Clear Fault situation

6 - Deceleration Stop

7 - Quick Stop

pc

(position_command)

111

(0~2) int32

모터의 위치 추종 명령 (단위: Pulse)

위치 명령시 연결된 모터는 위치제어 상태가 됨

vc

(velocity_command)

112

(0~2) float

모터의 속도 추종 명령 (단위: RPM)

속도 명령시 연결된 모터는 속도제어 상태가 됨

cc

(current_command)

113

(0~2) float 모터의 전류 추종 명령 (단위: A)

vtc

(voltage_command)

114

(0~2) float 모터의 전압 추종 명령 (단위: V)

[표 7-11]에는 모터의 전원공급과 Fault 상황을 Clear하는 명령인 co가 있습니다. 0 -

Motor Power OFF는 모터로 공급되는 전원을 차단하는 기능이고 1 - Motor Power ON은

모터로 전원을 공급하는 기능입니다. 그리고 2 - Clear Fault Flags는 모든 Fault 플래그를

Clear하는 기능입니다. 또한, 6 - Deceleration Stop는 천천히 속도가 감소되면서 정지하는

기능이며, 7 - Quick Stop은 급정지하는 기능입니다.

이후 절에서 설명하는 각종 제어 게인(Gain) 등과 설정을 바르게 입력하고 난 후, 속도

제어(vc), 위치제어(pc), 전류제어(cc) 명령을 인가하면 모터 제어기는 그 상황에 맞춰 모

터를 제어하게 됩니다.

7-3. 내부 설정 변경

7-3-1. 제어기의 파워 스테이지 스위칭 소자의 구동에 관련된 설정

[표 7-12]의 내용은 제어기의 파워 스테이지 스위칭 소자의 운용에 관한 설정입니다.

DC / BLDC 모터 등을 H-bridge의 형태로 스위칭 소자들을 구성하고 각 스위칭 소자를

운용할 때 가장 많이 사용하는 Unipolar와 Bipolar 방식을 사용자가 선택할 수 있도록

지원하고, 각 스위칭 소자에 인가되는 PWM 신호의 주파수를 18kHz부터 40kHz까지 사

용자가 선택할 수 있도록 지원하고 있습니다.

Page 43: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

41

일반적으로 Bipolar 구동은 저속에서의 속도 제어 특성이 좋지만, 모터의 인덕턴스가 낮

은 경우 대기 소모 전력이 높으며 모터 발열을 일으킬 수 있습니다. 이런 경우에는

PWM 주파수를 높이거나, 스위칭 방법을 Unipolar 방식으로 바꾸어 해결할 수 있습니다.

[표 7-12] 제어기의 파워 스테이지 스위칭 소자의 구동에 관련된 설정

short (long) i (s) type 내 용

ps

(pwm_switching)

31

(0) int8

제어기 내부의 스위칭 소자의 구동 방법 선택:

0 - unipolar

1 - bipolar

pf

(pwm_frequency)

32

(0) int8

제어기 내부의 스위칭 소자에 인가되는 PWM 신

호의 주파수 선택 (제어기를 재 시작 한 후 적용):

0 - 18kHz

1 - 20kHz

2 - 24kHz

3 - 30kHz

4 - 36kHz

5 - 40kHz

7-3-2. 통신에 관련된 설정

[표 7-13]은 Serial(RS-232/USB)과 CAN의 통신 속도나 장치의 ID 및 watchdog timer를

설정하는 내용을 다루고 있습니다. CAN 통신이나 Serial binary 패킷 방식의 경우 장치의

ID를 설정하는 것과 CAN 및 Serial 통신의 속도를 설정하는 내용을 포함하고 있습니다.

[표 7-14] 통신에 관련된 설정

short (long) i (s) type 내 용

id

(device_id)

11

(0) int32

CAN, Serial(RS-232/USB) binary 패킷 통신에서 사

용하는 장치 ID;

제어기를 재 시작한 후 적용

cb

(can_br)

12

(0) int32

CAN 통신 속도 설정;

10, 25, 50, 125, 250, 500, 800, 1000 kBPS 중 선택;

입력 시에는 단위 생략;

제어기를 재 시작한 후 적용

sb

(serial_bps)

13

(1~2) int32

Serial 통신의 속도를 설정하는 변수:

sub-index 1 - USB 가상 시리얼 포트

sub-index 2 - RS-232

Page 44: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

42

9600, 19200, 38400, 57600, 115200, 230400,

460800, 921600 BPS 중 선택;

입력 시에는 단위 생략;

제어기를 재 시작한 후 적용

sw

(serial_watchdog)

14

(0) int32

통신을 통해 인가된 명령어 패킷에 대한

Watchdog Timeout 값 (단위 - ms):

0 - disable,

1 - timeout check

설정된 시간 동안 구동 명령이 인가되지 않으면

통신 연결이 해제된 것으로 간주하고 모터를 정지

제이기를 유/무선의 다양한 방법으로 다른 장치와 연결해서 사용하는 경우 실제로 사

용자와 제품과의 통신 연결이 끊어졌을 때를 대비하여 Watchdog Timer를 준비하고 있

습니다. 이 설정을 활성화하고 시간 간격을 설정하면, 해당 시간 안에 통신이 지속되지

않으면 오류로 판단하여 사용자가 활용하는 시스템의 안전성 유지에 도움이 됩니다.

또한, [표 7-14]에 나타난 변수 중 id, cd, sb는 모두 설정 후 7-2-3절의 sco명령으로 설

정을 저장한 후 시스템을 재 시작하면 반영됩니다.

※ 통신 연결 속도의 설정을 만약 사용자가 실수로 진행한 경우 그래서 사용자가 의도

한 외부 장비와의 접속할 수 없는 경우 Motor Control UI 프로그램과도 연결이 안 될

수 있습니다. 이 경우 2-3-1절의 내용대로 리셋 버튼을 이용하여 공장 초기화를 하드웨

어적으로 수행해야 하며 이 경우 사용자가 설정한 각종 설정도 함께 초기화가 되므로

주의해야 합니다.

Page 45: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

43

7-3-3. 위치 센서에 대한 설정

위치 제어할 때 최소 / 최대 위치를 설정할 수 있으며, 이 설정은 소프트웨어적인 한계

치(Limit) 설정의 효과를 볼 수 있습니다.

[표 7-15] 위치 센서에 대한 설정

short (long) i (s) type 내 용

np

(min_position)

141

(0~2) int32

위치 제어 시 최소 위치;

use_soft_limit 설정 시 소프트 리미트로도 작동

(단위: Pulse, Range: 0 ~ 음수)

xp

(max_position)

142

(0~2) int32

위치 제어 시 최대 위치;

use_soft_limit 설정 시 소프트 리미트로도 작동

(단위: Pulse, Range: 0 ~ 양수)

ep

(encoder_ppr)

144

(0~2) int16 모터 1회전당 엔코더 펄스 수 (단위: pulse/rev)

usl

(use_soft_limit)

146

(0~2) int8

Encoder나 Potentiometer 값이 Min/Max Position

범위를 벗어나면 Forward/Reverse Limit Switch를

작동한 효과를 냄

7-3-4. 모터 구동 환경에 대한 설정

[표 7-16]에는 모터의 허용 전류 / 전압 및 최대 회전 속도를 설정하는 변수를 다룹니

다. 특히, 가감속 프로파일을 사용할 경우 가속 / 감속도를 설정하는 내용도 포함됩니다.

가속 / 감속도를 지정하는 ac, dc 변수는 9-2-5절의 프로파일 생성기에서 다룬 내용으로

6-2-5절의 그림에서 가속 구간의 기울기(a_a)가 ac, 감속 구간의 기울기(a_d)가 dc 변수

입니다.

또한, 최대 연속 전류를 설정하는 xc는 6-2-3절에 나타난 속도 제어기의 그림에서 속도

제어기의 결과로 출력되는 전류의 제한치(Saturator)를 설정하는 변수입니다. 모터 구동

의 최대 전압을 설정하는 xvr 변수는 6-2-2절의 전류 제어기의 그림에서 제어기의 결과

인 구동 전압의 제한치(Saturator)를 설정하는 변수입니다. 마지막으로 최대 회전 속도를

제한하는 xv 변수는 6-2-4절의 위치 제어기의 출력인 속도를 제한하는 변수입니다.

[표 7-16] 모터 구동 환경에 대한 설정

short (long) i (s) type 내 용

xc

(max_current)

151

(0~2) float

모터의 최대 전류를 설정 (단위: A)

전류 제어기가 설정값 이상 초과하지 않도록 제어

Page 46: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

44

xvt

(max_voltage)

152

(0~2) float

모터의 최대 전압 설정 (단위: V)

모터에 설정한 전압값 이상 흐르지 않도록 제어

xv

(max_velocity)

153

(0~2) float

모터의 최대 회전 속도 설정 (단위: RPM)

속도 제어기가 설정값을 초과하지 않도록 제어함

ac

(acceleration)

154

(0~2) float

모터의 회전 가속도 설정 (단위: RPM)

위치, 속도 제어 기능에서 profile_mode가 1일 때

적용

dc

(deceleration)

155

(0~2) float

모터의 회전 감속도 설정 (단위: RPM)

양의 값이어야 함

7-3-5. 모터 드라이버(스위칭 모듈)의 환경 설정

[표 7-17]에는 모터 드라이버(스위칭 모듈)에 대한 설정 값을 다룹니다. 여기서 언급하

는 모터 드라이버는 모터의 전력을 다루는 곳으로 FET 등으로 구성된 스위칭 모듈을 이

야기합니다.

[표 7-17] 모터 드라이버(스위칭 모듈)의 환경 설정

short (long) i (s) type 내 용

ohl

(overheat_limit)

161

(0~2) float

FET의 온도 한계치 설정 (단위: °C);

초과하면 모터 Power OFF

ocl

(overcurrent_limit)

162

(0~2) float

과전류 한계치 설정 (단위: A);

여기서 설정된 전류치를 overcurrent_delay에서 설

정한 시간 동안 초과하면 모터 Power OFF

ocd

(overcurrent_delay)

163

(0~2) int16 과전류 연속 구동시간 설정 (단위: ms)

pcr

(peakcurrent_ratio)

164

(0~2) float

순간 최대 전류 한계치 설정 (단위: %);

모터에 흘릴 수 있는 순간 최대 전류범위 내에서

최대 전류를 ocl 비로 설정

ovl

(overvoltage_limit)

165

(0~2) float

과전압 한계치 설정 (단위: V);

Power Stage에 공급되는 전압이 설정 값 위로 넘

어갈 경우, 모터 Power OFF 상태

uvl

(undervoltage_limit)

166

(0~2) float

저전압 한계치 설정 (단위: V);

Power Stage에 공급되는 전압이 설정 값 아래로

내려갈 경우, 모터 Power OFF 상태

Page 47: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

45

7-3-6. 시스템 Fault 감지 조건 설정

만약 주행로봇에 본 제어기를 장착하고 주행했을 때, 모터의 구동 명령이 인가되었는데

실제 모터가 회전하고 있지 않다면 이는 주행로봇이 장애물에 의해 강제로 운행하지 못

하고 있는 상황으로 볼 수도 있습니다. 다음은 모터의 강제 정지나 외부 요인에 의한 비

정상적 동작에 대한 Fault 에러를 감지할 수 있는 조건을 설정하는 변수입니다.

[표 7-18] 시스템 Fault 감지 조건 설정

short (long) i (s) type 내 용

sd

(stall_detection)

167

(0~2) int8

PWM duty 설정을 통한 Fault 감지 조건 설정:

0 - Not used,

1 - 100ms at 10% PWM duty,

2 - 200ms at 20% PWM duty,

3 - 400ms at 30% PWM duty,

4 - 700ms at 40% PWM duty,

5 - 1s at 50% PWM duty

ved

(vel_error_detection)

168

(0~2) int8

속도 오차 정도의 설정을 통한 Fault 감지 조건

설정:

0 - Not used,

1 - 100ms and error > 100 RPM,

2 - 200ms and error > 200 RPM,

3 - 400ms and error > 500 RPM,

4 - 700ms and error > 1500 RPM,

5 - 1s and error > 3000 RPM

ped

(pos_error_detection)

169

(0~2) int8

위치 오차 정도의 설정을 통한 Fault 감지 조건

설정:

0 - Not used,

1 - 100ms and error > 100 pulse,

2 - 200ms and error > 500 pulse,

3 - 400ms and error > 2000 pulse,

4 - 700ms and error > 5000 pulse,

5 - 1s and error > 20000 pulse

Page 48: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

46

7-3-7. 제어기 시작 시 모터 구동과 관련된 설정

[표 7-19] 제어기 시작 시 모터 구동과 관련된 설정

short (long) i (s) type 내 용

spo

(startup_power_on)

173

(0~2) int8

제어기가 시작될 때 모터에 Power ON/OFF 상황

설정:

0 - 제어기가 시작될 때 모터 Power OFF

1 - 제어기가 시작될 때 모터 Power ON

2 - 모터가 Power OFF 상태가 되면, Power ON

상태로 전환 시도

bod

(brake_on_delay)

175

(0~2) int16

모터 Power OFF 시 브레이크를 활성화하기 위한

지연 시간을 설정 (단위: msec)

dir

(direction)

174

(0~2) int8

모터의 회전 방향을 설정:

0 - 그대로

1 - 반대로 회전

hv

(high_voltage)

176

(0~2) int16

모터의 역기전력으로 인해 제어기에 걸리는 전압

이 증가할 때 Dynamic Brake Register를 활성화

시키기 위한 전압을 설정 (단위: V);

이 기능이 올바르게 동작하기 위해서는 Digital

Output Port에서 High Voltage (Dynamic Brake

Register ON) 설정이 필요

ht

(high_temperature)

177

(0~2) int16

FET 온도가 올라갈 때 냉각팬을 켜기 위한 온도

를 설정 (단위: ‘C);

이 기능이 올바르게 동작하기 위해서는 Digital

Output Port에서 High Temperature (Cooling Fan

ON) 설정이 필요

제어기에 Power를 공급하고 제어기가 실행되었을 때, 연결된 모터를 바로 설정된 상황

에 맞춰 바로 구동을 시작할 것인지를 설정(spo)하거나, 단순히 모터 Power OFF 한 것이

Power ON 전압을 ‘0’로 유지할 것인지 브레이크의 역할을 할 것인지를 설정(bod)합니다.

특히, 모터의 회전 방향 설정의 경우 예를 들어 2축 구동형 모바일 로봇의 경우 모터가

서로 반대로 배치되어 설계되기 때문에 모터의 회전 방향이 달라집니다. 이럴 경우 모터

의 회전 방향 설정(dir)을 통해서 모터의 방향을 바꿔줄 수 있습니다.

Page 49: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

47

7-4. 내부 제어기의 설정

7-4-1. Closed Loop Controller 기본설정

본 절은 Closed Loop Controller의 기본 사항을 설정합니다. [표 7-20]에 나타난 것과 같

이 상태를 궤환(Feedback)하는 센서를 선정하거나 사다리꼴 프로파일의 적용여부를 선택

하는 설정이 포함되어 있습니다. 또한 [표 7-20]에서 언급하는 프로파일은 6-2-5절에서

설명하는 프로파일 생성기입니다. 그리고 사다리꼴 프로파일을 적용하기 위해서는 7-3-4

절의 가속 구간과 감속 구간을 의미하는 ac, dc 변수를 설정하고, 7-3-4절의 [표 7-16]에

있는 모터의 최대 회전 속도를 의미하는 xv 변수를 설정해야 6-2-5절의 프로파일이 완

성됩니다. 그 후에 [표 7-20]의 pm 변수를 사용함으로 설정해야 정상적으로 생성된 프로

파일에 의해 동작합니다.

[표 7-20] 피드백 센서의 선택 및 프로파일 적용 여부

short (long) i (s) type 내 용

fs

(feedback_sensor)

171

(0~3) int8

상태를 궤환(feedback)하는 센서의 선택:

0 - none

1 - Encoder

2 - Hall Sensors

3 - Potentiometer

4 - Tachometer

pm

(profile_mode)

172

(0~3) int8

위치나 속도 제어 모드에서 사다리꼴 프로파일

사용 여부:

0 - 사용 안 함

1 - 사용함

feedback_sensor가 3(Potentiometer)로 설정된 경우, [표 7-9]의 ai_potentiometer 값은

position controller의 feedback으로 사용됩니다. 이때 입력 범위 -1~1은 min_position ~

max_position 범위로 조정됩니다. (단위: Pulse)

feedback_sensor가 4(Tachometer)로 설정된 경우, [표 7-9]의 ai_tachometer 값은

velocity controller의 feedback으로 사용됩니다. 이때 입력 범위 -1~1은 -max_velocity ~

max_velocity 범위로 조정됩니다. (단위: rad/s)

Page 50: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

48

7-4-2. 위치 제어기 게인 설정

[표 7-21] 위치 제어기의 내부 제어 게인

short (long) i (s) type 내 용

pp

(pc_kp)

191

(0~2) float 위치 제어기의 비례제어 게인

pi

(pc_ki)

192

(0~2) float 위치 제어기의 적분제어 게인

pd

(pc_kd)

193

(0~2) float 위치 제어기의 미분제어 게인

7-4-3. 속도 제어기 게인 설정

[표 7-22] 속도 제어기의 내부 제어 게인

short (long) i (s) type 내 용

vp

(vc_kp)

186

(0~2) float 속도 제어기의 비례제어 게인

vi

(vc_ki)

187

(0~2) float 속도 제어기의 적분제어 게인

vs

(vc_ks)

190

(0~2) float 속도 제어기의 스케일팩터(Scale Factor)

7-4-4. 전류 제어기 게인 설정

[표 7-23] 전류 제어기의 내부 제어 게인

short (long) i (s) type 내 용

cp

(cc_kp)

181

(0~2) float 전류 제어기의 비례제어 게인

ci

(cc_ki)

182

(0~2) float 전류 제어기의 적분제어 게인

cff

(cc_kff)

185

(0~2) float 전류 제어기의 전향 보상 제어 이득 (단위: rad/s)

Page 51: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

49

7-5. 외부 IO에 대한 설정

제어기는 외부 장비 혹은 사용자의 환경에 맞춰 쉽고 다양하게 사용할 수 있는 Digital

Input [DI], Digital Output [DO], Analog Input [AI] 들을 준비하고 있습니다. 이런 외부 IO

들은 모두 통신을 통해 제어할 수 있으며 포트별로 별도의 기능을 사용자가 할당할 수

있습니다. 특히 이후 설명될 스크립트(Script) 기능과 함께 사용하면 손쉽게 다양한 기능

을 별도의 제어 보드 없이 사용할 수 있습니다.

7-5-1. Digital Input 포트

7-5-1-1. Digital Input 포트에서 사용되는 변수

[표 7-24]에 나타난 이 변수들은 IO 전체에 대한 설정과 각 채널별 설정이 있으므로 사

용자는 잘 구분해서 사용하기 바랍니다. 특히 div, dif 변수처럼 채널을 sub-index로 지정

해야 하는 변수의 경우 구입하신 모델의 Digital Input 포트의 개수가 n이 됩니다.

[표 7-24] Digital Input 포트의 설정에 사용되는 변수

short (long) i (s) type 내 용

ndi

(num_di)

60

(0) int8 디지털 입력 채널의 수

die

(di_enable)

61

(0) int32 각 비트별 해당 디지털 입력의 활성화 여부 설정

dii

(di_invert)

62

(0) int32 각 비트별 해당 디지털 입력의 반전 여부 설정

di

(di_all_values)

63

(0) int8

디지털 입력을 하나의 long 변수로 통합할 것인

것 설정

모든 디지털 입력 비트들을 하나의 값으로 설정

div

(di_value)

201

(1~n) int8 디지털 입력 채널의 값 (0 or 1)

dif

(di_function)

202

(1~n) int16

디지털 입력을 특정 모터의 기능으로 설정

상위 8bit로 모터 지정, 하위 8bit로 기능

(Function) 지정

Digital Input을 특정 모터의 기능으로 설정하는 dif 명령에서 상위 8bit로 대상 채널의

모터를 선정하는 것은 채널 1의 경우 0x0000이며, 채널 2는 0x0100입니다. 하위 8bit로

구성하는 특정한 기능은 다음과 같습니다.

Page 52: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

50

0 - None,

1 - Emergency Stop,

2 - Quick Stop,

3 - Slowdown Stop,

4 - Run Script,

5 - Forward Limit Switch,

6 - Reverse Limit Switch,

7 - Invert Direction,

8 - Load Home Counter

7-5-1-2. Digital Input 기능 요약

제어기의 Digital Input 포트는 [표 7-25]와 같은 기능으로 사용자는 선택할 수 있습니다.

[표 7-25] Digital Input 포트의 기능

기 능 내 용

Emergency stop 모터에 전원을 차단;

이 비트가 해제될 때까지 모터 Power ON 불가능

Quick stop 모터를 빠르게 정지;

이 비트가 해제될 때까지 모터의 동작은 불가능

Stop 모터를 감속하여 정지;

이 비트가 해제될 때까지 모터의 동작은 불가능

Run Scrip 저장된 스크립트의 실행

Forward Limit

모터의 정방향 리미트 센서가 감지되었음을 알림;

모터의 정방향 동작 명령은 더는 실행되지 않고 역방향 동작 명

령만 실행

Reverse Limit

모터의 역방향 리미트 센서가 감지되었음을 알림;

모터의 역방향 동작 명령은 더는 실행되지 않고 정방향 동작 명

령만 실행

Invert Direction 모터의 회전 방향을 토글

Load Home Counter 모터의 홈 위치 센서가 감지되었음을 알림;

home_position의 값이 현재 위치(Position)로 로딩

Page 53: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

51

7-5-2. Digital Output 포트

7-5-2-1. Digital Output에서 사용되는 변수

[표 7-26]에 나타난 이 변수들은 IO 전체에 대한 설정과 각 채널별 설정이 있으므로 사

용자는 잘 구분해서 사용하기 바랍니다. 특히 dov, dof 변수처럼 채널을 sub-index로 지

정해야 하는 변수의 경우 구매한 모델의 Digital Output 포트의 개수가 m이 됩니다.

[표 7-26] Digital Output의 설정에 사용되는 변수

short (long) i (s) type 내 용

ndo

(num_do)

65

(0) int8 디지털 출력 채널의 수

doe

(do_enable)

66

(0) int32 각 비트별 해당 디지털 출력의 활성화 여부 설정

doi

(do_invert)

67

(0) int32 각 비트별 해당 디지털 출력의 반전 여부 설정

do

(do_all_values)

68

(0) int8

디지털 출력을 하나의 long 변수로 통합할지 여

부를 설정

dov

(do_value)

211

(1~m) int8 디지털 출력 체널의 값 (0 or 1)

dof

(do_function)

212

(1~m) int16

디지털 출력을 특정 모터의 상태와 설정

상위 8bit로 모터 지정, 하위 8bit로 상태(Status)

지정

Digital Output을 특정 모터의 기능으로 설정하는 dif 명령에서 상위 8bit로 타켓 채널

의 모터를 선정하는 것은 채널 1의 경우 0x0000이며, 채널 2는 0x0100입니다. 하위 8bit

로 구성하는 특정한 기능 다음과 같습니다.

0 - None,

1 - Motor Power ON (Break Release),

2 - Motor is Reversed (Warning Buzzer ON),

3 - High Voltage (Dynamic Brake Register ON),

4 - High Temperature (Cooling Fan ON)

Page 54: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

52

7-5-2-2. Digital Output 기능 요약

Digital Output 포트는 모터 제어기의 현재 상황 중 일부를 알려 줄 수 있는 기능을 가

지고 있습니다. 모터의 정상 동작, 과전압 상황 등을 알려 줍니다. 그러므로 사용자는

[표 7-27]에 나타난 기능을 이용해서 외부 장비(LED, 스위치 등등)에 연결하여 다양한 환

경 설정을 편리하게 할 수 있습니다.

[표 7-27] Digital Output 포트의 기능

기 능 내 용

Motor Power ON 모터에 전원이 공급되고 있는 상황

Motor is Reversed 모터가 역방향으로 회전 중인 상황;

High Voltage 모터 제어기에 과전압이 걸린 상황;

voltage가 설정 된 값보다 크면 활성화

High Temperature FET 및 방열판이 과열된 상황;

temperature가 설정 된 값보다 크면 활성화

만약 사용자가 제어기와 Digital Output 포트를 연결한 후 주행 로봇을 구동할 때, 모터

가 사용자 명령에 의해 역방향 회전을 하는 상황에 대한 알림을 설정하면 해당 Digital

Output 포트는 역방향 즉, 후진일 때, 해당 포트가 셋(1)이 됩니다. 이런 기능을 이용하

면 쉽게 후진 등을 구동할 수 있습니다.

7-5-3. Analog Input 포트

7-5-3-1. Analog Input에서 사용되는 변수

[표 7-28]에 나타난 이 변수들은 IO 전체에 대한 설정과 각 채널 별 설정이 있으므로

사용자는 잘 구분해서 사용하기 바랍니다. 특히 채널을 sub-index로 지정해야 하는 변수

의 경우 구입하신 모델의 Analog Input 포트의 개수가 o가 됩니다.

[표 7-28] Analog Input의 설정에 사용되는 변수

short (long) i (s) type 내 용

nai

(num_ai)

70

(0) int8 아날로그 입력 채널의 수

aie

(ai_enable)

71

(0) int32 비트별 해당 아날로그 입력 활성화 여부 설정

aii 72 int32 비트별 해당 아날로그 입력 극성 반전 여부 설정

Page 55: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

53

(ai_invert) (0)

aiv

(ai_value)

221

(1~o) int32 아날로그 입력 채널의 값 (범위: 0 ~ 4095)

aicv

(ai_converted_value)

222

(1~o) float

Calibration, Linearity 과정을 거친 후 최종 변환

된 값 (범위: -1 ~ 1)

ail

(ai_linearity)

223

(1~o) int8 linear, log, exp 함수 형태의 변환 형식 지정

aif

(ai_function)

224

(1~o) int16 아날로그 입력을 특정 모터의 기능과 연결,

ain

(ai_input_min)

225

(1~o) int32 Calibration: 입력 최소값

aic

(ai_input_center)

226

(1~o) int32 Calibration: 입력 중앙값

aix

(ai_input_max)

227

(1~o) int32 Calibration: 입력 최대값

aidb

(ai_input_deadband)

228

(1~o) int32 Calibration: 입력의 Dead-band 값

Analog Input을 특정 모터의 기능으로 설정하는 변수들은 상위 8 bit로 대상 채널의 모

터를 선정하는 것은 채널 1의 경우 0x0000이며, 채널 2는 0x0100입니다. 하위 8bit로 구

성하는 특정한 기능은 다음과 같습니다.

0 - None,

1 - Motor Command (Voltage),

2 - Motor Command (Current),

3 - Motor Command (Velocity),

4 - Motor Command (Position),

5 - Motor Feedback (Position),

6 - Motor Feedback Velocity),

7 - [Digital Input] Emergency Stop,

8 - [Digital Input] Quick Stop,

9 - [Digital Input] Slowdown Stop,

10 - [Digital Input] Run Script,

11 - [Digital Input] Forward Limit Switch,

12 - [Digital Input] Reverse Limit Switch,

13 - [Digital Input] Invert Direction,

Page 56: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

54

14 - [Digital Input] Load Home Counter

여기서 [Digital Input]로 표기된 기능은 아날로그 입력이 디지털 입력으로 매핑되는 경

우이며 0보다 크면 True, 0을 포함해서 0보다 작으면 False를 의미합니다. 기능에 대한

설명은 [표 7-25]를 참고하기 바랍니다.

7-5-4. Pulse Input 포트

7-5-4-1. Pulse input에서 사용되는 변수

[표 7-30]에 나타난 이 변수들은 IO 전체에 대한 설정과 각 채널별 설정이 있으므로 사

용자는 잘 구분해서 사용하기 바랍니다. 특히 채널을 sub-index로 지정해야 하는 변수의

경우 구매한 모델의 Pulse Input으로 사용할 수 있는 포트의 개수가 p가 됩니다.

Pulse 입력은 최소 20Hz에서 최대 20kHz 사이에서 동작합니다. 펄스 입력은 Capture

Type에 따라 그 범위가 다음과 같습니다.

Pulse Width: 0 ~ 5000, Frequency: 20 ~ 20, Duty Cycle: 0 ‰ ~ 1000 ‰

사용자는 자신이 선택할 Pulse Capture Type에 따라 입력범위에 주의해야 합니다.

Capture Type은 또한 연결하고자 하는 외부 장비의 출력 신호의 형태에 따라 결정되므

로 사용하고자 하는 장비의 종류를 선정할 때도 주의하기 바랍니다.

[표 7-30] Pulse Input의 설정에 사용되는 변수

short (long) i (s) type 내 용

npi

(num_pi)

75

(0) int8 펄스 입력 채널의 수

pie

(pi_enable)

76

(0) int32 비트 별 해당 펄스 입력 활성화 여부 설정

pii

(pi_invert)

77

(0) int32 비트 별 해당 펄스 입력 극성 반전 여부 설정

piv

(pi_value)

231

(1~p) int32

펄스 입력 채널의 값

캡쳐 타입에 따라 입력 값의 범위가 달라짐

picv 232 float Calibration, Linearity 과정을 거친 후 최종 변환

Page 57: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

55

(pi_converted_value) (1~p) 된 값 (-1 ~ 1)

pit

(pi_capture_type)

233

(1~p) int8

펄스의 캡쳐 종류:

- Pulse Width, Frequency, Duty Cycle

pil

(pi_linearity)

234

(1~p) int8 linear, log, exp 함수 형태의 변환 형식 지정

pif

(pi_function)

235

(1~p) int16 펄스 입력을 특정 모터의 기능과 연결 설정

pin

(pi_input_min)

236

(1~p) int32 Calibration: 입력 최소값

pic

(pi_input_center)

237

(1~p) int32 Calibration: 입력 중앙값

pix

(pi_input_max)

238

(1~p) int32 Calibration: 입력 최대값

pidb

(pi_input_deadband)

239

(1~p) int32 Calibration: 입력의 Dead-band 값

Pulse Input을 특정 모터의 기능으로 설정하는 변수들은 상위 8 bit로 타켓 채널의 모터

를 선정하는 것은 채널 1의 경우 0x0000이며, 채널 2는 0x0100입니다. 하위 8 bit로 구

성하는 특정한 기능은 다음과 같습니다.

0 - None,

1 - Motor Command (Voltage),

2 - Motor Command (Current),

3 - Motor Command (Velocity),

4 - Motor Command (Position),

5 - Motor Feedback (Position),

6 - Motor Feedback Velocity),

7 - [Digital Input] Emergency Stop,

8 - [Digital Input] Quick Stop,

9 - [Digital Input] Slowdown Stop,

10 - [Digital Input] Run Script,

11 - [Digital Input] Forward Limit Switch,

12 - [Digital Input] Reverse Limit Switch,

13 - [Digital Input] Invert Direction,

14 - [Digital Input] Load Home Counter

여기서 [Digital Input]로 표기된 기능은 아날로그 입력이 디지털 입력으로 매핑되는 경

Page 58: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

56

우이며 0보다 크면 True, 0을 포함해서 0보다 작으면 False를 의미합니다. 기능에 대한

설명은 [표 7-25]를 참고하기 바랍니다.

7-6. 스크립트(Script)에 대한 설정

본 절에서는 Motor Control UI를 이용하여 작성된 스크립트의 시작에 관련된 설정 및

동작상의 모니터링에 대한 설정에 대해 설명합니다.

[표 7-31] Script관련된 설정 변수

short (long) i (s) type 내 용

ssr

(startup_script_run)

16

(0) int8

제어기 시작 시 script의 자동 실행 여부:

0 - 실행하지 않음

1 - 실행 함

sv

(script_variable)

252

(1~256) float

스크립트에 사용된 변수 읽기;

변수 ID는 스크립트 컴파일 시 정해짐

8. Motor Control UI 프로그램

Motor Control UI 프로그램은 5가지 메뉴와 메뉴별로 다양한 고급 기능을 가지고 있습

Page 59: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

57

니다. 8장을 통해 Motor Control UI 프로그램의 기능을 숙지한다면 제어기의 강력한 기

능을 더욱 쉽고 편리하게 사용 가능하며, 사용자의 환경에 맞게 프로그램 메뉴와 기능을

선택해서 사용할 수 있습니다.

8-1. Motor Control UI 프로그램 다운로드

Motor Control UI 프로그램은 디바이스마트(홈페이지주소) 혹은 엔티렉스고(홈페이지주

소) 홈페이지에서 다운로드 받을 수 있습니다.

홈페이지에서 Motor Control UI 프로그램을 다운로드 한 후 별다른 설치 과정 없이 단

순히 압출 파일을 풀고 MotorControlUI.exe를 실행하면 [그림 8-1]과 같은 첫 실행화면

이 뜹니다.

Motor Control UI 프로그램은 Window xp/7/8에서 실행 가능합니다.

[그림 8-1] Motor Control UI 프로그램 첫 실행 화면

8-2. Motor Control UI 프로그램 PC 연결

정상적으로 Motor Control UI 프로그램이 다운로드가 되었다면 실행 화면에서 Scan

Page 60: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

58

Devices 버튼을 클릭합니다. 그러면 [그림 8-2]와 같이 해당 버튼 옆과 Controller List 탭

에 운용 가능한 연결된 제품명이 나타납니다.

[그림 8-2] Motor Control UI Program과 제어기의 연결화면

[그림 8-2]에 나타난 화면은 제어기와의 연결이 완료된 화면으로 아래와 같은 메시지를

보여줍니다.

COM11 #32(1) – MoonWalker DCM01(30V,3A)

Page 61: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

59

[그림 8-3] Motor Control UI Program과 모터 연결화면

[그림 8-4] Motor Control UI Program을 이용한 간단한 전압 제어 화면

[그림 8-3]에서 2개의 채널(혹은 사용하고자 하는 채널)을 체크하고, 제일 하단의

Update Auto를 체크한 후 Power ON 버튼을 누르면 [그림 8-4]와 같이 모터의 개략적인

Page 62: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

60

구동 상태 등이 나타납니다. 간단히 엔코더 등의 센서류를 연결하지 않고, 모터에 인가

되는 직접 전압 명령을 인가해서 모터 제어기의 동작 여부를 확인할 수 있습니다.

Voltage(V)에 12V를 입력하고, [그림 8-4]의 하단의 Voltage Out 버튼을 누르면 [그림 8-4]

와 같이 현재 구동되는 상황을 알 수 있습니다. 본 절의 시험 구동만으로도 사용자가 구

매한 제어기와 모터의 연결에서 정상 유무를 판단할 수 있습니다.

8-3. Motor Control UI 프로그램 메뉴 및 기능

본 절은 Motor Control UI 프로그램의 전반적인 메뉴와 기능에 대해 다루고 있습니다.

Motor Control UI 프로그램은 기본적으로 Controller List, Motor Control, IO Monitoring,

Configuration, Script 등 5가지 메뉴를 가지고 있습니다. 5가지 메뉴에 대해서는 각 절로

설명되어 있으므로 사용자의 환경에 맞게 프로그램 메뉴와 기능을 선택해서 사용할 수

있습니다.

8-3-1. Control List

Control List 메뉴는 사용자가 구매한 제어기와 모터의 연결에서 정상 유무 판단, 전압 /

전류 / 속도 / 위치 제어, 모터가 구동되는 상황 등을 간단하게 확인할 수 있습니다.

[그림 8-5] Control List 메뉴 화면

Page 63: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

61

[표 8-1] Control List 메뉴 기능 설명

Setting Serial / CAN 통신속도 및 타임아웃 설정

Real-time Plot 전압, 전류, RPM, Pulse 등을 볼 수 있는 그래프 창

Scan Devices 제어기와의 연결

Power ON 전원 ON

Power OFF 전원 OFF

Clear Fault Fault 상태 초기화

Quick Stop 급정지

Stop 정지 (=Slow Stop)

Voltage Out Open-Loop 제어

Go Current 전류 제어

Go Velocity 속도 제어

Go Position 위치 제어

[그림 8-5]의 Control List 화면에서 사용자가 제어하고자 하는 모터 드라이버의 채널을

선택한 후(Port및 Device ID 앞에 체크박스 체크) Update Auto를 누르면 제어기와 PC가

연결이 됩니다.

사용자의 환경에 맞게 제어 방법 (Voltage, Current, Velocity, Position)을 선택한 후 제어

값을 입력한 다음 Voltage Out / Go Current / Go Velocity / Go Position 명령을 통해서

모터가 정상적으로 제어되는지 확인합니다. 이때 제어기의 상태를 간단하게 모니터링 할

수 있습니다.

8-3-2. Motor Control

Motor Control 메뉴는 제어기의 상태, 모터 동작 이상, 모터 제어, 전압(V), 전류(A), 속

도(RPM), Pulse, 배터리 전압/전류, 모터 전압, FET온도 등 Red LED를 통해서 제어기의 현

재 상태와 상황을 확인할 수 있습니다.

동작 상태 활성화

동작 상태 비활성화

Page 64: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

62

[그림 8-6] Motor Control 메뉴 화면

8-3-2-1. Motor Control Status

Motor Control Status는 모터 제어기의 구동 상태 및 제어기와 연결된 IO의 상태 등을

확인할 수 있습니다.

[표 8-2] Motor Control Status 기능 설명

상 태 설 명

Motor Power ON 모터 전원이 공급되고 있는 상태

Moving 모터 구동 상태

Fault 에러 및 문제 발생 상태

Emergency Stop 긴급 정지를 누른 상태

Position Control 위치 제어 상태

Velocity Control 속도 제어 상태

Current Control 전류 제어 상태

Calibration Analog Input, Pulse Input을 Calibration 중.

Analog In is Not

in Center

모터 Power ON 전환 후 Analog Input 값이 Center에

있지 않은 상태

Pulse In is Not

in Center

모터 Power ON 전환 후 Pulse Input 값이 Center에 있

지 않은 상태

Page 65: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

63

Analog Input Loss

(Joystick)

Analog Input 이 Min~Max 범위를 넘어갔거나 적절한

값이 들어오지 않은 상태

Pulse Input Loss

(RC Radio)

Pulse Input 이 Min ~ Max 범위를 넘어갔거나 적절한

값이 들어오지 않은 상태

Stopped by

External Input

Digital Input에서 Stop, Quick Stop(Deadman Switch)가

작동한 상태

Gone Over a Limit

Position Position값이 위치 리미트 범위를 벗어난 상태

Serial Control Serial(RS-232, USB)과 CAN으로부터 Go~류 명령어가 입

력되고 있는 상태

Analog/Pulse

input control

Analog, Pulse Input로부터 Go~류 명령어가 입력되고

있는 상태

Script Running Script 실행 상태

8-3-2-2. Motor Fault Flags

Motor Control Status는 모터의 Fault 이유 상태를 확인할 수 있습니다. Motor 제어기에

서 Fault가 발생하면 모터에 공급되는 전원은 차단되며, Fault 조건이 해제된 이후에

Motor Power ON이 가능합니다.

[표 8-3] Motor Fault Flags 기능 설명

상 태 설 명

OverCurrent 모터에 흐르는 전류가 설정된 최대값 이상인 상태

Overvoltage 제어기에 공급되는 전압이 설정된 최대값 이상인 상태

Undervoltage 제어기에 공급되는 전압이 설정된 최소값 이하인 상태

Overheat 내부 스위칭 소자(FET)나 방열판의 온도가 최대 한계 온

도 이상인 상태

Short Circult 모터의 +,- 단자가 단락되거나 내부 스위칭 소자(FET)가

잘못된 조합으로 운용

Stall Detection 지정된 PWM duty 이상에서 모터가 회전하지 않는 경우

Stall 상황으로 판단 상태

Velocity error

Detection

속도 제어 모드에서 속도 오차가 지정된 값 이상이어서

속도 제어에 문제가 있는 것으로 판단 상태

Position error

Detection

위치 제어 모드에서 위치 오차가 지정된 값 이상이어서

위치 제어에 문제가 있는 것으로 판단 상태

Page 66: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

64

8-3-2-3. Motor Control

Motor Control에서는 사용자의 환경에 맞게 전압(V), 전류(A), 속도(RPM), 위치(Pulse) 등

의 제어 값을 입력해서 모터를 제어하거나 혹은 스크롤 바를 이용해서 모터를 제어할

수 있습니다. 그뿐만 아니라 현재 전압(V), 전류(A), 속도(RPM), 위치(Pulse) 값을 모니터

링 할 수 있습니다.

8-3-2-4. Controller Monitoring

제어기와 연결된 배터리 전압/전류, 모터 전압, FET 온도를 모니터링 할 수 있습니다.

8-3-2-5. Mapped Analog Input

타코메타를 이용해서 속도제어를 하거나 혹은 포텐셔미터를 이용해서 위치제어를 할

때 아날로그 입력 데이터 값을 모니터링 할 수 있습니다.

8-3-3. IO Monitoring

IO Monitoring 메뉴에서는 사용자의 환경에 맞게 설정한 4가지 입출력 포트의 (Digital

Input / Output 그리고 Analog / Pules Input) 데이터 값과 상태를 모니터링 하고, 스크립

트에서 값을 주고받기 위해 사용하는 32개의 변수를 설정할 수 있습니다.

[그림 8-7] IO Monitoring 메뉴 화면

Page 67: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

65

8-3-4. Configuration

[그림 8-8] Configuration 메뉴 화면

[표 8-4] Configuration 메뉴 버튼 기능 설명

기 능 설 명

① Read Configurations 제어기에 저장된 설정 값 읽기 (불러오기)

② Write Configurations 제어기에 설정 값을 쓰기 (저장하기)

③ Load Factory Default 공장 출하 시 초기값 설정 불러오기

④ Reset Controller 제어기 리셋

⑤ Copy Config.Mot.1->Mot.2 Motor 1 설정 값을 Motor 2에 저장하기

⑥ Load from File 저장된 cfg 확장자 파일 불러오기

⑦ Save to File 설정된 값을 cfg 확장자 파일로 저장하기

⑧ Load from Flash Flash 메모리 저장된 설정 값을 불러오기

⑨ Save to Flash 제어기에 저장된 설정 값을 Flash 메모리에

저장하기

⑩ Expand All Configuration 메뉴 설정을 모두 펼침

⑪ Collapse All Configuration 메뉴 설정을 모두 접기

Page 68: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

66

[그림 8-9] Configuration 메뉴 세부 설정 1

Configuration 메뉴에서는 제어기와 모터의 특성치 설정, 모터 제어 방법, 입출력포드

사용 여부 결정, Joystick과 RC 조종기 사용 여부 결정 등을 사용자의 환경에 맞게 제어

와 제어방법을 설정할 수 있습니다.

Product Information에서는 현재 연결된 제품 공급자 ID, 제품 ID, 제어기와 펌웨어 버

전을 확인할 수 있고 Serial / CAN Communication에서는 현재 연결된 CAN 통신 속도,

Serial 통신 속도, 왓치독 등을 설정하고 확인할 수 있습니다.

Script에서는 스크립트 모드 사용 여부를 설정할 수 있으며, Joystick/RC Control and

Safety에서는 Control Mixing 모드, Center Safety 기능과 Min/Max Safety 기능 사용 여부

를 설정할 수 있습니다.

Power Stage에서는 모터에 전력을 공급하기 위한 FET 및 FET 구동회로를 설정할 수 있

으며, Mobility Properties에서는 이동 로봇의 바퀴의 지름, 좌우 바퀴간의 거리, 모터와

바퀴간 감속비율(모터 회전수/바퀴 회전수) 등 로봇의 기본 설정 값을 설정할 수 있습니

다.

Page 69: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

67

[그림 8-10] Configuration 메뉴 세부 설정 2

8-3-4-1. Motor 1 / Motor 2

Motor 1과 Motor 2는 Position Sensor, Motor Characteristics, Fault Condition,

Operations, Closed Loop Controller 등 5개의 메뉴로 구분되어 있습니다. Motor 1과

Motor 2의 메뉴는 동일하므로 Motor 1에 대해서 설명합니다.

Position Sensor는 위치 센서에 대한 설정 메뉴입니다. 위치 제어할 때 최소/최대 위치,

홈센서 감지 시 Position에 로드 되는 위치값, 모터 1회전당 엔코더 펄스 수, Soft Limit

사용 여부를 설정할 수 있습니다. 여기서 Soft Limit은 Encoder, Hall Sensors,

Potentiometer 값이 Min/Max Position 범위를 벗어나면 Forward / Reverse Limit Switch

를 작동한 효과를 보여주는 기능을 가지고 있습니다.

Motor Characteristics는 사용자가 사용하고자 하는 모터 자체의 특성치를 설정하는 메

Page 70: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

68

뉴입니다. 모터에 흐르는 최대 연속 전류, 모터를 구동하는 최대 전압, 모터의 최대 회전

속도, 모터의 회전 가속도, 모터의 회전 감속도를 설정할 수 있습니다. 이때 사용자는 사

용하는 모터 설명서을 숙지한 후 모터 스펙을 설정하여야 합니다.

Fault Condition은 사용자 그리고 제품의 안전을 위해 Fault 감지 조건을 설정하는 메뉴

입니다. Fault Condition Limits에서는 과열온도, 과전류, 과전류 흐르는 시간, 제어기의

FET가 흘릴 수 있는 순간 최대 전류범위, 과전압, 저전압 한계값을 설정할 수 있고, Fault

Condition Detection에서는 모터의 폴트 감지 조건을 설정할 수 있습니다.

Operations는 제어기 시작 시 모터를 어떻게 구동할지를 선택하는 메뉴입니다. 제어기

시작 시 자동으로 POWER ON, 모터 POWER OFF 시 브레이크 활성화하기 위한 지연시

간, 모터 회전방향 등 모터 구동과 관련된 모든 설정을 할 수 있습니다.

Closed Loop Controller는 제어기 피드백 센서 선택, 위치, 속도 제어 기능에서 사다리

꼴 프로파일 적용여부 그리고 전류, 속도, 위치 제어기의 PID 게인값, 안티와인드업 게인

값을 설정할 수 있습니다.

※ Motor 1의 메뉴는 7-2, 7-3, 7-4절의 변수들과 관련 있으므로 참고하기 바랍니다.

8-3-4-2. Digital Input / Digital Output / Analog Input / Pulse Input

[그림 8-11] Configuration 메뉴 세부 설정 3

Page 71: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

69

User Values는 제어기와 관련된 값들을 제어기에 저장해 두기 위해 사용하는 메뉴입니

다. 이 값은 제어기의 전원이 꺼지더라도 유지되며, 총 32개의 User Value를 사용할 수

있습니다.

Digital Input 1 / Digital Input 2는 모터의 구동에 필요한 정보 및 명령을 받아들이기 위

해 사용하는 메뉴입니다. 디지털 입력 활성화, 디지털 입력 극성 반전 활성화, Mapping

기능을 설정할 수 있습니다.

Digital Output 1 / Digital Output 2는 모터의 현재 구동 상태를 외부에 알리기 위해 사

용하는 메뉴입니다. 디지털 출력 활성화, 디지털 출력 극성 반전 활성화, Mapping 기능

을 설정할 수 있습니다.

[그림 8-12] Configuration 메뉴 세부 설정 4

Analog Input 1 / Analog Input 2는 모터의 구동에 필요한 정보 및 명령을 아날로그 신

호로 받아들이기 위해 사용하는 메뉴입니다. 아날로그 입력 활성화, 아날로그 입력 극성

반전 활성화, Linearity 설정, Mapping 기능, Calibration을 설정할 수 있습니다.

Pulse Input 1 / Pulse Input 2는 RC 조종기 및 디지털 신호를 사용하기 위한 메뉴입니다.

펄스 입력 활성화, 펄스 입력 극성 반전 활성화, Capture Type 설정, Linearity 설정,

Mapping 기능, Calibration을 설정할 수 있습니다.

※ Digital Input/Output, Analog/pulse Input 메뉴는 7-5절의 변수들과 관련 있으므로

참고하기 바라며, Joystick과 RC 조종기 설정에 대한 내용은 9장을 참고하기 바랍니다.

Page 72: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

70

8-3-5. Script

본 절은 스크립트(Script)에서 사용 가능한 명령어와 제어기에 컴파일(Compile)을 하지

않고 Motor Control UI 프로그램을 이용해서 바로 프로그램을 작성한 후 다운로드 하는

방법에 대해 설명합니다.

8-3-5-1. 스크립트 언어

스크립트 언어는 C언어의 Subset으로 설계된 언어입니다. C언어의 제어문과 수식 연산

구조를 그대로 따오면서 배열이나 함수포인트 등 복잡한 부분을 제거하여 사용자의 환

경에 맞게 쉽고 빠르게 프로그램을 개발할 수 있습니다.

C언어에서는 #define, #ifdef, #if 등의 전처리문 / 함수의 정의와 선언 (main 함수 포함)

/ int, float, long 등 자료형 키워드 / 문자열 상수 (“abc”) / 배열([]) 연산자, 포인터(*)연산

자, 주소 참조(&) 연산자, 멤버(., ->) 연산자 같은 Subset은 제공합니다.

변수의 선언에 자료형은 사용되지 않으며, 변수는 정수형(a=123)이나 실수형(b=4.567)

으로 초기화 하면서 선언됩니다.

[표 8-5]와 같이 if, else / for / while / do~while / break / continue와 같은 분기문과 반

복문은 사용이 가능합니다.

[표 8-5] 분기문과 반복문의 예

if, else for

i=0;

if(i >= 90)

else

i=0;

for(i=0; i<10; i++)

while do~while

i=0;

while(i<=100)

i++;

int i=0;

do

i++;

while(i<=10);

Page 73: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

71

break continue

i=1;

for( j=0 ; j<5; j++)

if( j-i=0)

break;

i=1;

for( j=0 ; j<5; j++)

if( j+i=2)

continue;

또한 +, -, *, /, %, ++, --, ==, !=, >, <, >=, <=, !, &&, ||, ~, &, |, ^, <<, >>, =, +=, -=, *=,

/=, %=, &=, |=, ^=, <<=, >>=과 같은 연산자는 사용이 가능하며, [표 8-6]과 같이 연산

자들 간의 우선순위 및 결합성을 가집니다.

[표 8-6] 연산자 우선선위와 결합성

우선순위 연 산 자 결합법칙

기본연산자 ( ) ++ -- ß

전치 + - ++ -- ~ ! à

승제 * / % à

가감 + - à

비트 이동 << > à

관계 < <= > >= à

등식 == != à

비트 AND & à

비트 XOR ^ à

비트 OR | à

논리곱 && à

논리합 || à

대입 = *= /= %= += -= <<= >>= >>>= &= ^= |= ß

스크립트에서 정의하고 있는 연산자 우선순위와 연산자 결합성은 C에서 정의하고 있는

것과 같으며, 스크립트에서는 포인터를 제공해주지 않으므로 C에서 포인터 연산을 위해

사용하는 구조체 포인터의 항목 참조 연산자(->), 주소 연산자(&), 간접연산자(*) 등과 같

은 연산자는 제공하지 않습니다.

Page 74: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

72

8-3-5-2. 스크립트 명령어

사용자가 코드를 작성할 때 기본적으로 필요로 하는 함수들을 [표 8-7]과 같이 제공하

고 있습니다.

[표 8-7] Script에서 사용 가능한 함수

함 수 설 명

clock() 현재 시간을 밀리초 단위로 반환

rand() 의사-난수를 반환 (값의 범위: 0 ~ 32767 사이)

sleep(x) x 밀리초 동안 대기

Int(x) 실수 x를 소숫점 첫째 자리에서 반올림한 정수 값을 반환

sin(x) 라디안의 값으로 주어진 x의 sine값을 반환

cos(x) 라디안의 값으로 주어진 x 의 cosine 값을 반환

tan(x) 라디안의 값으로 주어진 x 의 tangent 값을 반환

asin(x) x(sine x의 결과 값)의 arc sine의 값을 계산

acos(x) x(cosine x의 결과 값)의 arc cosine의 값을 계산

atan(x) x(tangent x 의 결과 값)의 arc tangent의 값을 계산

sinh(x) 수학적으로 exp(x) - exp(-x)/2 로 정의된, x의 쌍곡선 sine을 반환

cosh(x) 수학적으로 exp(x)-exp(-x)/2 로 정의된, x의 쌍곡선 cosine을 반환

tanh(x) sinh(x)/cosh(x)이라는 수학적 정의를 가진, x 의 쌍곡선 tangent x

를 반환

fabs(x) x의 절대값을 반환

floor(x) x보다 작거나 같은 정수 중에서 최대 값을 반환

ceil(x) x보다 크거나 같은 정수 중에서 최소 값을 반환

sqrt(x) x의 음이 아닌 루트의 값을 반

exp(x) e(자연대수에 기초한)의 x 승의 값을 반환

log(x) x 의 자연로그를 반환

log10(x) 10을 밑으로 하는 x의 로그값을 반환

atan2(x,y) 두 개의 인수를 가진 arc tangent 함수

pow(x,y) base의 power승을 반환하는 일반적 지수 함수

min(x,y) 주어진 두 인자의 최소값을 반환

max(x,y) 주어진 두 인자의 최대값을 반환.

getv

(index,sub_index) index와 sub_index로 지정된 외부 변수의 값을 읽음

setv

(index,sub_index,x) index와 sub_index로 지정된 외부 변수에 값을 기록

Page 75: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

73

getrv

(device_id,index,sub_

index)

device_id의 index와 sub_index로 지정된 외부 변수의 값을 읽음

setrv

(device_id,index,sub_

index,x)

device_id의 index와 sub_index로 지정된 외부 변수에 값을 기록

여기서 index는 Short name과 Long name으로 대체할 수 있으며 아래 예와 같이 Lhort

name, Long name 앞에 _(Underbar)를 붙여줘야 합니다.

예) setv(111,1,500)

= setv(_pc,1,500)

= setv(_voltage_command,1,500)

[표 8-8] Script에서 사용 가능한 Variable List

Long name Short 설 명

_battery_voltage _bv 주 전원에서 공급되는 전압

_battery_current _bc 주 전원에서 제어기로 흐르는 전류

_num_motors _nm 제어기에 연결 가능한 모터의 수

_status _s 모터 드라이버의 현재 상태

_fault _f 모터 드라이버 및 관련 IO에서 발생한 Fault 상태

_temperature _tp FET에 장착된 Heat sink의 온도 (단위: °C)

_voltage _vt 모터에 공급되고 있는 전압 (단위: V)

_current _c 모터에 흐르고 있는 전류 (단위: A)

_velocity _v 모터의 현재 회전속도 (단위: RPM)

_position _p 모터의 현재 엔코더 펄스 (단위: Pulse)

_ai_potentiometer _pt Analog Input 포트에 연결된 위치 센서의 피드백 값

(단위: ‰)

_ai_tachometer _ta Analog Input 포트에 연결된 속도 센서의 피드백 값

(단위: ‰)

_position_command _pc 모터의 위치 추종 명령 (단위: Pulse)

_velocity_command _vc 모터의 속도 추종 명령 (단위: RPM)

_current_command _cc 모터의 전류 추종 명령 (단위: A)

_voltage_command _vtc 모터의 전압 추종 명령 (단위: V)

_pwm_switching _ps 스위칭 소자의 구동 방법 선택

Page 76: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

74

_pwm_frequency _pf 스위칭 소자에 인가되는 PWM 신호의 주파수 선택

_device_id _id CAN, Serial binary 패킷 통신에서 사용하는 장치 ID

_can_br _cb CAN 통신 속도 설정

_serial_bps _sb Serial 통신의 속도를 설정하는 변수:

_serial_watchdog _sw 명령어 패킷에 대한 Watchdog Timeout 값

_min_position _np 위치 제어 시 최소 위치;

_max_position _xp 위치 제어 시 최대 위치;

_encoder_ppr _ep 모터 1회전당 엔코더 펄스 수 (단위: pulse/rev)

_use_soft_limit _usl Encoder나 Potentiometer 값이 Min/Max Position 범위를

벗어나면 Forward/Reverse Limit Switch 작동

_max_current _xc 모터의 최대 전류를 설정 (단위: A)

_max_voltage _xvt 모터의 최대 전압 설정 (단위: V)

_max_velocity _xv 모터의 최대 회전 속도 설정 (단위: RPM)

_acceleration _ac 모터의 회전 가속도 설정 (단위: RPM)

_deceleration _dc 모터의 회전 감속도 설정 (단위: RPM)

_overheat_limit _ohl FET의 온도 한계치 설정 (단위: °C);

_overcurrent_limit _ocl 과전류 한계치 설정 (단위: A);

_overcurrent_delay _ocd 과전류 연속 구동시간 설정 (단위: ms)

_peakcurrent_ratio _pcr 순간 최대 전류 한계치 설정 (단위: %);

_overvoltage_limit _ovl 과전압 한계치 설정 (단위: V);

_undervoltage_limit _uvl 저전압 한계치 설정 (단위: V);

_stall_detection _sd PWM duty 설정을 통한 Fault 감지 조건 설정:

_vel_error_detection _ved 속도 오차 정도의 설정을 통한 Fault 감지 조건 설정:

_pos_error_detection _ped 위치 오차 정도의 설정을 통한 Fault 감지 조건 설정:

_startup_power_on _spo 제어기가 시작될 때 모터에 Power ON/OFF 상황 설정

_brake_on_delay _bod 모터 Power OFF 시 브레이크를 활성화하기 위한 지연 시

간을 설정 (단위: msec)

_direction _dir 모터의 회전 방향을 설정

_high_voltage _hv

모터의 역기전력으로 인해 제어기에 걸리는 전압이 증가

할 때 Dynamic Brake Register를 활성화 시키기 위한 전압

을 설정 (단위: V)

_high_temperature _ht FET 온도가 올라갈 때 냉각팬을 켜기 위한 온도를 설정

(단위: ‘C)

_feedback_sensor _fs 상태를 궤환(feedback)하는 센서의 선택

_profile_mode _pm 위치나 속도 제어 모드에서 사다리꼴 프로파일 사용 선택

_pc_kp _pp 위치 제어기의 비례제어 게인

Page 77: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

75

_pc_ki _pi 위치 제어기의 적분제어 게인

_pc_kd _pd 위치 제어기의 미분제어 게인

_vc_kp _vp 속도 제어기의 비례제어 게인

_vc_ki _vi 속도 제어기의 적분제어 게인

_vc_ks _vs 속도 제어기의 스케일팩터(Scale Factor)

_cc_kp _cp 전류 제어기의 비례제어 게인

_cc_ki _ci 전류 제어기의 적분제어 게인

_cc_kff _cff 전류 제어기의 전향 보상 제어 이득 (단위: rad/s)

_num_di _ndi 디지털 입력 채널의 수 설정

_di_enable _die 각 비트별 해당 디지털 입력의 활성화 여부 설정

_di_invert _dii 각 비트별 해당 디지털 입력의 반전 여부 설정

_di_all_values _di 디지털 입력을 하나의 long 변수로 통합할 것인 것 설정

_di_value _div 디지털 입력 채널의 값 설정 (0 or 1)

_di_function _dif 디지털 입력을 특정 모터의 기능으로 설정

_num_do _ndo 디지털 출력 채널의 수 설정

_do_enable _doe 각 비트별 해당 디지털 출력의 활성화 여부 설정

_do_invert _doi 각 비트별 해당 디지털 출력의 반전 여부 설정

_do_all_values _do 디지털 출력을 하나의 long 변수로 통합할지 여부를 설정

_do_value _dov 디지털 출력 체널의 값 설정 (0 or 1)

_do_function _dof 디지털 출력을 특정 모터의 상태와 설정

_num_ai _nai 아날로그 입력 채널의 수 설정

_ai_enable _aie 비트별 해당 아날로그 입력의 활성화 여부 설정

_ai_invert _aii 비트별 해당 아날로그 입력의 극성 반전 여부 설정

_ai_value _aiv 아날로그 입력 채널의 값 설정

_ai_converted_value _aicv Calibration, Linearity 과정을 거친 후 최종 변환된 값

_ai_linearity _ail linear, log, exp 함수 형태의 변환 형식 지정

_ai_function _aif 아날로그 입력을 특정 모터의 기능과 연결

_ai_input_min _ain Calibration: 입력 최소값 설정

_ai_input_center _aic Calibration: 입력 중앙값 설정

_ai_input_max _aix Calibration: 입력 최대값 설정

_ai_input_deadband _aidb Calibration: 입력의 Dead-band 값 설정

_num_pi _npi 펄스 입력 채널의 수 설정

_pi_enable _pie 비트 별 해당 펄스 입력의 활성화 여부 설정

_pi_invert _pii 비트 별 해당 펄스 입력의 극성 반전 여부 설정

_pi_value _piv 펄스 입력 채널의 값 설정

_pi_converted_value _picv Calibration, Linearity 과정을 거친 후 최종 변환값 설정

Page 78: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

76

_pi_capture_type _pit Pulse Width, Frequency, Duty Cycle 펄스 캡쳐 종류 선택

_pi_linearity _pil linear, log, exp 함수 형태의 변환 형식 지정

_pi_function _pif 펄스 입력을 특정 모터의 기능과 연결 설정;

_pi_input_min _pin Calibration: 입력 최소값

_pi_input_center _pic Calibration: 입력 중앙값

_pi_input_max _pix Calibration: 입력 최대값

_pi_input_deadband _pidb Calibration: 입력의 Dead-band 값

_control_mixing _cm RC Signal, Joystick의 Mixing 설정

_center_safety _cs Joystick이나 RC Signal이 0일 때 동작을 시작 설정

_min_max_safety _ms Joystick이나 RC Signal이 Min~Max 범위를 벗어나면

Command 입력 값을 0으로 설정

_wheel_radius _wr 바퀴의 반지름 (단위: m)

_axle_length _al 좌우 바퀴간 거리 (단위: m)

_gear_ratio _gr 모터와 바퀴간 감속비율 (모터 회전수/바퀴 회전수)

_m_position _mp 좌/우 모터의 엔코더 값을 2개의 32bit 정수로 읽음

(단위: Pulse)

_m_position_command _mpc 좌/우 모터의 위치 구동 명령 전달 (단위: Pulse)

_m_velocity_command _mvc 좌/우 모터의 속도 구동 명령을 동시 전달 (단위: RPM)

_m_current_command _mcc 좌/우 모터의 전류 구동 명령을 동시 전달 (단위: A)

_m_voltage_command _mvtc 좌/우 모터의 전압 구동 명령을 동시 전달 (단위: V)

_m_lav_command _mla 전진속도/각속도로 이동로봇의 구동 명령 전달

(단위: m/s, rad/s)

8-3-5-3. Motor Control UI 프로그램을 이용한 스크립트 메뉴 사용의 예

본 절은 Motor Control UI 프로그램의 스크립트 메뉴를 이용해서 간단한 예제 소스를

통해서 스크립트 사용 방법에 대해 설명합니다.

예) 제어기에서 두 채널 모두 정방향으로 12V 전압으로 1초 움직이고 1초 정지하는 동

작을 10번 반복하고 싶을 때

for(i=0;i<10;i++)

setv(_voltage_command,1,12);

setv(_voltage_command,2,12);

sleep(1000);

Page 79: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

77

setv(_voltage_command,1,0);

setv(_voltage_command,2,0);

sleep(1000);

[그림 8-13] Script 메뉴 화면

[그림 8-11]과 같이 사용자의 환경에 맞게 프로그램 작성한 후 Save를 눌러 코드를 저

장합니다. 그리고 난 후 Build와 Download를 실행합니다. 만약 문제가 없다면 아래와 같

이 성공적으로 Build와 Download 되었다는 메시지를 확인할 수 있습니다.

>>>example.scr – 0 error(s), build succeeded

>>>example.bin – download XX byte(s) succeeded

성공적으로 Build와 Download가 끝나면 Device Run/Stop 혹은 UI Run/Stop을 버튼을

클릭해서 정상적으로 제어가 되는지 확인합니다.

8-3-6. Real-time Plot

Real-time Plot은 모터 혹은 드라이버의 데이터(Voltage, Current, Velocity, Position,

Battery Voltage, FET Temperature 등) 값과 Reference 값을 실시간으로 그래프로 비교하

면서 확인할 수 있습니다.

Page 80: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

78

Real-time Plot 창에서 사용자가 확인하고 싶은 데이터를 체크한 후 모터를 구동하면

[그림 8-14]와 같이 실시간으로 데이터 그래프를 볼 수 있습니다. 또한, 마우스 휠을 위

아래로 움직이면 0을 기준으로 그래프가 확대/축소되는 기능도 가지고 있습니다.

[그림 8-14] Real-time Plot 화면 (-8~8V 전압 그래프)

8-4. Motor Control UI 프로그램을 이용한 제어기 설정방법

본 절에서는 Motor Control UI 프로그램을 이용한 제어기 설정 방법에 대해 설명합니다.

사용자는 제어기의 스펙과 사용하는 모터의 스펙을 제대로 파악하고 제어기가 어떻게

구성되어 있는지를 6장 제어기 구성 내용을 숙지하신 후 환경에 맞게 게인값을 설정하

여야 합니다.

8-4-1. 전압 제어 설정 방법

이 방식은 Close-Loop 제어를 위해 피드백 받는 여러 센서의 신호를 사용하지 않습니

다. 그래서 사용자가 구성한 모터 구동축에 연결된 여러 부하와 마찰력, 모터의 종류에

따라 같은 전압을 인가해도, 소모되는 전류나 속도는 다를 수 있습니다.

Page 81: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

79

[그림 8-15] Configuration - Power Stage 메뉴 화면

전압 제어를 하기 위해서는 [그림 8-15]와 같이 사용자의 환경에 맞게 Power Stage에서

Bipolar와 Unipolar 중 어떤 것으로 구동할지 어떤 주파수를 사용할지 선택합니다.

Power Stage 설정이 끝났으면 Motor 1에서 최적화된 제어를 위해 [그림 8-16]과 같이

모터 자체의 특성치와 제품의 안전을 위한 전압/전류 한계치를 설정하여야 합니다.

[그림 8-16] Configuration - Motor 1 메뉴 화면

Page 82: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

80

사용자가 사용하고자 하는 모터의 설명서를 숙지한 후 Motor Characteristics에서는 모

터에 흐르는 최대 연속 전류, 모터를 구동하는 최대 전압, 모터의 최대 회전 속도, 모터

의 회전 가속도, 모터의 회전 감속도를 설정하고, Fault Condition Limits에서는 모터와 제

어기의 설명서를 숙지한 후 과열온도, 과전류, 과전류 흐르는 시간, 제어기의 FET가 흘릴

수 있는 순간 최대 전류범위, 과전압, 저전압 한계값을 설정합니다.

모든 설정이 끝나면 오른쪽에 Copy Config. Mot.1->Mot.2 과 Write Properties 버튼을

순서대로 클릭하면 Motor 1의 설정이 Motor 2에 저장된 후 모든 설정된 값이 메모리에

저장됩니다.

그림 [8-17]과 같이 Configuration 메뉴에서 전압 제어를 위한 모든 설정이 끝나면

Motor Control 메뉴에서 전압 제어가 정상적으로 동작되는지 테스트를 합니다.

[그림 8-17] 전압 제어 테스트 화면

8-4-2. 전류 제어 설정 방법

전류 제어를 하기 전에 전압 제어를 위한 모터 특성치 및 구동부 설정과 한계치를 설

정하여야 합니다.

Page 83: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

81

[그림 8-18] Configuration - Motor 1 - Current Controller Gain 메뉴 화면

[그림 8-18]과 같이 Motor 1 - Current Controller Gain에 사용자의 환경에 맞게 게인값

을 설정한 후 Copy Config. Mot.1->Mot.2 버튼과 Write Properties 버튼을 순서대로 클

릭합니다.

[그림 8-19] 전류 제어 테스트 화면

Page 84: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

82

Configuration 메뉴에서 전류 제어를 위한 모든 설정이 끝나면 Motor Control 메뉴에서

전류 제어가 정상적으로 동작되는지 테스트를 합니다.

8-4-3. 속도 제어 설정 방법

속도 제어를 하기 전에 전압 제어를 위한 설정과 전류 제어를 위한 게인값을 설정하여

야 합니다.

[그림 8-20] Configuration - Motor 1 - Velocity Controller Gain 메뉴 화면

[그림 8-20]과 같이 Motor 1 - Velocity Controller Gain에 사용자의 환경에 맞게 게인값

을 설정한 후 Copy Config. Mot.1->Mot.2 버튼과 Write Properties 버튼을 순서대로 클

릭합니다.

Page 85: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

83

[그림 8-21] 속도 제어 테스트 화면

Configuration 메뉴에서 속도 제어를 위한 모든 설정이 끝나면 Motor Control 메뉴에서

속도 제어가 정상적으로 동작되는지 테스트를 합니다.

만약 타코메타를 이용해서 속도 제어를 할 경우에는 [그림 8-22]와 같이 Control

Feedback에서 Tachometer로 설정한 후 데이터를 메모리에 저장하면 됩니다.

[그림 8-22] Control Feedback - Tachometer 설정 화면

Page 86: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

84

8-4-4. 위치 제어 설정 방법

위치 제어를 하기 전에 전압 제어를 위한 설정과 전류 제어와 속도 제어를 위한 게인

값을 설정하여야 합니다.

[그림 8-23] Configuration - Motor 1 - Position Sensors 메뉴 화면

위치 제어를 하기 위해서는 [그림 8-23]과 같이 위치제어 시에 최소 위치, 최대 위치,

홈센서 감지 시 position에 로드되는 위치값, 모터 1회전당 엔코더 펄스 수, Soft Limit

switch를 사용자 환경에 맞게 설정합니다.

[그림 8-24] Configuration - Motor 1 - Position Controller Gain 메뉴 화면

Page 87: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

85

위치 센서에 대한 설정이 끝나면 [그림 8-24]와 같이 Motor 1 - Position Controller Gain

에 사용자의 환경에 맞게 게인값을 설정한 후 Copy Config. Mot.1->Mot.2 버튼과 Write

Properties 버튼을 순서대로 클릭합니다.

[그림 8-25]와 같이 Configuration 메뉴에서 위치 제어를 위한 모든 설정이 끝나면

Motor Control 메뉴에서 위치 제 정상적으로 되는지 테스트 합니다.

[그림 8-25] 위치 제어 테스트 화면

만약 포텐셔미터를 이용해서 위치 제어를 할 경우에는 [그림 8-26]와 같이 Control

Feedback에서 Potentiometer로 설정한 후 데이터를 메모리에 저장하면 됩니다.

[그림 8-26] Control Feedback - Potentiometer 설정 화면

Page 88: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

86

8-5. Motor Control UI 프로그램 사용시 유의사항

[그림 8-27] Configuration에서 유의해야 할 메뉴

8-5-1. Encoder Resolution

Configuration - Motor 1 - Position Sensors - Encoder에 있는 Encoder Resolution은 모

터의 엔코더 분해능을 설정하는 메뉴로 사용하고자 하는 모터의 설명서와 스펙을 잘 숙

지한 후 엔코더 분해능 값을 적용해 주시기 바랍니다.

주의 Motor Control UI 프로그램의 엔코더 분해능은 4체배 방식으로 되어있기 때

문에 엔코더 분해능에서 x4(곱하기 4)를 해준 값을 적용해줘야 합니다. 만약 제대로 된

값이 적용되지 않는다면 모터의 정상적인 제어는 불가능하니 주의하기 바랍니다.

8-5-2. Motor Characteristics

Configuration - Motor 1에 있는 Motor Characteristics은 모터 자체의 특성치를 설정하

는 메뉴로 사용하고자 하는 모터의 설명서와 스펙을 잘 숙지한 후 모터에 흐르는 최대

연속 전류, 모터를 구동하는 최대 전압, 모터의 최대 회전 속도, 모터의 회전 가속도, 모

터의 회전 감속도 값을 적용해 주시기 바랍니다.

Page 89: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

87

주의 설정된 모터의 최대 전류, 최대 전압, 최대 속도만큼 제어할 수 있습니다. 또

한, 모터의 스펙 이상의 값이 설정되면 모터가 망가질 수도 있으니 유의하기 바라며, 모

터 스펙 이상의 값을 적용하지 마시기 바랍니다.

8-5-3. Fault Condition

Configuration - Motor 1에 있는 Fault Condition은 제품의 안전을 위해 Fault 감지 조건

을 설정하는 메뉴로 사용하고자 하는 제어기의 설명서와 스펙을 잘 숙지한 후 과열온도,

과전류, 과전류 흐르는 시간, 제어기의 FET가 흘릴 수 있는 순간 최대 전류범위, 과전압,

저전압 한계값을 적용해 주시기 바랍니다.

주의 제어기의 스펙 이상의 값이 설정되면 제어기가 파손될 위험이 있으니 유의하

기 바랍니다.

8-5-4. Write Properties & Save to Flash

Configuration 메뉴에 있는 Save to Flash 버튼은 제어기의 RAM에서 플래시 메모리로

설정 값을 저장(쓰기)하는 기능이고 Write Properties는 UI 프로그램의 설정 값을 제어기

의 RAM에 저장(쓰기)하는 기능입니다.

주의 Configuration의 모든 설정을 바꾼 후 Write Properties / Save to Flash 버튼

을 클릭하지 않으면 변경된 설정 값들은 플래시 메모리에 저장되지 않습니다. 따라서 설

정 값을 변경한 후에는 Write Properties / Save to Flash 버튼을 꼭 클릭해야 합니다.

8-5-5. Calibration

주의 Calibration은 먼저 사용자가 사용하고자 하는 Analog Input 포트와 Pulse

Input 포트를 활성화(Enable)하고 메모리에 저장(Write Properties 버튼 클릭)한 후에

Calibration 작업을 진행해야 합니다.

또한, Analog Input과 Pulse Input 포트 활성화 및 변경에 따라서 Calibration 작업은

필수로 진행해야 합니다.

Page 90: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

88

9. 참고 및 응용

9-1. 위치나 속도를 측정하는 센서의 연결

본 절은 제어기가 지원하는 다양한 외부 센서의 연결 법에 대해 설명합니다. 본 제어기

는 전압 / 속도 / 위치 제어기가 탑재되어 있습니다.

전류의 감지(Sensing)는 제어기 내부에서 이뤄지지만, 속도나 위치를 제어하고자 하는

경우 사용자는 해당 상태를 피드백 받는 센서를 사용해야 합니다.

일반적으로 많이 사용하는 Incremental형 엔코더와 BLDC 홀센서를 이용해서 속도 / 위

치 제어는 물론, Absolute형 엔코더, 타코메타(tachometer), 포텐셔미터(potentiometer)를

이용해서 속도 / 위치 제어가 가능합니다. 사용자는 아래 해당 장에서 사용자 환경에 맞

는 센서의 내용을 숙지하여, 본 제어기가 지원하는 센서의 범위나 사용법 등을 확인해야

합니다.

사용자는 아래 해당 장에서 사용자에게 맞는 센서의 내용을 숙지하여, 본 제어기가 지

원하는 센서의 범위나 사용법 등을 확인해야 하며, 속도나 위치를 제어하기 위해 사용되

는 센서들은 사용자 환경에 맞춰 충분한 성능이 보장되는 제품으로 선정해야 합니다.

마지막으로 센서와 모터를 선정하고 연결한 다음 반드시 사용자의 환경에 맞춰 성능테

스트를 해야 합니다.

9-2-1. Incremental형 엔코더와의 연결

[그림 9-1] 제어기 내부 엔코더 연결부 회로

Page 91: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

89

[그림 9-1]와 같이 제어기 내부에는 풀업(pull-up) 저항이 설계되어 있습니다. 사용자는

[그림 9-1]에 있는 내부 풀업 저항을 참조하여 Incremental형 엔코더를 선정하기 바랍니

다.

[그림 9-2] 제어기(1채널)와 Incremental형 엔코더 연결

엔코더 A는 I/O 커넥터의 14번 핀에 연결하고, 엔코더 B는 I/O 커넥터의 15번 핀에 연

결합니다. 이때 사용자는 모터의 연결 채널과 해당 인코터 커넥터를 잘 구별해서 연결하

기 바랍니다. 만약 A와 B상이 반대로 연결되었다면 카운트(Pulse)가 거꾸로 되기 때문에

A와 B상을 바꿔주시기 바랍니다.

9-2-2. Absolute형 엔코더와의 연결

제어기는 Absolute형 엔코더 중에서 펄스 출력 방식과 아날로그 출력 방식에 대해 대

응합니다. 펄스 출력 방식을 사용할 경우 20Hz에서 20kHz의 출력 주파수 범위를 가지는

제품을 사용하여야 합니다.

9-2-2-1 펄스 출력을 가지는 Absolute형 엔코더와의 연결

펄스 타입의 Absolute형 엔코더는 일반적으로 0도에서 360도까지 각도가 증가할수록

듀티비가 증가하는 형태로 되어 있습니다. [그림 2-3]과 같이 엔코더의 신호 선을 I/O 커

넥터 7번 핀에 연결합니다.

Page 92: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

90

[그림 9-3] 제어기(1채널)와 펄스 출력을 가지는 Absolute형 엔코더

9-2-2-2. 아날로그 출력을 가지는 Absolute형 엔코더와의 연결

다음은 아날로그 출력을 가지는 Absolute형 엔코더와의 연결입니다. [그림 9-4]와 같이

신호 선을 I/O 커넥터 6번 핀에 연결합니다.

[그림 9-4] 제어기(1채널)와 아날로그 출력을 가지는 Absolute형 엔코더 연결

9-2-3. Tachometer와의 연결

전기 스쿠터나 골프차 등의 주 구동용 모터에 회전속도를 측정하는 일반적인 장비로

타코메타가 많이 사용됩니다. 타코메타는 많은 방식이 있지만, 본 제어기는 펄스와 아날

로그 측정방식을 지원하고 있습니다.

9-2-3-1 펄스 출력을 가지는 타코메타와의 연결

펄스 출력을 가지는 타코메타는 [그림 9-5]와 같이 신호 선을 I/O 커넥터 7번 핀에 연

결합니다.

Page 93: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

91

[그림 9-5] 제어기(1채널)와 펄스 출력을 가지는 타코메타 연결

9-2-3-2 아날로그 출력을 가지는 타코메타와의 연결

아날로그 출력을 가지는 타코메타는 [그림 9-6]과 같이 신호 선을 I/O 커넥터 6번 핀에

연결합니다.

[그림 9-6] 제어기(1채널)와 아날로그 출력을 가지는 타코메타 연결

9-2-4. Potentiometer와의 연결

위치(회전형의 경우는 회전각)에 따라 저항값이 바뀌는 일종의 가변저항과 같은 출력을

가지는 센서를 포텐셔미터라고 합니다. 본 제어기는 포텐셔미터의 출력 신호를 가지고

속도/ 위치제어가 가능합니다.

[그림 9-7]과 같이 제어기에 포텐셔미터를 연결하려면 신호 선을 6번 핀에 연결합니다.

Page 94: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

92

[그림 9-7] 제어기(1채널)와 아날로그 출력을 가지는 포텐셔미터 연결

9-2. Joystick 연결

본 절은 Motor Control UI 프로그램을 이용해서 Joystick 연결 설정 및 Joystick을 이용

해서 모터를 제어할 수 있는 방법에 대해 설명합니다. 제어기는 2개의 아날로그 입력 신

호를 가지고 있습니다.

9-2-1. Joystick 연결 구성

Joystick을 사용하기 위해서는 먼저 Joystick을 아날로그 입력 핀에 연결하여야 합니다.

[그림 9-8]은 제어기와 Joystick 연결을 보여주며, 그림과 같이 신호 선을 I/O 커넥터의 6

번 핀에 연결하면 됩니다.

[그림 9-8] 제어기와 Joystick(아날로그 입력) 연결

9-2-2. Joystick 사용을 위한 Motor Control UI 프로그램 설정

본 절은 단순히 joystick을 사용하기 위해 Motor Control UI에서 설정하는 방법을 설명

합니다. Motor Control UI 프로그램을 통해서 사용자가 빠르게 제어기의 성능과 Joystick

기능을 확인할 수 있습니다.

Page 95: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

93

※ Motor Control UI 프로그램 다운로드 및 설치 정상 유무는 8장 Motor Control UI

프로그램을 참고하기 바랍니다.

먼저 Motor Control UI 프로그램을 실행한 후 Configuration 메뉴를 클릭합니다. [그림

9-9]와 같이 Analog Inputs에서 사용자의 환경에 맞게 사용하고자 하는 아날로그 입력

채널을 활성화(Enable)합니다.

[그림 9-9] Joystick을 사용하기 위한 Analog Input - Enable 설정 화면

[그림 9-10]과 같이 사용자 환경에 맞게 아날로그 입력을 활성화(Enable) 한 후 Input

Port Mapping 메뉴에서 아날로그 입력을 어떤 특정 모터의 기능으로 설정할지를 선택합

니다. 그리고 마지막으로 Write Properties 버튼을 클릭하면 메모리에 저장하면 Joystick

이 연결됩니다.

※ 7-5-3절 Analog Input 포트를 참고하기 바랍니다.

Page 96: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

94

[그림 9-10] Analog Input - Mapping 설정 화면

Configuration 메뉴에서 Joystick 연결 설정이 끝나고 Motor Control 메뉴를 확인하면

[그림 9-11]과 같이 Analog Input is out of Center LED가 활성화 되어있는 것을 확인할

수 있습니다. 이는 모터 Power ON 전환 후 Analog Input 값이 Center에 있지 않은 상태

를 나타내며, 아날로그(Joystick) 입력 신호에 대한 Calibration 작업을 하지 않았기 때문

입니다.

[그림 9-11] Joystick 첫 연결 후 Motor Control 화면

Page 97: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

95

Calibration 작업을 하기 위해 다시 Configuration 메뉴로 돌아옵니다.

Joystick이 연결된 상태에서 Analog Input 1에 Calibration 옆에 버튼을 클릭하면 그

림 9-8과 같이 새로운 Calibration 설정 창이 팝업 됩니다. 새로 팝업 된 창에는

Calibration 버튼이 있는데 이를 클릭하면 Joystick을 움직여서 아날로그 입력 신호에 대

한 Calibration을 진행할 수 있습니다. 모든 Calibration 설정이 끝나면 다시 Calibration

버튼을 클릭합니다. 그러면 최종적으로 설정된 Calibration 값이 저장됩니다. 그리고 OK

버튼을 클릭합니다.

※ Dead-band와 Linearity에 관련된 내용은 9-4절 고급 기능을 참고하기 바랍니다.

[그림 9-12] Analog Input - Calibration 설정 화면

위에 작업을 Analog Input 2에서도 똑같이 반복한 후 마지막으로 Write Properties 버튼

을 클릭합니다. 그리고 Joystick을 움직여서 정상적으로 동작하는지 확인합니다.

Page 98: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

96

9-3. RC 조종기 연결

9-3-1. RC 조종기 연결 구성

RC 조종기를 사용하기 위해서는 먼저 조종기를 펄스 입력 핀에 연결하여야 합니다. [그

림 9-13]은 제어기와 RC 조종기 연결을 보여주며, 그림과 같이 신호 선을 I/O 커넥터의

7번 핀에 연결하면 됩니다.

[그림 9-13] 제어기와 RC 조종기 연결

9-3-2. RC 조종기 사용을 위한 Motor Control UI 프로그램 설정

본 절은 단순히 RC 조종기를 사용하기 위해 Motor Control UI에서 설정하는 방법을 설

명합니다. Motor Control UI 프로그램을 통해서 사용자가 빠르게 제어기의 성능과 RC 조

종기 기능을 확인할 수 있습니다.

※ Motor Control UI 프로그램 다운로드 및 설치 정상 유무는 8장 Motor Control UI

프로그램을 참고하기 바랍니다.

먼저 Motor Control UI 프로그램을 실행한 후 Configuration 메뉴를 클릭합니다. [그림

9-14]와 같이 Pulse Inputs에서 사용자의 환경에 맞게 사용하고자 하는 아날로그 입력

채널을 활성화(Enable)합니다.

Page 99: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

97

[그림 9-14] RC 조종기를 사용하기 위한 Pulse Input - Enable 설정 화면

[그림 9-15]와 같이 사용자 환경에 맞게 펄스 입력을 활성화(Enable) 한 후 Pulse

Capture Type과 Input Port Mapping 메뉴에서 펄스 입력을 어떤 특정 모터의 기능으로

설정할지를 선택합니다. 그리고 마지막으로 Write Properties 버튼을 클릭하면 메모리에

저장하면 RC 조종기와 연결됩니다.

※ 7-5-4절 Pulse Input 포트를 참고하기 바랍니다.

[그림 9-15] Pulse Input - Capture Type / Mapping 설정 화면

Page 100: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

98

Configuration 메뉴에서 RC 조종기 연결 설정이 끝나고 Motor Control 메뉴를 확인하

면 [그림 9-16]과 같이 Pulse Input is out of Center LED가 활성화 되어있는 것을 확인할

수 있습니다. 이는 모터 Power ON 전환 후 Pulse Input 값이 Center에 있지 않은 상태

를 나타내며, RC 조종기 입력 신호에 대한 Calibration 작업을 하지 않았기 때문입니다.

[그림 9-16] RC 조종기 첫 연결 후 Motor Control 화면

Calibration 작업을 하기 위해 다시 Configuration 메뉴로 돌아옵니다.

RC 조종기가 연결된 상태에서 Pules Input 1에 Calibration 옆에 버튼을 클릭하면

[그림 9-17]과 같이 새로운 Calibration 설정 창이 팝업 됩니다. 새로 팝업 된 창에는

Calibration 버튼이 있는데 이를 클릭하면 RC 조종기를 움직여 펄스 입력 신호에 대한

Calibration을 진행할 수 있습니다. 모든 Calibration 설정이 끝나면 다시 Calibration 버

튼을 클릭합니다. 그러면 최종적으로 설정된 Calibration 값이 저장됩니다. 그리고 OK 버

튼을 클릭합니다.

※ Dead-band와 Linearity에 관련된 내용은 9-4절 고급 기능을 참고하기 바랍니다.

Page 101: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

99

[그림 9-17] Pulse Input - Calibration 설정 화면

위에 작업을 Pulse Input 2에서도 똑같이 반복한 후 마지막으로 Write Properties 버튼을

클릭합니다. 그리고 RC 조종기를 움직여서 정상적으로 동작하는지 확인합니다. 만약 방

향이 정상적으로 동작하지 않는다면 RC 조종기의 채널 연결을 확인하기 바랍니다.

9-4. 고급 기능

9-4-1. Mixing 모드

Mixing 모드는 Analog Input 과 Pulse Input Mixing 기능은 하나의 제어기에 두 개의

모터를 가진 경우, 두 개의 제어기 모드가 동일하게 전압제어(Open-Loop) 모드 혹은

Closed-Loop 속도제어 모드로 설정된 경우에만 사용합니다.

Mixing 모드는 두 개의 입력을 전진속도와 회전속도로 보고 차동-바퀴형 이동체의 좌

우 바퀴 속도로 Mixing합니다. 그리고 최대값을 넘어가는 Mixing 결과를 어떻게 처리함

에 따라 [그림 9-18]과 같이 4가지 Mixing 모드로 나눌 수 있습니다. 사용자는 환경에

맞게 Separate 모드와 Mixing 모드를 선택해서 사용하면 됩니다.

Page 102: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

100

[그림 9-18] Joystick/RC Control and Safety - Mixing 설정 화면

[표 9-1] Mixing Mode 기능

기 능 내 용

Mixing Mode 1 최대값을 넘어가는 Mixing 결과에 대해 최소/최대 범위 내로 제한

Mixing Mode 2 최대값을 넘어가는 Mixing 결과에 대해 최대를 넘어간 비율대로 감소

Mixing Mode 3 최대값을 넘어가는 Mixing 결과에 대해 전진속도를 우선 적용

Mixing Mode 4 최대값을 넘어가는 Mixing 결과에 대해 회전속도를 우선 적용

9-4-2. Linearity

Linearity는 Analog Input과 Pulse Input만 가지는 기능이며, 입력 값의 Center 부근에서

반응성을 조절하기 위해 사용합니다. [그림 9-19]와 같이 Motor Control UI 프로그램에서

7개의 Linearity를 설정할 수 있습니다.

[그림 9-19] Analog Input 1 - Linearity 설정 화면

Page 103: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

101

linear (no change) y x=

exp weak 1.4y x=

exp medium 2y x=

exp strong 3y x=

log weak (1/1.4)y x=

log medium (1/2)y x=

log strong (1/3)y x=

[그림 9-20] Linearity 기능에 따른 그래프

[그림 9-21] 스틱(Stick) 위치에 따른 구분

Page 104: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

102

만약 사용자가 [그림 9-21]과 같이 스틱(stick)이 Forward / Reverse A 구간에 있을 때

모터의 속도가 천천히 증가하다가 Forward / Reverse B 구간으로 갈수록 속도가 점점 빠

르게 설정하고 싶을 때는 Linearity를 exp strong으로 설정하면 됩니다. exp strong과 반

대로 설정하고 싶을 때는 Linearity를 log strong으로 설정하면 됩니다.

9-4-2. Dead-band

Dead-band는 Analog Input과 Pulse Input - Calibration 설정에 있으며, 스틱의 중립 위

치에서 작은 입력 값을 무시하는 범위를 설정하는 메뉴입니다. 일부 Joystick 혹은 RC

조종기 모델은 스틱을 가만히 놓았을 때 완전한 중립 위치로 복귀하지 않는 경우가 있

습니다. 이런 경우가 발생하면 사용자가 눈으로 보기에 스틱이 중간에 있는 것처럼 보여

도 제어기에서는 마치 송신기의 키를 미세하게 움직이고 있는 상태로 인식하게 됩니다.

Dead-band 설정 시 설정 값이 너무 낮으면 스틱의 중립 위치를 인식하기 어렵게 되어

차동-바퀴형 이동체의 회전이나 조종이 어렵게 됩니다. 반대로 설정 값이 너무 높으면

스틱의 중립 위치부근의 무반응 영역이 너무 커져서, 정밀한 조종이 어렵게 됩니다. 따

라서 사용자는 환경에 따라서 Dead-band 영역을 테스트해보고 설정하여야 합니다.

[그림 9-22] Calibration – Dead-band

Page 105: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

103

9-5. 제어 대상에 따른 제어기 설정

각각 스펙이 다른 두 개의 모터와 NT-Commander 1 구동 로봇 설정 값을 하이퍼터미

널 혹은 Motor Control UI 프로그램을 이용해서 아래와 같이 설정하면 최적화된 Open-

Loop, 전류, 속도, 위치 제어를 할 수 있습니다.

※ 아래 설정 값은 초기 설정 값에서 변경된 부분만 보여주고 있으며, 당사 엔티렉스

의 환경에 맞는 설정 값입니다. 만약 사용자가 더욱 더 최적화된 제어를 원한다면 사용

자의 환경에 맞게 최적 값을 찾아서 설정해야 합니다. 모터의 설명서는 인터넷에서 모델

명을 검색하면 바로 찾을 수 있습니다.

[표 9-2] 제어 대상에 따른 설정 값

short

name 초기 설정

RB35GM 11type Motor MAXON 323890 Motor

& MAXON Gear 326665

&

np1/2 -10000 -10000000 -10000000

xp1/2 10000 -10000000 -10000000

ep1/2 2048 54 2000

xc1/2 10 2 2

xvt1/2 24 12 12

xv1/2 3000 6100 3550

ac1/2 3000 6100 3550

dc1/2 3000 6100 3550

ocl1/2 15 10 10

pp1/2 1 5 1

pi1/2 0 0 0

pd1/2 0 0.05 0

vp1/2 0.02 0.5 0.02

vi1/2 0.01 2 0.01

vs1/2 0 0 0

cp1/2 0.1 1 1

ci1/2 50 100 150

cff1/2 0 0 0

cm 0 0 0

Page 106: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

104

[그림 9-23]부터 [그림 9-25]는 Motor Control UI 프로그램의 Real-time Plot를 통해 위

와 같이 설정 된 RB35GM 11Type Motor의 전류(A), 속도(RPM), 위치(Pulse) 등의 레퍼런

스 값과 실제 값을 그래프로 확인한 결과입니다.

[그림 9-23] RB35GM 11Type Motor의 타겟 전류와 실제 전류 (-2~2A)

[그림 9-24] RB35GM 11Type Motor의 타겟 속도와 실제 속도 (-6100~6100 RPM)

Page 107: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

105

[그림 9-25] RB35GM 11Type Motor의 타겟 위치와 실제 위치 (-500~500 Pulse)

Page 108: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

106

10. 공장 출하 시 초기 설정

본 절은 제어기의 공장 출하 시 초기 설정 값들입니다.

※ 본 설정값은 추후 변경될 수도 있습니다. 사용자는 Motor Control UI 프로그램이나

통신을 통해서 초기 설정값을 확인한 후 변경된 설정값을 확인하기 바랍니다.

10-1. 내부 설정 변경

[표 10-1] 제어기의 파워 스테이지 스위칭 소자의 구동에 관련된 설정

short name (long name) [data type] index 초기 설정 값

ps (pwm_switching) [int8] 31 0

pf (pwm_frequency) [int8] 32 0

[표 10-2] 통신에 관련된 설정

short name (long name) [data type] index 초기 설정 값

id (device_id) [int32] 11 1

cb (can_br) [int32] 12 1000

sb1/2 (serial_bps) [int32] 13 115200

sw (serial_watchdog) [int32] 14 0

[표 10-3] 위치 센서에 대한 설정

short name (long name) [data type] index 초기 설정 값

np1/2 (min_position) [int32] 141 -10000

xp1/2 (max_position) [int32] 142 10000

ep1/2 (encoder_ppr) [int16] 144 2048

usl1/2 (use_soft_limit) [int8] 146 0

[표 10-4] 모터 구동 환경에 대한 설정

short name (long name) [data type] index 초기 설정 값

xc1/2 (max_current) [float] 151 10

xvt1/2 (max_voltage) [float] 152 24

Page 109: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

107

xv1/2 (max_velocity) [float] 153 3000

ac1/2 (acceleration) [float] 154 3000

dc1/2 (deceleration) [float] 155 3000

[표 10-5] 모터 드라이버(스위칭 모듈)의 환경 설정

short name (long name) [data type] index 초기 설정 값

ohl1/2 (overheat_limit) [float] 161 80

ocl1/2 (overcurrent_limit) [float] 162 15

ocd1/2 (overcurrent_delay) [int16] 163 10

pcr1/2 (peakcurrent_ratio) [float] 164 200

ovl1/2 (overvoltage_limit) [float] 165 35

uvl1/2 (undervoltage_limit) [float] 166 8

[표 10-6] 시스템 Fault 감지 조건 설정

short name (long name) [data type] index 초기 설정 값

sd1/2 (stall_detection) [int8] 167 0

ved1/2 (vel_error_detection) [int8] 168 0

ped1/2 (pos_error_detection) [int8] 169 0

[표 10-7] 제어기 시작 시 모터 구동과 관련된 설정

short name (long name) [data type] index 초기 설정 값

spo1/2 (startup_power_on) [int8] 173 1

bod1/2 (brake_on_delay) [int16] 175 0

dir1/2 (direction) [int8] 174 0/1

hv1/2 (high_voltage) [int16] 176 28

ht1/2 (ht_temperature) [int16] 177 64

Page 110: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

108

10-2. 내부 제어기의 설정

[표 10-8] 피드백 센서의 선택 및 프로파일 적용 여부

short name (long name) [data type] index 초기 설정 값

fs1/2 (feedback_sensor) [int8] 171 1

pm1/2 (profile_mode) [int8] 172 1

[표 10-9] 위치 제어기의 내부 제어 게인

short name (long name) [data type] index 초기 설정 값

pp1/2 (pc_kp) [float] 1 1

pi1/2 (pc_ki) [float] 192 0

pd1/2 (pc_kd) [float] 193 0

pa1/2 (pc_ka) [float] 194 1

[표 10-10] 속도 제어기의 내부 제어 게인

short name (long name) [data type] index 초기 설정 값

vp1/2 (vc_kp) [float] 186 0.02

vi1/2 (vc_ki) [float] 187 0.01

vs1/2 (vc_ks) [float] 190 0

[표 10-11] 전류 제어기의 내부 제어 게인

short name (long name) [data type] index 초기 설정 값

cp1/2 (cc_kp) [float] 181 0.1

ci1/2 (cc_ki) [float] 182 50

cff1/2 (cc_kff) [float] 185 0

Page 111: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

109

10-3. 외부 IO에 대한 설정

[표 10-12] Digital Input 포트의 설정에 사용되는 변수

short name (long name) [data type] index 초기 설정 값

ndi (num_di) [int8] 60 2

die (di_enable) [int32] 61 0

dii (di_invert) [int32] 62 0

di (di_all_values) [int8] 63 0

div1/2 (di_value) [int8] 201 1

dif1/2 (di_function) [int16] 202 2/257

[표 10-13] Digital Output의 설정에 사용되는 변수

short name (long name) [data type] index 초기 설정 값

ndo (num_do) [int8] 65 2

doe (do_enable) [int32] 66 0

doi (do_invert) [int32] 67 0

do (do_all_values) [int8] 68 0

dov1/2 (do_value) [int8] 211 0

dof1/2 (do_function) [int16] 212 0

[표 10-14] Analog Input의 설정에 사용되는 변수

short name (long name) [data type] index 초기 설정 값

nai (num_ai) [int8] 70 0

aie (ai_enable) [int32] 71 0

aii (ai_invert) [int32] 72 0

aiv1/2 (ai_value) [int32] 221 0

aicv1/2 (ai_converted_value) [float] 222 0

ail1/2 (ai_linearity) [int8] 223 0

aif1/2 (ai_function) [int16] 224 1/257

ain1/2 (ai_input_min) [int32] 225 0

aic1/2 (ai_input_center) [int32] 226 2047

aix (ai_input_max) [int32] 227 4095

aidb (ai_input_deadband) [int32] 228 80

Page 112: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

110

[표 10-15] Pulse Input의 설정에 사용되는 변수

short name (long name) [data type] index 초기 설정 값

npi (num_pi) [int8] 75 2

pie (pi_enable) [int32] 76 0

pii (pi_invert) [int32] 77 0

piv1/2 (pi_value) [int32] 231 0

picv1/2 (pi_converted_value) [float] 232 0

pit1/2 (pi_capture_type) [int8] 233 0

pil1/2 (pi_linearity) [int8] 234 0

pif1/2 (pi_function) [int16] 235 1/257

pin1/2 (pi_input_min) [int32] 236 1000

pic1/2 (pi_input_center) [int32] 237 1500

pix1/2 (pi_input_max) [int32] 238 2000

pidb1/2 (pi_input_deadband) [int32] 239 20

10-4. 스크립트(Script)에 대한 설정

[표 10-16] Script 관련된 설정 변수

short name (long name) [data type] index 초기 설정 값

ssr (startup_script_run) [int8] 16 0

Page 113: MW DCM01 User Manual v1.0 - NTREXGO · 2013. 10. 8. · MoonWalker Motor Controller 3 7-1-4-3. 변수에 내용을 쓰기 – 명령을 인가하기 35 7-1-4-4. 변수 읽기/쓰기

MoonWalker Motor Controller

111

11. 제품의 보증

1. 본 제품은 엄정한 품질관리 및 검사과정을 거쳐서 만들어 진 제품입니다.

2. 제품 구입 후 6개월 이내에 제품 고장 발생 시에 무상으로 A/S를 해드립니다.

3. 소 소비자의 정상적인 사용 상태에서 고장이 발생하였을 경우 보증기간 동안은 무상

으로 A/S를 해드립니다.

4. 제품 보증기간이 경과한 후에 고장이 발생할 경우 유상으로 A/S를 해드립니다.

5. 보증기간 이내라 하더라도 본 보증 이내의 유상 서비스 안내에 해당되는 경우 서비스

따라 유상으로 A/S를 해드립니다.

6. 오용, 남용 및 인가되지 않은 인력에 의한 수리, 부적절한 보관상태 자연 재해로 인한

파손은 유상으로 A/S를 해드립니다.

회 사 명 (주)엔티렉스

본 사 주 소 인천 남구 주안동 5-38 (주)엔티렉스

전 화 번 호 070 - 7019 - 8887

팩 스 번 호 02 - 6008 - 4953

E – Mail 기술문의 - [email protected]

영업문의 - [email protected]

홈 페 이 지 www.ntrexgo.com

www.devicemart.co.kr