Difference between revisions of "CanServo/Protoco/T2-Message"

From HITEC_HELP
Jump to navigation Jump to search
 
(9 intermediate revisions by the same user not shown)
Line 6: Line 6:
*** 실제로 이런 일이 발생하였습니다.
*** 실제로 이런 일이 발생하였습니다.


* 완벽을 위한 필수 조건은 다음과 같습니다.
* 완벽을 위한 조건은 다음과 같습니다.
** 발신자 구분 = CAN ID를 통해서 구분
** 발신자 구분 = CAN ID를 통해서 구분
** 메시지마다 증가하는 시퀸스
** 메시지마다 증가하는 시퀸스
Line 12: Line 12:
** 실제 전달하는 메시지의 길이
** 실제 전달하는 메시지의 길이
** 체크섬
** 체크섬
*** 발신자 구분이 가능하면 CRC 16, 구분이 불가능하면 CRC32 추천.
*** 발신자 구분이 가능하면 CRC 16, 구분이 불가능하면 CRC32 ?
*** 의문: 패킷1개가 바뀌는 경우에는 7바이트가 바뀌는 것인데 CRC16,32의미가 있는가? 그래도 확율상 32가 나음?
*** 의문: 패킷1개가 바뀌는 경우에는 7바이트가 바뀌는 것인데 CRC16,32의미가 있는가? 그래도 확률상 32가 나음?
** 체크섬, 메시지 길이의 위치 = 처음에 넣음. 마지막에 넣는 다면, 이것도 유동적이라 부적절함.
 
* 사용 조건
** 1개 패킷으로 보낼 수 없는 경우에 T2-Messsage 전송


* Format
* Format
** Message = L(2), crc(2 or 4), msg body(L byte)
** Message = L(2), crc(2 or 4), msg body(L byte)
** Packet = packet body(max 7), tail byte (begin/end flag, packet seq: 4 bit, msg seq: 2 bit)
** Packet = part of msg(max 7 or 63), tail byte (begin/end flag, packet seq: 4 bit, msg seq: 2 bit)
*** packet seq 의 최상위 bit는 toggle flag 자리를 사용
*** packet seq 의 최상위 bit는 toggle flag 자리를 사용
*** 검토: packet seq = 3 bit, msg seq = 3 bit 는 어떤가?
*** 검토: packet seq, msg seq bit 배분, 4/2, 3/3


* T-Message 와의 구분
* T-Message 와의 구분
** T-Message의 toggle flag 는 1 부터 시작.
** T-Message의 toggle flag 는 1 부터 시작.
** packet seq 가 0 부터 시작하므로, toggle bit 자리가 0이 되어 구분이 가능.
** packet seq 가 0 부터 시작하므로, toggle bit 자리가 0이 되어 구분이 가능.

Latest revision as of 04:50, 21 May 2026

개요

  • 여러 개의 T-Message 가 섞이는 경우, 수신 측에서 분석 실패가 발생할 수 있습니다.
    • CRC16만으로는 16 비트 초과의 변질을 감지할 수 없습니다.
    • 예를 들어, 5개 패킷으로 이루어진 메시지에서 1-2개 패킷이 유실되어도 CRC가 맞을 가능성이 있습니다.
      • 실제로 이런 일이 발생하였습니다.
  • 완벽을 위한 조건은 다음과 같습니다.
    • 발신자 구분 = CAN ID를 통해서 구분
    • 메시지마다 증가하는 시퀸스
    • 패킷마다 증가하는 시퀸스
    • 실제 전달하는 메시지의 길이
    • 체크섬
      • 발신자 구분이 가능하면 CRC 16, 구분이 불가능하면 CRC32 ?
      • 의문: 패킷1개가 바뀌는 경우에는 7바이트가 바뀌는 것인데 CRC16,32의미가 있는가? 그래도 확률상 32가 나음?
    • 체크섬, 메시지 길이의 위치 = 처음에 넣음. 마지막에 넣는 다면, 이것도 유동적이라 부적절함.
  • 사용 조건
    • 1개 패킷으로 보낼 수 없는 경우에 T2-Messsage 전송
  • Format
    • Message = L(2), crc(2 or 4), msg body(L byte)
    • Packet = part of msg(max 7 or 63), tail byte (begin/end flag, packet seq: 4 bit, msg seq: 2 bit)
      • packet seq 의 최상위 bit는 toggle flag 자리를 사용
      • 검토: packet seq, msg seq bit 배분, 4/2, 3/3
  • T-Message 와의 구분
    • T-Message의 toggle flag 는 1 부터 시작.
    • packet seq 가 0 부터 시작하므로, toggle bit 자리가 0이 되어 구분이 가능.