갤러리
CAN 버스 실전 설계 — 관절 6개를 선 2가닥으로 묶는 법
로봇 관절 액추에이터 깊이 읽기 — 제3편
CAN 다축 제어 설계 — ID 설정부터 통신 주기와 배선까지
여러 관절을 하나의 CAN 버스에 연결할 때 확인할 명령 형식, 피드백, 통신량과 타임아웃을 정리합니다.
적용 기준
제품별 통신 설명은 GSA56-2425 사용설명서를 기준으로 작성했습니다. 배선과 통신량 계산은 CAN 일반 설계 원칙입니다. GSA56-4825 등 다른 모델은 해당 모델과 펌웨어의 프로토콜 일치 여부를 확인해야 합니다.
제품별 통신 설명은 GSA56-2425 사용설명서를 기준으로 작성했습니다. 배선과 통신량 계산은 CAN 일반 설계 원칙입니다. GSA56-4825 등 다른 모델은 해당 모델과 펌웨어의 프로토콜 일치 여부를 확인해야 합니다.
CAN_H와 CAN_L은 통신 신호를 전달하는 두 선입니다. 모터 구동에는 전원 배선이 별도로 필요하며, 장비에 따라 접지·차폐·브레이크 배선도 추가됩니다.
GSA56-2425 매뉴얼은 고정 1Mbps, 표준 CAN 데이터 프레임을 사용한다고 설명합니다. 제품 전용 명령 형식이 정의되어 있으므로 CANopen이나 CiA 402 장치로 바로 취급해서는 안 됩니다.
1. 제어모드에 맞는 ID와 데이터 형식을 사용합니다
CAN_ID는 모터가 명령을 받을 때 사용하는 기준 ID입니다. Master_ID는 모터가 피드백을 보낼 때 사용하는 프레임 ID입니다. CAN ID는 메시지를 식별하고 버스 사용 우선순위를 정하는 값입니다.
| 구분 | ID와 데이터 구성 |
| MIT 명령 | ID: CAN_ID 8바이트: 위치 16bit + 속도·Kp·Kd·토크 각 12bit |
| 위치속도 명령 | ID: CAN_ID + 0x100 8바이트: 위치 float 4바이트 + 속도 float 4바이트 |
| 속도 명령 | ID: CAN_ID + 0x200 4바이트: 속도 float 4바이트 |
| 모터 피드백 | ID: Master_ID 8바이트, 세 제어모드에서 동일 형식 |
위 표의 명령은 상위 제어기에서 모터로, 피드백은 모터에서 상위 제어기로 전달됩니다. 현재 설정된 제어모드에 맞는 명령 ID와 데이터 형식을 사용해야 합니다.
위치속도·속도 명령의 float는 하위 바이트부터 전송합니다. 위치 단위는 rad, 속도 단위는 rad/s입니다. 위치속도 모드의 속도값은 목표위치까지 이동하는 동안의 최대 절대속도를 제한합니다.
MIT 명령은 실수값을 정수 코드로 변환해 패킹합니다. PMAX·VMAX·TMAX는 MIT 명령과 모든 모드의 피드백 해석에 적용되므로 상위 제어기와 모터의 설정 범위를 일치시켜야 합니다.
모드 변경 후 전원 재인가가 필요합니다.
매뉴얼은 제어모드 선택과 사양쓰기 후 전원을 다시 인가하고, 사양을 다시 읽거나 시리얼 표시로 현재 모드를 확인하도록 안내합니다.
매뉴얼은 제어모드 선택과 사양쓰기 후 전원을 다시 인가하고, 사양을 다시 읽거나 시리얼 표시로 현재 모드를 확인하도록 안내합니다.
근거: 매뉴얼 9~10쪽, 16~17쪽, 18~25쪽.
2. 다축 ID는 명령과 피드백을 함께 배치합니다
6축을 구성한다면 아래처럼 ID 구간을 나누어 검토할 수 있습니다. 각 범위의 첫 값은 J1, 마지막 값은 J6에 대응합니다. 설명용 배치안이므로 실제 설정 프로그램의 허용 범위를 확인해야 합니다.
| 구분 | J1부터 J6까지의 예시 |
| CAN_ID / MIT | 0x01 ~ 0x06 |
| 위치속도 명령 | 0x101 ~ 0x106 |
| 속도 명령 | 0x201 ~ 0x206 |
| Master_ID | 0x11 ~ 0x16 |
여러 모터가 같은 ID로 서로 다른 데이터를 동시에 송신하면 오류가 발생할 수 있습니다. 이 예시에서는 모터별 피드백 ID를 구분했습니다. 다른 CAN 장치의 ID와도 겹치지 않도록 확인합니다.
같은 표준 프레임 형식끼리 경쟁할 때는 숫자가 작은 ID가 우선합니다. 중복 여부뿐 아니라 버스가 바쁠 때 명령과 피드백이 얼마나 지연되는지도 검토해야 합니다.
수신 예제 수정이 필요합니다.
매뉴얼 21쪽 예제는 StdId == 0인 프레임만 해석합니다. 이는 기본 Master_ID 0에 대응합니다. 피드백 ID를 변경했다면 수신 필터와 해석 조건도 바꾸고, 각 ID를 해당 관절의 상태값에 연결해야 합니다.
매뉴얼 21쪽 예제는 StdId == 0인 프레임만 해석합니다. 이는 기본 Master_ID 0에 대응합니다. 피드백 ID를 변경했다면 수신 필터와 해석 조건도 바꾸고, 각 ID를 해당 관절의 상태값에 연결해야 합니다.
3. 구동 시작과 원점 설정을 구분합니다
매뉴얼은 전원 인가 후 Enter 명령을 보내야 제어할 수 있다고 설명합니다. 아래는 원본에서 확인한 8바이트 데이터 패턴입니다.
| 기능 | D0~D7, 16진수 |
| 모터모드 시작 | FF FF FF FF FF FF FF FC |
| 모터모드 종료 | FF FF FF FF FF FF FF FD |
| 현재 위치 원점 설정 | FF FF FF FF FF FF FF FE |
기능 명령의 송신 ID는 적용 모드의 예제나 제공 프로그램으로 확인해야 합니다. 매뉴얼은 기능 명령이 제어프레임에 포함된다고 설명하지만, 모드별 기능 명령 ID를 따로 나열하지는 않습니다. 일반 속도 명령은 4바이트여도 위 기능 명령은 8바이트입니다.
에러 클리어 표에는 누락이 있습니다.
24쪽에는 마지막 값 0xFB가 기재되어 있으나 D[2] 열이 빠져 있습니다. 누락 바이트를 임의로 채운 명령을 확정 사양으로 사용하지 말고, 정정 자료나 제공 프로그램으로 전체 프레임을 확인해야 합니다.
24쪽에는 마지막 값 0xFB가 기재되어 있으나 D[2] 열이 빠져 있습니다. 누락 바이트를 임의로 채운 명령을 확정 사양으로 사용하지 말고, 정정 자료나 제공 프로그램으로 전체 프레임을 확인해야 합니다.
원점 설정은 현재 위치에 기준값을 부여하는 기능입니다. 기계가 기준 위치를 찾아 움직이는 호밍과는 다릅니다. 전원 차단 후 원점 유지 여부는 별도로 확인해야 합니다. 또한 종료 명령이 감속 정지나 브레이크 체결까지 수행한다고 가정해서는 안 됩니다.
근거: 매뉴얼 13쪽, 23~24쪽.
4. 피드백은 ID와 길이부터 확인합니다
표준 데이터 프레임인지, 설정한 Master_ID인지, 데이터 길이가 8바이트인지 확인한 뒤 위치·속도·토크 코드를 조립합니다.
위치 코드 = (D1 << 8) | D2
속도 코드 = (D3 << 4) | (D4 >> 4)
토크 코드 = ((D4 & 0x0F) << 8) | D5
속도 코드 = (D3 << 4) | (D4 >> 4)
토크 코드 = ((D4 & 0x0F) << 8) | D5
위치는 16bit, 속도와 토크는 각각 12bit입니다. 조립한 코드를 모터에 설정된 최소·최대 범위에 맞춰 실수값으로 복원합니다. 매뉴얼은 D6을 MOS 평균온도, D7을 모터 내부 권선 평균온도로 설명하며 단위는 ℃입니다.
D0의 ID·상태 해석은 원문 정정이 필요합니다.
18쪽 표는 ID | (ERR << 4)로 표시하지만 설명에는 CAN_ID의 “Low 8 바이트”라고 적혀 있어 서로 맞지 않습니다. 21쪽 예제도 D0를 해석하지 않습니다. 따라서 이 문서만으로 ID 전체 허용 범위나 D0 해석 규칙을 확정하지 않습니다. 관절 분류에는 확인된 Master_ID를 사용하고 상태 비트는 해당 펌웨어 자료와 대조해야 합니다.
18쪽 표는 ID | (ERR << 4)로 표시하지만 설명에는 CAN_ID의 “Low 8 바이트”라고 적혀 있어 서로 맞지 않습니다. 21쪽 예제도 D0를 해석하지 않습니다. 따라서 이 문서만으로 ID 전체 허용 범위나 D0 해석 규칙을 확정하지 않습니다. 관절 분류에는 확인된 Master_ID를 사용하고 상태 비트는 해당 펌웨어 자료와 대조해야 합니다.
원본의 에러값 의미
에러값을 올바르게 추출한 뒤 아래 의미를 적용합니다.
에러값을 올바르게 추출한 뒤 아래 의미를 적용합니다.
0x08: 과전압 / 0x09: 저전압
0x0A: 과전류 / 0x0E: 과부하
0x0B: MOS 과열 / 0x0C: 모터 권선 과열
0x0D: 통신 실패
0x0A: 과전류 / 0x0E: 과부하
0x0B: MOS 과열 / 0x0C: 모터 권선 과열
0x0D: 통신 실패
원문에는 상태값 0을 “Error”, 1을 “Enable”로 표시합니다. 이 자료만으로 0을 정상 또는 비활성 상태라고 바꾸어 해석하지 않습니다.
5. 모터 수와 통신 주기로 버스 사용량을 계산합니다
1Mbps는 버스 전체가 공유하는 전송속도입니다. 각 모터에 1Mbps씩 배정되는 것이 아닙니다. 데이터 외에도 ID·CRC·ACK, 비트 스터핑과 프레임 사이 간격이 필요합니다.
예: 6축에 각각 1ms마다 명령 1개와 피드백 1개
조건: 모두 표준 CAN의 8바이트 데이터 프레임
초당 프레임 수 = 6 × 2 × 1,000 = 12,000개
프레임당 점유량 = 111bit
※ 스터핑 제외, 최소 프레임 사이 간격 포함
12,000 × 111 = 1,332,000bit/s
따라서 스터핑과 재전송을 더하기 전부터 1Mbps를 초과합니다.
조건: 모두 표준 CAN의 8바이트 데이터 프레임
초당 프레임 수 = 6 × 2 × 1,000 = 12,000개
프레임당 점유량 = 111bit
※ 스터핑 제외, 최소 프레임 사이 간격 포함
12,000 × 111 = 1,332,000bit/s
따라서 스터핑과 재전송을 더하기 전부터 1Mbps를 초과합니다.
이 계산은 통신량 예시이며, 제품이 명령마다 피드백을 한 번씩 보낸다는 의미는 아닙니다. 실제 피드백 발생 조건과 빈도를 확인한 뒤 명령·피드백·다른 장치의 트래픽을 합산해야 합니다.
평균 사용량뿐 아니라 최악의 전송 지연과 재전송, USB-CAN 및 운영체제 지연도 확인합니다. 필요하면 명령·피드백 주기를 조정하거나 버스를 분리합니다. 여러 축의 프레임은 순서대로 전송되므로 같은 버스에 연결했다는 것만으로 모든 관절이 정확히 동시에 갱신되는 것은 아닙니다.
6. 타임아웃과 피드백 감시를 함께 설계합니다
매뉴얼 8쪽과 24쪽은 CAN Timeout을 카운트당 50μs로 설명합니다. 3쪽은 설정 주기 안에 CAN 명령을 받지 못하면 Enter 모드에서 이탈한다고 명시합니다.
시간 환산 = 설정 카운트 × 50μs
예: 200카운트 = 10ms
※ 단위 환산 예시이며 권장 설정값은 아닙니다.
예: 200카운트 = 10ms
※ 단위 환산 예시이며 권장 설정값은 아닙니다.
타임아웃은 해당 모터의 유효 명령 수신 간격과 최대 예상 지연을 고려해 정합니다. 0 설정의 의미, 타이머를 갱신하는 명령 종류, 이탈 후 재활성화 조건은 원문에 명확하지 않으므로 적용 버전에서 확인해야 합니다.
상위 제어기도 관절별 마지막 피드백 수신 시간을 감시해야 합니다. 송신 성공이나 CAN ACK만으로 해당 모터가 명령을 실행했다고 판단해서는 안 됩니다. 응답 누락 시 다른 축과 부하에 미치는 영향까지 고려해 대응을 정합니다.
Enter 모드 이탈은 감속 정지나 브레이크 체결을 보장하는 설명이 아닙니다. 수직 부하는 출력 해제와 전원 차단에 대비한 유지·낙하 방지 대책이 필요합니다. CAN Timeout은 비상정지나 기능안전을 대신하지 않습니다.
7. 배선과 설정용 연결을 확인합니다
종단저항
일반적인 고속 CAN은 주 버스의 물리적 양 끝에 각각 120Ω을 적용합니다. 내부 종단저항을 확인해 중복 설치를 피합니다. 전체 전원을 끄고 CAN_H와 CAN_L 사이를 측정하면 두 저항의 병렬값인 약 60Ω이 보이는 구성이 일반적입니다. 저항값만으로 신호 품질까지 검증되는 것은 아닙니다.
일반적인 고속 CAN은 주 버스의 물리적 양 끝에 각각 120Ω을 적용합니다. 내부 종단저항을 확인해 중복 설치를 피합니다. 전체 전원을 끄고 CAN_H와 CAN_L 사이를 측정하면 두 저항의 병렬값인 약 60Ω이 보이는 구성이 일반적입니다. 저항값만으로 신호 품질까지 검증되는 것은 아닙니다.
배선 형태
선형 주 버스와 짧은 분기선을 기본으로 검토합니다. CAN에 적합한 특성임피던스의 트위스트 페어를 사용하고, 총길이와 분기 길이는 1Mbps 조건과 트랜시버 사양에 맞춰 확인합니다.
선형 주 버스와 짧은 분기선을 기본으로 검토합니다. CAN에 적합한 특성임피던스의 트위스트 페어를 사용하고, 총길이와 분기 길이는 1Mbps 조건과 트랜시버 사양에 맞춰 확인합니다.
기준 전위와 차폐
비절연 CAN은 노드 사이 기준 전위 차이가 트랜시버의 허용 공통모드 범위를 넘지 않도록 해야 합니다. 신호 기준선·보호접지·차폐를 구분하고 장비의 등전위 본딩과 EMC 조건에 맞춰 연결합니다.
비절연 CAN은 노드 사이 기준 전위 차이가 트랜시버의 허용 공통모드 범위를 넘지 않도록 해야 합니다. 신호 기준선·보호접지·차폐를 구분하고 장비의 등전위 본딩과 EMC 조건에 맞춰 연결합니다.
상위 제어기
USB-CAN, CAN HAT 또는 MCU의 CAN 컨트롤러와 트랜시버를 사용할 수 있습니다. 1Mbps, 표준 데이터 프레임, 수신 필터, 비트 타이밍과 전기적 인터페이스를 확인합니다.
USB-CAN, CAN HAT 또는 MCU의 CAN 컨트롤러와 트랜시버를 사용할 수 있습니다. 1Mbps, 표준 데이터 프레임, 수신 필터, 비트 타이밍과 전기적 인터페이스를 확인합니다.
설정용 변환기와 케이블
매뉴얼 3쪽은 사양 조절 인터페이스를 UART 921600bps로 표시하지만, 2쪽 연결 설명에는 USB-CAN이 언급됩니다. 9쪽은 CAN 모드 시험에 CAN 연결이 필요하다고 설명합니다. 특정 변환기 하나가 모든 설정과 시험을 지원한다고 단정하지 말고 공급되는 프로그램과 연결 구성을 확인해야 합니다.
매뉴얼 3쪽은 사양 조절 인터페이스를 UART 921600bps로 표시하지만, 2쪽 연결 설명에는 USB-CAN이 언급됩니다. 9쪽은 CAN 모드 시험에 CAN 연결이 필요하다고 설명합니다. 특정 변환기 하나가 모든 설정과 시험을 지원한다고 단정하지 말고 공급되는 프로그램과 연결 구성을 확인해야 합니다.
CAN 일반 원리 참고: TI CAN 기술자료
8. 연결 전 확인할 항목
① 모델·펌웨어와 매뉴얼 일치 여부
② 모드별 명령 ID와 관절별 피드백 ID
③ 표준 데이터 프레임, DLC, float 바이트 순서
④ MIT 명령과 공통 피드백의 매핑 범위
⑤ 축 수와 명령·피드백 주기를 반영한 통신량
⑥ 종단저항, 분기 길이, 기준 전위와 차폐
⑦ 명령 타임아웃과 피드백 수신 감시
⑧ 시작·종료·통신 복구 시 부하의 움직임
② 모드별 명령 ID와 관절별 피드백 ID
③ 표준 데이터 프레임, DLC, float 바이트 순서
④ MIT 명령과 공통 피드백의 매핑 범위
⑤ 축 수와 명령·피드백 주기를 반영한 통신량
⑥ 종단저항, 분기 길이, 기준 전위와 차폐
⑦ 명령 타임아웃과 피드백 수신 감시
⑧ 시작·종료·통신 복구 시 부하의 움직임
다음 제4편에서는 토크·전류·발열의 관계를 다룹니다. 정격토크와 최대토크, 반복 운전 조건을 구분해 관절의 부하를 검토합니다.
CAN 다축 구성 검토가 필요하신가요?
모터 모델과 수량, 제어모드, 상위 제어기, 목표 명령·피드백 주기, 다른 CAN 장치의 ID, 케이블 길이와 분기 구조를 보내주세요. 프로토콜 적용 범위와 통신량, 기본 배선 구성을 함께 검토합니다.
총 댓글 0
로그인을 하셔야 댓글을 등록하실 수 있습니다.
| 번호 | 제목 | 작성자 | 날짜 |
|---|
| 번호 | 이미지 | 제목 | 날짜 | 작성자 | 조회 |
|---|---|---|---|---|---|
| 54 |
무게 계산부터 모델 선정, 배선, 비 감지 자동화까지 — 전동 개폐 만드는 법
|
2026.08.21 | |
355 | |
| 53 |
밀고 당기는 일이라면 — IP67 방수 리니어액추에이터 LM4075-P 활용 가이드
|
2026.08.21 | |
284 | |
| 52 |
감속비를 고르면 다른 모터가 됩니다.IP68 완전방수 유성기어 DC모터 PGM45 — 하나의 모터로 1,600rpm부터 12rpm까지
|
2026.08.21 | |
192 | |
| 51 |
IP65 · IP66 · IP67 · IP68, 뭐가 다른가
|
2026.08.20 | |
411 | |
| 50 |
소음이 스펙이 되는 순간
|
2026.08.20 | |
25 | |
| 49 |
고추력 리니어액추에이터 선정 가이드
|
2026.08.20 | |
210 | |
| 48 |
마그네틱 기어펌프 완전 가이드
|
2026.08.20 | |
301 | |
| 47 | 회전부 케이블 꼬임, 슬립링 없이 해결하기 — 로터리 중공축 감속모터 선정 가이드 (BLDC·엔코더·스텝용 17종) | 2026.08.16 | |
67 | |
| 46 |
이물질 섞인 액체는 에어펌프 석션으로 — 진공 흡입 설계 가이드
|
2026.08.14 | |
121 | |
| 45 | 아두이노로 이 액추에이터를 제어하려면 어떻게 하나요? | 2026.08.13 | |
22 | |
| 44 | 리니어 액추에이터를 사려는데, 움직이려면 뭐가 더 필요한가요? | 2026.08.13 | |
27 | |
| 43 | 진공펌프·에어펌프 선정 — 0.5~84L/min, -100kPa까지 전 대역 대응합니다 | 2026.08.12 | |
60 | |
| 42 |
항공부품 제조사 납품 사례 — 서보실린더 다축 EtherCAT 구성과 5.5kW 대용량 축 LM-TW095 / LM-TW180
|
2026.08.11 | |
356 | |
| 41 |
자잠(셀프락)으로 버틸 수 없는 조건
|
2026.08.10 | |
87 | |
| 40 |
웜감속기, 사이즈에 따라 구조가 달라집니다
|
2026.08.10 | |
121 |
한국어
영어
중국어
일본어












