Difference between revisions of "CanServo/Protoco/T2-Message"
Jump to navigation
Jump to search
(→개요) |
|||
| Line 13: | Line 13: | ||
** 체크섬 | ** 체크섬 | ||
*** 발신자 구분이 가능하면 CRC 16, 구분이 불가능하면, CRC32 권장. | *** 발신자 구분이 가능하면 CRC 16, 구분이 불가능하면, CRC32 권장. | ||
*** 의문: 패킷1개가 바뀌는 경우에는 7바이트가 바뀌는 것인데 CRC16,32의미가 있는가? 그래도 확율상 32가 나음? | |||
* Format | * Format | ||
Revision as of 05:01, 11 May 2026
개요
- 여러 개의 T-Message 가 섞이는 경우, 수신 측에서 분석 실패가 발생할 수 있습니다.
- CRC16만으로는 16 비트 초과의 변질을 감지할 수 없습니다.
- 예를 들어, 5개 패킷으로 이루어진 메시지에서 1-2개 패킷이 유실되어도 CRC가 맞을 가능성이 있습니다.
- 실제로 이런 일이 발생하였습니다.
- 완벽을 위한 필수 조건은 다음과 같습니다.
- 발신자 구분 = CAN ID를 통해서 구분
- 메시지마다 증가하는 시퀸스
- 패킷마다 증가하는 시퀸스
- 실제 전달하는 메시지의 길이
- 체크섬
- 발신자 구분이 가능하면 CRC 16, 구분이 불가능하면, CRC32 권장.
- 의문: 패킷1개가 바뀌는 경우에는 7바이트가 바뀌는 것인데 CRC16,32의미가 있는가? 그래도 확율상 32가 나음?
- Format
- 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 seq 의 최상위 bit는 toggle flag 자리를 사용
- T-Message 와의 구분
- T-Message의 toggle flag 는 1 부터 시작.
- packet seq 가 0 부터 시작하므로, toggle bit 자리가 0이 되어 구분이 가능.