CanServo/Protocol/0

From HITEC_HELP
Jump to navigation Jump to search

Protocol Sections

Message Types

CAN ID Short Message Long Message
Host -> Servo 0(Broadcast) or ID2 0x7FE, ID2+4
Servo -> Host ID2 or ID2+1 0x7FF, ID2+5
  • CAN-FD 도입에 따른 Short / Long Message 운영 방침
    • 아래 2026_02_11 기록 확인 요망
  • 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, ID2+4
      • ZGid 등
        • ID2 = 0 이면, 0x7FF 로 반환
        • ID2 = 0 아니면, ID2+5 로 반환
      • 기타
        • ID2+4 수신시, ID2+5 반환
        • 0x7FE 수신시, 0x7FF 반환
  • (여기까지오면, 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
      • 0x7Fx, ID2+5 가능?
    • V1.2 - V1.0 과 같음
      • return CAN ID = ID2 또는 ID2 + 1
    • V1.3 - 63 byte 이하 고정 길이(일부 유동), UID 또는 ID2/ID1 포함, CAN ID = Long
      • 0x7Fx, ID2+5 가능?
    • 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만 사용합니다.
        • Short Message로만 가능한 V1.0, V1.2 사용 불가
      • 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

  • V1.6 추가

2025_02

    • CAN-FD 추가
    • Short Mesasge 추가
    • V1.5 추가
    • ID2+X 추가

2024_11

    • R1CAN 추가