Protocol Sections
- SERVO/PROTOCOL/CAN/V1.0/ENG - V1.0 - w/W, r/R, x/X, v/V
- Write/Read 1 or 2 register
- Prohibited keywords ( 금지 키워드 )
- CanServo/Protocol/V1.1 - V1.1 - ZUID, ZIDS, ZG??, ZR??, ZS??, ZX??, FILE(ZGFL, ZSDF, ZFWU), ZMSG
- Simple Broadcast UID and Set IDs(ID1,ID2) via UID - ZUID, ZIDS
- Write/Read register's bits by ID or UID
- FILE Access
- Message: ZMSG
- CanServo/Protocol/V1.2 - V1.2 - p/P, g/G, o/O, y/Y
- Write/Read 1 or 2 register with 2 byte address in 1 packet
- address = max 1024 range (0~1023)
- CanServo/Protocol/V1.3 - V1.3 - ZU??(Except ZUID), K
- Write/Read 1 or 2 register via UID
- Broadcast UID
- UID search
- CanServo/Protocol/V1.4 - V1.4 - sync
- CanServo/Protocol/V1.5 - V1.5 - ZKW?, ZKR?, ZKX?, ZKV?
- CanServo/Protocol/V1.6 - V1.6 - Zc??, Zr??
- CanServo/Protocol/V1.7 - V1.7 - Pot Calibration - ZP??
- CanServo/Protocol/V1.8 - V1.8 - zs? - Address 256이상인 Stream 설정 및 Stream 전용 Message (2026_02_06)
- CanServo/Protocol/V1.9 - V1.9 - ZZ??, PZ 읽기, (2026_02_06)
Message Types
- Tail Byte 유무에 따라 Short/Long Message로 나눕니다.
- CAN-FD 도입에 따른 Short / Long Message 운영 방침
- RR 정의 (2026_01_14)
- 이 날짜 이전 버전은 +2, +3 가 되며, Return + 1 (실제로는 bit OR 1) option을 설정하면 꼬임.
- ID2 + 2 = RR MCU 1 Access
- ID2 + 3 = RR MCU 1 Return + 1 option
- ID2 + 6 = RR MCU 2 Access
- ID2 + 7 = RR MCU 2 Return + 1 option
- NOTE: ID2 must aligned by 8.
Target ID
- Target Servo ID만 존재하고, ID2 정보가 없는 메시지(V1.0, V1.2, V1.5 등)
- CAN ID = 0 혹은 0x7FE 를 통해 전달하면 ID1 만 확인됩니다.
- ID2 구분이 필요하면, ID2, ID2+4 를 통해서 전달해야 합니다.
Section / platform
| Section
|
Short
|
Long
|
ST
|
AT
|
G491
|
RR
|
| 1.0
|
Yes
|
No
|
Yes
|
Yes
|
Yes
|
Yes
|
| 1.1
|
No
|
Yes
|
|
Yes
|
Yes
|
| 1.2
|
Yes
|
No
|
|
|
|
Yes
|
| 1.3
|
No
|
Yes
|
|
2.3(3)
|
Yes
|
|
| 1.4
|
Yes
|
Yes
|
|
2.3(3)
|
Yes
|
|
| 1.5
|
No
|
Yes
|
|
|
|
| 1.6
|
-
|
Yes
|
No
|
No
|
Yes
|
Yes
|
| 1.7
|
|
|
|
|
|
|
| 1.8
|
-
|
Yes
|
|
|
|
|
| 1.9
|
|
|
|
|
|
|
| ID2+4/5
|
|
|
|
|
|
|
- DATE: 2024_11_25, G491 R1CAN
Message Return Rule
NOTE: 우선 순위 높은 규칙부터 나열합니다.
- CAN Data Type (CAN, FD, BRS) 유지
- ID2 구분이 필요한 메시지
- V1.0, V1.2 -> ID2 ( 또는 설정에 따라 ID2 + 1 )
- V1.5 -> ID2 + 5
- Long 메시지: Long 메시지로 반환
- 0x7FE 수신시 0x7FF 로 반환
- ID2+4 수신시 ID2+5 로 반환
- (여기까지오면, 0 또는 ID2 인 Short 메시지)
- CAN 수신시
- 반환 메시지 (유동적일 때는 최대) 길이가 8바이트 초과인 경우에는 ID2+5 Long 메시지로 반환
- ID2 또는 ID2+1, Short 메시지로 반환
- FD 또는 FD/BRS 수신시
- 반환 메시지 (유동적일 때는 최대) 길이가 63바이트 초과인 경우에는 ID2+5 Long 메시지로 반환
- ID2 또는 ID2+1, Short 메시지로 반환
Protocol Recv CAN ID Rule
- 조사
- V1.0 - 8 byte 이하 고정 길이, ID1만 있음, CAN ID = Short
- return CAN ID = ID2 또는 ID2 + 1
- V1.1 - 63 byte 이하 고정 길이, UID 또는 ID2/ID1 포함, CAN ID = Long
- V1.2 - V1.0 과 같음
- return CAN ID = ID2 또는 ID2 + 1
- V1.3 - 63 byte 이하 고정 길이(일부 유동), UID 또는 ID2/ID1 포함, CAN ID = Long
- V1.4 - sync, ID 없음, 모든 CAN ID 가능, CAN ID = Any
- V1.5 - 8 byte 초과 유동적 길이, ID1만 있음, CAN ID = Long
- 0x7Fx 가능, return CAN ID = ID2 + 5 권장
- V1.6 - Long, ID2/ID1 포함, CAN ID = Long
- V1.7 - 다양한 길이의 고정 길이, ID2/ID1 포함, 모든 CAN ID 가능, CAN ID = Long
- V1.8 - 안씀?
- V1.9 - Long, ID2/ID1 포함, 모든 CAN ID 가능, CAN ID = Long
- 결론
- Short = V1.0, V1.2
- Any = V1.4
- Long = 이외
CAN-FD
History
2026_03_05
- V1.5 메시지는, (0x7FE, ID2+4) 수신 CAN ID에 상관없이 , 무조건 ID2+5 로 반환
2026_02_11
- CAN-FD 도입에 따른 Short / Long Message 운영 방침 정리
- CAN-FD 기능이 도입되면서, 어느 정도 긴 문장도 1개 패킷으로 가능하게 되었습니다.
- 예: ZKV2 메시지가 CAN-FD 1개 packet으로 가능
- 이때 테스트 자동화 과정에서, 모든 경우의 수를 수행하면서, Long Message를 Short Message CAN ID에 전송하여서 문제가 발생함.
- 예를 들어, p로 시작하는 패킷이 전달되면 이상 동작을 함.
- 발신 UI가 잘못한 것.
- 이런 일이 생기지 않도록 아예 분리합니다.
- Long Message 로 보내면 TAIL BYTE 때문에 1바이트 늘어나게 되는데 이는 큰 문제는 아니므로, 고정 적으로 할당합니다.
- 즉, CAN에서 Short / Long Message로 정의되었던 내용은, CAN-FD에서도 그대로 Short / Long Message로 사용합니다.
- DroneCAN에서의 우리 프로토콜 사용 방침
- Long Message만 사용합니다.
- ID2 = 0 ~ 127
- DroneCAN 통신 방해를 하지 않기 위해서, CAN 2.0A 로 작동합니다.
2026_01_14
- SR33 RR MCU 1/2 Access 기준 변경
- 변경전: ID2 + 2, ID2 + 3
- 변경후: ID2 + 2, ID2 + 6
- 사유: Return +1 option을 설정하면, 실제로는 OR 1 이기 때문에, +3, +3 으로 꼬임
- 만일 +1 이라고 해도, +3, +4 가 되어, Long Message와 꼬임.
2025_06_19
- (6) Return message has bug
- (4) Replace message keyword
- ZRUU: ZSUU, ZXUU, ZGUU -> ZRuu, ZSuu, ZXuu, ZGuu
- ZRID: ZSID, ZXID, ZGID -> ZRid, ZSid, ZXid, ZGid
- ZUV1: ZUW1, ZUX1, ZUR1 -> ZUv1, ZUw1, ZUx1, ZUr1
- ZUV2: ZUW2, ZUX2, ZUR2 -> ZUv2, ZUw2, ZUx2, ZUr2
- 과거 FW가 반응하지 않도록 메시지의 키워드를 변경합니다.
- CanServo/Protocol/V1.1#2025_06_19
- CanServo/Protocol/V1.3#2025_06_19
- (2) No replace:
- ZMSG -> 전송 코드 수정으로 해결
- ZGFL -> 조심해서 사용
2025_03
2025_02
- CAN-FD 추가
- Short Mesasge 추가
- V1.5 추가
- ID2+X 추가
2024_11