mw dcm01 user manual v1.0 - ntrexgo · 2013. 10. 8. · moonwalker motor controller 3 7-1-4-3....
Post on 24-Jan-2021
7 Views
Preview:
TRANSCRIPT
MoonWalker MW DCM 01
User’s Manual
ver. 1.00
Updated in September 2013
http://ntrexgo.com
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
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
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
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
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
MoonWalker Motor Controller
6
10. 공장 출하 시 초기 설정 106
10-1. 내부 설정 변경 106
10-2. 내부 제어기의 설정 108
10-3. 외부 IO에 대한 설정 109
10-4. 스크립트(Script)에 대한 설정 110
11. 제품의 보증 111
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 카테고리를 방문하면 됩니다.
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 영역 설
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를 사용한 에러, 동작, 통신상태 표시 기능
MoonWalker Motor Controller
10
2. 개요
2-1. 사용 전 유의 사항
- 인명이나 재산상의 영향이 큰 기기, 또는 이동형 로봇에 사용할 경우 안전장치(fuse,
기계적 브레이크 장치)을 설치 후 사용 하시길 권장 합니다.
- 제품을 분해 또는 개조하지 마십시오. 화재, 감전 및 파손의 위험이 있습니다.
- 제품의 주변에 폭발성 물질이나, 인화성 가스가 있는 장소, 부식성 분위기, 물이 닿을
가능성이 있는 장소, 가연성 물질이 있는 부근에서는 사용을 피하여 주십시오. 화재의
위험이 있습니다.
- 전원을 연결할 경우 반드시 극성(배터리 단자)을 확인하여 주시기 바랍니다. 역극성
입력에 의한 파손은 치명적이므로 수리가 불가하니 유의하시기 바랍니다.
- 전원을 연결하기 전 구동 모드의 설정 상태를 확인하여 주시기 바랍니다.
- 모터 드라이버의 정격 전압 이상의 과도한 전압을 인가하지 마십시오.
- 모든 선의 연결 또는 제거를 할 때 전원이 꺼져 있는지 확인 하시기 바랍니다.
- 제품을 장시간 운전 중 이거나 또는 전원을 끄고 잠시 동안은 만지지 마십시오. 방열
판의 열에 의한 화상의 위험이 있습니다.
- 전원이 인가된 상태에서는 이동, 설치, 접속, 점검 등의 작업을 하지 마십시오. 오작동
의 원인이 되기 때문에 반드시 전원을 차단 후 실시하여 주십시오.
- 비 정상적으로 전원을 차단 하였을 경우, 다시 전원 인가 시 전체적인 설정 상태를 재
확인 하시기 바랍니다. 갑작스런 모터 기동으로 인한 상해의 위험이 있습니다.
- 방열 및 성능 향상을 위하여 통풍이 잘 되도록 유지하여 주시기 바랍니다.
- 장시간 연속 구동 시 되도록 방열판의 열을 흡수할 수 있는 형태의 샷시에 마운트 시
켜 주시고, 2차 방열판을 권장 합니다.
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
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] 제어기 외부 구성 (정면)
리셋 스위치는 단순히 짧게 한 번 누르는 것으로는 동작하지 않습니다. 아래 두 가지
사항에 따라 리셋 스위치가 동작합니다.
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가 모두 동시에 켜지거나 꺼져있는 상태인 경우
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개를 연결할 수 있는 커넥터
가 있습니다.
MoonWalker Motor Controller
15
[그림 2-4] 제어기 외부 구성 (아래)
※ 주 전원 단자에 배터리와 같은 전원 공급 장치와 연결할 때 반드시 극성(+, -)에 주
의해서 연결해야 합니다.
※ DC 모터를 연결할 때는 사용자가 고려하고 있는 방향성에 맞게 연결하여야 합니다.
만약 모터의 극성이 반대로 연결되면 모터가 역방향으로 회전합니다.
3. 전원 및 모터의 연결
[그림 3-1] 제어기와 모터 및 배터리 연결 예시
본 절의 모든 내용은 중요하므로 꼭 숙지하기 바랍니다. 그래야만 제어기와 모터 혹은
사용자가 구성한 주변 회로를 보호할 수 있습니다.
사용자는 [그림 3-1]처럼 적절한 용량에 맞는 퓨즈(Fuse)를 연결하기를 권장합니다. 퓨
즈는 사용하고자 하는 용량의 80~90% 선의 용량을 선택하기를 권장합니다. 만약 본 제
어기의 퓨즈를 선정할 때는 안전을 위해 두 모터의 용량을 합에서 80~90% 사이의 용량
을 선택하는 것을 권장합니다.
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)에 연결하면 됩니다.
MoonWalker Motor Controller
17
[그림 4-2] CAN 통신을 위한 기본 연결
이때 CAN 통신 종단에 120Ω 저항을 달아 줌으로서 CAN H와 CAN L 사이의 전압을
2V로 유지해 줌으로써 버스라인 종단에서 데이터가 중첩될 가능성이 있는 메아리 현상
을 제거해줍니다.
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은 근접센서, 터치센서 등의 외부 입력 신호를 받으면 모터 정지, 정/역방
향 리미트 기능을 실행할 수 있습니다.
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 연결
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 연결
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)하
기 위한 소자들이 구성되어 전류제어기의 피드백 소스를 제공하고 있고, 방열판에는 온
도 센서를 장착하여 제어기의 과열을 감지하여 알람 혹은 비상 정지용으로 사용하고 있
습니다. 그리고 배터리의 저전압이나 과전압을 감지하기 위한 전압 감지용 소자도 설치
되어 있습니다.
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)는 사용자가 원하는 위치 명령을 받으
면 그에 맞는 속도 명령을 생성할 때, 급가감속을 하지 않도록 사다리꼴로 속도 프로파
일을 만드는 역할을 수행합니다. 사용자 설정에 따라 프로파일 생성기를 사용하지 않을
수도 있습니다.
MoonWalker Motor Controller
23
6-2-2. 전류 제어기
[그림 6-3] 제어기 내부에 설계된 전류 제어기
전류 제어기는 모터의 현재 속도(), 모터에 흐르는 현재 전류(), 속도 제어기에서 내
려온 전류 명령( )이 전체 입력으로 인가되며, 동작 주파수 는 = 10입니다.
또한, PI 제어기로 구현되어 있으며, 이때 사용하는 비례 게인은 이고 적분 게인은 입니다.
전류 제어기에는 안티와인드업(Anti-Windup) 제어기가 설계되어 있습니다. 먼저 와인드
업(Windup) 현상은 적분 제어기에 누적된 값이 제어기의 제한 폭을 넘어서 제어입력이
쌓이게 되는 경우를 말합니다. 와인드업 현상이 발생하면 제어기의 입력 부호가 바뀌어
도 누적된 적분 제어기로 인해 실제 모터의 방향이 바뀌지 않는 현상이 생기게 됩니다.
그래서 적분기에 누적된 수치가 제어기 출력의 제한 값에 따라 포화되지 않도록 제한하
는 기능이 필요하며 이것을 안티와인드업 제어기라고 합니다. [그림 6-3]에서 가 안티
와인드업 제어기의 게인입니다.
DC 모터는 회전속도에 비례해서 모터가 발생하는 힘인 토크를 방해하는 요소들이 있습
니다. 이 중에 가장 많은 영향을 미치는 것 중 하나가 역기전력(Back EMF)입니다. 역기
전력은 모터의 회전속도에 비례해서 모터의 토크를 감소하게 만듭니다. 모터가 고속으로
회전하고 있을 때는 이 역기전력에 의한 모터 토크의 감쇠를 보상해 주어야 하는데, 이
를 전류 제어기에서는 전향 보상 이득 (단위: / )를 이용해서 보상하고 있습
니다.
MoonWalker Motor Controller
24
[표 6-1] 전류 제어기에서 사용하는 변수
변수이름 의미 단위 사용자 설정 가능 여부 비례 게인 - 가능 적분 게인 - 가능 안티와인드업 게인 - 불가능, = 역기전력 전향 보상 게인 - 가능 모터에 인가되는 최대 전압 V 가능
[표 6-1]에는 전류 제어기의 내부 변수가 정리되어 있습니다. 특히 사용자가 설정할 수
있는지 아닌지를 명시하고 있습니다. 특히 의 경우는 일반적으로 많이 사용하는 의
역수를 사용하도록 설정되어 있으며, 사용자가 설정할 수는 없습니다.
다음은 간단하게 전류 제어기의 비례, 적분 게인 값을 튜닝하는 방법에 대해 설명합니
다. 먼저 적분 게인 값을 0으로 설정한 후 비례 게인 값을 증가시킵니다. 비례 게인 값
을 통해서 실제 속도가 목표 전류(Reference Current)까지 어느 정도 도달되면 사용자의
환경에 따라 발생하는 편차를 줄이기 위해 적당한(Minimal Amount) 적분 게인 값을 설
정합니다.
※ 사용자는 위와 같은 튜닝을 통해서 테스트를 진행한 후 비례, 적분 게인 값을 찾아
설정해야 줘야 합니다.
6-2-3. 속도 제어기
[그림 6-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) 적분 게인 값을 설
정합니다.
※ 사용자는 위와 같은 튜닝을 통해서 테스트를 진행한 후 비례, 적분 게인 값을 찾아
설정해야 줘야 합니다.
MoonWalker Motor Controller
26
6-2-4. 위치 제어기
[그림 6-5] 제어기 내부에 설계된 위치 제어기
위치 제어기는 모터의 현재 위치( ), 사용자가 지정하는 위치 목표값( )이 입력으로
인가며, 동작 주파수 는 = 100 입니다. 위치 제어기는 PID 제어기로 구성되어
있으며, 사용하는 비례 게인은 이고 적분 게인은 , 미분 게인은 입니다. 위치 제
어기에 전류나 속도 제어기와 같이 안티와인드업 제어기가 설계되어 있으며, [그림 6-5]
에서 나타난 가 안티와인드업 제어기의 게인입니다.
[표 6-3] 위치 제어기에서 사용하는 변수
변수이름 의미 단위 사용자 설정 가능 여부 비례 게인 - 가능 적분 게인 - 가능 미분 게인 - 가능 안티와인드업 게인 - 불가능, = 속도 제어기에 인가되는
최대 속도 RPM 가능
다음은 간단하게 위치 제어기의 비례, 적분, 미분 게인 값을 튜닝하는 방법에 대해 설
명합니다. 먼저 적분 게인 값을 0으로 설정한 후 모터의 오버 슈트(Overshoots) 및 진동
(Oscillates)이 발생할 때까지 비례 게인 값을 증가시킵니다. 그리고 더 이상의 오버 슈트
가 발생하지 않으면 미분 게인 값을 설정하고 마지막으로 편차를 줄이기 위한 적당한
(Minimal Amount) 적분 게인 값을 설정합니다. 만약 오버 슈트가 계속 지속된다면 비례
MoonWalker Motor Controller
27
게인 값을 감소시켜야 합니다.
※ 사용자는 위와 같은 튜닝을 통해서 테스트를 진행한 후 비례, 적분, 미분 게인 값을
찾아 설정해야 줘야 합니다.
6-2-5. 프로파일 생성기
[그림 6-2]의 프로파일 생성기(Profile Generator)는 기본적으로 모터나 모터가 연결된
전체 시스템에 급격한 충격을 방지하기 위해 급가감속을 줄이는 역할을 수행합니다. 제
어기는 속도에 대해 사다리꼴의 프로파일을 생성하며, 사용자는 프로파일 생성 기능 자
체의 사용 여부를 선택할 수 있습니다.
제어기의 프로파일 생성기는 6-2-3절의 속도 제어기와 같은 동작 주파수를 가집니다.
또한, 사용자가 지정한 위치 명령( ), 6-2-4절의 위치 제어기가 생성한 속도 명령( ),
현재의 위치값( )과 위치값을 차분한 현재의 속도값( )을 입력으로 가집니다. 여기서
6-2-4절의 위치 제어기가 생성한 속도 명령과 프로파일 생성기가 생성하는 속도 제어기
에 인가할 속도 명령의 구분을 위해 위치 제어기가 생성한 속도 명령을 다시 로 합니
다.
[그림 6-6] 기본적인 사다리꼴 프로파일
사용자는 최대 허용 속도( )와 가속 구간의 기울기( ), 감속 구간의 기울기( )를
설정하여 사다리꼴 가감속 프로파일을 설정할 수 있도록 하고 있습니다. 만약 위치 제어
기를 사용하지 않고 속도 제어기를 동작시켜서 속도 명령을 사용자가 인가하는 경우라
면, 현재 속도 대비 높은 속도를 인가하면 가속 구간이, 낮은 속도를 인가하면 감속 구
간이 적용됩니다. 또한, 사용자가 설정한 최대 허용 속도( ) 보다 높은 속도를 인가
하면 제어기는 설정된 최대 허용 속도( )로만 동작을 하므로, 사용자는 사용하는 모
터와 환경에 따라 최대 허용 속도( )를 잘 설정해야 합니다.
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]에서 정의합
니다. 제어기 동작을 명령하거나 제어기의 특성을 설정하는 것은 내부의 해당 변수에 특
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는 ‘’ 기호로 대체합니다.
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
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 읽기 전용 변수에 쓰거나, 쓰기 전용 변수의 읽기
시도함
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
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절의 내용대로 변수의 내용을 읽거나 쓰기 위해 제어기에 명령을
인가했을 때, 오류가 발생하는 경우는 위 표의 형식으로 오류 메시지를 전달합니다. 오
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
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절의 내용대로 변수의 내용을 읽거나 쓰기 위해 제어기에 명령을
인가했을 때, 오류가 발생하는 경우는 위 표의 형식으로 오류 메시지를 전달합니다. 오
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 제어기에 연결 가능한 모터의 수를 확인
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 명령이 실행된 상태
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]와 같이 준
비하고 있습니다.
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 포트에 연결된 속도 센서의 피드백 값
(단위: ‰)
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까지 사
용자가 선택할 수 있도록 지원하고 있습니다.
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
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절의 내용대로 리셋 버튼을 이용하여 공장 초기화를 하드웨
어적으로 수행해야 하며 이 경우 사용자가 설정한 각종 설정도 함께 초기화가 되므로
주의해야 합니다.
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)
전류 제어기가 설정값 이상 초과하지 않도록 제어
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 상태
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
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)을 통해서 모터의 방향을 바꿔줄 수 있습니다.
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)
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)
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로
구성하는 특정한 기능은 다음과 같습니다.
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)로 로딩
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)
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 비트별 해당 아날로그 입력 극성 반전 여부 설정
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,
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 과정을 거친 후 최종 변환
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]로 표기된 기능은 아날로그 입력이 디지털 입력으로 매핑되는 경
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가지 메뉴와 메뉴별로 다양한 고급 기능을 가지고 있습
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
MoonWalker Motor Controller
58
Devices 버튼을 클릭합니다. 그러면 [그림 8-2]와 같이 해당 버튼 옆과 Controller List 탭
에 운용 가능한 연결된 제품명이 나타납니다.
[그림 8-2] Motor Control UI Program과 제어기의 연결화면
[그림 8-2]에 나타난 화면은 제어기와의 연결이 완료된 화면으로 아래와 같은 메시지를
보여줍니다.
COM11 #32(1) – MoonWalker DCM01(30V,3A)
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]와 같이 모터의 개략적인
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 메뉴 화면
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를 통해서 제어기의 현
재 상태와 상황을 확인할 수 있습니다.
동작 상태 활성화
동작 상태 비활성화
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에 있
지 않은 상태
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
위치 제어 모드에서 위치 오차가 지정된 값 이상이어서
위치 제어에 문제가 있는 것으로 판단 상태
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 메뉴 화면
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 메뉴 설정을 모두 접기
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에서는 이동 로봇의 바퀴의 지름, 좌우 바퀴간의 거리, 모터와
바퀴간 감속비율(모터 회전수/바퀴 회전수) 등 로봇의 기본 설정 값을 설정할 수 있습니
다.
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는 사용자가 사용하고자 하는 모터 자체의 특성치를 설정하는 메
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
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장을 참고하기 바랍니다.
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);
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에서 포인터 연산을 위해
사용하는 구조체 포인터의 항목 참조 연산자(->), 주소 연산자(&), 간접연산자(*) 등과 같
은 연산자는 제공하지 않습니다.
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로 지정된 외부 변수에 값을 기록
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 스위칭 소자의 구동 방법 선택
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 위치 제어기의 비례제어 게인
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 과정을 거친 후 최종 변환값 설정
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);
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 값을 실시간으로 그래프로 비교하
면서 확인할 수 있습니다.
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 제어를 위해 피드백 받는 여러 센서의 신호를 사용하지 않습니
다. 그래서 사용자가 구성한 모터 구동축에 연결된 여러 부하와 마찰력, 모터의 종류에
따라 같은 전압을 인가해도, 소모되는 전류나 속도는 다를 수 있습니다.
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 메뉴 화면
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. 전류 제어 설정 방법
전류 제어를 하기 전에 전압 제어를 위한 모터 특성치 및 구동부 설정과 한계치를 설
정하여야 합니다.
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] 전류 제어 테스트 화면
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 버튼을 순서대로 클
릭합니다.
MoonWalker Motor Controller
83
[그림 8-21] 속도 제어 테스트 화면
Configuration 메뉴에서 속도 제어를 위한 모든 설정이 끝나면 Motor Control 메뉴에서
속도 제어가 정상적으로 동작되는지 테스트를 합니다.
만약 타코메타를 이용해서 속도 제어를 할 경우에는 [그림 8-22]와 같이 Control
Feedback에서 Tachometer로 설정한 후 데이터를 메모리에 저장하면 됩니다.
[그림 8-22] Control Feedback - Tachometer 설정 화면
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 메뉴 화면
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 설정 화면
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은 모터 자체의 특성치를 설정하
는 메뉴로 사용하고자 하는 모터의 설명서와 스펙을 잘 숙지한 후 모터에 흐르는 최대
연속 전류, 모터를 구동하는 최대 전압, 모터의 최대 회전 속도, 모터의 회전 가속도, 모
터의 회전 감속도 값을 적용해 주시기 바랍니다.
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 작업은
필수로 진행해야 합니다.
MoonWalker Motor Controller
88
9. 참고 및 응용
9-1. 위치나 속도를 측정하는 센서의 연결
본 절은 제어기가 지원하는 다양한 외부 센서의 연결 법에 대해 설명합니다. 본 제어기
는 전압 / 속도 / 위치 제어기가 탑재되어 있습니다.
전류의 감지(Sensing)는 제어기 내부에서 이뤄지지만, 속도나 위치를 제어하고자 하는
경우 사용자는 해당 상태를 피드백 받는 센서를 사용해야 합니다.
일반적으로 많이 사용하는 Incremental형 엔코더와 BLDC 홀센서를 이용해서 속도 / 위
치 제어는 물론, Absolute형 엔코더, 타코메타(tachometer), 포텐셔미터(potentiometer)를
이용해서 속도 / 위치 제어가 가능합니다. 사용자는 아래 해당 장에서 사용자 환경에 맞
는 센서의 내용을 숙지하여, 본 제어기가 지원하는 센서의 범위나 사용법 등을 확인해야
합니다.
사용자는 아래 해당 장에서 사용자에게 맞는 센서의 내용을 숙지하여, 본 제어기가 지
원하는 센서의 범위나 사용법 등을 확인해야 하며, 속도나 위치를 제어하기 위해 사용되
는 센서들은 사용자 환경에 맞춰 충분한 성능이 보장되는 제품으로 선정해야 합니다.
마지막으로 센서와 모터를 선정하고 연결한 다음 반드시 사용자의 환경에 맞춰 성능테
스트를 해야 합니다.
9-2-1. Incremental형 엔코더와의 연결
[그림 9-1] 제어기 내부 엔코더 연결부 회로
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번 핀에 연결합니다.
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번 핀에 연
결합니다.
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번 핀에 연결합니다.
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
기능을 확인할 수 있습니다.
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 포트를 참고하기 바랍니다.
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 화면
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을 움직여서 정상적으로 동작하는지 확인합니다.
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)합니다.
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 설정 화면
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절 고급 기능을 참고하기 바랍니다.
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 모드를 선택해서 사용하면 됩니다.
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 설정 화면
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) 위치에 따른 구분
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
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
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)
MoonWalker Motor Controller
105
[그림 9-25] RB35GM 11Type Motor의 타겟 위치와 실제 위치 (-500~500 Pulse)
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
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
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
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
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
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 기술문의 - lab@ntrex.co.kr
영업문의 - stock@ntrex.co.kr
홈 페 이 지 www.ntrexgo.com
www.devicemart.co.kr
top related