통합 차량 관제 시스템 용어 사전
통신·신호alive_counter · alive counter

alive counter

송신 태스크가 실제로 돌고 있는지 알려주는 순환 카운터. 프레임마다 값이 바뀌어야 정상이다.

seq_counter 와 헷갈리기 쉬운데 잡는 고장이 다르다.

seq_counter   이 데이터가 새 것인가        중복 · 역순 · 유실 검출
alive counter 송신 태스크가 도는가          태스크 정지 검출

두 번째가 실제로 잡기 어려운 고장이다

송신 노드의 애플리케이션이 hang 됐는데 CAN 컨트롤러가 마지막 프레임을 자동 재전송하면, 수신 측은 정상 프레임을 계속 받는다. heartbeat 도 정상으로 보인다. CRC 도 통과한다.

값이 안 변하는 것으로만 알 수 있고, 그걸 위해 매 송신마다 증가하는 카운터를 넣는다.

data[len - 1] = (uint8_t)((ctx->alive++ & 0x0F) | (data_id << 4));

수신 측은 이렇게 본다.

uint8_t alive = d[len - 1] & 0x0F;
if (alive == ctx->last_alive) return E2E_STALE_ALIVE;   /* 값이 안 변했다 */

4비트면 충분하다. 0~15 를 순환하는데, 재전송이 15회 연속으로 정확히 한 바퀴 돌 확률은 실용상 무시할 수 있다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 노드 간 인터페이스 — 신호 목록·CAN 프레임·E2E·버스 부하