CAN/CAN Open

CANOpen Object Dictionary 개념 및 역할

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

CANOpen Object Dictionary 개념 및 역할

Object Dictionary란?

Object Dictionary(객체 사전)는 CANOpen 프로토콜에서 중요한 데이터 구조로, 각 노드의 매개변수를 저장하고 관리하는 역할을 합니다. CANOpen 네트워크에서 모든 장치는 Object Dictionary를 통해 데이터를 주고받으며, 이를 통해 장치의 상태를 설정하고 모니터링할 수 있습니다.

Object Dictionary는 각 노드마다 존재하며, 장치의 기능 및 동작 방식을 정의하는 변수, 매개변수, 및 서비스 정보를 포함하고 있습니다. 이러한 구조는 표준화된 방식으로 장치 간의 데이터 교환을 가능하게 하여 상호 운용성을 보장합니다.

Object Dictionary의 역할

  1. 데이터 저장 및 관리
    Object Dictionary는 장치의 모든 설정 값, 입력 및 출력 데이터, 상태 정보를 저장합니다. 이를 통해 장치의 동작을 설정하고 변경할 수 있습니다.
  2. 통신 인터페이스 제공
    CANOpen 네트워크에서 SDO(서비스 데이터 오브젝트)와 PDO(프로세스 데이터 오브젝트)를 통해 데이터를 교환하는 데 사용됩니다. Object Dictionary는 이러한 데이터 전송 방식의 기반이 됩니다.
  3. 표준화된 접근 방식 제공
    모든 CANOpen 장치는 Object Dictionary를 통해 데이터를 공유하며, 이를 통해 장치 간의 호환성을 보장할 수 있습니다.
  4. 장치 프로파일(Device Profile) 지원
    CANOpen은 다양한 산업 및 응용 분야에서 사용되며, 각 응용 분야별 장치 프로파일이 정의되어 있습니다. Object Dictionary는 이러한 장치 프로파일을 지원하는 구조를 제공합니다.

Object Dictionary의 구조

Object Dictionary는 16비트 인덱스(Index)와 8비트 서브인덱스(Sub-Index)로 구성됩니다. 각각의 항목은 특정 데이터 유형과 속성을 가지며, 주요 구성 요소는 다음과 같습니다.

  • 통신 파라미터 (Communication Parameters): 네트워크 통신에 필요한 설정 값을 포함합니다.
  • 장치 프로파일 파라미터 (Device Profile Parameters): 특정 장치 유형에 대한 설정 값을 저장합니다.
  • 제조사 별 파라미터 (Manufacturer Specific Parameters): 제조사가 추가적으로 정의한 설정 값을 포함합니다.

Object Dictionary의 주요 항목

CANOpen 표준에서는 여러 가지 주요 Object Dictionary 항목이 정의되어 있으며, 대표적인 항목은 다음과 같습니다.

  • 0x1000 (Device Type): 장치 유형을 정의합니다.
  • 0x1001 (Error Register): 장치의 오류 상태를 나타내는 레지스터입니다.
  • 0x1018 (Identity Object): 제조업체 정보 및 제품 정보를 저장합니다.
  • 0x1200 ~ 0x12FF (SDO Server Parameters): SDO(서비스 데이터 오브젝트) 서버에 대한 설정을 포함합니다.
  • 0x1400 ~ 0x1BFF (PDO Communication Parameters): PDO(프로세스 데이터 오브젝트)의 통신 설정을 정의합니다.

Object Dictionary 활용 예시

STM32F429를 기반으로 한 CANOpen 장치에서 Object Dictionary를 구성하는 방법을 예제로 살펴보겠습니다. STM32CubeIDE 및 HAL 라이브러리를 사용하여 Object Dictionary를 정의하고 데이터를 접근하는 기본적인 방법을 구현할 수 있습니다.

Object Dictionary 선언 예제

#include "CO_OD.h"

const CO_OD_entry_t CO_OD[] = {
    {0x1000, 0x00, 4, RW, &device_type},
    {0x1001, 0x00, 1, RO, &error_register},
    {0x1018, 0x00, 8, RO, &identity_object},
    {0x1200, 0x00, 4, RW, &sdo_server},
};

Object Dictionary에서 데이터 읽기 및 쓰기

uint32_t read_device_type() {
    return device_type;
}

void write_device_type(uint32_t new_value) {
    device_type = new_value;
}

결론

Object Dictionary는 CANOpen 장치의 핵심 데이터 관리 구조로, 장치의 설정, 상태 모니터링, 데이터 전송을 표준화된 방식으로 수행할 수 있도록 지원합니다. STM32F429 및 STM32CubeIDE를 활용하여 Object Dictionary를 구현하면 CANOpen 네트워크에서 안정적인 데이터 통신이 가능합니다.

728x90
반응형