콘텐츠로 이동
공식 웹사이트로 돌아가기

CAN 수집

(1) CommBridge 페이지의 【스마트 트윈】으로 이동한 후 왼쪽에서 【장치 연결】로 전환합니다.

(2) SocketCAN, 데이터 처리 및 MQTT 업로드 플러그인을 차례로 플러그인 작업 영역에 끌어 놓아 세 개의 노드를 생성합니다.

(3) 세 노드를 차례로 연결합니다. 연결 순서는 SocketCAN → 데이터 처리 → MQTT 업로드입니다.

(1) SocketCAN을 두 번 클릭하고 【구성 추가】 버튼을 클릭합니다.

(2) 연결 설정을 입력하고 dbc 파일을 가져온 후 【다음】을 클릭합니다.

(3) 그룹 및 데이터 포인트 정보를 확인합니다.

(4) 【완료】를 클릭하여 수집 구성을 추가합니다.

(5) 구성의 스위치를 켜고 【저장】을 클릭합니다.

(1) 【장치 연결】의 【배포】 버튼을 클릭하여 배포합니다.

(2) 【스마트 트윈】으로 전환한 후 SocketCAN 노드 위로 마우스를 이동하면 노드 정보 목록이 표시됩니다.

(3) 구성을 클릭하여 해당 구성의 각 그룹에 속한 데이터 포인트의 실시간 데이터와 이력 데이터를 확인합니다.

매개변수 설명 형식 예 비고
구성 이름 사용자가 지정하는 구성 이름 필수 CAN 수집
CAN 인터페이스 실제 장치의 CAN 포트에 따라 결정 드롭다운 선택 vcan0
DBC 아래 설명 참조 DBC 파일 testType.dbc
반환 데이터 유형 수집하는 실시간 데이터의 유형 드롭다운 선택 Phy
스로틀링 시간 스로틀링 시간이 경과하거나 데이터가 변경될 때까지 시간 내 중복 프레임을 건너뜁니다. 0은 스로틀링을 사용하지 않음을 의미합니다. 필수, 숫자, 범위: [0,2147483647] Phy
Socketcand socketcand 활성화 여부입니다. Socketcand는 네트워크 인터페이스를 통해 컴퓨터의 CAN 인터페이스에 액세스할 수 있습니다. Yes, No No
Socketcand 포트 원격 데이터 디버깅에 사용 숫자

참고:

  1. DBC는 원본 데이터 구조의 출처입니다. 이후 그룹(메시지) 및 데이터(신호)에 대한 모든 변경은 이 dbc 구조에 병합됩니다.
  2. 반환 데이터 유형: Raw는 원시 값, Phy는 물리 값, PhyWIthUnit은 단위가 포함된 물리 값을 반환합니다.
  3. 통신 프로토콜은 TCP/IP 연결과 전용 프로토콜을 사용하여 CAN 프레임과 제어 명령을 전송합니다. 현재 클래식 CAN만 지원하며 CAN FD는 지원하지 않습니다.
매개변수 설명 형식 예
그룹 이름 사용자가 지정하는 그룹 이름 필수 t_msg_1_unsigned
메시지 이름 메시지의 기능이나 용도를 나타내는 이름 필수, 영문자, 숫자 및 밑줄만 허용하며 숫자로 시작할 수 없음 t_msg_1_unsigned
메시지 ID CAN 버스에서 메시지를 구별하는 고유 식별자 필수, 숫자 또는 16진수, 범위: [0x0-0xffffffff] 0
데이터 길이 코드 데이터 길이 코드(DLC): 클래식 CAN의 DLC 08은 08바이트에 해당합니다. CAN FD의 DLC 08도 08바이트에 해당하며, DLC 9~15는 각각 12, 16, 20, 24, 32, 48, 64바이트에 해당합니다. 이 프로토콜 길이 정의가 현재 플러그인의 CAN FD 지원을 의미하지는 않습니다. 데이터, 범위: [0,8] 또는 [0,15] 8
송신 노드 메시지를 전송하는 송신자(Transmitter), 즉 장치(Node) 드롭다운 선택, 기본값 Vector__XXX Vector__XXX
메시지 설명 메시지의 역할이나 기능을 이해하기 쉽게 설명하는 선택 필드 문자열

참고:

  1. 그룹은 dbc 파일의 메시지(Message)에 해당합니다.
  2. 메시지 ID는 일반적으로 11비트(표준 프레임) 또는 29비트(확장 프레임) 숫자입니다.
  3. 메시지(그룹)에 송신 노드가 지정되지 않았다면 이 값을 Vector__XXX로 설정해야 합니다.
매개변수 조건 설명 형식 예
신호 이름 사용자가 지정하는 신호 이름으로, 데이터의 기능을 설명합니다.
신호 모드 신호의 전송 모드 드롭다운 선택
시작 비트 메시지에서 신호가 시작되는 위치(Start Bit)입니다. 0부터 시작하며 CAN 프레임 내 신호의 구체적인 저장 위치를 결정합니다. 단위: bit 0
값 유형 신호의 데이터 유형 드롭다운 선택 Intel
바이트 순서 메시지 내 신호의 저장 순서 드롭다운 선택
스케일링 계수 원시 값을 실제 물리 값으로 변환하는 계산 계수 부동소수점 수
오프셋 데이터의 물리 값을 계산할 때 사용하는 오프셋(offset) 부동소수점 수
최솟값 신호 범위를 제한하는 물리 값의 최솟값 부동소수점 수
최댓값 신호 범위를 제한하는 물리 값의 최댓값 부동소수점 수
단위 신호의 물리 단위 문자열
수신 노드 신호를 수신하는 노드 이름(receiver)으로, 하나 이상 지정하며 신호의 대상 장치를 나타냅니다. 드롭다운 선택, 기본값 Vector__XXX
설명 신호의 물리 단위(예: km/h, °C, m/s) 문자열
계산 사용자가 데이터 별칭을 기반으로 정의하는 수식
길이 값 유형이 Unsigned/Signed 신호가 차지하는 비트 수(비트 길이) 단위: bit, [1,64]
다중화 값 신호 모드가 Signal이 아님 다중화기 신호가 어떤 값일 때 해당 신호가 유효한지 설정

참고:

  1. 신호 모드: Signal, Multiplexor, Multiplexed.
  2. 값 유형: Unsigned(부호 없는 정수), Signed(부호 있는 정수), Float(단정밀도 부동소수점 수), Double(배정밀도 부동소수점 수).
  3. 바이트 순서: Intel 바이트 순서(리틀 엔디언), Motorola 바이트 순서(빅 엔디언).
  4. 시작 비트: 신호의 최하위 비트(LSB, Least Significant bit) 위치입니다.
  5. 끝 비트: 신호의 최상위 비트(MSB, Most Significant bit) 위치입니다.
  6. 분해능 및 오프셋: 물리 값과 네트워크 값의 변환에 사용합니다. 네트워크 값 = (물리 값 - 오프셋) ÷ 분해능.
  7. 신호에 수신 노드가 지정되지 않았다면 반드시 Vector__XXX로 설정해야 합니다.

DBC 파일(CAN Database File)은 CAN(Controller Area Network) 버스의 메시지와 신호 정의를 기술하는 표준 파일 형식입니다.

(1) Node(노드)

노드는 네트워크 내 장치를 논리적으로 나타냅니다. 각 노드는 메시지의 송신자 또는 수신자가 될 수 있습니다.

1). DBC 파일 형식:

BU_: Node1 Node2 Node3
  • BU_: 노드 목록을 정의합니다.
  • 뒤에 모든 노드 이름을 공백으로 구분하여 나열합니다.

(2) Message(메시지)

메시지는 CAN 네트워크에서 전송하는 최소 데이터 단위로, 여러 신호를 포함하며 고정된 ID와 길이를 가집니다.

1). DBC 파일 형식:

BO_ <메시지_ID> <메시지_이름>: <데이터_길이_코드> <송신_노드>

2). 예:

BO_ 1001 SpeedMessage: 8 Node1
  • BO_: 메시지를 나타냅니다.
  • 1001: 메시지 ID입니다.
  • SpeedMessage: 메시지 이름입니다.
  • 8: 데이터 길이 코드(DLC)입니다.
  • Node1: 송신 노드입니다.

(3) Signal(신호)

신호는 메시지 안의 데이터 단위로, 속도, 회전수, 온도 등의 구체적인 물리량을 나타냅니다.

1). DBC 파일 형식:

SG_ <신호_이름> : <시작_비트>|<길이>@<바이트_순서><값_유형_기호> (<스케일링_계수>,<오프셋>) [<최솟값>|<최댓값>] "<단위>" <수신_노드>

2). 예:

SG_ Speed : 0|16@1+ (0.1,0) [0|200] "km/h" Node2
  • BO_: 메시지를 나타냅니다.

(1) 신호 모드

신호 모드 의미
Signal 데이터를 직접 담는 일반 신호로, 별도의 표시나 관계가 없습니다.
Multiplexor 메시지에 포함되는 다른 신호가 어느 그룹인지를 결정하는 다중화기 신호입니다. 예를 들어 하나의 메시지에 여러 데이터 형식이 포함될 수 있으며, 다중화기는 사용할 데이터 형식을 선택합니다.
Multiplexed 다중화기 신호와 연결된 다중화 신호입니다. 다중화기 신호의 값에 따라 이 신호의 전송 여부가 결정됩니다. 예를 들어 다중화기 값이 1이면 특정 다중화 신호 그룹을 전송합니다.