솔루션 Smart Display Custom CAN ID 프로토콜 소개

Smart Display Custom CAN ID 프로토콜 소개

May 04, 2023

소개

Smart Display는 현재 CAN bus 하드웨어 통신 인터페이스를 지원하며 CANopen 통신 프로토콜을 사용합니다. CANopen은 CAN bus를 기반으로 하는 산업용 통신 프로토콜로, 의료기기, 차량, 철도 시스템, 빌딩 자동화 등 다양한 분야에서 널리 사용되고 있습니다. 그러나 CANopen 프로토콜을 사용하려면 Host 측에서 해당 CANopen 통신 기능을 구현해야 하므로, 단순히 CAN bus 통신만 필요한 애플리케이션에서는 개발 복잡도가 높아질 수 있습니다. 이러한 구현 과정을 간소화하기 위해 WINSTAR는 Custom CAN ID 프로토콜을 개발했습니다. Custom CAN ID를 사용하면 Host 측에서 CANopen 프로토콜을 별도로 구현할 필요 없이, 사용자 정의 DBC 파일을 통해 CAN ID와 데이터를 설정하고 Smart Display의 Widget과 연동하여 실시간으로 데이터를 주고받을 수 있습니다. 이를 통해 시스템 데이터를 보다 쉽게 확인하고 제어할 수 있으며, 애플리케이션 구성의 유연성과 유지보수 편의성도 높일 수 있습니다.

Custom CAN ID 프로토콜은 주로 DBC(CAN Database) 파일을 이용하여 CAN 데이터를 설정하고, CAN 데이터와 Smart Display의 Widget 간 연동 방식을 정의합니다. DBC 파일에는 CAN ID, Message 형식, 데이터 디코딩 정보 등이 정의되어 있습니다. 사용자 정의 DBC 파일을 이용하면 서로 다른 CAN ID와 데이터를 Smart Display의 해당 Widget에 연결하여 실시간으로 연동할 수 있습니다. 예를 들어 CAN ID와 CAN 데이터를 이용해 디스플레이의 그래픽이나 텍스트를 제어할 수 있으며, 반대로 디스플레이의 Button이나 Slider를 조작하여 CAN 데이터를 제어할 수도 있습니다. 이러한 양방향 연동을 통해 시스템 데이터를 보다 효과적으로 확인하고 제어할 수 있으며, 유연하고 유지보수가 용이한 HMI 구성이 가능합니다.

DBC 파일 이해하기

DBC 파일은 일반적으로 ASCII 형식의 일반 텍스트 파일로, CAN bus를 통해 전송되는 물리적 Signal에 대한 정보를 포함합니다. 주요 정보에는 CAN ID, Signal 이름, Scaling Factor 및 정의 등이 포함됩니다. 이러한 정보를 이용하여 Raw CAN Data를 실제 의미를 갖는 값으로 디코딩하고, 각 CAN ID를 해당 Signal과 매핑할 수 있습니다. 즉, DBC 파일은 CAN Message의 Payload를 실제 물리적 Signal 값으로 변환하는 데 필요한 정보를 제공합니다.

Raw CAN Data 디코딩 예제

raw-can-data-testing-data-example01

CAN ID 0x181에 대한 디코딩 규칙이 포함된 CAN DBC 파일이 있다면, DBC 파일에 정의된 정보를 이용하여 다음 데이터를 디코딩할 수 있습니다.

raw-can-data-testing-data-example02

DBC 파일의 주요 기능 중 하나는 CAN Message와 Signal을 디코딩하기 위한 규칙을 정의하는 것입니다. 다음은 DBC 파일에서 발췌한 테스트 데이터의 예입니다.

test-data-description-excerpted-from-dbc-file01

위의 DBC 정보를 기준으로 다음과 같은 디코딩 정보를 확인할 수 있습니다.

test-data-description-excerpted-from-dbc-file02

위의 디코딩 규칙을 적용하면 앞에서 확인한 Raw CAN Data를 다음과 같은 정보로 디코딩할 수 있습니다.

test-data-description-excerpted-from-dbc-file03

위 예제와 같이 DBC 파일에 정의된 설정을 이용하면 특정 CAN ID에 해당하는 CAN 데이터가 나타내는 실제 값을 올바르게 디코딩할 수 있습니다. DBC 파일에는 CAN Message와 Signal의 구조 및 정의가 포함되어 있으므로, Raw CAN Data를 해석하여 해당 물리적 값으로 변환하고 시스템에서 CAN을 통해 전달되는 정보를 처리할 수 있습니다.

DBC Editor

DBC 파일은 구조와 형식상 직접 읽거나 편집하기 어려울 수 있으므로, DBC Editor를 이용하면 사용자 정의 DBC 파일을 보다 편리하게 작성하고 수정할 수 있습니다. 대표적으로 사용되는 DBC Editor 중 하나는 Vector Informatik GmbH에서 개발한 Vector CANdb++입니다. 그래픽 기반 인터페이스를 통해 DBC 파일을 생성 및 편집하고, Message와 Signal을 추가할 수 있으며, Message ID, Start Bit, Length, Scaling Factor, Offset 등의 관련 속성을 설정할 수 있습니다.

dbc-editor

Smart Display GUI Builder – Custom CAN ID 설정

Smart Display GUI Builder는 Custom CAN ID 프로젝트를 손쉽게 구성할 수 있는 직관적인 인터페이스를 제공합니다. DBC 파일을 불러온 후 Message/Signal을 해당 Widget과 연결하면 Smart Display에서 CAN 데이터를 표시하고 상호 연동할 수 있습니다. 다음에서는 Smart Display GUI Builder에서 Custom CAN ID 프로젝트를 생성하고 DBC 파일과 Widget 간의 연동 관계를 설정하는 방법을 단계별로 설명합니다.

Custom CAN ID 프로젝트 생성

Project 이름을 입력하고 Smart Display Device Type을 선택한 다음, Protocol에서 "Custom CAN Id (CANbus)"를 선택하여 Custom CAN ID 프로젝트를 생성합니다.

create-custom-can-project

사용자 정의 DBC 파일 불러오기

DBC Viewer 페이지로 이동한 후 "Load DBC File"을 클릭하여 사용자 정의 DBC 파일을 불러옵니다. 파일을 불러오면 DBC 파일에 정의된 Message, Signal 및 관련 설정 정보를 확인할 수 있습니다.

import-custom-dbc-file

Gauge 및 Horizontal Slider Widget 설정

Gauge 객체를 선택한 후 Gauge 속성의 CAN Signal 항목에서 Message를 EEC1로, Signal을 EngSpeed로 설정합니다. 이렇게 설정하면 Gauge가 EngSpeed와 연결되며, Gauge에 표시되는 값은 EngSpeed 값에 따라 변경됩니다.

add-gauge-and-horizontal-slider-widget-in-the-main-page

Horizontal Slider 객체를 선택한 후 Horizontal Slider 속성의 CAN Signal 항목에서 Message를 HorizontalSliderMessage로, Signal을 HorizontalSliderSignal1로 설정합니다. 이렇게 설정하면 Horizontal Slider가 HorizontalSliderSignal1과 연결되며, Horizontal Slider의 값은 HorizontalSliderSignal1 값에 따라 변경됩니다.

add-gauge-and-horizontal-slider-widget-in-the-main-page02

CAN ID / CAN Data와 Widget 연동 시뮬레이션

"Simulator With GUI" 아이콘을 클릭하여 시뮬레이터를 실행합니다.

add-gauge-and-horizontal-slider-widget-in-the-main-page03

시뮬레이터를 실행한 후 화면 하단의 EngSpeed Slider를 움직여 Host에서 EngSpeed 데이터를 전송하는 상황을 시뮬레이션하고, 시뮬레이터의 Gauge가 이에 따라 변경되는지 확인합니다. 오른쪽의 Message Log에서는 CAN ID와 CAN Data의 변화를 확인할 수 있습니다. 또한 시뮬레이터의 Horizontal Slider를 조작하여 Device에서 데이터를 전송하는 동작도 시뮬레이션할 수 있습니다.

add-gauge-and-horizontal-slider-widget-in-the-main-page04

Smart Display Device 설정 업데이트

시뮬레이터를 통해 기능을 확인하고 정상적으로 동작하는 것을 확인한 후 Device에 연결하여 Project 설정을 Smart Display에 업로드합니다.

add-gauge-and-horizontal-slider-widget-in-the-main-page05

Project 업로드 및 업데이트가 완료될 때까지 기다립니다.

add-gauge-and-horizontal-slider-widget-in-the-main-page06

Device CAN ID / CAN Data와 Widget 연동 확인

Project를 Device에 업로드한 후 Smart Display의 실제 동작을 추가로 확인할 수 있습니다. GUI Builder를 Device에 연결하고 "Test Device"를 클릭하여 Test Device Window를 연 다음 Host와 Device 간의 데이터 연동을 테스트합니다.

verify-data-and-the-widget

Test Device Window

Test Device Window에서는 DBC 설정에 따라 Host가 해당 CAN ID와 CAN Data를 전송하는 상황을 시뮬레이션할 수 있습니다. EngSpeed Slider를 움직여 Host에서 EngSpeed 데이터를 전송하고 Smart Display의 Gauge가 이에 따라 변경되는지 확인합니다. 화면 하단의 CAN 데이터 기록에서는 CAN ID와 CAN Data를 확인할 수 있습니다. 또한 Smart Display의 Horizontal Slider를 직접 조작하여 Device에서 전송되는 데이터가 요구 사항에 맞는지 확인할 수 있습니다.

test-device-window

Smart Display 실제 화면

actual-display-of-the-smartdisplay-device

Custom CAN Command 설명

다음에서는 Custom CAN에서 사용하는 Command Protocol에 대해 설명합니다. 이러한 Command를 사용하면 Host에서 Smart Display의 페이지 전환, 밝기 조정, Buzzer 동작 등을 제어할 수 있습니다.

CAN ID 설정

Command Protocol에서는 다음과 같은 CAN ID 설정을 사용합니다.

  • CAN Id format:29 bit
    CAN Id:0xEF0000 + 0x7B00 (default channel id. GUI Builder에서 변경할 수 있습니다.)
 

Command 데이터 형식

Send Command

Header Byte (1 Byte) Length (1 Byte) Payload (N byte) CRC (2 Byte)
고정값:0x53 (S) Value = 4 + Payload length
Payload max size: 250
데이터 내용과 길이는 Send Command Payload를 참조하십시오. Modbus CRC16
 

Response Command

Header Byte (1 Byte) Length (1 Byte) Payload (N byte) CRC (2 Byte)
고정값:0x52 (R) Value = 4 + Payload length
Payload max size: 250
데이터 내용과 길이는 Response Command Payload를 참조하십시오. Modbus CRC16
 

Command Payload

각 Command Payload에 대한 설명은 다음과 같습니다.

  • Set Brightness:0x6
    Send Command
Command Code 1 Byte 0x6
Brightness 1 Byte Brightness value
 

Response Command

Command Code 1 Byte 0x6
Error Code 1 Byte 0:Success
1:Failed
  • Set Buzzer: 0x7
    Send Command
 
Command Code 1 Byte 0x7
Cycle 1 Byte Cycle value
High 1 Byte High value
Low 1 Byte Low value
 

Response Command

Command Code 1 Byte 0x7
Error Code 1 Byte 0:Success
1:Failed
 
  • Set Page Index:0x8
    Send Command
Command Code 1 Byte 0x8
Page Index 1 Byte Page Index value
 

Response Command

Command Code 1 Byte 0x8
Error Code 1 Byte 0:Success
1:Failed
 
  • Get Page Count: 0xA
    Send Command
Command Code 1 Byte 0xA
 

Response Command

Command Code 1 Byte 0xA
Error Code 1 Byte 0:Success
1:Failed
High 1 Byte Page Count value
 
  • Get Current Page Index:0xF
    Send Command
Command Code 1 Byte 0xF
 

Response Command

Command Code 1 Byte 0xF
Error Code 1 Byte 0:Success
1:Failed
Page Index 1 Byte Page Index value
 
  • Set Device State:0x20
    Send Command
Command Code 1 Byte 0x20
Device State 1 Byte 0: ConfigMode
1: DisplayMode
 

Response Command

Command Code 1 Byte 0x20
Error Code 1 Byte 0:Success
1:Failed
 

전송 예제

  • 밝기를 90으로 설정

transmission-example-set-brightness-to-90

  • Page Index를 1로 전환
 

페이지를 전환할 때는 먼저 Device State를 ConfigMode로 설정한 다음 페이지 전환 Command를 전송합니다. 페이지 전환 Command가 완료되면 Device State를 다시 DisplayMode로 설정합니다. Command 실행 순서는 다음과 같습니다.

transmission-example-switch-page-index-to-1

Custom CAN ID를 활용한 CAN HMI 개발 간소화

Custom CAN ID 프로토콜을 사용하면 표준 DBC 파일을 통해 CAN ID와 CAN Data를 정의하고, Smart Display GUI Builder에서 Message/Signal을 해당 Widget과 연결하여 CAN 데이터를 HMI 인터페이스와 연동할 수 있습니다. CANopen이나 J1939와 같은 보다 포괄적인 통신 프로토콜이 필요하지 않은 애플리케이션의 경우, Custom CAN ID는 DBC 설정을 기반으로 Host와 Smart Display를 보다 간편하게 연동할 수 있는 방법을 제공합니다.

실제 Smart Display Device에 연결하기 전에 Smart Display GUI Builder의 시뮬레이션 기능을 사용하여 DBC 설정, CAN 데이터 및 Widget 간의 연동이 정상적으로 이루어지는지 미리 확인할 수도 있습니다.

비즈니스에 맞는 디스플레이 솔루션에 관해 궁금한 점이 있으십니까? 문의!

구독

Winstar의 최신 소식을 전하는 이메일을 받아보세요.

문의

가격/데이터시트/일반 문의

기술 지원

각종 기술적인 정보가 궁금하시면 문의하세요.

go top
연계
close

우리는 귀하의 프라이버시를 소중히 여깁니다

"모든 쿠키 허용"을 클릭하면 사이트 탐색을 개선하고, 사이트 사용을 분석하며, 마케팅 및 성능 노력에 도움을 주기 위해 쿠키를 귀하의 장치에 저장하는 데 동의한 것으로 간주됩니다. 이 주제에 대한 추가 정보는 당사의 정책에서 확인할 수 있습니다. 개인정보 보호정책

우리는 귀하의 프라이버시를 소중히 여깁니다

Winstar와 일부 제3자는 www.winstar.com.tw에서 쿠키를 사용합니다. 쿠키의 종류, 목적 및 관련된 제3자에 대한 자세한 내용은 아래 및 당사의 쿠키 정책에 설명되어 있습니다. 웹사이트에서 최상의 경험을 얻으려면 "모두 허용"을 클릭하여 당사의 쿠키 사용에 동의해 주세요. 또한 선호 설정을 하거나 필수 쿠키를 제외한 쿠키를 거부할 수도 있습니다.

동의 설정 관리

항상 활성화
필수 쿠키

이 쿠키는 웹사이트를 탐색하고 개인 정보 설정, 로그인 또는 양식 작성과 같은 기능을 사용할 수 있도록 하는 데 필수적입니다.

분석 쿠키

“통계 쿠키”라고도 알려진 이러한 쿠키는 웹사이트 사용에 대한 정보를 수집합니다. 예를 들어 어떤 페이지를 방문했는지, 어떤 링크를 클릭했는지와 같은 정보입니다. 자세한 내용을 확인하세요.