한국어
오픈소스포럼
 이곳은 다양한 오픈소스 프로젝트를 소개하고 리뷰, 활용 방법을 공유합니다.

CANdevStudio는 CAN 네트워크를 구성하고 시뮬레이션 할 수 있는 오픈소스 크로스 플랫폼 CAN 시뮬레이션 소프트웨어다. CANdevStudio 를 사용하여 자동차의 점화 상태, 도어 상태 또는 후진 기어와 같은 CAN 신호를 시뮬레이션 할 수 있다.

 

CAN 하드웨어 인터페이스(예: Microchip, Vector, PEAK-Systems)와 함께 작동하거나 심지어 Linux에서는 내장 에뮬레이션으로(vcan 및 cannelloni) 실제 CAN 하드웨어없이도 사용할 수 있다.

 

SocketCAN 사용

CANdevStudio의 CAN 버스에 대한 액세스는 Qt 프레임 워크를 기반으로한다. Linux의 SocketCAN 내장 에뮬레이션 덕분에 실제 CAN 하드웨어 없이도 사용할 수 있으며 Qt의 SocketCAN 플러그인은 CAN 장치에 액세스하기위한 Linux 소켓 API를 캡슐화한다. 현재 지원되는 Qt CAN 인터페이스 목록은 여기에서 찾을 수 있다. 

 

SocketCAN 과 호환되는 장치 목록 (Linux 만 해당)은 여기에서 찾을 수 있다.

 

여기서는 리눅스에서 가상 CAN 버스를 설정하여 간단하게 사용해본다. SocketCAN 을 백엔드를 사용하므로 CAN 하드웨어가 필요하지 않다.

 

SocketCAN 을 사용하려면 해당 Linux 커널 모듈을 로드하고 네트워크 인터페이스를 구성해야한다. 다음의 명령을 차례로 실행한다.

sudo modprobe vcan
sudo ip link add dev can0 type vcan
sudo ip link set can0 up

 

다음의 주소에서 미리 빌드된 리눅스용 CANdevStudio를 다운로드 받을 수 있다.

https://github.com/GENIVI/CANdevStudio/releases

 

압축을 풀고 CANdevStudio.sh 를 실행하여 애플리케이션을 실행한다.

 

이제 새 프로젝트를 선택한다.

 

Device Layer 에서 CanDevice를 드래그하여 오른쪽에 추가하고 Raw Layer 에서 CanRawSender, CanRawView 를 각각 드래그하여 추가하고 다음과 같이 각 블럭을 연결한다.

 

CanDevice를 마우스 오른쪽 버튼으로 클릭하여 Properties 설정에서 다음과 같이 구성한다.

backend : socketcan

interface : can0

Screenshot from 2021-03-09 20-25-45.png

 

CanRawSender 를 열고 + 버튼을 클릭하여 ID, 데이터, 루프, 간격과 같은 영역을 채운다. 루프를 사용하지 않는 경우 매번 수동으로 전송 버튼을 눌러야한다.

Screenshot from 2021-03-09 20-26-42.png

 

시뮬레이션 ▶(Play) 버튼을 클릭하고 CanRawView 에서 결과를 볼 수있다.

Screenshot from 2021-03-09 20-26-49.png

 

SocketCAN 유틸리티

장치가 활성화되면 사용할 수 있는 여러 유틸리티가 있다. Ubuntu에서 유틸리티를 사용하려면 다음의 명령줄로 can-utils를 설치해야 한다.

sudo apt-get install can-utils

설치가 완료되면 candump 를 실행하여 버스의 메시지를 실시간으로 확인할 수 있다. can0 기기에서 모든 트래픽을 실시간으로 표시하려면 다음과 같이 할 수 있다.

candump can0

candump.png

▲ 시뮬레이션 시작과 함께 can0 의 메세지를 확인 할 수 있다.

 

프로그램 종료 후 실제 CAN 장치를 추가한 후 가상장치와 함께 구성하여 시뮬레이션 해본다. 

Screenshot from 2021-03-12 21-37-56.png

 

시뮬레이션을 시작하면 실제 장치에서도 메시지를 잘 받고 있다.

STM32.png

 

더 많은 가상장치 또는 실제 장치와 함께 CAN 네트워크를 시뮬레이션하고 응용프로그램 개발에 활용할 수 있다.

번호 제목 글쓴이 날짜 조회 수
35 Pluma(C++ Plug-in Management Framework) 튜토리얼 file makersweb 2019.12.07 13969
34 GDBus 튜토리얼(GDBus tutorial) file makersweb 2019.06.30 10288
33 Dear ImGui, 경량의 C++ 용 GUI 및 Widget 라이브러리 file makersweb 2020.11.28 8999
32 ZeroMQ의 기본 메세지 패턴들 file makersweb 2020.07.31 8442
31 GENIVI DLT(Diagnostic Log and Trace) 활용 file makersweb 2020.11.19 8193
30 텔레그램(Telegram) Bot 개발 file makersweb 2019.07.21 5694
29 webOS소개 및 Raspberry Pi 3 에서 실행 file makersweb 2019.10.13 3866
28 가볍고 쉬운 임베디드용 그래픽 라이브러리 - LVGL file makersweb 2020.09.16 3280
27 [SDL2 와 OpenGL]윈도우 생성과 2D그래픽 file makersweb 2020.04.11 3049
26 리눅스에서 SDL2 최신버전 컴파일과 Qt Creator로 개발환경 구성 file makersweb 2019.10.06 3025
25 Flutter Application 에서 한글(EUC-KR) 깨져서 나오는 문제 file makersweb 2022.01.06 2643
24 Wayland IVI Extension 간단 리뷰 file makersweb 2019.05.12 2249
23 Nana, C++용 크로스플랫폼 GUI 라이브러리 file makersweb 2021.01.06 2043
22 AGL (Automotive Grade Linux) 개요 file makersweb 2022.06.19 1837
21 ZeroMQ 비동기 클라이언트/서버 패턴 file makersweb 2020.08.13 1751
» CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션 file makersweb 2021.03.09 1660
19 Flutter/Dart 와 Qt/QML 비교 file makersweb 2021.11.07 1380
18 Qt와 GStreamer 로 작성한 flac 오디오 재생 예제 file makersweb 2020.09.05 1136
17 LVGL 을 통해 GUI 구현 시 한글 폰트 추가 file makersweb 2023.02.07 1047
16 [NodeGui] JavaScript로 데스크탑 응용프로그램 작성 file makersweb 2023.02.21 1024