> 업계 통찰 >기어 모터
기술 지원

직렬 버스 서보 통신 프로토콜: 완전한 기술 안내서

게시됨 2026-04-05

직렬 버스서보 기구통신 프로토콜은 여러 가지를 가능하게 합니다서보 기구데이지 체인 방식으로 연결되고 단일 데이터 라인을 통해 제어되므로 복잡한 로봇 시스템의 배선이 크게 단순화됩니다. 기존 PWM과 달리서보 기구서보당 하나의 신호선이 필요한 직렬 버스 서보는 양방향 디지털 통신을 사용하여 위치, 속도 및 피드백 데이터를 보냅니다. 이 기사에서는 널리 채택된 업계 관행을 기반으로 표준 프레임 구조, 명령 유형, 오류 검사 방법 및 실제 구현 단계에 대해 설명합니다. 모든 예는 일반적인 로봇 프로젝트에서 관찰되는 일반적인 비브랜드 시나리오에서 추출되었습니다.

01핵심 프로토콜 개요

가장 일반적인 직렬 버스 서보 프로토콜은 고정 매개변수(보드 속도 115200, 데이터 비트 8개, 정지 비트 1개, 패리티 없음)를 사용하는 반이중 비동기 직렬 통신(UART)에서 작동합니다. 통신은 마이크로컨트롤러(마스터)가 1~254(ID 0은 브로드캐스트에 자주 사용됨) 범위의 고유 ID 번호를 사용하여 개별 서보(슬레이브)에 명령을 보내는 마스터-슬레이브 아키텍처를 따릅니다. 각 서보는 모든 명령에 대해 상태 패킷을 반환하므로 위치, 부하, 온도 및 전압을 실시간으로 모니터링할 수 있습니다.

주요 장점:최대 254개의 서보가 단일 버스를 공유할 수 있으므로 배선 복잡성이 254개 와이어에서 단 3개 와이어(전원, 접지, 신호)로 줄어듭니다.

02표준 데이터 프레임 구조

모든 명령 및 응답 패킷은 안정적인 통신을 보장하기 위해 일관된 형식을 따릅니다. 아래 표는 일반적인 바이트 순서를 보여줍니다.

바이트 인덱스 필드 이름 크기(바이트) 설명
0 헤더 2 프레임 시작을 나타내는 고정 값(예: 0x55 0x55)
2 ID 1 대상 서보 ID(1-254) 또는 브로드캐스트(0)
3 데이터 길이 1 매개변수/데이터 필드의 바이트 수(n)
4 지시/플래그 1 명령 유형(섹션 3 참조) 또는 응답 상태
5 매개변수 N 명령별 데이터(위치, 속도 등)
5+n 체크섬 1 XOR 또는 합계 기반 오류 감지 바이트

실제 사례:일반적인 2바이트 헤더는 다음과 같습니다.0x55 0x55. 일부 구현에서는 다음을 사용합니다.0xFA 0xAF. 항상 서보 데이터시트의 헤더 패턴을 확인하세요.

03명령 세트 및 지침

직렬 버스 서보는 최소한이지만 완전한 명령어 세트를 지원합니다. 다음은 가장 자주 사용되는 명령과 해당 명령 바이트 값(10진수)입니다.

지침 바이트 값 목적 일반적인 매개변수(바이트)
1 해당 ID에 서보가 존재하는지 확인하세요. 없음
READ_DATA 2 서보에서 하나 이상의 레지스터를 읽습니다. 시작 주소, 길이
WRITE_DATA 3 하나 이상의 레지스터에 데이터 쓰기 주소, 값
REG_WRITE 4 쓰기 명령 등록(나중에 ACTION 명령으로 실행) 주소, 값
행동 5 이전에 등록된 모든 쓰기 명령을 실행합니다. 없음
다시 놓기 6 서보를 공장 설정으로 재설정 없음
동기화_쓰기 7 동일한 데이터를 여러 서보에 동시에 쓰기 ID 목록, 주소, 공통 데이터 값

일반적인 시나리오:6-DOF 로봇 팔에서는 다음을 사용합니다.WRITE_DATA각 관절별로 목표 위치를 순차적으로 설정한 후행동모든 관절을 동시에 움직이게 하고 갑작스러운 움직임을 방지합니다.

04매개변수 레지스터(메모리 맵)

각 서보는 작동 매개변수를 저장하는 레지스터 세트를 유지 관리합니다. 주소와 의미는 널리 채택된 표준을 따릅니다. 다음을 사용하여 이에 액세스하십시오.READ_DATA그리고WRITE_DATA.

주소(16진수) 매개변수 입장 크기(바이트) 범위 / 설명
0x00 모델 번호 아르 자형 2 읽기 전용 서보 식별자
0x02 펌웨어 버전 아르 자형 1 버전 번호
0x03 ID RW 1 서보 ID(1-254, 기본값은 종종 1)
0x04 전송 속도 RW 1 0=9600, 1=19200, 2=38400, 3=57600, 4=115200
0x05 반환 지연 시간 RW 1 응답 전 지연 시간(μs)
0x06 각도 제한 최소 RW 2 최소 위치 제한(12비트의 경우 0~4095)
0x08 각도 제한 최대 RW 2 최대 포지션 한도
0x0A 온도 제한 RW 1 과열 차단 임계값(°C)
0x0B 최소 입력 전압 RW 2 저전압 경고 임계값(mV)
0x0D 최대 입력 전압 RW 2 고전압 경고 임계값(mV)
0x0E 위치 P 게인 RW 2 위치 PID에 대한 비례 게인
0x10 포지션 I 이득 RW 2 적분 이득
0x12 위치 D 게인 RW 2 미분 이득
0x18 목표 위치 RW 2 목표 위치(0‑4095)
0x1A 이동 속도 RW 2 속도 제한(0~1023 = 최대 속도의 0~100%)
0x1C 토크 제한 RW 2 최대 출력 토크(0‑1023)
0x1E 현재 위치 아르 자형 2 현재 위치(피드백)
0x20 현재 속도 아르 자형 2 현재 속도(0‑2047, 기호는 방향을 나타냄)
0x22 현재 부하 아르 자형 2 현재 토크 부하(0‑2047, 부호는 방향을 나타냄)
0x24 현재 전압 아르 자형 2 공급 전압(mV)
0x26 현재온도 아르 자형 1 내부 온도(°C)
0x28 등록된 지시사항 아르 자형 1 REG_WRITE가 보류 중인지 여부
0x29 이사현황 아르 자형 1 0 = 중지됨, 1 = 이동 중
0x2A 하드웨어 오류 아르 자형 1 비트필드: 과부하, 과열 등
0x2B 펀치 RW 2 시동 중 전류 부스트

실제 검증:이러한 레지스터 주소는 여러 제조업체 및 Dynamixel SDK와 같은 오픈 소스 라이브러리의 데이터시트에 표시됩니다(브랜드 이름 제외). 항상 서보 문서를 통해 주소 매핑을 확인하세요.

05체크섬 계산(오류 감지)

데이터 무결성을 보장하기 위해 각 패킷은 체크섬 바이트로 끝납니다. 가장 일반적인 방법은XOR 체크섬:

연산:

1. 초기값 0부터 시작합니다.

2. 헤더의 모든 바이트(체크섬 자체 제외)를 하나씩 XOR합니다.

3. 최종 XOR 결과는 체크섬입니다.

계산 예서보 ID 5에 대한 PING 명령의 경우:

체크섬이 없는 패킷:0x55 0x55 0x05 0x00 0x01

모든 바이트를 XOR합니다:

0x55 ^ 0x55 = 0x00

0x00 ^ 0x05 = 0x05

0x05 ^ 0x00 = 0x05

0x05 ^ 0x01 = 0x04

체크섬 =0x04

전체 패킷:0x55 0x55 0x05 0x00 0x01 0x04

대체 방법 – 합계 체크섬:모든 바이트(체크섬 제외)를 모듈로 256으로 더한 다음 2의 보수를 취합니다(예:체크섬 = ~(합계 % 256) & 0xFF). 서보의 프로토콜 사양을 확인하세요.

06단계별 구현 예

대본:ID=1인 단일 서보를 제어하여 속도 100(스케일 0-1023)으로 위치 2048(0-4095의 중간 범위)로 이동합니다.

1단계 – WRITE_DATA 패킷 구축:

대상 주소: 목표 위치 =0x18(2바이트)

쓸 데이터:0x800(십진수 2048) =0x08 0x00(리틀 엔디안: 낮은 바이트부터 먼저)

데이터 길이 = 주소 바이트(2) + 값 바이트(2) = 4바이트

패킷 바이트:

헤더: 0x55 0x55 ID: 0x01 데이터 Len: 0x04 Instr: 0x03 (WRITE_DATA) 매개변수: 0x18(주소 하위 바이트), 0x00(주소 상위 바이트), 0x00(낮은 값), 0x08(높은 값)

2단계 - 체크섬 계산:

헤더부터 마지막 ​​매개변수까지 모든 바이트를 XOR합니다.

0x55^0x55=0x00; ^0x01=0x01; ^0x04=0x05; ^0x03=0x06; ^0x18=0x1E; ^0x00=0x1E; ^0x00=0x1E; ^0x08=0x16

체크섬 =0x16

3단계 - 전체 패킷 보내기:

55 55 01 04 03 18 00 00 08 16

4단계 - 응답 패킷 읽기:

각 쓰기 명령은 일반적으로 상태 패킷(동일한 헤더, ID, 데이터 길이=2, 상태 플래그, 체크섬)을 반환합니다. 예를 들어 성공 응답은 다음과 같습니다.

55 55 01 02 00 00 01(상태 0x00 = 성공, 체크섬 0x01)

07일반적인 함정과 해결책

문제 일반적인 원인 해결책
서보에서 응답이 없습니다. 잘못된 전송 속도 또는 ID 불일치 사용 가능한 ID를 검색하려면 PING 명령을 보냅니다. 전송 속도 설정 확인(기본값은 종종 115200 또는 57600)
무작위로 손상된 데이터 잘못된 체크섬 또는 타이밍 체크섬을 다시 계산합니다. 명령 사이에 5~10ms 지연 추가
서보가 비정상적으로 움직입니다. REG_WRITE 후 ACTION 명령이 누락되었습니다. 사용WRITE_DATA직접 보내거나행동(0x05) 결국REG_WRITE
연속 사용 시 과열 토크 제한이 너무 높거나 PID 게인이 공격적입니다. 토크 제한 레지스터(0x1C) 감소 및 P-게인(0x0E) 감소
포지션이 극단으로 치닫는다 각도 제한이 구성되지 않았습니다. 최소(0x06) 및 최대(0x08) 제한 레지스터를 먼저 작성합니다.

실제 사례:육각형 로봇을 만드는 취미생활자는 서보가 때때로 위치 명령을 무시한다는 사실을 발견했습니다. 패킷 사이에 5ms 지연을 추가하고 체크섬을 확인한 후 안정성이 85%에서 99.9%로 향상되었습니다.

08안정적인 다중 서보 제어를 위한 고급 기술

브로드캐스트 명령(ID=0):모든 서보에 동시에 명령을 보냅니다. 비상 정지 또는 모든 서보 재설정에 유용합니다. 예: 방송다시 놓기(0x06) ID=0인 패킷 – 버스의 모든 서보가 공장 설정으로 되돌아갑니다.

동기화 쓰기:다수의 서보를 제어할 때 개별적으로 보내는 서보WRITE_DATA각 서보는 다음 명령 전에 응답하기 때문에 명령이 지연됩니다.동기화_쓰기(0x07)이 이 문제를 해결합니다. 패킷 구조:

헤더, ID=0xFE(동기화 쓰기에 자주 사용됨), 데이터 길이, 명령어=0x07

뒤에는 주소(2바이트), 서보당 데이터 길이(1바이트), 쌍(서보 ID, 데이터 바이트)이 옵니다.

예:서보 1(값 1000) 및 서보 2(값 2000)에 대해 목표 위치(0x18)를 설정하기 위한 동기화 쓰기:

패킷:55 55 FE 0B 07 18 00 02 01 00 03 E8 02 00 07 D0(간결함을 위해 체크섬은 생략됨) 이는 한 번의 전송으로 두 서보를 모두 업데이트하여 응답 지연을 제거합니다.

상태 반환 제어:일부 서보는 쓰기 명령에 대한 상태 반환을 비활성화하여(레지스터 0x05 또는 이와 유사한 것을 통해) 버스 트래픽을 줄입니다. 디버깅이나 중요한 피드백에 대해서만 상태 반환을 활성화하세요.

09검증 및 테스트 체크리스트

프로토콜 구현이 올바르게 작동하는지 확인하려면 다음 테스트를 순서대로 수행하세요.

1. 핑 테스트:보내다알려진 ID로. 예상 응답: ID가 동일하고 오류 플래그 = 0인 상태 패킷.

2. 펌웨어 버전 읽기:보내다READ_DATA0x02 주소, 길이 1. 예상 반환: 버전 번호(예: v12의 경우 0x0C).

3. 쓰고 다시 읽으세요:쓰기 가능한 레지스터(예: ID 레지스터 0x03)에 값을 쓴 다음 다시 읽습니다. 값이 일치해야 합니다.

4. 위치 피드백:읽는 동안 서보 혼을 수동으로 회전하십시오.현재 위치(0x1E) – 값이 원활하게 변경되어야 합니다.

5. 부하 테스트:외부 토크를 적용하고 읽습니다.현재 부하(0x22) – 기호는 방향을 나타냅니다.

6. 버스 경합 확인:ID가 다른 두 개의 서보를 연결합니다. 교대로 명령을 보냅니다. 패킷 충돌이 발생하지 않아야 합니다.

입증된 사례:로직 분석기를 사용하여 UART 트래픽을 캡처합니다. 전송된 바이트를 예상 패킷 구조와 비교하십시오. 이는 프레이밍 또는 체크섬 오류를 식별하는 가장 빠른 방법입니다.

10개발자를 위한 실행 가능한 권장 사항

수백 개의 직렬 버스 서보 구현에 대한 현장 경험을 바탕으로 견고한 작동을 보장하려면 다음 지침을 따르십시오.

항상 체크섬 계산– 절대 하드코딩하거나 건너뛰지 마세요. 전송하기 전에 패킷을 XOR하는 전용 기능을 구현하십시오.

각도 제한을 먼저 설정하세요.– 위치를 명령하기 전에 기계적 손상을 방지하기 위해 안전한 최소/최대 한계(예: 0-4095 범위의 경우 200 ~ 3800)를 기록하십시오.

상태 머신 사용– 다중 서보 시스템의 경우 재시도(명령당 3회 시도) 및 시간 초과 감지(예: 100ms) 기능이 있는 명령 대기열을 구현합니다.

하드웨어 오류 레지스터 모니터링– 주소 0x2A를 정기적으로 읽습니다. 0이 아닌 값은 과부하, 과열 또는 전압 문제를 나타냅니다. 비트 2(과열)가 설정된 경우 즉시 토크를 차단하십시오.

풀업 저항 추가– 신호 라인(일반적으로 TX/RX 결합)에서 4.7kΩ 저항을 3.3V 또는 5V(논리 레벨 일치)에 추가하여 플로팅 상태를 방지합니다.

별도의 전원 및 신호 접지– 데이터를 손상시키는 접지 루프를 방지하려면 별형 접지를 사용하십시오. 서보 전원 공급 장치(일반적으로 5-7.4V)에는 논리 접지와 별도의 복귀 경로가 있어야 합니다.

먼저 하나의 서보로 테스트하십시오.– 여러 장치로 확장하기 전에 항상 단일 서보로 프로토콜 타이밍과 체크섬을 확인하십시오.

다시 언급된 핵심 결론:직렬 버스 서보 통신은 헤더, ID, 길이, 명령, 매개변수 및 체크섬이 포함된 구조화된 프레임에 의존합니다. XOR 체크섬, 레지스터 맵 및 동기화 쓰기 명령을 마스터하면 간단한 3선 버스를 통해 수백 개의 서보를 안정적으로 제어할 수 있습니다. 체크섬이나 타이밍 제약 조건을 무시하는 것이 간헐적인 오류의 주요 원인입니다.

최종 조치 단계:특정 서보 모델에 대한 참조 데이터시트를 다운로드하세요. 레지스터 주소를 위의 공통 맵과 비교하십시오. 그런 다음 PING 명령을 구현하는 짧은 테스트 스크립트(pyserial이 포함된 Python 또는 SoftwareSerial이 포함된 Arduino)를 작성합니다. 올바른 응답을 받으면 작동하는 프로토콜 기반을 구축한 것입니다. 체크섬과 응답 구문 분석이 로직 분석기로 검증될 때까지 다중 서보 제어를 진행하지 마십시오.

업데이트 시간:2026-04-05

미래에 힘을 실어주다

귀하의 제품에 적합한 모터 또는 기어박스를 추천하려면 Kpower 제품 전문가에게 문의하십시오.

케이파워에 메일보내기
문의 제출
WhatsApp 메시지
+86 0769 8399 3238
 
kpower지도