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

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 네트워크를 시뮬레이션하고 응용프로그램 개발에 활용할 수 있다.

번호 제목 글쓴이 날짜 조회 수
36 Elastic Stack 에 대해서 file makersweb 2024.08.25 859
35 Flutter 위젯의 상태관리에 대해서 file makersweb 2023.04.06 1178
34 [NodeGui] JavaScript로 데스크탑 응용프로그램 작성 file makersweb 2023.02.21 2175
33 openFrameworks 한글 폰트 설정 및 출력하기 file makersweb 2023.02.19 963
32 LVGL 을 통해 GUI 구현 시 한글 폰트 추가 file makersweb 2023.02.07 2267
31 Windows에서 Qt Creator + CMake + vcpkg 로 C++ 개발환경 구성 (POCO 라이브러리 DirectoryWatcher 예제) file makersweb 2023.01.14 1380
30 NAppGUI, C언어용 크로스 플랫폼 GUI 라이브러리 file makersweb 2022.10.10 1789
29 OTA 오픈소스 프로젝트 makersweb 2022.08.03 1316
28 AGL (Automotive Grade Linux) 개요 file makersweb 2022.06.19 2773
27 Chromium과 Ozone 층 file makersweb 2022.03.03 1554
26 Flutter Application 에서 한글(EUC-KR) 깨져서 나오는 문제 file makersweb 2022.01.06 3782
25 CopperSpice 에 대해서 (C++ Gui 라이브러리) file makersweb 2022.01.02 1262
24 Flutter/Dart 와 Qt/QML 비교 file makersweb 2021.11.07 2035
23 VSCode 와 Qbs 플러그인으로 C/C++ 개발환경 구성 file makersweb 2021.09.12 1645
22 ZeroMQ 를 이용한 Qt 응용프로그램 간 통신 file makersweb 2021.08.28 1713
21 C++를 위한 Lottie 라이브러리 with SDL2 file makersweb 2021.08.15 1761
» CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션 file makersweb 2021.03.09 2594
19 Protocol Buffers 를 이용한 직렬화 with Conan Package Manager file makersweb 2021.02.24 1589
18 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램 file makersweb 2021.01.31 1460
17 Nana, C++용 크로스플랫폼 GUI 라이브러리 file makersweb 2021.01.06 2900