CAN/CAN Open

CANOpen Heartbeat & Node Guarding

임베디드 친구 2025. 7. 21. 20:07
728x90
반응형

CANOpen 통신 기법

CANOpen은 CAN(Controller Area Network) 기반의 산업용 네트워크 프로토콜로, 다양한 임베디드 장치 간의 원활한 통신을 가능하게 합니다. 이 장에서는 CANOpen에서 사용되는 주요 통신 기법을 상세히 분석하여, 실제 시스템 구현 시 필요한 개념과 기법을 이해하는 데 도움을 주고자 합니다.

CANOpen 통신은 기본적으로 CAN 프로토콜을 기반으로 하며, 데이터 전송을 위해 다양한 메시지 유형과 통신 객체를 활용합니다. 이를 통해 네트워크 내 여러 노드 간의 신뢰성 높은 데이터 교환이 이루어지며, 실시간 제어와 모니터링이 가능합니다.

이 장에서는 CANOpen 통신에서 핵심적인 역할을 하는 서비스와 프로토콜, 메시지 프레임 구조 등을 설명하며, 실제 STM32F429 기반의 구현에서 고려해야 할 사항들도 함께 다룰 것입니다. 이를 통해 CANOpen을 활용한 임베디드 네트워크 구축과 관련된 실무적인 이해도를 높일 수 있을 것입니다.

Heartbeat & Node Guarding

CANOpen 네트워크에서 노드의 상태를 모니터링하고, 네트워크의 정상적인 동작을 유지하기 위해 Heartbeat와 Node Guarding이라는 두 가지 메커니즘이 사용됩니다. 이 두 가지 방식은 노드의 활성 상태를 주기적으로 확인하는 기능을 제공하며, 노드의 오류 감지 및 복구에 중요한 역할을 합니다.

Heartbeat

개요

Heartbeat는 CANOpen 네트워크에서 노드가 자신의 상태를 주기적으로 전송하는 방식입니다. 각 노드는 사전에 설정된 주기에 따라 Heartbeat 메시지를 전송하며, 이를 통해 네트워크 마스터나 다른 노드가 해당 노드의 상태를 모니터링할 수 있습니다.

Heartbeat 메시지 형식

Heartbeat 메시지는 CAN-ID 0x700 + Node ID를 사용하여 전송되며, 데이터 필드는 1바이트 크기로 노드의 상태를 나타냅니다.

바이트 수 설명
1 노드 상태 값 (NMT 상태)

노드 상태 값

Heartbeat 메시지에서 전송되는 노드 상태 값은 다음과 같은 상태를 나타냅니다.

상태
0x00 Boot-up
0x04 Stopped
0x05 Operational
0x7F Pre-operational

Heartbeat 프로듀서와 컨슈머

  • Heartbeat 프로듀서(Producer): Heartbeat 메시지를 주기적으로 전송하는 노드입니다.
  • Heartbeat 컨슈머(Consumer): 특정 노드의 Heartbeat 메시지를 수신하여 해당 노드의 상태를 모니터링하는 노드입니다. 일정 시간 동안 Heartbeat 메시지를 받지 못하면 해당 노드가 비정상 상태로 판단됩니다.

설정 방법

STM32CubeIDE 및 HAL을 이용하여 Heartbeat를 설정하는 방법은 다음과 같습니다.

  1. Heartbeat 주기를 정의합니다.
  2. Heartbeat 메시지를 주기적으로 전송하도록 타이머 인터럽트를 설정합니다.
  3. 다른 노드의 Heartbeat 메시지를 수신하여 컨슈머 기능을 구현합니다.

Node Guarding

개요

Node Guarding은 Heartbeat보다 이전에 사용된 방식으로, 네트워크 마스터가 주기적으로 특정 노드에게 응답을 요청하고, 해당 노드가 응답하는 방식으로 상태를 확인합니다. 마스터가 일정 시간 내에 응답을 받지 못하면 노드가 비정상적인 상태로 간주됩니다.

Node Guarding 메시지 형식

Node Guarding은 CAN-ID 0x700 + Node ID를 사용하여 메시지를 주고받으며, Heartbeat와 유사한 구조를 가집니다.

바이트 수 설명
1 노드 상태 값 (NMT 상태)

Node Guarding 동작 방식

  1. 마스터 노드는 특정 노드에 대해 주기적으로 Guard 메시지를 전송합니다.
  2. 노드는 이를 수신하면 자신의 현재 상태를 응답으로 보냅니다.
  3. 마스터가 일정 시간 동안 응답을 받지 못하면 해당 노드가 비정상 상태로 판단됩니다.

Heartbeat와 Node Guarding의 비교

항목 Heartbeat Node Guarding
동작 방식 노드가 주기적으로 상태를 브로드캐스트 마스터가 노드의 상태를 요청하고 응답을 받음
오버헤드 낮음 비교적 높음
구현 난이도 쉬움 상대적으로 복잡
주로 사용되는 환경 최신 CANOpen 네트워크 이전 버전의 네트워크

결론

Heartbeat와 Node Guarding은 CANOpen 네트워크에서 노드 상태를 모니터링하는 중요한 기능입니다. 최근에는 Heartbeat 방식이 더 널리 사용되며, STM32F429와 STM32CubeIDE를 이용한 CANOpen 구현에서도 Heartbeat 방식이 주로 사용됩니다. 하지만 기존 시스템과의 호환성을 위해 Node Guarding 방식도 여전히 일부 시스템에서 사용될 수 있습니다. 따라서 두 방식의 차이를 이해하고, 프로젝트에 적절한 방법을 선택하는 것이 중요합니다.

728x90
반응형