Difference between revisions of "CanServo/Protocol/Control"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
 (Created page with " CAN Packet 의 Data 8 byte 에 들어가는 메시지는 구형 3개 신형 8개, 총 11개가 있습니다. 첫 바이트는 메시지의 종류를 나타냅니다.  여기...")  | 
				|||
| (25 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
[[CanServo/MODE/CAN]] = 2.0A or 2.0B 인 상태에서 사용하는 protocol 입니다.  | |||
* UAVCAN 상태의 protocol 은 [[CanServo/Protocol/UAVCAN]] 을 참조해 주십시오.  | |||
CAN Packet 의 Data 8 byte 에 들어가는 메시지는 구형   | |||
CAN 서보는, Register [[CanServo/ID2]] 에 설정된 CAN ID 와 아래 메시지 포맷을 따르는 Data 를 가지는 CAN 패킷을 발신하여 제어합니다.  | |||
CAN Data 의 메시지 종류에 따라 서보의 Register 를 변경하거나 읽을 수 있습니다.  | |||
* 간단한 예를 들어 보면, 아래의 패킷을 발신하면 수신한 모든 서보가 Register 0x30 의 값을 0x1234 로 변경합니다.  | |||
** CAN ID = 0  | |||
** CAN DATA = 'w', 0, 0x30, 0x34, 0x12  | |||
** DLC = 5  | |||
* 다만, [[CanServo/MODE/CAN]] 설정값에 따라 Can Packet Type 은 따집니다.  | |||
CAN Packet 의 Data 8 byte 에 들어가는 메시지는 구형 3가지 신형 8가지, 총 11가지가 있습니다.  | |||
첫 바이트는 메시지의 종류를 나타냅니다.  | 첫 바이트는 메시지의 종류를 나타냅니다.  | ||
두 번째 바이트는 서보의 ID 입니다.  | |||
여기서 Target Servo ID 는 Servo 의 [[CanServo/ID1]] 의 값과 일치해야 합니다.  | |||
혹은 0 을 지정하면, 모든 서보가 반응합니다.  | |||
정확한 절차는 [[CanServo/Packet Accept Rule]] 을 참조해 주십시오.  | |||
V0: 구형 포맷  | |||
* Old Write Command  | * Old Write Command  | ||
| Line 12: | Line 29: | ||
*** 0x96, (target servo id), (address), 2, (data low byte), (data high byte), (chksum)  | *** 0x96, (target servo id), (address), 2, (data low byte), (data high byte), (chksum)  | ||
*** DLC = 7  | *** DLC = 7  | ||
* Old Read Command  | * Old Read Command  | ||
** read 1 register  | ** read 1 register  | ||
*** 0x96, (target servo id), (address), 0, (chksum)  | *** 0x96, (target servo id), (address), 0, (chksum)  | ||
*** DLC = 5  | *** DLC = 5  | ||
* Old Return Message  | * Old Return Message  | ||
** return 1 register  | ** return 1 register  | ||
*** 0x69, (servo id), (address), 2, (data low byte), (data high byte), (chksum)  | *** 0x69, (servo id), (address), 2, (data low byte), (data high byte), (chksum)  | ||
*** DLC = 7  | *** DLC = 7  | ||
* Old message's chksum  | * Old message's chksum  | ||
** add all bytes before chksum, except first byte  | ** add all bytes before chksum, except first byte  | ||
신형 포맷:  | |||
V1: 신형 포맷: 체크섬을 뺀 형태  | |||
* Write Command  | * Write Command  | ||
| Line 32: | Line 57: | ||
*** 'W', (target servo id), (address 0), (data 0 low byte), (data 0 high byte), (address 1), (data 1 low byte), (data 1 high byte)  | *** 'W', (target servo id), (address 0), (data 0 low byte), (data 0 high byte), (address 1), (data 1 low byte), (data 1 high byte)  | ||
*** DLC = 8  | *** DLC = 8  | ||
* Read Command  | * Read Command  | ||
| Line 40: | Line 66: | ||
*** 'R', (target servo id), (address 0), (address 1)  | *** 'R', (target servo id), (address 0), (address 1)  | ||
*** DLC = 4  | *** DLC = 4  | ||
* Write and Read Command  | * Write and Read Command  | ||
| Line 48: | Line 75: | ||
*** 'X', (target servo id), (address 0), (data 0 low byte), (data 0 high byte), (address 1), (data 1 low byte), (data 1 high byte)  | *** 'X', (target servo id), (address 0), (data 0 low byte), (data 0 high byte), (address 1), (data 1 low byte), (data 1 high byte)  | ||
*** DLC = 8  | *** DLC = 8  | ||
* Return Message : Servo --> Host  | * Return Message : Servo --> Host  | ||
Latest revision as of 19:08, 23 September 2021
CanServo/MODE/CAN = 2.0A or 2.0B 인 상태에서 사용하는 protocol 입니다.
- UAVCAN 상태의 protocol 은 CanServo/Protocol/UAVCAN 을 참조해 주십시오.
 
CAN 서보는, Register CanServo/ID2 에 설정된 CAN ID 와 아래 메시지 포맷을 따르는 Data 를 가지는 CAN 패킷을 발신하여 제어합니다.
CAN Data 의 메시지 종류에 따라 서보의 Register 를 변경하거나 읽을 수 있습니다.
- 간단한 예를 들어 보면, 아래의 패킷을 발신하면 수신한 모든 서보가 Register 0x30 의 값을 0x1234 로 변경합니다.
- CAN ID = 0
 - CAN DATA = 'w', 0, 0x30, 0x34, 0x12
 - DLC = 5
 
 - 다만, CanServo/MODE/CAN 설정값에 따라 Can Packet Type 은 따집니다.
 
CAN Packet 의 Data 8 byte 에 들어가는 메시지는 구형 3가지 신형 8가지, 총 11가지가 있습니다.
첫 바이트는 메시지의 종류를 나타냅니다.
두 번째 바이트는 서보의 ID 입니다.
여기서 Target Servo ID 는 Servo 의 CanServo/ID1 의 값과 일치해야 합니다.
혹은 0 을 지정하면, 모든 서보가 반응합니다.
정확한 절차는 CanServo/Packet Accept Rule 을 참조해 주십시오.
V0: 구형 포맷
- Old Write Command
- write 1 register
- 0x96, (target servo id), (address), 2, (data low byte), (data high byte), (chksum)
 - DLC = 7
 
 
 - write 1 register
 
- Old Read Command
- read 1 register
- 0x96, (target servo id), (address), 0, (chksum)
 - DLC = 5
 
 
 - read 1 register
 
- Old Return Message
- return 1 register
- 0x69, (servo id), (address), 2, (data low byte), (data high byte), (chksum)
 - DLC = 7
 
 
 - return 1 register
 
- Old message's chksum
- add all bytes before chksum, except first byte
 
 
V1: 신형 포맷: 체크섬을 뺀 형태
- Write Command
- write 1 register
- 'w', (target servo id), (address), (data low byte), (data high byte)
 - DLC = 5
 
 - write 2 registers
- 'W', (target servo id), (address 0), (data 0 low byte), (data 0 high byte), (address 1), (data 1 low byte), (data 1 high byte)
 - DLC = 8
 
 
 - write 1 register
 
- Read Command
- read 1 register
- 'r', (target servo id), (address)
 - DLC = 3
 
 - read 2 registers
- 'R', (target servo id), (address 0), (address 1)
 - DLC = 4
 
 
 - read 1 register
 
- Write and Read Command
- write and read: 1 register
- 'x', (target servo id), (address), (data low byte), (data high byte)
 - DLC = 5
 
 - write and read: 2 registers
- 'X', (target servo id), (address 0), (data 0 low byte), (data 0 high byte), (address 1), (data 1 low byte), (data 1 high byte)
 - DLC = 8
 
 
 - write and read: 1 register
 
- Return Message : Servo --> Host
- return 1 register
- 'v', (servo id), (address), (data low byte), (data high byte)
 - DLC = 5
 
 - return 2 registers
- 'V', (servo id), (address 0), (data 0 low byte), (data 0 high byte), (address 1), (data 1 low byte), (data 1 high byte)
 - DLC = 8
 
 
 - return 1 register