a046fd7b323faaa99abc065b8ea70fe6_154847.png
 

갤러리

CAN 버스 실전 설계 — 관절 6개를 선 2가닥으로 묶는 법

2026.09.11 15:56:14 조회수 125
로봇 관절 액추에이터 깊이 읽기 — 제3편
CAN 다축 제어 설계 — ID 설정부터 통신 주기와 배선까지
여러 관절을 하나의 CAN 버스에 연결할 때 확인할 명령 형식, 피드백, 통신량과 타임아웃을 정리합니다.
적용 기준
제품별 통신 설명은 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 / MIT0x01 ~ 0x06
위치속도 명령0x101 ~ 0x106
속도 명령0x201 ~ 0x206
Master_ID0x11 ~ 0x16
여러 모터가 같은 ID로 서로 다른 데이터를 동시에 송신하면 오류가 발생할 수 있습니다. 이 예시에서는 모터별 피드백 ID를 구분했습니다. 다른 CAN 장치의 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] 열이 빠져 있습니다. 누락 바이트를 임의로 채운 명령을 확정 사양으로 사용하지 말고, 정정 자료나 제공 프로그램으로 전체 프레임을 확인해야 합니다.
원점 설정은 현재 위치에 기준값을 부여하는 기능입니다. 기계가 기준 위치를 찾아 움직이는 호밍과는 다릅니다. 전원 차단 후 원점 유지 여부는 별도로 확인해야 합니다. 또한 종료 명령이 감속 정지나 브레이크 체결까지 수행한다고 가정해서는 안 됩니다.
근거: 매뉴얼 13쪽, 23~24쪽.
4. 피드백은 ID와 길이부터 확인합니다
표준 데이터 프레임인지, 설정한 Master_ID인지, 데이터 길이가 8바이트인지 확인한 뒤 위치·속도·토크 코드를 조립합니다.
위치 코드 = (D1 << 8) | D2
속도 코드 = (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를 사용하고 상태 비트는 해당 펌웨어 자료와 대조해야 합니다.
원본의 에러값 의미
에러값을 올바르게 추출한 뒤 아래 의미를 적용합니다.
0x08: 과전압 / 0x09: 저전압
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를 초과합니다.
이 계산은 통신량 예시이며, 제품이 명령마다 피드백을 한 번씩 보낸다는 의미는 아닙니다. 실제 피드백 발생 조건과 빈도를 확인한 뒤 명령·피드백·다른 장치의 트래픽을 합산해야 합니다.
평균 사용량뿐 아니라 최악의 전송 지연과 재전송, USB-CAN 및 운영체제 지연도 확인합니다. 필요하면 명령·피드백 주기를 조정하거나 버스를 분리합니다. 여러 축의 프레임은 순서대로 전송되므로 같은 버스에 연결했다는 것만으로 모든 관절이 정확히 동시에 갱신되는 것은 아닙니다.
6. 타임아웃과 피드백 감시를 함께 설계합니다
매뉴얼 8쪽과 24쪽은 CAN Timeout을 카운트당 50μs로 설명합니다. 3쪽은 설정 주기 안에 CAN 명령을 받지 못하면 Enter 모드에서 이탈한다고 명시합니다.
시간 환산 = 설정 카운트 × 50μs
예: 200카운트 = 10ms
※ 단위 환산 예시이며 권장 설정값은 아닙니다.
타임아웃은 해당 모터의 유효 명령 수신 간격과 최대 예상 지연을 고려해 정합니다. 0 설정의 의미, 타이머를 갱신하는 명령 종류, 이탈 후 재활성화 조건은 원문에 명확하지 않으므로 적용 버전에서 확인해야 합니다.
상위 제어기도 관절별 마지막 피드백 수신 시간을 감시해야 합니다. 송신 성공이나 CAN ACK만으로 해당 모터가 명령을 실행했다고 판단해서는 안 됩니다. 응답 누락 시 다른 축과 부하에 미치는 영향까지 고려해 대응을 정합니다.
Enter 모드 이탈은 감속 정지나 브레이크 체결을 보장하는 설명이 아닙니다. 수직 부하는 출력 해제와 전원 차단에 대비한 유지·낙하 방지 대책이 필요합니다. CAN Timeout은 비상정지나 기능안전을 대신하지 않습니다.
7. 배선과 설정용 연결을 확인합니다
종단저항
일반적인 고속 CAN은 주 버스의 물리적 양 끝에 각각 120Ω을 적용합니다. 내부 종단저항을 확인해 중복 설치를 피합니다. 전체 전원을 끄고 CAN_H와 CAN_L 사이를 측정하면 두 저항의 병렬값인 약 60Ω이 보이는 구성이 일반적입니다. 저항값만으로 신호 품질까지 검증되는 것은 아닙니다.
배선 형태
선형 주 버스와 짧은 분기선을 기본으로 검토합니다. CAN에 적합한 특성임피던스의 트위스트 페어를 사용하고, 총길이와 분기 길이는 1Mbps 조건과 트랜시버 사양에 맞춰 확인합니다.
기준 전위와 차폐
비절연 CAN은 노드 사이 기준 전위 차이가 트랜시버의 허용 공통모드 범위를 넘지 않도록 해야 합니다. 신호 기준선·보호접지·차폐를 구분하고 장비의 등전위 본딩과 EMC 조건에 맞춰 연결합니다.
상위 제어기
USB-CAN, CAN HAT 또는 MCU의 CAN 컨트롤러와 트랜시버를 사용할 수 있습니다. 1Mbps, 표준 데이터 프레임, 수신 필터, 비트 타이밍과 전기적 인터페이스를 확인합니다.
설정용 변환기와 케이블
매뉴얼 3쪽은 사양 조절 인터페이스를 UART 921600bps로 표시하지만, 2쪽 연결 설명에는 USB-CAN이 언급됩니다. 9쪽은 CAN 모드 시험에 CAN 연결이 필요하다고 설명합니다. 특정 변환기 하나가 모든 설정과 시험을 지원한다고 단정하지 말고 공급되는 프로그램과 연결 구성을 확인해야 합니다.
CAN 일반 원리 참고: TI CAN 기술자료
8. 연결 전 확인할 항목
① 모델·펌웨어와 매뉴얼 일치 여부
② 모드별 명령 ID와 관절별 피드백 ID
③ 표준 데이터 프레임, DLC, float 바이트 순서
④ MIT 명령과 공통 피드백의 매핑 범위
⑤ 축 수와 명령·피드백 주기를 반영한 통신량
⑥ 종단저항, 분기 길이, 기준 전위와 차폐
⑦ 명령 타임아웃과 피드백 수신 감시
⑧ 시작·종료·통신 복구 시 부하의 움직임
다음 제4편에서는 토크·전류·발열의 관계를 다룹니다. 정격토크와 최대토크, 반복 운전 조건을 구분해 관절의 부하를 검토합니다.
CAN 다축 구성 검토가 필요하신가요?
모터 모델과 수량, 제어모드, 상위 제어기, 목표 명령·피드백 주기, 다른 CAN 장치의 ID, 케이블 길이와 분기 구조를 보내주세요. 프로토콜 적용 범위와 통신량, 기본 배선 구성을 함께 검토합니다.
총 댓글 0
로그인을 하셔야 댓글을 등록하실 수 있습니다.
번호 제목 작성자 날짜
번호 이미지 제목 날짜 작성자 조회
159 리니어 스테이지, 이동속도가 부족하다면? 2026.09.23 54
158 모터·감속기 체결부, 와셔와 나사 고정제는 어떻게 써야 할까요? 2026.09.21 74
157 케이블베어 수평·수직·측면 설치, 선정 기준이 다른 이유 2026.09.18 46
156 케이블베어 안에서 케이블이 끊어지는 5가지 원인 2026.09.18 39
155 R28·R38·R48, 케이블베어 굽힘반경(R값) 선정 방법 2026.09.18 29
154 케이블베어 규격 선정하는 법 — 내고·내폭·굽힘반경·길이 2026.09.18 60
153 이차전지 제조공정용 리니어 액추에이터 선정 시 확인할 5가지 2026.09.17 16
152 스텝 드라이버에는 토크 설정 기능이 없나요? — 전류 설정과 토크제어의 차이 2026.09.15 35
151 드라이버 결선도가 왜 두 개인가요? — 공통양극·공통음극·차동, 포토커플러 입력 이해하기 2026.09.15 18
150 스텝모터, 멈춰 있을 때 무슨 일이 일어나고 있을까? — 홀딩토크와 정지 전류 2026.09.15 21
149 로봇 팔이 덜컹거리는 이유 — 관절에는 왜 하모닉 감속기인가 파일첨부 있음 2026.09.15 42
148 48V 배터리 — 모터·드라이버와 연결하기 전에 확인할 것 2026.09.15 25
147 전압은 모터 한 대가 아니라 로봇 전체를 보고 정합니다 2026.09.15 17
146 경사 3°가 모터를 바꿉니다 — 15°부터는 안전설계까지 봐야 합니다 파일첨부 있음 2026.09.15 20
145 서비스로봇과 물류 AGV, 구동부가 달라지는 이유 파일첨부 있음 2026.09.15 30

비밀번호 인증

비밀번호를 입력해 주세요.

닫기
 
 

비밀번호 인증

글 작성시 설정한 비밀번호를 입력해 주세요.

닫기