MoonWalker Series Motor Controllers User’s Manual 07. 모터제어기
MoonWalker Series
Motor Controllers
User’s Manual
MW-MDC24D100S / MW-MDC24D100D
MW-MDC24D200S / MW-MDC24D200D
MW-MDC24D500S / MW-MDC24D500D
※ 사용자 매뉴얼에 포함된 정보는 정확하고 신뢰성이 있는 내용입니다. 그러나 출판 당시 발견되지 않은 오류가 있을 수 있으니 사용자는 자신의 제품 검증을 수행하시기 바라며, 전적으로 사용자 매뉴얼에 포함된 정보에 의존하지 마시기 바랍니다.
7. 모터제어기
이번 장에서는 설명하는 모터제어기는 제어기의 마이크로컨트롤러 상에서 실행되는 소프트웨어 알고리즘으로 하드웨어를 배제한 부분입니다. 모터제어기의 구성은 다음 그림 7‑1과 같이 폐루프 위치, 속도, 전류 제어기와 프로파일 생성기(Profile Generator), 각종 오브젝트, 외부와 데이터 교환을 위한 입출력 버퍼로 구성됩니다.
그림 7‑1 모터제어기의 구조와 입출력 인터페이스 |
모터제어기의 오브젝트는 모터의 특성(Motor Properties), 제어기 이득(Controller Gains), 센서 측정(Sensor Measured)값 등 여러 오브젝트로 구성됩니다. 자세한 내용은 “11 모터제어기 오브젝트”을 참조하기 바랍니다.
모터제어기의 명령은 USB, RS-232, CAN, 스크립트를 통해 직접 명령 버퍼(Command buffers)에 들어오기도 하고 Joystick이나 RC radio에서 입력된 신호가 스케일 변환(Scaling) 과정을 거쳐 명령 버퍼에 들어오기도 합니다.
모터제어기의 피드백은 두 가지 경로를 사용하는데, 첫 번째 경로는 엔코더, 홀센서, 전류센서에서 측정한 값을 저장하는 오브젝트(Position, Velocity, Current)를 거치는 경로입니다. 두 번째 경로는 아날로그/펄스 입력 포트에 연결된 센서로부터 측정한 값을 저장하는 피드백 버퍼(Feedback buffers)를 거치는 경로입니다. 모터제어기는 사용자가 선택한 피드백 센서의 종류에 따라 어느 피드백을 사용할 지 결정하게 됩니다.
모터제어기는 모터가 Power ON 상태에서만 동작합니다. 모터가 Power OFF 상태일 때는 먼저 모터를 Power ON 상태로 변경해야 합니다. . “11.2.1 command – Command”를 참조하기 바랍니다.
7.1 모터제어기의 입출력 기능
소프트웨어 알고리즘으로 구현된 모터제어기가 제어기의 통신포트와 I/O 포트를 통해 센서, 액츄에이터, 스위치, 부저, LED 등과 데이터를 주고받기 위해 입출력 버퍼를 거치게 됩니다.
입출력 버퍼는 모터제어기가 가지고 있는 가상의 I/O입니다. 입출력 버퍼는 명령 버퍼(Command buffers)와 피드백 버퍼(Feedback buffers), 디지털 입력 버퍼(Digital Input buffers), 디지털 출력 버퍼(Digital Output buffers)로 구성됩니다.
7.1.1 명령 입력 기능
구동 명령은 명령 버퍼(Command buffers)를 통해 모터제어기에 전달됩니다. 명령 버퍼에는 시리얼 통신(USB, RS-232, CAN)이나 외부 아날로그/펄스 입력 포트, 스크립트에 의해 내려지는 위치, 속도, 전류, 전압 명령을 저장합니다. 명령의 종류는 다음 표를 참고하십시오.
표 7‑1 모터제어기의 명령 버퍼의 기능
Buf. # |
Function(Command) |
Description |
1 |
Voltage Command |
모터제어기에 전압 명령을 내림 모터제어기는 전압출력 모드가 됨 |
2 |
Current Command |
모터제어기에 전류 명령을 내림 모터제어기는 전류제어 모드가 됨 |
3 |
Velocity Command |
모터제어기에 속도 명령을 내림 모터제어기는 속도제어 모드가 됨 |
4 |
Position Command |
모터제어기에 위치 명령을 내림 모터제어기는 위치제어 모드가 됨 |
상기 표에서와 같이, 4종류의 명령이 있지만 둘 이상의 명령이 동시에 수행될 수는 없습니다. 모터제어기는 한 순간에 오직 한 가지 명령만 수행 가능합니다. 명령의 수행 도중 다른 종류의 명령이 들어오면, 모터제어기는 마지막으로 내려진 명령에 따라 동작모드를 결정합니다.
만일 시리얼 포트로 “voltage_command = 12″와 같은 명령이 내려졌다면, 명령 버퍼 1번에 12가 쓰여지고 제어기의 동작모드는 전압출력 모드가 됩니다. 그리고 다른 명령이 내려지기 전까지 모터에 12V 전압을 지속적으로 출력합니다.
다른 예로, “velocity_command = 500″과 같은 명령이 내려졌다면, 명령 버퍼 3번에 500이 쓰여지고 제어기의 동작모드는 속도제어 모드가 됩니다. 그리고 속도제어기와 전류제어기가 동작하여 모터의 속도가 500RPM이 되도록 제어합니다.
7.1.2 피드백 입력 기능
센서 측정 값은 피드백 버퍼(Feedback buffers)를 통해 폐루프 위치 혹은 속도 제어기에 전달됩니다. 피드백 버퍼는 외부 아날로그 입력이나 펄스 입력 포트에 연결된 포텐셔미터/타코미터로부터 측정한 위치/속도 값을 저장합니다. 피드백의 종류와 기능은 다음 표를 참고하십시오.
표 7‑2 모터제어기의 피드백 버퍼의 기능
Buf. # | Function(Feedback) | Description |
1 | Position Feedback | 위치 센서의 피드백 값 |
2 | Velocity Feedback | 속도 센서의 피드백 값 |
‘Buf. 1 – Position Feedback’은 포텐셔미터와 같은 모터의 회전각을 측정하는 센서로부터의 정규화된 위치 입력 값을 저장합니다.
‘Buf. 2 – Velocity Feedback’은 타코미터와 같은 모터의 회전속도를 측정하는 센서로부터의 정규화된 속도 입력 값을 저장합니다.
피드백 기능을 사용하기 위해서는 ‘Feedback Sensor’로 해당 피드백 센서가 선택되어 있어야 합니다. “11.9.1 feedback_sensor – Feedback Sensor”를 참조하기 바랍니다.
7.1.3 디지털 입력 기능
외부 디지털 입력이나 아날로그 입력, 펄스 입력 포트에 연결된 스위치나 센서는 디지털 입력 버퍼(Digital Input buffers)를 통해 모터제어기의 기능을 실행합니다. 디지털 입력 버퍼는 모터제어기의 특정 동작(Action)과 연결되어, 입력 버퍼에 특정 값을 씀으로 연결된 동작을 트리거 할 수 있습니다. 동작의 종류와 기능은 다음 표를 참고하십시오.
표 7‑3 모터제어기의 디지털 입력 버퍼의 동작
Buf. # |
Function(Action) |
Description |
1 | Emergency Stop | 모터에 공급되는 전원을 차단함, 입력이 1인 동안 모터 Power ON 불가능 |
2 | Quick Stop | 모터를 빠르게 정지함, 입력이 1인 동안 모터의 구동은 불가능 |
3 | Slowdown Stop | 모터를 감속하여 정지함, 입력이 1인 동안 모터의 구동은 불가능 |
4 | Run Scrip | 스크립트의 실행과 중단 |
5 | Forward Limit | 정방향 리미트 센서가 감지됨, 입력이 1인 동안 정방향 구동 명령은 수행 불가능 |
6 | Reverse Limit | 역방향 리미트 센서가 감지됨, 입력이 1인 동안 역방향 구동 명령은 수행 불가능 |
7 | Invert Direction | 입력이 1인 동안 모터의 회전 방향을 반대로 바꿈 |
8 | Load Home Counter | 모터의 홈 위치 센서가 감지됨, home_position의 값을 현재 위치(position)로 로딩 |
액션들은 보통 입력이 0에서 1로 트리거 될 때 해당 동작을 수행하고 1이 유지되는 동안 활성화 상태를 유지합니다. 입력이 0이 되면 비활성화 됩니다.
‘Buf. 1 – Emergency Stop’은 제어기가 가진 다른 동작들에 비해 우선 순위가 가장 높으며(“7.1.5 입력 기능의 우선순위” 참조) 어떠한 상황에서도 우선적으로 실행됩니다. 이 동작이 트리거 되면 모터를 Power OFF 한 후, 입력이 1인 동안 모터 구동에 관련된 모든 명령과 동작의 수행을 차단합니다. 0이 될 때 모터는 자동으로 Power ON 되지 않습니다.
‘Buf. 2 – Quick Stop’이 트리거 되면 모터를 가능한 빠르게 정지합니다. 그리고 입력이 1인 동안 위치, 속도, 전류, 전압 명령은 차단됩니다.
‘Buf. 3 - Slowdown Stop’이 트리거 되면 모터를 감속하여 정지합니다. 그리고 입력이 1인 동안 위치, 속도, 전류, 전압 명령은 차단됩니다.
‘Buf. 4 - Run Script’는 스크립트의 실행과 중단을 결정합니다. 입력이 0에서 1로 바뀔 때 스크립트의 실행을 시작하고 1인 동안 스크립트는 계속 실행됩니다. 이때 스크립트의 실행이 종료되더라도 스크립트를 다시 시작하지는 않습니다. 입력이 1에서 0으로 바뀔 때 스크립트가 실행 중이라면 실행을 중단합니다.
‘Buf. 5/6 - Forward/Reverse Limit’은 모터의 구동 범위 양단에 설치된 리미트 센서의 입력을 모터제어기에 알려줍니다. 입력이 트리거 되면 ‘Buf. 2 – Quick Stop’이 실행된 것과 같이 동작합니다. 그리고 입력이 1인 동안 리미트 센서를 벗어나는 방향으로의 위치, 속도, 전류, 전압 명령을 차단합니다.
‘Buf. 7 - Invert Direction’은 모터의 회전 방향을 반대로 바꿉니다. 이는 모터에 내려지는 명령의 부호를 바꿈으로 실행됩니다. 즉, 입력이 1인 동안 모터에 내려지는 명령의 부호는 반대가 됩니다.
‘Buf. 8 - Load Home Counter’는 홈 센서가 감지되었음을 모터제어기에 알려줍니다. 입력이 트리거 되면 모터의 위치에 홈 위치를 로드 합니다.
정지와 관련된 액션들(‘Buf. 2 – Quick Stop’, ‘Buf. 3 – Slowdown Stop’, ‘Buf. 5 – Forward Limit’, ‘Buf. 6 – Reverse Limit’)은 AND 조건으로 적용됩니다. 예를 들자면, ‘Buf. 5 – Forward Limit’과 ‘Buf. 6 – Reverse Limit’ 액션이 동시에 ON 되면 모터는 ‘Buf. 2 – Quick Stop’ 액션과 같이 어떠한 방향으로도 움직일 수 없게 됩니다.
7.1.4 디지털 출력 기능
모터제어기의 상태(Status)는 디지털 출력 버퍼(Digital Output buffers)를 통해 외부 디지털 출력 포트로 전달됩니다. 외부 디지털 출력 포트에는 Buzzer, LED, 냉각 팬 등이 연결되어 모터제어기의 상태를 물리적으로 표현할 수 있습니다. 상태의 종류와 기능은 다음 표를 참고하십시오.
표 7‑4 모터제어기의 디지털 출력 버퍼의 상태
Buf. # | Function(Status) | Description |
1 | Motor Power ON | 모터에 전원이 공급되는 상황 |
2 | Motor is Reversed | 모터가 역방향으로 회전하는 상황 |
3 | High Voltage | 모터제어기에 과전압이 걸린 상황 |
4 | High Temperature | MOSFET와 방열판이 과열된 상황 |
디지털 출력 버퍼의 값은 0이나 1의 상태를 가집니다. 보통 1이면 제어기 외부에 연결된 장치를 enable 시키고 0이변 disable 시키도록 동작합니다.
‘Buf. 1 - Motor Power ON’ 기능은 모터에 전원이 공급되는 상황을 표시합니다. 이 기능은 모터의 브레이크를 해제하거나 모터의 Power ON/OFF 상황을 표시하는 램프를 켜고 끄는데 사용될 수 있습니다.
‘Buf. 2 - Motor is Reversed’ 기능은 모터가 역방향으로 회전하는 상황을 표시합니다. 이 기능은 차량에서 후진 경고 표시등이나 알람을 켜고 끄는데 사용될 수 있습니다.
‘Buf. 3 - High Voltage’ 기능은 모터의 역기전력으로 인해 전원의 전압이 높아진 상황을 표시합니다. 이 기능은 역기전력을 열로 소모하기 위한 제동저항(Brake Resistor)을 켜고 끄는데 사용될 수 있습니다.
‘Buf. 4 - High Temperature’ 기능은 제어기 방열판의 온도가 높아진 상황을 표시합니다. 이 기능은 방열판을 냉각하기 위한 냉각 팬을 켜고 끄는데 사용될 수 있습니다.
7.1.5 입력 기능의 우선순위
모터제어기에는 여러 명령이나 액션들이 동시에 내려질 수 있습니다. 이때 명령이나 액션이 적용되는 우선 순위는 표 7‑5와 같습니다. 여기서 숫자가 적을수록 우선 순위가 높습니다. X로 표시된 것은 우선순위가 적용되지 않는 입력 입니다.
‘Emergency stop’ 액션이 우선 순위가 가장 높으며, 두 번째로는 모터의 정지와 관련된 액션들입니다. 위치, 속도, 전류, 전압 명령이 우선 순위가 가장 낮습니다. 즉, 긴급 정지 기능은 어떠한 경우에도 동작하며, 모터 속도 명령이 내려지는 중이라도 정지와 관련된 액션들로 언제든 모터를 정지할 수 있습니다.
표 7‑5 명령 및 액션이 적용되는 우선 순위
Priority | Function |
1 | Emergency stop |
2 | Quick stop, Slowdown Stop, Forward Limit, Reverse Limit |
3 | Voltage Command, Current Command, Velocity Command, Position Command |
X | Run Scrip, Invert Direction, Load Home Counter, Position Feedback, Velocity Feedback |
7.2 명령과 피드백의 스케일 변환
스케일 변환(Scaling)은 조이스틱이나 RC수신기를 아날로그/펄스 입력 포트에 연결하여 모터제어기를 구동하거나 포텐셔미터나 타코미터를 아날로그/펄스 입력 포트에 연결하여 모터의 위치와 속도를 모터제어기에 피드백 할 때 필요합니다.
외부 아날로그 입력이나 펄스 입력 포트를 통해 캡쳐 되는 데이터는 변환 과정을 거쳐 -1과 1사이의 정규화 된 값입니다. 이 값을 모터제어기의 명령이나 피드백으로 사용하기 위해서는 모터제어기 내부에서 사용하는 변수(위치, 속도, 전류, 전압) 단위와 일치시켜야 합니다(표 7‑6 참조).
표 7‑6 모터제어기의 위치, 속도, 전류, 전압 단위
Object Class | Unit |
Position | pulse |
Velocity | RPM |
Current | A |
Voltage | V |
스케일 변환에 사용되는 모터 속성과 위치센서 속성은 다음과 같습니다:
max_position – Max Position
min_position – Min Position
max_velocity – Max Velocity
max_current – Max Current
max_voltage – Max Voltage
encoder_ppr – Encoder PPR
7.2.1 위치 명령 스케일 변환
외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 위치 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 위치 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 위치 명령으로 사용하기 위해 다음과 같이 변환되어 위치 명령 버퍼에 저장됩니다.
Position Command =
0.5 x ((Max Position – Min Position) x Position Input + Max Position + Min Position)
여기서 ‘Position Input’은 위치 입력 값이고 ‘Position Command’는 위치 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [pulse]입니다.
7.2.2 속도 명령 스케일 변환
외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 속도 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 속도 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 속도 명령으로 사용하기 위해 다음과 같이 변환되어 속도 명령 버퍼에 저장됩니다.
Velocity Command = Max Velocity x Velocity Input
여기서 ‘Velocity Input’은 속도 입력 값이고 ‘Velocity Command’는 속도 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [RPM]입니다.
7.2.3 전류 명령 스케일 변환
외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 전류 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 전류 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 전류 명령으로 사용하기 위해 다음과 같이 변환되어 전류 명령 버퍼에 저장됩니다.
Current Command = Max Current x Current Input
여기서 ‘Current Input’은 전류 입력 값이고 ‘Current Command’는 전류 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [A]입니다.
7.2.4 전압 명령 스케일 변환
외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 전압 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 전압 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 전압 명령으로 사용하기 위해 다음과 같이 변환되어 전압 명령 버퍼에 저장됩니다.
Voltage Command = Max Voltage x Voltage Input
여기서 ‘Voltage Input’은 전압 입력 값이고 ‘Voltage Command’는 전압 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [V]입니다.
7.2.5 위치 피드백 스케일 변환
외부 아날로그 입력이나 펄스 입력 포트에 연결된 포텐셔미터가 모터제어기의 위치 피드백 버퍼에 연결된 경우, 모터제어기의 위치 피드백 버퍼에 저장되는 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 위치 피드백으로 사용하기 위해 다음과 같이 변환됩니다.
Position =
0.5 x ((Max Position – Min Position) x Position Feedback + Max Position + Min Position)
여기서 ‘Position Feedback’는 위치 피드백 버퍼의 값이고 ‘Position’는 변환된 위치 값입니다. 변환된 값의 단위는 [pulse]입니다.
위치 피드백 값으로부터 모터의 회전 속도는 다음과 같이 계산됩니다.
Velocity = 60 x ΔPosition / (Encoder PPR x Δt)
여기서 ‘ΔPosition’는 현재 시각에서의 위치 값과 Δt 이전 시각에서의 위치 값의 차입니다. Δt는 위치를 샘플링 하는 주기로 0.001[sec] 입니다. 계산된 회전 속도의 단위는 [RPM] 입니다.
7.2.6 속도 피드백 스케일 변환
외부 아날로그 입력이나 펄스 입력 포트에 연결된 타코미터가 모터제어기의 속도 피드백 버퍼에 연결된 경우, 모터제어기의 속도 피드백 버퍼에 저장되는 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 속도 피드백으로 사용하기 위해 다음과 같이 변환됩니다.
Velocity = Max Velocity x Velocity Feedback
여기서 ‘Velocity Feedback’는 현재시각에 위치 피드백 버퍼의 값이고 ‘Velocity’는 변환된 속도 값입니다. 변환된 값의 단위는 [RPM]입니다.
속도 피드백 값으로부터 모터의 회전 위치는 다음과 같이 계산됩니다.
ΔPosition = (Velocity x Encoder PPR x Δt) / 60
Position ← Position + ΔPosition
여기서 ‘Position’는 현재 시각에서의 위치 값이고 Δt는 위치를 샘플링 하는 주기로 0.001[sec] 입니다. 계산된 회전 속도의 단위는 [RPM] 입니다.
7.3 모터제어기 구조
만일 모터가 Power ON 상태라면, 제어기는 다음 표와 같이 전압출력, 전류제어, 속도제어, 위치제어 모드 중 하나의 모드로 동작합니다.
표 7‑7 제어기의 동작모드
동작모드 | 명령 | 제어 방식 | 전류 제어기 | 속도 제어기 | 위치 제어기 |
전압출력 모드 | 전압 명령 | 개루프 제어 | X | X | X |
전류제어 모드 | 전류 명령 | 폐루프 제어 | O | X | X |
속도제어 모드 | 속도 명령 | 폐루프 제어 | O | O | X |
위치제어 모드 | 위치 명령 | 폐루프 제어 | O | O | O |
* O-사용, X-사용 안함
모터가 Power OFF 상태에서는 전압출력 모드가 되지만, 모터에 공급되는 전력이 차단되기 때문에 아무런 의미가 없습니다. 모터가 Power ON 된 후에는 전압출력 모드가 되고 출력되는 전압은 0V로 설정됩니다.
동작모드는 모터제어기에 마지막으로 내려진 명령으로 결정됩니다. 모터제어기에 다른 명령이 내려지기 전까지 동작모드는 유지됩니다. 모터가 Power ON 상태라면, 전압/전류/속도/위치 명령에 의해 동작모드는 언제나 바뀔 수 있습니다. 하지만 모터가 구동중인 상황에서는 동작모드를 바꾸지 않는 것이 좋습니다. 제어기 구조가 갑자기 바뀜으로 인해 모터와 제어기에 전기적 기계적 충격을 유발할 수 있습니다.
개루프 제어(Open-loop Control)는 전압 명령을 PWM 듀티비로 변환하여 모터에 직접 인가하는 제어 방법입니다. 이러한 방법에서는 오차가 제어 입력 값에 반영되지 않기 때문에 모터의 출력이 원하는 목표와 달라질 수 있습니다.
폐루프 제어(Closed-loop Control)는 원하는 목표(위치, 속도, 전류 명령) 값과 센서의 피드백 값을 비교하여 오차가 작아지도록 모터의 출력을 제어하는 방법입니다. 이를 위해 위치/속도나 전류를 측정하는 센서가 필요한데, 전류 센서로는 제어기 내부의 션트(Shunt) 저항이 사용되고 위치/속도 센서로는 일반적으로 제어기 외부의 엔코더가 사용됩니다.
7.3.1 전체 제어기 구조
모터제어기의 전체 구성은 다음 그림 7‑2에서 보이는 바와 같이 위치, 속도, 전류 제어를 위한 여러 제어기들이 직렬(Cascade)로 연결된 구조입니다.
그림 7‑2 내부에 설계된 제어기의 전체 구성도 |
이 제어기들 중 전류 제어기가 가장 내부 루프에 위치하고 있으며, 10KHz의 주파수로 동작합니다. 전류 제어를 통해 토크, 속도, 위치 등이 제어될 수 있기 때문에 전류 제어 응답이 가장 빠릅니다. 전류 제어기의 바깥에는 속도 제어기가 위치하며, 1KHz의 주파수로 동작합니다. 위치제어기는 루프의 가장 바깥에 위치하며, 100Hz의 주파수로 동작합니다. 위치제어기와 속도 제어기 사이에는 속도 프로파일을 생성하는 프로파일 생성기(Profile Generator)가 위치하고 있습니다.
7.3.2 개루프 전압 출력
전압출력 모드에서, 개루프 제어는 전압 명령에 비례하는 전압을 전력단(Power Stage)을 통해 모터에 공급합니다. 모터에 부하가 일정하다면 모터에 가해지는 전압은 모터의 회전속도와 비례합니다. 하지만 모터의 부하가 변할 때는 모터의 속도가 느려지거나 빨라집니다. 이 모드는 운전자가 모터의 구동 상황을 파악하면서 직접 제어하는 응용에 적합합니다.
제어기에 위치 센서(엔코더, 홀 센서, 포텐셔미터)가 연결되어 있다면, 실제 모터의 전류와 속도, 위치는 연결된 센서를 통해 측정됩니다. 하지만 측정된 값이 개루프 제어에 사용되지는 않습니다.
그림 7‑3 개루프 전압 프로파일 |
프로파일 모드는 폐루프 위치제어와 속도제어 모드에서 그리고 개루프 전압출력 모드에서 사용가능 합니다. 만일 개루프 전압출력 모드에서 프로파일 모드가 사용되면, 다음 관계에 의해 사다리꼴 모양의 속도 프로파일이 전압 프로파일로 변환됩니다:
· 속도 프로파일의 ‘Max Velocity’는 전압 프로파일의 ‘Max Voltage’가 됨
· 이때 변환 비율 r은 Max Voltage/Max Velocity로 계산
· 전압 증가율은 r*Acceleration으로 계산
· 전압 감소율은 r*Aeceleration으로 계산
7.3.3 폐루프 전류 제어기
전기 모터에서 토크는 직접적으로 전류에 관련됩니다. 따라서 전류를 제어하는 것은 토크를 제어하는 것과 같습니다.
전류 제어기는 위치제어 모드, 속도제어 모드, 전류제어 모드에서 동작합니다.
그림 7‑4에서 전류 제어기의 블록선도를 보여줍니다. 모터의 속도(Velocity Feedback), 모터에 흐르는 전류(Current Feedback), 속도 제어기 또는 사용자가 내린 전류 명령(Current Command)이 입력으로 인가되며, 동작 주파수는 10KHz입니다. 또한, PI 제어기로 구현되어 있으며 제어기의 출력(Voltage output)은 모터에 공급되는 전압이 됩니다.
그림 7‑4 제어기 내부에 설계된 전류 제어기 |
PI제어기의 비례 이득(Proportional gain)은 전류 명령과 모터에 흐르는 전류 간의 오차에 비례하여 전압을 조절합니다. 오차가 크다면 높은 전압이 공급되고 모터에 흐르는 전류가 전류 명령에 다가갈수록 전력은 점차 낮아지게 됩니다. 비례 이득을 높이게 되면, 측정 오차로부터 더 높은 전압을 공급하도록 함으로 모터가 명령 및 모터 부하의 변화에 더 신속하게 대응합니다. 하지만 너무 높으면 오버슈트와 진동이 발생합니다.
PI제어기의 적분 이득(Integral gain)은 시간에 따른 오차의 합에 비례하여 전압을 조절합니다. 오차가 0으로 접근할수록 제어기가 원하는 전류에 정확히 도착하고 유지하는데 도움을 줍니다.
전류 제어기에는 안티와인드업(Anti-Windup) 제어기가 설계되어 있습니다. 와인드업(Windup) 현상은 적분 제어기에 누적된 값이 제어기의 제한 폭을 넘어서 제어입력이 쌓이게 되는 경우를 말합니다. 와인드업 현상이 발생하면 제어기의 입력 부호가 바뀌어도 누적된 적분 제어기로 인해 실제 모터의 방향이 바뀌지 않는 현상이 생기게 됩니다. 그래서 적분기에 누적된 수치가 제어기 출력의 제한 값에 따라 포화되지 않도록 제한하는 기능이 필요하며 이것을 안티와인드업 제어기라고 합니다. 제어기의 안티와인드업 이득(Anti-windup gain)은 비례 이득의 역수를 사용하도록 설정되어 있으며 사용자가 설정할 수는 없습니다.
전류 제어기에서는 전향 보상 이득(Feed forward gain)을 이용해서 역기전력에 의한 모터 토크의 감쇠를 보상하고 있습니다. 모터는 회전속도에 비례하는 역기전력(Back EMF)을 생성합니다. 역기전력은 모터의 토크를 감소하게 만듭니다. 그래서 모터가 고속으로 회전하고 있을 때는 역기전력을 보상해 줌으로 모터 토크의 감쇠를 보상할 수 있게 됩니다.
표 7‑8에는 전류 제어기의 오브젝트들이 정리되어 있습니다. 여기서 구성 파라미터(Configuration Parameter)는 사용자가 설정할 수 있는 값들입니다.
표 7‑8 전류 제어기에서 사용되는 오브젝트들 정리
Name | Unit | Object Type | Object Name |
Velocity Feedback | rad/sec | Status | velocity |
Current Feedback | A | Status | current |
Current Command | A | Command | current_command |
Voltage output | V | Variable | voltage |
Proportional gain(KP) | - | Configuration Parameter | cc_kp |
Integral gain(Ki) | - | Configuration Parameter | cc_ki |
Anti-windup gain(Ka) | - | nternal Value, | - |
Feed forward gain(Kff) | V/(rad/sec) | Configuration Parameter | cc_kff |
max velocity | V | Configuration Parameter | max_velocity |
Motor Control UI 유틸리티에서 제어기의 속도관련 구성 파라미터를 설정할 때는 [RPM] 단위를 사용하지만 모터제어기 내부에는 [rad/sec] 단위로 변환되어 계산에 사용됩니다.
※ 구성 파라미터들 중 속도와 관련된 값들이 모터제어기 내부에서 사용될 때는 속도의 단위가 [RPM]에서 [rad/sec]로 변환되어 계산에 사용됩니다.
※주의※
전류제어기의 전향보상 이득을 설정하려면 모터의 역기전력 상수를 알아야 합니다. 시중에서 쉽게 구할 수 있는 저렴한 모터들은 역기전력 상수가 표기되지 않은 제품들이 많습니다. 모터의 역기전력 상수를 모를 때는 전향보상 이득을 0으로 설정하기 바랍니다.
또한, 역기전력 상수는 모터마다 다양한 단위로 표기됩니다. 역기전력 상수가 전향보상 이득으로 사용되려면 역기전력 상수의 단위를 [V/(rad/sec)]로 변환해야 합니다. 그리고 제어기 내부에서 사용하는 속도의 단위가 [rad/sec] 임에 주의해야 합니다.
7.3.4 폐루프 속도 제어기
속도 제어기는 위치제어 모드, 속도제어 모드에서 동작합니다.
그림 7‑5에서 속도 제어기의 블록선도를 보여줍니다. 모터의 속도(Velocity Feedback)와 위치 제어기 또는 사용자가 내린 속도 명령(Velocity Command)이 입력으로 인가되며, 동작 주파수는 1KHz입니다. 전류 제어기와 같이 속도 제어기도 PI 제어기로 구성되어 있으며 제어기의 출력(Current ref.)은 전류 값이고 전류 제어기의 전류 명령으로 입력됩니다.
그림 7‑5 제어기 내부에 설계된 속도 제어기 |
PI제어기의 비례 이득(Proportional gain)은 속도 명령과 모터의 속도 간의 오차에 비례하여 전류(Current ref.)를 조절합니다. 오차가 크다면 높은 전류가 출력되고 모터의 속도가 속도 명령에 다가갈수록 전류는 점차 낮아지게 됩니다.
PI제어기의 적분 이득(Integral gain)은 시간에 따른 오차의 합에 비례하여 전류를 조절합니다. 오차가 0으로 접근할수록 제어기가 속도 명령에 정확히 도착하고 유지하는데 도움을 줍니다.
속도 제어기에도 전류 제어기와 같이 안티와인드업 제어기가 설계되어 있습니다. 제어기의 안티와인드업 이득(Anti-windup gain)은 비례 이득의 역수를 사용하도록 설정되어 있으며 사용자가 설정할 수는 없습니다.
제어기는 내부적으로 속도 명령을 적절한 단위변환을 거쳐 바로 전류 제어기의 전류 명령(Current ref.)으로 인가하는 일종의 스케일 팩터(Scale Factor) 역할을 수행하는 이득을 가지고 있습니다. 위치 센서로 사용하는 엔코더의 해상도가 너무 낮거나 위치 센서로 포텐셔미터가 사용될 경우, 위치 센서로부터 계산된 속도는 양자화되거나 노이즈를 포함하여 부정확합니다. 이러한 상황에서는 속도 제어기의 PI제어기를 바이패스 하는 것이 좋습니다. PI제어기의 비례 이득과 적분 이득을 ’0′으로 두고, 속도 명령이 전류 명령 이 되도록 스케일(단위변환을 포함)만 변경하여 사용하면 됩니다.
표 7‑9에는 속도 제어기의 오브젝트들이 정리되어 있습니다. 여기서 구성 파라미터(Configuration Parameter)는 사용자가 설정할 수 있는 값들입니다.
표 7‑9 속도 제어기에서 사용하는 오브젝트들 정리
Name | Unit | Object Type | Object Name |
Velocity Feedback | rad/sec | Status | velocity |
Velocity Command | rad/sec | Command | velocity_command |
Current ref. | A | Internal Value | - |
Proportional gain(Kp) | - | Configuration Parameter | vc_kp |
Integral gain(Ki) | - | Configuration Parameter | vc_ki |
Anti-windup gain(Ka) | - | Internal Value, | vc_ka |
Scale factor(Ks) | A/(rad/sec) | Configuration Parameter | vc_ks |
Max Current | [A] | Configuration Parameter | max_current |
Motor Control UI 유틸리티에서 제어기의 속도관련 구성 파라미터를 설정할 때는 [RPM] 단위를 사용합니다. 하지만 제어기 내부에는 [rad/sec] 단위로 변환되어 계산에 사용됩니다.
※ 모터의 속도(Velocity Feedback)와 속도 명령(Velocity Command)이 제어기 내부에서 계산에 사용될 때는 단위가 [RPM]에서 [rad/sec]로 변환됩니다.
7.3.5 폐루프 위치 제어기
위치 제어기는 위치제어 모드에서만 동작합니다.
그림 7‑6에서 위치 제어기의 블록선도를 보여줍니다. 모터의 위치(Position Feedback)와 사용자가 내린 위치 명령(Position Command)이 입력으로 인가며, 동작 주파수는 100Hz 입니다. 위치 제어기는 PID 제어기로 구성되어 있으며, 제어기의 출력(Velocity ref.)은 속도 값이고 프로파일 모드의 설정 여부에 따라 프로파일 생성기(Profile Generator)로 입력되거나 속도 제어기의 속도 명령으로 입력됩니다.
그림 7‑6 제어기 내부에 설계된 위치 제어기 |
PID제어기의 비례 이득(Proportional gain)은 위치 명령과 모터의 위치 간의 오차에 비례하여 속도를 조절합니다. 오차가 크다면 높은 속도가 출력되고 모터의 위치가 위치 명령에 다가갈수록 속도는 점차 낮아지게 됩니다.
PID제어기의 적분 이득(Integral gain)은 시간에 따른 오차의 합에 비례하여 속도를 조절합니다. 오차가 0으로 접근할수록 제어기가 원하는 위치에 정확히 도착하고 유지하는데 도움을 줍니다.
PID제어기의 미분 이득(Differential gain)은 오차에 대한 변화를 계산합니다. 이러한 변화는 원하는 위치 또는 측정된 위치 값이 급격하게 변할 때마다 상대적으로 높은 수치가 됩니다. 이 부분의 효과는 원하는 위치 값의 변경으로 인해 모터를 구동하기 시작할 때 추가적인 속도를 더해줍니다. 미분 이득은 크게 오버슈트와 진동을 감소하는 데 도움이 됩니다.
위치 제어기에도 전류나 속도 제어기와 같이 안티와인드업 제어기가 설계되어 있으며, 제어기의 안티와인드업 이득(Anti-windup gain)은 비례 이득의 역수를 사용하도록 설정되어 있으며 사용자가 설정할 수는 없습니다.
표 7‑10에는 위치 제어기의 오브젝트들이 정리되어 있습니다. 여기서 구성 파라미터(Configuration Parameter)는 사용자가 설정할 수 있는 값들입니다.
표 7‑10 위치 제어기에서 사용하는 오브젝트들 정리
Name | Unit | Object Type | Object Name |
Position Command | pulse | Status | position_command |
Position Feedback | pulse | Command | position |
Velocity ref. | rad/sec | - | - |
Proportional gain(Kp) | - | Configuration Parameter | pc_kp |
Integral gain(Ki) | - | Configuration Parameter | pc_ki |
Differential gain(Kd) | - | Configuration Parameter | pc_kd |
Anti-windup gain(Ka) | - | Internal Value, | pc_ka |
Max Velocity | rad/sec | Configuration Parameter | max_velocity |
7.3.6 프로파일 생성기
프로파일 생성기(Profile Generator)는 사용자의 속도 명령이나 위치 제어기의 속도 출력을 받아 급가감속을 하지 않도록 사다리꼴로 속도 프로파일을 만드는 기능을 수행합니다. 그리고 속도 제어기와 같은 1KHz의 동작 주파수를 가집니다. 사용자는 ‘Profile Mode’ 구성 파라미터 설정에 따라 프로파일 생성기를 사용 여부를 선택할 수 있습니다.
프로파일 생성기에 대한 자세한 내용은 “5.1.2 가속도와 감속도”를 참조하기 바랍니다.
7.4 모터제어기 이득 조정
제어기의 이득은 모터 전원, 기어 비율, 부하, 관성 등 많은 기계적인 파라미터를 모델링 하기 어렵기 때문에 기본적으로 실험을 반복하면서 수작업으로 동조하게 됩니다.
동조 과정은 먼저 전류 제어기의 PI 이득을 설정하고 다음으로 속도 제어기의 PI 이득을 설정합니다. 마지막으로 위치 제어기의 PID 이득을 설정합니다.
Motor Control UI 유틸리티는 위치/속도/전류 제어기의 Proportional(P), Integral(I), Differential(D) 이득을 설정하기 위한 구성 화면을 제공합니다. 또한, 모터를 구동하고 모니터링할 수 있는 또 다른 화면을 제공하여 이러한 실험적인 과정을 쉽게 할 수 있도록 합니다.
7.4.1 전류 제어기 PI 이득 조정
전류제어기는 직렬로 연결된 제어기 구조에서 모터와 직결된 제어기로 가장 먼저 동조되어야 합니다.
전류제어 모드를 사용하는 대부분의 응용(application)들은 제어기의 응답 특성이 너무 빠를 것을 요구하지 않습니다. 그래서 넓은 범위의 PI 이득 조정이 가능하고 좋은 결과도 얻을 수 있습니다. 전류 제어기에서는 P와 I 이득을 조정합니다. 제어기에 설정된 기본 이득(P=0.1, I=50)을 사용하여 첫 테스트를 수행하고, 필요에 따라 만족스러운 결과에 도달 할 때까지 I와 P 이득 조정을 반복합니다.
만일 제어기에 설정된 기본 이득을 사용하지 않고 제로 상태(P=0, I=0)에서 이득을 조정할 수 있습니다. 이와 같이 이득을 조정하려면 다음 절차를 따르도록 합니다:
1. P와 I 이득을 0으로 설정합니다.
2. I 이득을 50정도의 값에서 시작하여 20%정도의 오버슈트(overshoot)가 발생할 때까지 올립니다. 올릴 때는 50, 100, 200, 400, 800 과 같이 2배씩 증가시킵니다.
3. P 이득을 0.1에서 시작하여 오버슈트가 없어질 때까지 올립니다. 올릴 때는 0.2, 0.5, 1, 2, 5 와 같이 2배씩 증가시킵니다.
상기 조정 과정에서 적분 이득이 가장 중요하고 먼저 조정되어야 합니다. 다음으로 응답 시간 및 제어 안정성을 향상시키도록 비례 이득을 조정합니다.
※ 전류 제어기의 이득을 변경하고 응답성을 테스트할 때는 모터 회전축을 고정한 상태에서 진행하여야 합니다. 모터가 회전하는 상태에서는 모터의 역기전력으로 인해 전류의 흐름을 방해하게 됩니다.
7.4.2 속도 제어기 PI 이득 조정
속도 제어기를 동조하기에 앞서 전류 제어기의 이득이 동조되어 있어야 합니다. 그렇지 않은 경우, 앞 절을 참고하여 전류 제어기의 이득을 먼저 동조하기 바랍니다.
속도 제어기는 PI 제어기가 기본 구조이며 P와 I 이득을 조정합니다. 조정의 최종 목표는 모터가 오버슈트나 진동 없이 빠르게 원하는 속도에 도달하는 것입니다.
모터에 의해 움직이는 부하가 결정되지 않은 경우, PI를 예상되는 최소 부하에 대해 조정한 후 예상되는 최대 부하에서 다시 조정합니다. 그런 다음 두 조건에서 작동하는 값을 찾습니다. 최소 및 최대 부하간의 차이가 큰 경우에는 만족스러운 동조 값을 찾을 수 없는 경우도 있습니다.
속도 제어기를 동조할 때 최종적인 제어 대상이 위치인지(위치제어 모드) 혹은 속도인지(속도제어 모드)에 따라 방법이 조금 다릅니다.
위치제어 모드에서 사용되는 속도제어기를 동조해야 한다면, 속도제어기를 아주 세밀하게 동조할 필요는 없습니다. 속도제어기는 지정된 속도를 오버슈트 없이 빠르게 추종하는 정도로만 설정하고 위치제어기를 세밀하게 동조해야 합니다. 이런 경우 속도제어기에서는 P 이득만 설정하고 I 이득은 사용하지 않도록 합니다. I 이득을 사용하지 않을 경우 시스템의 응답성은 빨라지지만, 정상상태 오차가 발생합니다. 이 오차는 위치제어기를 통해 극복하면 됩니다.
먼저, 위치제어 모드에 사용되는 속도제어기의 동조 방법입니다:
1. I 이득은 0으로 설정합니다.
2. P 이득을 0.01부터 시작하여 오버슈트가 발생하기 전까지 올립니다. 올릴 때는 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2 와 같이 2배씩 증가시킵니다.
상기 과정에서, P 이득이 낮으면 모터의 속도가 속도 명령을 느리게 따라갑니다. P 이득을 올리게 되면 속도 명령에 도달하는 시간도 짧아지고 정상상태 오차도 줄어들게 됩니다. 계속해서 P 이득을 높여가면 오버슈트가 발생합니다. 하지만 정상상태 오차는 여전히 존재하게 됩니다. 정상상태 오차를 없애기 위해 P 이득을 더 올리면 결국 진동이 발생하고 제어기는 불안정해집니다.
※ 위치제어에 사용되는 속도제어기의 이득을 설정할 때는 오버슈트가 없는 상태에서 이득 조정을 중단합니다.
이전 단계에서 속도제어기의 P 이득을 조정하여 정상상태 오차는 있지만 오버슈트가 없는 상태로 이득을 조정해 둔 상태입니다.
다음으로 속도제어 모드에 사용되는 속도제어기의 동조 방법입니다:
3. I 이득을 0.01부터 시작하여 정상상태 오차가 없어질 때까지 올립니다. 올릴 때는 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2 와 같이 2배씩 증가시킵니다.
4. I 이득을 조정하여 정상상태 오차가 없어지지 않는다면 P 이득을 낮추고 과정을 반복해 봅니다.
정상상태 오차를 좀 더 빨리 극복하기 위해 I 이득을 더 높이게 되면 오버슈트가 커지게 되며, 여기서 I 이득을 더 높이게 되면 결국 진동이 발생하게 됩니다. 그러니 오버슈트와 정상상태 오차를 상황에 따라 절충하여 I 이득을 설정해야 합니다.
7.4.3 위치 제어기 PID 이득 조정
위치 제어기를 동조하기에 앞서 전류 제어기의 이득과 속도 제어기의 이득이 동조되어 있어야 합니다. 그렇지 않은 경우, 앞 절을 참고하여 속도 제어기와 전류 제어기의 이득을 먼저 동조하기 바랍니다.
위치 제어기에서는 P 이득을 기본적으로 조정하고 필요에 따라 D와 I 이득을 조정합니다. 조정의 최종 목표는 모터가 오버슈트나 진동 없이 빠르게 원하는 위치에 도달하는 것입니다. 만일 약간의 오버슈트나 정상상태 오차를 허용하는 응용이라면, P 이득을 세밀하게 조정하고 I와 D 이득은 작거나 0으로 설정합니다.
다음은 위치 제어기의 이득 동조 방법입니다:
1. 먼저 I 이득과 D 이득을 0으로 설정합니다.
2. P 이득을 0.01부터 시작하여 오버슈트가 발생하기 전까지 올립니다. 올릴 때는 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5와 같이 2배씩 증가시킵니다.
오버슈트를 없애거나 응답 속도를 개선하려면 다음 과정을 따릅니다:
3. 이전 과정에서 오버슈트 없이 목표 위치에 도달하였다면, 20% 정도의 오버슈트가 나타날 때까지 P 이득을 올립니다.
4. D 이득을 0부터 시작하여 조금씩 증가하면서 오버슈트가 없어지도록 합니다.
상기 과정에서 D 이득을 더 늘이게 되면 목표 위치에 도달하는 시간이 지연됩니다.
위치 제어기에서 일반적으로 I 이득은 잘 사용되지 않습니다. 위치제어에서는 P 이득만으로도 정상상태 오차가 나타나지 않으며, I 이득은 모터제어의 응답 특성을 전반적으로 느리게 하기 때문입니다. 하지만 특별한 이유로 I 이득을 설정해야 한다면, P 이득 조정 → D 이득 조정 → I 이득 조정 순서로 이득을 조정하면 됩니다.
7.5 모터제어기의 동작 이상 감지
이 절에서는 모터제어기 동작 중 발생할 수 있는 에러 상황을 감지하고 모터의 전원을 차단하는 모터제어기의 안전 기능에 대해 설명합니다.
7.5.1 스톨 상황 감지
스톨(stall)이란 모터에 전력이 공급되지만, 부하를 움직이기에는 힘이 부족하여 모터가 멈추는 상황을 의미합니다.
스톨 상황 감지는 모든 모드(전압출력, 전류제어, 속도제어, 위치제어 모드)에서 사용됩니다. 이 기능을 사용하기 위해서는 엔코더나 홀 센서, 포텐셔미터와 같은 위치 센서가 제어기에 연결되어야 합니다.
모터제어기는 일정 시간 동안 주어지는 전력에 대해 아무런 회전이 감지되지 않을 경우 모터의 전원을 차단하는 안전 기능을 설정할 수 있습니다. 스톨 상황 감지에서는 다음과 같은 전력과 시간의 조합을 사용할 수 있습니다:
100ms at 10% PWM duty ratio
200ms at 20% PWM duty ratio
400ms at 30% PWM duty ratio
700ms at 40% PWM duty ratio
1s at 50% PWM duty ratio
만일 지정된 시간 동안 지정된 값보다 높은 전력이 모터에 공급되는데도 움직임이 감지되지 않는다면, 폴트를 발생하고 모터를 Power OFF 합니다.
7.5.2 폐루프 속도제어 오차 감지
폐루프 속도제어 오차 감지는 위치제어와 속도제어 모드에서 사용 됩니다.
모터제어기는 기계나 센서 고장으로 인한 큰 속도 오차를 감지하고 문제가 발생한 경우 모터의 전원을 차단하는 안전 기능을 사용할 수 있습니다. 속도 오차란 폐루프 속도 제어기에서 명령 속도(원하는 속도)와 피드백 속도(실제 속도) 간의 오차를 말합니다. 속도제어 오차 감지에는 다음과 같은 시간과 에러의 크기 조합을 사용할 수 있습니다:
100ms and error > 100 RPM
200ms and error > 200 RPM
400ms and error > 500 RPM
700ms and error > 1500 RPM
1s and error > 3000 RPM
만일 지정된 시간 동안 속도 오차가 지정된 값 이상이라면, 폴트를 발생하고 모터를 Power OFF 합니다.
※ 만일 속도 명령이 드문드문 불연속적으로 내려지는 경우에는 Velocity Error Detection 기능을 사용하지 않는 것이 좋습니다. 명령이 내려질 때 큰 속도오차가 발생하여 폴트가 발생하게 됩니다.
7.5.3 폐루프 위치제어 오차 감지
폐루프 위치제어 오차 감지는 위치제어 모드에서 사용 됩니다.
모터제어기는 기계나 센서 고장으로 인한 큰 위치 오차를 감지하고 문제가 발생한 경우 모터의 전원을 차단하는 안전 기능을 사용할 수 있습니다. 위치 오차란 폐루프 위치 제어기에서 명령 위치(원하는 위치)와 피드백 위치(실제 위치) 간의 오차를 말합니다. 위치제어 오차 감지에는 다음과 같은 시간과 에러의 크기 조합을 사용할 수 있습니다:
100ms and error > 100 pulse
200ms and error > 500 pulse
400ms and error > 2000 pulse
700ms and error > 5000 pulse
1s and error > 20000 pulse
만일 지정된 시간 동안 위치 오차가 지정된 값 이상이라면, 폴트를 발생하고 모터를 Power OFF 합니다.
※ 만일 위치 명령이 드문드문 불연속적으로 내려지는 경우에는 Position Error Detection 기능을 사용하지 않는 것이 좋습니다. 명령이 내려질 때 큰 위치오차가 발생하여 폴트가 발생하게 됩니다.