Difference between revisions of "CanServo/Protoco/T2-Message"
Jump to navigation
Jump to search
(→개요) |
(→개요) |
||
| (10 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의미가 있는가? 그래도 | *** 의문: 패킷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 = 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, 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이 되어 구분이 가능.