CANOpen Object Dictionary 개념 및 역할
Object Dictionary란?
Object Dictionary(객체 사전)는 CANOpen 프로토콜에서 중요한 데이터 구조로, 각 노드의 매개변수를 저장하고 관리하는 역할을 합니다. CANOpen 네트워크에서 모든 장치는 Object Dictionary를 통해 데이터를 주고받으며, 이를 통해 장치의 상태를 설정하고 모니터링할 수 있습니다.
Object Dictionary는 각 노드마다 존재하며, 장치의 기능 및 동작 방식을 정의하는 변수, 매개변수, 및 서비스 정보를 포함하고 있습니다. 이러한 구조는 표준화된 방식으로 장치 간의 데이터 교환을 가능하게 하여 상호 운용성을 보장합니다.
Object Dictionary의 역할
- 데이터 저장 및 관리
Object Dictionary는 장치의 모든 설정 값, 입력 및 출력 데이터, 상태 정보를 저장합니다. 이를 통해 장치의 동작을 설정하고 변경할 수 있습니다. - 통신 인터페이스 제공
CANOpen 네트워크에서 SDO(서비스 데이터 오브젝트)와 PDO(프로세스 데이터 오브젝트)를 통해 데이터를 교환하는 데 사용됩니다. Object Dictionary는 이러한 데이터 전송 방식의 기반이 됩니다. - 표준화된 접근 방식 제공
모든 CANOpen 장치는 Object Dictionary를 통해 데이터를 공유하며, 이를 통해 장치 간의 호환성을 보장할 수 있습니다. - 장치 프로파일(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 네트워크에서 안정적인 데이터 통신이 가능합니다.
'CAN > CAN Open' 카테고리의 다른 글
SDO (Service Data Object)와 PDO (Process Data Object) (0) | 2025.07.19 |
---|---|
CANOpen 데이터 타입 및 인덱스 구조 (0) | 2025.07.18 |
CANOpen 프로토콜 상세 분석 (0) | 2025.07.17 |
CANOpen Device Profiles (CiA 표준) (0) | 2025.07.16 |
CANOpen에서의 Master/Slave와 Client/Server 개념 (0) | 2025.07.15 |