CAN/CAN Open

CANOpen 데이터 타입 및 인덱스 구조

임베디드 친구 2025. 7. 18. 19:51
728x90
반응형

CANOpen 데이터 타입 및 인덱스 구조

CANOpen 데이터 타입 개요

CANOpen 프로토콜에서 데이터를 송수신할 때, 데이터의 해석과 처리는 정해진 데이터 타입에 따라 이루어집니다. CANOpen은 CiA(CAN in Automation) 표준에 따라 다양한 데이터 타입을 정의하고 있으며, Object Dictionary 내에서 이를 관리합니다.

기본 데이터 타입

CANOpen에서 사용되는 주요 데이터 타입은 다음과 같습니다:

  • BOOLEAN (1비트): 참/거짓 값을 나타냅니다.
  • INTEGER8, INTEGER16, INTEGER32, INTEGER64: 각각 8, 16, 32, 64비트의 정수형 데이터입니다.
  • UNSIGNED8, UNSIGNED16, UNSIGNED32, UNSIGNED64: 각각 8, 16, 32, 64비트의 부호 없는 정수형 데이터입니다.
  • REAL32, REAL64: 각각 32비트, 64비트 부동소수점 값입니다.
  • VISIBLE_STRING: 가독성을 위한 문자열 데이터입니다.
  • OCTET_STRING: 바이트 배열 형태의 데이터입니다.
  • UNICODE_STRING: 유니코드 문자열 데이터를 저장합니다.

복합 데이터 타입

일부 CANOpen 프로파일에서는 여러 개의 데이터를 하나의 구조체 형태로 묶어서 관리하기도 합니다. 예를 들어, PDO(Parameter Dictionary Object)에서 여러 개의 변수를 하나의 객체에 포함시킬 수 있습니다.

Object Dictionary에서 데이터 타입 활용

Object Dictionary는 각 변수 및 객체의 저장 위치와 속성을 관리하는 데이터 구조로, 다음과 같은 항목들로 구성됩니다:

  • Index (16비트): 데이터 항목의 주소 역할을 하며, 0x0000부터 0xFFFF까지의 값을 가질 수 있습니다.
  • Sub-Index (8비트): 하나의 Index 내에서 여러 개의 서브 요소를 구분하는 역할을 합니다.
  • Data Type: 해당 객체가 가지는 데이터 타입을 명시합니다.
  • Access Type: 읽기, 쓰기 권한을 지정합니다 (예: Read-Only, Read/Write 등).

주요 인덱스 범위

CANOpen의 Object Dictionary에서 사용되는 주요 인덱스 범위는 다음과 같습니다:

인덱스 범위 설명
0x0000 - 0x0FFF 표준 객체, 일반적으로 예약됨
0x1000 - 0x1FFF 통신 관련 객체 (예: Device Type, Error Register)
0x2000 - 0x5FFF 제조업체별 정의 객체
0x6000 - 0x9FFF 입력 및 출력 프로세스 데이터
0xA000 - 0xFFFF 기타 응용 프로그램 데이터

데이터 타입과 통신

CANOpen에서 데이터를 주고받을 때, 데이터 타입에 따라 송수신 패킷의 구조가 결정됩니다. 특히 SDO(Service Data Object)와 PDO(Process Data Object)에서 데이터를 처리할 때, 적절한 데이터 타입을 선택하는 것이 중요합니다.

  • SDO: Object Dictionary 내의 특정 데이터를 읽거나 쓸 때 사용되며, 데이터 타입이 명확하게 정의되어야 합니다.
  • PDO: 주기적인 데이터 전송에 사용되며, 여러 개의 데이터 항목을 하나의 메시지로 묶어서 송신할 수 있습니다.

결론

CANOpen에서 데이터 타입과 인덱스 구조는 시스템의 데이터 흐름을 이해하고 효율적인 네트워크 설계를 하는 데 필수적인 요소입니다. Object Dictionary를 적절히 활용하여 데이터의 저장 및 접근 방식을 관리하면 CANOpen 네트워크의 성능을 최적화할 수 있습니다.

728x90
반응형