-
목차tip 2024.12.06 09:47
[알림] 블로그 제목 오른쪽에 돋보기 아이콘을 클릭하여 검색을 해보세요. 아래 "응용 사례"에서는 TSMaster를 이용하여 할 수 있는 작업들을 설명합니다. TSMaster 사용법은 "측정 & 분석" 이하를 참조하십시오.TSMaster 사용법은 아래 쪽에 "팁"에 있습니다. 응용 사례 CAN 데이터로 제동 성능 평가하기 :: hsl's tsmaster 사용기mat 파일을 데이터프레임으로 변환하고 feather 파일로 저장하기 :: hsl's tsmaster 사용기제동 성능 지표 계산하기 :: hsl's tsmaster 사용기 칩임 감지 시스템 (IDS: Intrusion Detection System) :: hsl's tsmaster 사용기asc 파일을 m_id별로 분리하기 :..
-
조향과 구동 조종을 위한 판넬을 만드는 법application 2025.09.18 12:37
시작하기 전에 can2ado - CAN to Analog/ Digital Output :: hsl's tsmaster 사용기에서 무선조종자동차(무조차)의 무선 통신을 CAN 통신으로 대체하여 조향과 구동을 제어하는 데모 개발 과정을 설명하였다.조향과 구동 제어를 위한 CAN 신호를 TSMaster의 Transmit 기능을 이용하여 만들었다. Transmit 기능은 CAN 메시지/ 신호를 만들 때 여러 모로 편리하다. 전용 GUI 만큼 편리할 수는 없다. TSMaster의 Panel 기능을 이용하여 전용 GUI를 만들어 본다. DIFA (Daegu International Future Auto & Mobility Expo 대구 국제 미래 모빌리티 엑스포 포럼 2025 대한민국 미래모빌리티엑스포 컨퍼런스)에..
-
can2ado - CAN to Analog/ Digital Output카테고리 없음 2025.09.12 10:38
시작하기 전에디지털/ 아날로그 신호를 CAN 신호와 함께 측정하기 - ADI2CAN :: hsl's tsmaster 사용기에서 adi2an (Analog/ Digital Input to CAN) 장치를 만든 배경, 과정, 결과물에 관하여 설명하였다.can2ado는 adi2can의 상대 장치라고 할 수 있다. CAN 신호를 받아서 아날로그, 디지털 출력을 한다.나는 (2025년) 10월 22일부터 24일까지 열리는 DIFA (Daegu International Future Auto & Mobility Expo 대구 국제 미래 모빌리티 엑스포 포럼 2025 대한민국 미래모빌리티엑스포 컨퍼런스 )에서 TSMaster를 전시할 때 데모를 만드는 중이다. 데모는 무선 조정 자동차(무조차)를 이용한다. 무선 대신 ..
-
blf --> csv --> 리샘플 --> xlsxanalysis 2025.09.05 09:14
시작하기 전에CAN 버스 데이터를 측정하여 blf 파일로 저장한다.TSMaster의 Log Converter를 이용하면 blf 파일을 csv 파일로 변환할 수 있다.csv 파일에는 타임스탬프 컬럼이 있다. 아래 그림의 A 컬럼이다. 모든 메시지들의 타임스탬프들이 있다. 빽빽하다.각 신호가 열로 입력되어 있다. C 컬럼부터다. 듬성듬성하다. 신호의 타임스탬프는 정확히는 신호를 포함한 메시지의 타임스탬프이다. 빈 셀이 있으면 데이터 분석이 어렵다. 리샘플링을 하여 아래 그림과 같이 만들어야 분석이 편리하다.csv 파일을 리샘플링하여 xlsx 파일로 저장하는 방법을 설명한다.이 방법은 TIO 측정 데이터 분석 - mat 파일을 데이터프레임으로 변환하기 (mdf2df) :: hsl's tsmaster 사용..
-
라이선스 확인 방법 - 하드웨어 라이선스카테고리 없음 2025.09.02 17:11
시작하기 전에 TSMaster의 라이선스에는 두 종류가 있다. 하드웨어 라이선스, 사용자 라이선스.하드웨어 라이선스의 경우,토선의 인터페이스 하드웨어에 라이선스가 심어진다. 토선이 라이선스를 심은 하드웨어를 고객에게 전달한다.추가 라이선스를 구매하는 경우, 라이선스 업데이트 :: hsl's tsmaster 사용기 에 설명한 방법대로 라이선스를 업데이트 한다.사용자 라이선스의 경우, 인터넷으로 토선의 라이선스 사이트(https://license.tsmaster.net/)에 로그인하여 라이선스와 PC를 바인드(bind)하여 사용하게 된다.하드웨어 라이선스의 경우, 하드웨어에 심어져 있는 라이선스를 확인하는 방법은 아래와 같다. 개요하드웨어 연결라이선스 확인 하드웨어 연결USB 포트 (혹은 이더넷 포트)..
-
TIO 측정 데이터 분석 - 디지털 입출력application 2025.09.02 16:29
이 글은 Jupyter 노트북으로 작성되었습니다. TIO 측정 데이터 분석 - 2. 디지털 입출력 점검¶TIO의 디지털 입출력 성능을 보기 위해 아래 실험을 하였다.TSMaster에서 TIO로 500msec 주기로 출력 요청용 CAN 메시지를 전송한다.디지털 출력 신호가 on/off로 토글하도록 요청 메시지의 해당 신호값을 토글시킨다.TIO의 디지털 출력 포트를 TIO의 디지털 입력 포트에 직접 연결한다.TIO는 입력 포트의 상태를 10msec 주기로 CAN 메시지로 전송한다.위 과정의 CAN 메시지들을 측정하여 파일로 저장한다.출력을 요청한 CAN 메시지의 요청 신호와 입력 신호를 전송한 CAN 메시지의 입력 신호를 비교한다. 아래 항목들을 확인한다.지연 시간은 몇 msec인가?요청 대비 출력 ..
-
수신 --> 필터 --> 연산 --> 전송simulation 2025.09.02 11:27
시작하기 전에 제어기가 동작하기에 필요한 CAN 통신을 모사해 주는 것을 RBS (Rest/ Remaining Bus Simulation)라고 한다. RBS를 아래 포스트들에서 다뤘다.CAN 버스 시뮬레이션 (RBS: Remaining Bus Simulation) :: hsl's tsmaster 사용기(판넬 사용법 설명을 포함한다.)Symbol Mapping: CAN 신호로 계산한 결과를 시스템 변수에 넣기 :: hsl's tsmaster 사용기 Symbol Mapping: 시스템 변수를 CAN 신호로 전송하기 :: hsl's tsmaster 사용기 TSMaster API를 사용하여 CAN 메시지 송신하기 (RBS) :: hsl's tsmaster 사용기 Python 미니프로그램: 코드에..
-
TIO 측정 데이터 분석 - mat 파일을 데이터프레임으로 변환하기 (mdf2df)application 2025.09.01 12:26
이 글은 Jupyter 노트북으로 작성하였습니다. 시작하기 전에TIO로 디지털 신호와 아날로그 신호를 측정했다.TIO는 CAN으로 통신하는 Tosun의 Input Output 장치이다. Digital IO, Analog IO, 저항, 릴레이 모듈들이 있다. 모듈들을 아래 사진처럼 TSMaster와 CAN으로 연결한다. 위 실험 셋업에서 CAN 메시지로 Digital Output, Analog Output을 제어하며, Digitial Input, Aanlog Input 메시지로 수신하여 blf 파일로 저장하였다.제어 요청과 디지털, 아날로그 신호의 실제 값 사이에 얼마의 시간 지연이 있는지, 신호는 얼마나 정확한지 분석하고자 한다.이 분석을 TSMaster의 그래픽스 창에서 시각적으로 할 수 있다. ..
-
온라인 재생카테고리 없음 2025.08.29 17:13
시작하기 전에 CAN 버스를 측정한 blf 파일을 제어기가 연결된 버스선에 온라인으로 재생하여 제어기의 기능을 검증하는 경우가 있다. blf 파일의 데이터를 CAN 버스에 재생하는 것을 온라인 재생이라고 부른다. (CAN 버스에 재생하지 않고 화면에 데이터를 보기만 하는 경우 오프라인 재생이라고 한다.)온라인 재생 방법을 설명한다. 개요온라인 재생온라인 재생에 필터 걸기 온라인 재생메인 메뉴/ Analysis/ Bus Replay로 Bus Playback 창을 연다.Bus Playback 창에서 Online Replay 탭으로 간다. + 기호가 있는 버튼을 클릭하여 삼각형의 플레이 버튼을 클릭하면 온라인 재생이 시작된다.온라인 재생의 속도는 기본적으로 측정 속도와 동일하다. 변경할 수 있다.트레이스 창..
-
dbc2xlsxtip 2025.08.29 11:32
시작하기 전에 xlsx2dbc :: hsl's tsmaster 사용기에서 xlsx 파일을 dbc 파일로 변환하는 방법을 설명했다.xlsx를 dbc로 변환한다는 것은, dbc를 변환한 xlsx가 존재하는 것을 전제한다. 수작업으로 신호 하나하나 메시지 하나하나 엑셀에서 작업했을 수도 있다. dbc에서 xlsx로 변환하는 파이썬 스크립트를 작성한다. 개요메시지 정의에 필요한 데이터는 무엇인가?신호 정의에 필요한 데이터는 무엇인가?dbc2xlsx.py 메시지 정의에 필요한 데이터는 무엇인가?xlsx2dbc :: hsl's tsmaster 사용기에 H사가 만든 xlsx를 보면 메시지와 신호를 정의하는데 필요한 최소 데이터를 알 수 있다. 다시 나열하며 아래와 같다. Message: 메시지 이름 ID: 메시..
-
dbc 파일에서 바이트 오더와 스타트 비트 위치와 LSBtip 2025.08.27 09:13
시작하기 전에dbc 파일을 xlsx 파일로 변환하는 파이썬 스크립트를 작성했다. (블로그 작성 예정이다.)xlsx 파일을 dbc 파일로 변환하는 파이썬 스크립트를 작성했다. xlsx2dbc :: hsl's tsmaster 사용기cantools( CAN BUS tools — cantools 39.4.3.dev10+gcc02988 documentation)라는 파이썬 모듈을 이용했다.cantools의 메시지 내 신호 시작 "위치"(start bit. 스타트 비트)를 지정하는 방법과 dbc 파일에서의 방법이 바이트 오더 (byte order)가Intel (little endian)인 경우, 동일하다.Motorola (big endian)인 경우, 다르다.이를 고려하여 스타트 비트를 변환을 해야 한다. 이것을 ..
-
dbc 파일 인코딩 (encoding)tip 2025.08.26 17:31
dbc 파일에 메시지나 신호에 관한 설명을 comment 칸에 한글로 입력하는 경우가 있다.dbc 파일을 cantools 같은 툴로 xlsx 파일로 변환하는 경우가 있다. cantools의 dbc 파일의 기본 인코딩 CP1252이다. CP1252는 마이크로소프트 윈도우의 레거시 환경에서 영어, 프랑스어, 독일어 등 서유럽 언어를 지원하기 위해 사용되는 단일 바이트 문자 인코딩(코드 페이지)입니다. ISO 8859-1과 일부 호환되지만, 몇몇 문자인코딩이 다릅니다. - 위키피디아cantools에서 dbc 파일을 읽어서 xlsx 파일로 변환하여 Excel에서 보면 글자가 깨져서 표시된다. 해결은 간단하다. dbc 파일을 텍스트 에디터인 Notepad++ 열면 인코딩을 확인할 수 있다. EUC-KR로 인코딩..
-
xlsx2dbctip 2025.08.22 16:10
시작하기 전에 H사는 협력사와 CAN 메시지/신호(매트릭스, matrix) 변경을 협의할 때 xlsx 파일을 이용한다고 한다.변경된 CAN 매트릭스를 툴에 적용하려면 dbc 파일이 필요하다.xlsx의 변경 내용을 수동으로 dbc에 입력하는 것은 불편하다. 귀찮은 일이다. 입력하고 확인하는데 시간도 많이 든다. 꼼꼼하게 하는데 에너지도 많이 든다. 실수가 있을 수도 있다.xlsx를 dbc로 만드는 파이썬 스크립트를 작성하였다.시간, 노력을 아끼는데 도움이 되기를 바란다. 개요xlsx 구조 살펴보기xlsx2dbc.py 작성하기실행 결과 (생성된 dbc) xlsx 구조 살펴보기xlsx의 구조는 아래 그림과 같다. Message: 메시지 이름ID: 메시지 아이디, 헥스 (string)DLC [byte]: 메시지..
-
트레이스창에서 메시지 필터 걸기analysis 2025.08.19 14:41
트레이스창에서 특정 메시지 아이디만 보거나(pass) 차단(block) 할 수 있다. 그 방법을 설명한다.트레이스창을 연다.트레이스창의 상단에서 필터(깔때기 모양) 단축 버튼을 클릭한다. 필터 설정창이 열린다.왼쪽 아래에서 "Filter Enabled"를 체크한다.Pass 필터를 선택한다. (혹은 Block 필터를 선택한다.)마우스 우클릭으로 메뉴를 띄운다. Add raw CAN frame을 선택한다. 필터 행이 추가된다.필터 행에서 Channel을 선택하고 Identifier를 입력한다.Add CAN frame from DB 메뉴를 선택하면, 필터를 적용할 메시지 아이디를 입력하는 대신 데이터베이스에서 메시지를 선택할 수 있다.트레이스창의 필터는 메시지 아이디 범위로 필터할 수 없고 개발 메시지 아이디..
-
YouTube: 미니프로그램에서 엑셀 파일 다루는 방법tip 2025.08.19 14:14
미니프로그램에서 엑셀 파일을 다루는 방법MiniProgramReadExcel - YouTube 설명 내용미니프로그램에서 엑셀 파일의 데이터를 읽어서 프로그램에 사용할 수 있다. 예를 들면 전송해야할 메시지 아이디와 데이터를 엑셀 파일에 저장해두고, 미니프로그램에서 엑셀 파일을 읽어서 전송한다. 이렇게 하면 코드 수정없이 엑셀 파일 변경으로 전송 메시지를 변경할 수 있다. 내가 배운것미니프로그램 라이브러리를 사용하는 방법 미니프로그램 라이브러리 사용법 :: hsl's tsmaster 사용기async 전송과 sync 전송의 차이
-
YouTube : 하드웨어 설정에서 하는 수신 메시지 필터카테고리 없음 2025.08.19 14:13
하드웨어 설정에서 하는 수신 메시지 필터YouTube: Global Rx Filter설명 내용하드웨어 설정에 수신 메시지 필터가 있다.이 방법은 CAN 콘트롤러 칩에 있는 마스크(Mask)와 필터를 설정한다. 내가 배운것하드웨어 설정으로 필터를 하면 PC 프로세서에 연산 부담이 없다. UDS 메시지만 보기 - 메시지 아이디 필터 :: hsl's tsmaster 사용기나 트레이스창에서 메시지 필터 걸기 :: hsl's tsmaster 사용기에서 소개한 방식은 TSMaster를 이용하여 소프트웨어적으로 필터를 하는 방식이다. PC 프로세서에 부담이 있다.TSMaster를 2개 열어서 Virtual Device를 이용하여 한 쪽은 송신으로 다른 한 쪽은 수신으로 사용할 수 있는 것을 배웠다.미니프로그램으로 ..
-
UDS 기반 제어기 프로그래머 개발 - libTSCANapplication 2025.08.11 16:23
시작하기 전에 ts_can_flash_programmer 개발 - libTSCAN :: hsl's tsmaster 사용기 에서 토선의 libTSCAN.dll (libTSCAN은 공짜다. 토선 하드웨어는 공짜가 아니다.)을 이용하여, Texas Instrument의 C2000 패밀리 마이크로콘트롤러 칩을 CAN으로 프로그램밍하는 PC용 툴을 개발했다.ts_can_flash_programmer는 오늘날 자동차 산업에서 사실상 표준인 UDS (Universal Diagnostic Service)를 따르지 않는다. libTSCAN을 이용하여 UDS 표준에 따라 CAN 통신으로 프로그래밍을 하는 PC용 툴을 만들어본다.ts_can_flash_programmer는 C로 짰다. (ai가 짰지만) 내가 익숙한 파이썬으..
-
판넬에서 이미지로 차의 주행 방향을 표시하는 방법analysis 2025.07.27 19:57
시작하기 전에 아래 포스트들에서 판넬 기능으로 출력용 GUI와 입력용 GUI를 작성하는 방법을 설명하였다. 판넬로 출력하는 방법 - 관계도 :: hsl's tsmaster 사용기 판넬로 사용자 입력 받는 법 :: hsl's tsmaster 사용기 차 그림을 이용하여 차의 주행 방향을 표시할 수 있으면 좋겠다는 요청을 받았다. 내가 구현한 방법을 설명한다. 개요판넬에 차 이미지 출력을 위한 콘트롤 추가하기YAW_RATE(CAN 신호)에서 calc.heading_angle(시스템 변수) 구하기heading_angle 만큼 차 이미지를 회전하기 실행결론 판넬에 차 이미지 출력을 위한 콘트롤 추가하기메인 메뉴/ Simulation/ Panel/ Add Panel로 새 판넬을 추가한다. 혹은 기존 ..
-
ts_can_flash_programmer 개발 - libTSCANapplication 2025.07.26 16:55
시작하기 전에 TI (Texas Instrument)에 C2000 패밀리 마이크로콘트롤러 칩이 있다. 이 패밀리의 어떤 칩들은 CAN/ CAN-FD를 지원한다.TI에서 제공하는 기본 부트로더는 CAN 통신으로 플래시 메모리 프로그래밍할 수 있는 기능을 제공한다. TI는 이때 사용하는 can_flash_programmer.exe라는 PC용 앱을 제공한다.이 프로그램은 PEAK사의 CAN 인터페이스 하드웨어만 지원한다. 나는 TOSUN사의 하드웨어만 갖고 있다.ti.com에서 can_flash_programmer의 코드(can flash programmer)와 문서( CAN Flash Programming of C2000™ Microcontrollers (Rev. A))를 찾았다. 이 둘을 기반으로 토선 하..
-
vscode에서 깃헙 코파일럿과 코드 개선카테고리 없음 2025.07.26 16:25
promptg_iTransmitDelay = 10; 의 10을 #define 으로 설정하도록 해주세요.responseI'll help you replace the hardcoded value 10 with a #define constant. Let me first examine the file to understand the context better and then make the changes.Read ts_can_flash_programmer_v1_1.c, lines 1 to 100Now I need to see the part where the value 1 is also used for f28p65x to add both defines. Let me check the area around lin..
-
claude.ai와 코드, 문서 분석 및 코드 작성application 2025.07.26 15:07
CAN Flash Programmer Porting ProjectPrompt:내가 첨부할 파일들은 TI(Texas Instrument)사의 칩을 CAN 통신을 통해서 플래시 프로그래밍하는 도구인 can_flash_programmer의 코드 파일들입니다.can_flash_programmer.cppf021_DownloadImage.hf021_DownloadImage.cppPCANBasic.h이 앱은 PEAK사의 CAN(Controller Area Network) 하드웨어를 이용하여 USB를 통해서 CAN 통신을 합니다.나는 토선(Tosun)사의 CAN 하드웨어를 이용하는 이와 동일한 프로그램을 개발하려고 합니다.이 프로그램의 이름은 ts_can_flash_programmer로 하겠습니다.이 프로그램 개발을 ..
-
배터리 셀 정보 표시 대시보드 만들기카테고리 없음 2025.07.26 13:09
시작하기 전에 아래의 요청을 받았다.배터리 셀들의 정보를 한(one) CAN 메시지(CELL_INFO)로 받는다.메시지에는 셀 아이디 (idCell) 신호와 셀의 상태 신호들(s1, s2, s3, s4)이 있다.단일 아이디의 메시지에 여러 셀들의 정보를 전송한다. 일종의 멀티플렉서이다. idCell은 4 비트 신호다. 0 .. 15 까지 16개이다.상태 신호는 s1, s2, s3, s4로 4개이다. 실제로 전압, 온도 등이다. TSMaster 그래픽스창에 셀 별로 상태 신호 (총 16 x 4 = 64개)들을 셀 별로 출력할 수 있는가? 가능하다. 결과는 아래 그림과 같다. TSMaster의 그래픽스창은 시스템 변수를 표시할 수 있다는 사실을 이용하여 아래와 같이 하였다.파이썬 미니프로그램으로 64개의..
-
adi2can 사용자 설명서hardware 2025.07.21 15:46
개요기능: 아날로그, 디지털 입력 신호를 CAN 메시지로 전송입력아날로그: 0V ~ 5V x 2 채널 (5V를 초과하면 칩에 영구적인 손상이 발생할 수 있습니다.)디지털: 5V ~ 12V x 6 채널 (12V를 초과하면 칩에 영구적인 손상이 발생할 수 있습니다.)출력CAN 메시지Tx: aMsg x 1, dMsg x 1, sMsg x 1Rx: cMsg x 1 (Msg Id, 전송 주기 설정용)aMsg, dMsg, sMsg, cMsg에 대한 상세는 차차 설명합니다. 사용법먼저 설정하고 측정에 사용합니다.첨부 dbc 파일로 aMsg, dMsg, sMsg의 신호들을 볼 수 있다.adi2can의 aMsg, dMsg, sMsg 정의가 포함된 dbc 파일첨부 T7z 파일은 TSMaster 프로젝트를 Export하여 ..
-
ADI2CAN 개선 - Open Source 공개hardware 2025.07.19 15:46
PICODE( PICODE – Automotive testing solution)에 의해 창작된 adi2can을 만드는데 필요한 PCB 거버 파일과 회로도, 3D 프린터로 케이스를 만들기 위한 파일들, 소프트웨어 소스 코드, CAN dbc 파일, 사용자 가이드는 크리에이티브 커먼즈의 CC BY 라이선스 (https://ccl.cckorea.org/reuse/method/)에 따라 이용할 수 있습니다. 시작하기 전에 디지털/ 아날로그 신호를 CAN 신호와 함께 측정하기 - ADI2CAN :: hsl's tsmaster 사용기 에서 아두이노를 이용한 아날로그, 디지털 신호를 CAN 메시지로 전송하는 ADI2CAN을 만들었다. 자동차의 이그니션 신호를 ADI2CAN의 입력으로 받을 일이 있다. 이그니션 ..
-
라이선스 업데이트tip 2025.07.10 09:44
시작하기 전에TSMaster는 수십 가지 모듈들로 구성되어 있다. (https://license.tsmaster.net/mainInterface/pricing) 사용자는 모듈들을 선택하여 사용권(라이선스)을 구매하고 사용하게 된다. (어떤 모듈들은 패키지로 묶여있다. 이들은 개별적으로 선택할 수 없다.)구매한 모듈들의 라이선스는 토선 하드웨어에 키(key)로 심어져 제공된다. PC에 파일로 설치할 수도 있다. 전자는 하드웨어를 공유할 때 편리하다, 후자는 PC를 공유할 때 편리하다. 후자의 경우 PC를 바꿀 수 있는 회수 제한이 있다. (5회던가?) PC를 바꾸는 일이 생기니까.사용 중에 모듈을 추가 구매하는 경우 라이선스 업데이트가 필요하다. 여기서는 "하드웨어"의 라이선스 업데이트 방법을 설명한다. ..
-
하드웨어 펌웨어 업데이트tip 2025.07.09 21:34
개요TSMaster 업데이트 :: hsl's tsmaster 사용기하드웨어 펌웨어를 업데이트 하기 전에 TSMaster를 업데이트 한다.TSMaster가 설치될 때 하드웨어 펌웨어 파일들이 함께 설치된다. TSMaster를 업데이트 하는 것으로 최신 펌웨어 파일들을 다운로드 받게된다. 그래서 펌웨어 업데이트 전에 TSMaster 업데이트를 권장한다. 하드웨어 펌웨어 업데이트 하드웨어 펌웨어 업데이트메인 메뉴/ Hardware/ Channel Mapping을 클릭하여 TS Channel Mapping 창을 연다. 창 왼쪽 영역의 Hardware에서 업데이트 대상 하드웨어를 선택한다. 창의 오른쪽 영역 Latest Firmware Date Time의 날짜가 빨간색으로 표시되면 업데이트할 펌웨어가 있다는 의..
-
TSMaster 업데이트tip 2025.07.09 21:20
TSMaster 업데이트메인 메뉴/ Help/ Check Update를 클릭하여 Check Software Update 화면을 연다. TSMaster는 업데이트가 있는 지 확인한다. 잠시 시간이 걸린다. 업데이트가 있으면 아래 그림처럼 업데이트 진행 여부를 묻는 창이 뜬다. Yes를 클릭한다. TSMaster 설치 파일 다운로드가 진행된다. 설치를 위해서 현재 열려있는 TSMaster를 닫아야 한다. TSMaster를 닫고 예를 클릭한다. 윈도의 프로그램 설치 창이 뜬다. 프로그램 설치 안내에 따라 설치를 진행한다. 설치가 완료되면 TSMaster가 자동으로 시작되어 아까 TSMaster를 닫았을 때 화면이 열린다. Have fun! 목차 :: hsl's tsmaster 사용기
-
UDS 메시지만 보기 - 메시지 아이디 필터analysis 2025.07.09 19:57
시작하기 전에 트레이스 창에서 UDS 메시지만 필터해서 볼 수 있는 방법에 관한 문의를 받았다. UDS 메시지의 아이디가 0x700에서 0x7FF 까지라는 점에서 착안하여, TSMaster의 Measurement Filter에서 Id Range 필터 기능을 이용하면 구현한다. 개요트레이스 창 앞에 필터 추가필터 설정측정 트레이스 창 앞에 필터 추가 메인 메뉴/ Analysis/ Measurement Setup을 클릭한다. 필터 설정Measurement Setup 창에서 필터를 걸 Trace 창을 선택한다. 마우스 우클릭하여 Insert Filter를 선택한다. 아래 그림처럼 Trace 창 앞에 Measurement Filter가 삽입된다. Measurement Filter를 더블클릭하여 Meas..
-
TSMaster 설치tip 2025.06.25 22:37
개요TSMaster 설치언어 설정 TSMaster 설치TSMaster는 아래 링크에서 설치할 수 있다. https://license.tsmaster.net/mainInterface/pricing 링크를 클릭하면 아래 그림의 페이지로 이동한다. 이 페이지에서 세 버전의 TSMaster를 다운로드 할 수 있다. Lite, Standard, Professional.Free Trial 버튼을 클릭하면 Log In 화면이 뜬다. 위 링크에서는 로그인을 한 후에 다운로드를 한다.토선 홈페이지 (https://tosunai.kr/)에는 TSMaster를 다운로드할 수 있는 링크가 여러 곳에 있다. 다른 곳과 달리 이곳에서는 로그인이 필요하다. 회원 가입 이전이면 "Sign Up" 링크를 클릭하여 회원 ..
-
Jupyter 노트북 열어보기 가이드tip 2025.06.25 12:53
배경나는 파이썬 코드를 작성할 때 Jupyter(주피터) 노트북을 종종 사용한다. 코드를 여러 부분들로 나눠서 작성하고, 실행하며 검증할 수 있어서 편리하다. 특히 좋은 점은 "주피터 노트북"을 저장하면 전체 과정이 "기록"으로 남는 것이다. 내 포스트들 중 일부는 그 자체로 주피터 노트북이다. 주피터 노트북이 생소한 독자분들을 위해서 claude.ai에게 요청하여 만든 사용 가이드를 올린다. 주피터 노트북이 있는 포스트들에 이 포스트를 링크할 계획이다. Jupyter 노트북(.ipynb) 파일 열어보기 가이드📋 ipynb 파일이란?.ipynb 파일은 Jupyter 노트북 파일로, 파이썬 코드와 그 실행 결과, 텍스트 설명 등이 함께 저장된 대화형 문서입니다. 데이터 분석, 머신러닝, 연구 등에 널리..
-
CAN과 CAN-FD를 혼합 사용하면 ...?hardware 2025.06.13 18:07
시작하기 전에CAN이 탄생한 시기에 CAN의 (최대 1Mbps가 가능하지만 통상 사용되는) 500kbps 라는 통신 속도는 느린 편이 아니었다. CAN 출현 후 거의 40년이 지난 오늘날 우리에게 익숙한 통신 속도의 단위는 Mbps나 Gbps이다. 이에 비하면 500kbps는 (실제 느린가는 별도 논의의 좋은 주제라고 생각하지만) 느린 느낌이다.CAN을 발명한 Bosch는 누구보다 이걸 잘 안다. 그래서 CAN의 속도를 개선하였다. 임시로 이 개선된 CAN을 2세대 CAN이라고 부르겠다.CAN이 가장 많이 사용되는 산업 분야인 자동차 산업은 제품의 수명 주기가 길다. 자동차사들은 원가를 낮추기 위해서 '규모의 경제'를 최대한 활용한다. 차종간에 부품을 공유할 수 있도록 설계하고, 부품을 구매할 때 한 차..
-
timestamp, ACK와 ACK errorhardware 2025.06.11 12:09
시작하기 전에 CAN 프레임에는 ACK 비트가 있다. CAN 하드웨어 설정에는 Controller Mode 항목이 있고, 이 항목에는 "ACK Off"라는 옵션이 있다. ACK 관련하여 ACK error가 발생하기도 한다. ACK 관련하여 실험한 내용을 정리한다. 개요실험 환경ACK와 timestampACK Off와 ACK errorACK Off를 사용하는 경우결론 실험 환경CAN 채널이 2개인 TC1013을 이용한다.TC1013의 두 채널을 아래 사진처럼 점퍼 케이블로 연결한다. TSMaster에서 메시지를 송신할 Transmit 창과 수신 메시지를 표시할 Trace 창을 연다채널 1에서 메시지를 전송하고 채널 2에서 수신한다. ACK와 timestamp채널 1과 2의 하드웨어 설정을 디..
-
디지털/ 아날로그 신호를 CAN 신호와 함께 측정하기 - ADI2CANhardware 2025.06.07 21:14
시작하기 전에 CAN 신호를 측정하다보면 CAN과 신호와 함께 디지털 신호(on/ off. 스위치 상태)나 아날로그 신호(센서 출력)를 측정하면 유용한 경우가 있다. 예를 들면,이그니션 신호(on/ off만 있으므로 디지털 신호이다.)를 CAN 신호와 함께 저장하면 시험 시작과 종료를 정확히 알 수 있다. 시험 자동화를 한 수준 높일 수 있을 것이다.외부 로드셀 신호(하중 값은 일정 범위에서 변하므로 아날로그 신호이다.)를 CAN 신호와 함께 저장하여 하중과 액추에이터 소비 전류의 관계를 검증할 수도 있다. 시중에 CAN 하드웨어 제품들 중에 디지털 입력이나 아날로그 입력을 받을 수 있는 것들이 있다. 이런 하드웨어들은 CAN만 측정하는 하드웨어에 비하여 (당연히) 비싸다. 나는 단지 디지털 입력 채널..
-
DoIP 메시지 분석기diagnostic 2025.04.29 00:42
시작하기 전에 DoIP (Diagnostic over Internet Protocol) - 하드웨어 설정 :: hsl's tsmaster 사용기 에서 DoIP의 메시지는 TCP 메시지의 페이로드이고, TCP 메시지는 IP 메시지의 페이로드이고, IP 메시지는 이더넷 메시지의 페이로드라는 것을 설명하였다. 그리고 DoIP 메시지의 페이로드는 UDS 메시지이다. 이 UDS 메시지는 CAN의 UDS 메시지와 동일하다. DoIP (Diagnostic over Internet Protocol) - 메시지 해석 :: hsl's tsmaster 사용기 에서 Ethernet Trace 창에서 이더넷 메시지의 헤더와 페이로드를, 이더넷 메시지의 페이로드인 IP 메시지에서 헤더와 페이로드를, IP 메시지의 페이로드인 ..
-
DoIP asc to xlsxdiagnostic 2025.04.28 23:56
DoIP asc 데이터 파일을 xlsx로 변환하기DoIP 통신 데이터가 저장된 asc 파일을 읽는다.이더넷 메시지가 있는 줄만 추출한다.각 줄을 구성 요소별로 분리한다.각 줄을 행으로 요소를 열로 하여 xlsx에 저장한다.# importfrom pathlib import Pathimport pandas as pd# asc 파일을 줄 별로 읽어오기dir_asc = Path('.').absolute()/'asc'file_asc = dir_asc/'obd_ethernet_log.asc'with open(file_asc, "r") as file: lines = file.readlines()# asc 파일의 내용을 본다.lines[:25]['date Fri Sep 13 02:57:32.035 pm 2024\..
-
XCP - 측정카테고리 없음 2025.04.13 20:25
시작하기 전에XCP - 설정 :: hsl's tsmaster 사용기 에서 제어기 소프트웨어 내부 신호 측정과 파라미터 캘리브레이션을 위하여 TSMaster의 Calibration 창에서 XCP 관련 설정하는 방법을 설명하였다. 기본적으로 a2l 파일을 로드하면 된다. (간단하다.) 이번에는 XCP로 측정하는 방법을 설명한다. 개요측정할 신호들을 수치창에서 보기그래프로 보기판넬로 보기 측정할 신호들을 수치 표시창에서 보기Calibration 창의 왼쪽 캘리브레이션 요소에서 Devices/ ECU/ Database를 선택하면, 창의 오른쪽에 a2l에 포함된 정보를 볼 수 있다. 여러 종류의 소프트웨어 변수들이 있다. (기회가 되면 소프트웨어 변수의 종류들을 하나씩 설명하겠다. 지금 설명하면 이야..
-
XCP - 설정application 2025.04.13 15:44
시작하기 전에모니터링의 제약TSMaster로 네트워크(CAN, LIN, FlexRay, Ethernet)의 메시지들를 모니터링 할 수 있다. CAN을 대상으로 설명하자면, CAN 버스(들)의 메시지들을 모니터링 할 수 있다. 메시지의 구조를 알면 (dbc 파일이 있으면), 메시지에 포함된 신호들을 모니터링 할 수 있다. CAN 데이터로 제동 성능 평가하기 :: hsl's tsmaster 사용기 등에서 설명한 것처럼 CAN 신호 모니터링은 차량 성능 평가나 기능 개발에 여러 모로 유용하다. 하지만 dbc와 소프트웨어를 변경하지 않고서는 새로운 신호를 모니터링 할 수 없다는 한계가 있다. 제어기 소프트웨어의 많은 변수들 중에서 그때그때 내가 필요로 하는 변수들을 선택해서 모니터링 할 수 있으면 좋지 않을까?..
-
DoIP (Diagnostic over Internet Protocol) - TSMaster API C 코드카테고리 없음 2025.04.11 15:28
시작하기 전에 정비를 하다보면 진단 통신으로 제어기의 상태를 확인하고, 상태에 따라 제어기를 조작하고, 다시 제어기의 상태를 확인하고, 또 다시 상태에 따라 제어기를 조작하는 일을 반복하는 경우가 많다. 이런 경우 미리 프로그램을 작성해두면 편리하다. TSMaster Diagnostic의 Automatic Diagnostic 기능을 이용하여 프로그램을 할 수 있다. TSMaster는 이를 진단 플로우(flow)라고 한다. C나 Python으로 코딩을 하면 더 유연하게 더 복잡한 조작을 프로그램 할 수 있다. C 코드를 이용하여, DoIP 진단 통신하는 방법을 설명한다. 개요DoIP 예제 코드로 방법을 설명한다. 코드는 아래의 구조로 되어있다. TSMaster 설정하드웨어 설정채널 설정DoIP 설정Do..
-
DoIP (Diagnostic over Internet Protocol) - 메시지 해석diagnostic 2025.04.08 21:13
개요이더넷 메시지를 보는 방법DoIP 메시지 해석 방법Rourting Activation Request/ Response MessageDiagnostic MessageVehicle Identification Message 이더넷 메시지를 보는 방법인터페이스 하드웨어를 이더넷 케이블에 연결한다. 인터페이스 하드웨어를 PC의 USB에 연결한다. 메인 메뉴/ Analysis/ Trace 버튼을 클릭하여 Add Ethernet Trace를 선택하여 이더넷 트레이스 창을 연다.Start 버튼을 클릭하면, 이더넷 트레이스 창에 이더넷 메시지들이 보인다.데이터의 상세를 보고 싶은 메시지를 선택한 후, 위 그림에서 노란색 화살표가 가리키는 영역 확장 버튼을 클릭한다. 그러면 아래 그림처럼 메시지의 상세를 볼 수 있다...
-
DoIP (Diagnostic over Internet Protocol) - TP 설정diagnostic 2025.04.07 23:21
개요TP 설정PC의 TCP/IP Stack 설정Diagnostic Layer 설정 TP 설정TSMaster에는 DoIP 설정을 위한 창이 두 개가 있다. 추측컨데, 이더넷에 대응하기 위해서 DoIP 창을 만들었고, 개발을 진행하여 DoiP 창의 기능을 Diagnostic 창과 합친 것이 아닌가 한다. 나는 Diagnostic 창을 이용해서 설명한다. 해보지 않았지만, 동일한 방법으로 DoIP 창에서 해도 되는 것 같다.메인 메뉴/ Application/ DoIP 버튼을 클릭하여 DoIP 창을 연다.메인 메뉴/ Application/ DoIP 버튼을 클릭하여 Diagnostic 창을 연다.Diagnostic 창에서 Protocol (ISO TP) 탭을 선택한다. 창의 왼쪽 영역의 DiagnosticECU..
-
DoIP (Diagnostic over Internet Protocol) - 하드웨어 설정diagnostic 2025.04.07 22:14
시작하기 전에 나는 환경, 에너지, 자동차, SDV, 통신, 사이버 보안, ai 코딩에 관심이 있다. 나는 이전 글들에서 SDV (Software Defined Vehicle)를 한두 번 언급한 적이 있다. 나는 아래 생각을 갖고 있다. 2025년 자동차 산업은 SDV (Software Defined Vehicle)로 패러다임 전환을 진행 중이다. “나이든 개에게는 새 재주를 가르칠 수 없다. (You cannot teach an old dog new tricks.)” 라는 서양 속담이 있다. (맞는 비유는 아니지만 강조를 위해 이를 차용하자면) 지난 시대의 자동차는 처음부터 늙은 개와 같다. 주인과 함께 하는 동안 새 재주를 배우지 못한다. (이런 것이 나쁘다고 말하려는 의도가 아니다. 그냥 그렇다는..
-
미니프로그램 라이브러리 사용법tip 2025.04.07 18:47
TSMaster에는 미니프로그램 기능이 있다. C, Python 프로그램으로 TSMaster 자체를 조작할 수 있고, CAN/ LIN/ Ethernet 메시지들을 송수신 할 수 있고, ... C, Python 프로그램으로 할 수 있는 무궁무진한 작업들을 할 수 있다. TSMaster는 미니프로그램에서 사용할 수 있는 함수들을 모아둔 라이브러리를 제공한다. 막강한 C나 Python 라이브러리에 비해 보잘 것 없다. ai 코딩의 발전 덕택에 활용도는 더 낮아질 것 같다. 그래서 쓸 일이 있을까 싶기도 하다. 어쨌든 ... 사용법은 아래와 같다. 메인 메뉴/ Design/ Mini Program Library를 클릭하여 Mini Program Library 창을 연다. Mini Program Library ..
-
트레이스를 이용한 RBS - 필터simulation 2025.03.24 13:15
시작하기 전에트레이스를 이용한 RBS(Remaining Bus Simulation) :: hsl's tsmaster 사용기 설명에서 트레이스를 이용하여 RBS 하는 방법을 설명하였다. 내가 실험할 당시에는 온라인 재생 기능에 "전송" 메시지 필터 기능이 없었다. (혹은 내가 찾지 못했다.) 최근에 살펴보니 온라인 재생 기능에 전송 메시지 필터 기능이 있다. 방법메인 메뉴/ Analysis/ Bus Replay 버튼을 클릭하여 Bus Playback 창을 연다. Bus Playback 창에서 Online Replay 탭을 클릭한다.트레이스 추가 버튼을 클릭하여 재생할 트레이스 파일을 선택한다.트레이스의 설정 버튼을 클릭하여 설정 창을 연다. 트레이스 설정 창에서 Set As Block Filter 버튼..
-
두 TSMaster 간 CAN 통신tip 2025.03.20 20:00
TSMaster의 TS Virtual Device를 이용하면 하드웨어 없이 송/수신 관련 기능을 연습할 수 있다.TSMaster가 실행된 상태에서 TSMaster를 한 번 더 실행하여 TSMaster를 두 개 실행할 수 있다.TSMaster를 실행한 상태에서 윈도의 TSMaster 아이콘에서 마우스 우클릭을 하면 아래 그림처럼 메뉴가 뜬다. TSMaster를 선택하면 두 번째 TSMaster를 실행할 수 있다. 두 TSMaster의 채널 설정을 동일하게 Virtual Device로 하고 동일한 채널 설정을 하면, 두 TSMaster 사이에 CAN으로 통신이 가능하다. 한쪽 TSMaster에서 CAN 메시지를 전송하면 다른 TSMaster에서 수신한다.
-
Secure Boot카테고리 없음 2025.03.15 02:07
시작하기 전에부트로더와 사이버 보안 기능인 시큐어 부트에 관해서 설명하려고 한다.자동차 제동 제어기인 ESC (Electronic Stability Control. ESC 차체 자세 제어 작동원리 [숏버전/요약] #shorts 유튜브 검색에서 제일 위에 나온 쇼츠다.)를 대상으로 설명한다.소프트웨어는 C로 짠다. 코드의 양은 수백 개 파일에 수십만 라인에 이른다. (요즘은 더 클 수도 있겠다.) 이를 컴파일하면 마이크로콘트롤러에서 실행할 수 있는 형태의 파일로 변환된다. 파일 형식이 몇 가지 있다. elf, hex, bin 등이다. 편의상 헥스라고 부르겠다. 컴파일 결과 헥스 파일이 두 개 생긴다. 하나가 부트로더(bootloader)이고 다른 하나가 어플리케이션(application, 앱)이다.부트로더..
-
Secure Flash - 서명이란?카테고리 없음 2025.03.10 22:02
시작하기 전에 요즘 자동차들은 통신으로 외부와 연결되어 있다. 와이파이, LTE, 5G, 블루투스, UWB, NFC 등 외부 통신의 방법은 다양하다. 외부와 통신으로 "연결"된 덕택에 운전자와 탑승자들은 전에 없던 편안함과 안전을 누린다. 이런 것들을 총칭하여 커넥티비티(connectivity)라고 한다. 커넥티비티가 가져온 자동차 패러다임의 큰 변화가 있다. SDV (Software Defined Vehicle)이다. 소프트웨어 업데이트로 기능이 더 좋아지거나 없던 기능이 생긴다. 소프트웨어로 차가 달라진다. 소프트웨어로 차가 정의된다. 커넥티비티 이전에도 소프트웨어 업데이트는 가능했다. 하지만 시간, 노력이 매우 많이 들었다. 누군가가 일일이 차를 찾아다니며 혹은 차가 누군가에에 가도록 하여 한..
-
UDS 진단 통신으로 하는 소프트웨어 업데이트 6 - 자동 진단diagnostic 2025.03.02 11:55
자동 진단 (Automatic Diagnostic) 앞에서 정의한 서비스 단계들을 하나로 묶어서 작업 그룹을 정의한다. 작업 그룹을 실행시키면 모든 서비스 단계들이 한 번에 순차적으로 "자동" 실행된다. 작업 그룹 정의Diagnostic 창/ Automatic Diagnostic 탭/ 작업 그룹 트리 영역의 "빈 공간"에서 마우스 우클릭하여 "Add a new group"을 선택한다. 폴더 아이콘으로 표시되는 새 작업 그룹이 만들어진다. [주의] "빈 공간"을 선택한 상태가 아니라 항목을 선택된 상태에서 "Add a new group"하면 새 작업 그룹은 선택된 항목 아래에 생성된다. 방금 만든 작업 그룹을 선택하고 마우스 우클릭하여 뜬 팝-업 메뉴에서 "Edit Name"을 선택하고 작업 그룹의..
-
UDS 진단 통신으로 하는 소프트웨어 업데이트 5 - 메타 데이터 업데이트diagnostic 2025.02.28 16:16
소프트웨어 전송 후소프트웨어 전송을 완료한 후 소프트웨어 업데이트를 추적할 수 있는 메타 데이터를 기록한다. 업데이트가 잘 되었는지 확인도 필요하다. 아래 그림의 빨간 테두리 부분이다. 소프트웨어 번호 쓰기논점을 흐리지 않기 위해 업데이트의 이력 관리가 왜 중요한지를 설명하지는 않지만 이는 매우 중요하다. 이력 관리에 필요한 데이터를 제어기에 기록한다. 이력 기록을 위한 루틴이 정의되어 있을 수 있다. 설명을 시작할 때 루틴이 정의되어 있다고 가정했다. 앞에서 0x31 RoutineControl을 설명하였다. 동일한 서비스를 다시 설명하는 것보다 WriteDataByIdentifier와 ReadDataByIdentifier 서비스를 설명하는 것이 더 유용할 것 같아 계획을 수정한다.UDS 표준에 Wr..
-
UDS 진단 통신으로 하는 소프트웨어 업데이트 4 - 소프트웨어 전송 (계속)diagnostic 2025.02.28 12:27
소프트웨어 전송 (계속)아래 그림의 빨간 테두리 부분에 관한 설명이다. 이와 관련한 설정은 Request and Transmit Data 탭에서 한다. 설정 화면은 아래 그림과 같다.설정 항목들은 DataFormat Identifier of Request Transmit Data(0x), Enable User Define MaxNumOfBlockLength(0x), Delay Time after Transfer Request, Delay Time after Transfer Data이다. Data Format IdentifierData Format Identifier of "Request Transmit"을 설명하려면 먼저 "Request Transmit" 서비스의 포맷을 설명해야 한다. 포맷은 아래와 ..
-
UDS 진단 통신으로 하는 소프트웨어 업데이트 3 - 소프트웨어 전송diagnostic 2025.02.27 13:04
소프트웨어 전송소트웨어 전송 과정은 아래 그림과 같다. 소프트웨어가 프로그램될 영역 삭제, 다운로드 요청, 프로그램할 소프트웨어 전송 (데이터 전송), 전송 종료, 소프트웨어 번호 (기타 메타 데이터) 쓰기이다. 영역 삭제와 메타 데이터 쓰기는 자동차사, 협력사 특화된 루틴(기능)이다. UDS에는 RoutineControl 이라는 이름으로 서비스 아이디 0x31이 정의되어 있다. 나는 영역 삭제와 메타 데이터 쓰기를 위한 루틴이 정의되어 있다고 가정하고 설명한다. 다운로드 요청 (서비스 아이디 0x34), 데이터 전송 (서비스 아이디 0x36), 전송 종료 (서비스 아이디 0x37)는 각각의 서비스로 분리되어 있지만 실제로는 합쳐져 실행된다. 그래서 TSMaster에는 Combined Services 라..
-
UDS 진단 통신으로 하는 소프트웨어 업데이트 2 - 보안 접속diagnostic 2025.02.26 16:19
보안 접속(Security Access)시드 & 키 보안 접속으로 설명한다. 아래 순서대로 동작한다. 시드 요청 (Request Seed)Diagnostic 창의 왼쪽에 UDS 표준의 서비스들이 나열된 트리 영역에서 SecurityAccess 항목을 선택하고 마우스 우클릭하여 Add New Service를 선택한다. 그리고 아래 그림과 같이 Request Seed를 입력한다.SecurityAccess의 서비스 아이디는 0x27이다. SecurityAccessType은 입력 칸의 오른쪽 끝 '...' 버튼을 클릭하여 Select Sub Function ID 창을 열고 0x01 RequestSeed를 선택한다. RequestSeed와 SendKey는 둘이 한 쌍을 이룬다. 0x01로 시드를 요청한 경우, ..
-
UDS 진단 통신으로 하는 소프트웨어 업데이트 1 - 작업 개요카테고리 없음 2025.02.26 14:42
시작하기 전에진단 통신은 제어기 소프트웨어 업데이트에도 활용될 수 있다. UDS 표준이 만들어진 시기에는 프로그래밍이라고 불렀다. 요즘은 소프트웨어 업데이트가 더 흔하게 사용된다. 여기서는 문맥에 따라 소프트웨어 업데이트와 프로그래밍을 혼용한다.TSMaster의 UDS Diagnostic 모듈을 이용하여 프로그래밍 하는 방법을 설명한다. Secure Boot :: hsl's tsmaster 사용기에서 설명한 제어기 플래시 메모리의 구조, 부트로더 개념에 대한 이해가 다음 이야기의 이해에 도움이 될 것으로 생각한다. 개요제어기 소프트웨어 업데이트는 대략 아래의 절차로 이뤄진다.소프트웨어 업데이트 중에 다른 통신에 방해를 받지 않도록 하기 위해서 모든 제어기들에게 CAN 송신 중지를 요청한다. 모든 제어..
-
QR 코드 명함카테고리 없음 2025.02.23 13:09
문제 인식종이 명함은 일회용품이다. 매우 많이 만들어진다. 종이 명함의 종이는 나무에서 온 것이다. 명함 제작에 많은 나무들이 잘려나갔을 것이다. 명함으로 잘려나가는 나무를 줄일 수 없을까? 요즘 명함을 받으면 스마트폰 카메라로 스캔하여 데이터를 연락처 앱에 저장하고 명함은 버린다. 버려진 것은 쓰레기가 되어 환경을 파괴한다. 환경 파괴를 줄일 수 없을까?스마트폰의 문자 인식 성능이 좋아졌다. 하지만 여전히 오인식이 적지 않다. 스캔 후에 데이터를 일일이 검토해야 하는 귀찮음이 있다. 그래서 나는 어떤 명함들은 스캔하지 않고 그냥 버린다. 데이터 오인식을 줄일 수 없을까? 상대가 내 명함을 그냥 버리지 않게 할 수는 없을까?오인식이 없음을 내세워 서비스하는 회사가 있다. 사용자가 촬영한 명함이 그 회사로..
-
SecOC 구현application 2025.02.11 19:38
개요SecOC의 작동을 데모하기 위해 TSMaster 미니프로그램을 짠다. 데모의 구성은 아래 그림과 같다.PC에서 TSMaster를 2개 연다. 한 쪽은 센더, 다른 쪽은 리시버 역할을 한다.센더는 메시지에 MAC을 부착하여 전송한다.리시버는 메시지의 MAC을 검사한다.필요한 경우 FV 값을 변경할 수 있다. PC에서 TSMaster를 2개 열어 사용하기TSMaster가 이미 열려있는 상태에서 설명한다.TSMaster 아이콘에서 마우스 우클릭을 하여 팝-업 메뉴를 띄운다. 메뉴에서 TSMaster를 선택한다. 두 번째 TSMaster가 시작된다. 중간에 TSMaster가 이미 실행 중이라는 안내가 나온다. 양쪽 TSMaster 모두 메인 메뉴/ Hardware/ Channel Selection 버튼..
-
SecOC (Secure On-board Communication)application 2025.02.09 12:18
시작하기 전에 SecOC에 관한 글을 작성한다. 아래 내용들을 포함한다.SecOC가 무엇인가?왜 CRC는 사용하지 않는가?SecOC 구현 SecOC는 무엇인가?SecOC는 Secure On-board Communication을 줄임말이다.On-board는 "차량 내"라는 의미이다. "차량 내 통신 보안" 정도로 해석할 수 있다.AUTOSAR에서 발표한 통신 보안을 위한 사양이다.AUTOSAR는 AUTomotive Open System ARchitecture의 줄임말이다. 문맥에 따라 아키텍처, OS를 혹은 AUTOSAR 기구(organization)를 의미한다.AUTOSAR (Automotive Open System Architecture) 다양한 통신 프로토콜에 적용 가능하다고 한다. 나는 CAN(..
-
CRC 리버스 엔지니어링하기application 2025.02.09 12:14
Reverse Engineer CRC목적CRC를 리버스 엔지니어링하는 것이 어렵지 않다는 것을 보여준다.개요데이터 준비데이터 길이가 16 바이트인 CAN 메시지를 가정한다.시작 바이트는 0번이다.0번 부터 10번 바이트까지를 랜덤 바이트로 채운다.11번 바이트에는 alive counter를 넣는다.12번 부터 15번 바이트까지는 4 바이트 CRC로 채운다.왜 4 바이트 CRC인가?AUTOSAR CRC는 1 바이트이거나 4 바이트이다.1 바이트는 4 바이트보다 상대적으로 CRC 알고리즘을 찾는 리버스 엔지니어링이 쉬울 것 같다. (실제 그런지 모르겠다.) 일부러 어려워 보이는 4 바이트를 선택한다. 어려워도 리버스 엔지니어링 된다는 것을 보여주려는 목적이다실험용 메시지 n_message개를를 생성한다.CR..
-
qwen2.5 on Jetson Orin Nano Super FFT Demo 1, 2카테고리 없음 2025.02.08 14:06
USERfast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다. 그래프는 plotly로 해주세요.ASSISTANT먼저 필요한 패키지를 불러옵니다.import numpy as npfrom scipy.fft import fft, ifftimport matplotlib.pyplot as pltimport plotly.graph_objs as go다음으로, 진폭과 주파수가 다른 sine와 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만듭니다.# 설정값 설정fs = 1000 ..
-
deepseek-r1 on Jetson Orin Nano Super FFT Demo - 3카테고리 없음 2025.02.08 12:49
USERfast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다. 그래프는 plotly로 해주세요.ASSISTANTThought for 103 seconds 부분을 클릭하면 사고 과정을 볼 수 있습니다.Thought for 103 seconds> Okay, I need to create a Python example that demonstrates understanding of the Fast Fourier Transform (FFT). The user wants to generate inp..
-
claude-haiku on-line FFT Demo카테고리 없음 2025.02.08 12:09
Promptfast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다. 그래프는 plotly로 그려주세요.ResponseFFT를 사용하여 신호를 분석하는 예제를 만들어보겠습니다.import numpy as npimport plotly.graph_objects as gofrom plotly.subplots import make_subplots# 시간 도메인 설정t = np.linspace(0, 1, 1000)# 입력 신호 생성 (5개의 sine과 5개의 cosine 파형)amplitudes_si..
-
deepseek-r1 on-line FFT Demo카테고리 없음 2025.02.08 02:17
Promptfast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다. 그래프는 plotly로 해주세요.ThoughtOkay, the user wants to understand FFT through a Python example with Plotly. Let me start by recalling the previous example I provided. Wait, they had sine and cosine waves each with different amplitudes and frequ..
-
deepseek-v3 on-line FFT Demo카테고리 없음 2025.02.08 02:00
Promptfast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다. 그래프는 plotly로 해주세요.ResponseFast Fourier Transform (FFT)는 시간 도메인의 신호를 주파수 도메인으로 변환하는 알고리즘입니다. 이 변환을 통해 신호를 구성하는 주파수 성분들을 분석할 수 있습니다. 아래는 진폭과 주파수가 다른 sine과 cosine 웨이브를 생성하고, 이를 FFT를 통해 분석하는 파이썬 예제입니다. 그래프는 Plotly를 사용하여 그립니다.예제 코드import numpy..
-
deepseek-r1 on Jetson Orin Nano Super FFT Demo 1카테고리 없음 2025.02.08 01:43
deepseek-r1 / 7.6B/ Jetson Orin Nano SuperPromptfast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다. 그래프는 plotly로 해주세요.ResponseJetson Orin Nano Super에 보관되어 있던 대화가 사라졌다. 코드import numpy as npimport plotly.graph_objects as go# Parameterssample_rate = 1000 # Sampling rate in Hzduration = 2 # Durati..
-
llama3.1 on Jetson Orin Nano Super FFT Demo 1, 2, 3카테고리 없음 2025.02.08 00:37
USERfast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다.ASSISTANTFFT는 시간 도메인에서의 신호의 분석을 주파수 도메인으로 변환해주는 중요한 알고리즘입니다.아래 예제에서는 파이썬의 numpy 라이브러리를 이용하여 FFT를 수행하고, 결과에서 입력한 진폭과 주파수를 확인합니다.import numpy as np# 진폭 1,2,3,4,5 각 주파수 0.1,0.2,0.3,0.4,0.5에 해당하는 sine 웨이브t = np.linspace(0, 1, 1000) # 시간 도메인에서 10..
-
AI 코딩카테고리 없음 2025.02.07 22:46
시작하기 전에 나는 근래(오늘은 2025-02-07이다.)에 현대기아자동차연구소에서 회의를 하는 중에 내 블로그를 이용해서 해결 방법을 설명한 적이 있다. 해결책을 TSMaster에 미니프로그램으로 구현하였다. 나는 그 미니프로그램을 마이크로소프트의 Copilot, claude.ai, ChatGPT의 지원으로 작성했다. (이 순서대로 도움을 자주 받았다.) 프로 개발자들의 능력을 0~100 (100이 최고 수준)으로 하자면, 내 코딩 능력은, 추측컨데, 10 이하일 것이다. 너그럽게 봐주면 20 이하 정도. 내가 미니프로그램을 작성할 수 있었던 것은 100% ai 코딩 덕택이다. 코딩 능력이 없다고 해결책을 생각해 낼 사고력이 없는 것이 아니다. 해결책을 생각해 낼 수 있는 충분한 전문 지식, 경험..
-
Python을 PATH에 추가하기tip 2025.02.07 12:34
커맨드 창에서 python을 실행했는데 "알려지지 않은 명령"이라는 에러 메시지가 뜨는 경우, python 디렉토리가 PATH에 없어서 그렇다. 아래 방법으로 PATH를 변경한다.윈도 검색창에 "path"를 입력한다. 검색 결과 중 "시스템 환경 변수 편집"을 선택한다. 시스템 속성창이 열린다. 시스템 속성창이 열리면 "환경 변수(N)..." 버튼을 클릭한다. 환경 변수창이 열린다. 환경 변수 창에서 Path 항목을 더블클릭하여 환경 변수 편집창을 연다.현재 사용자의 환경 변수만 수정할 경우 사용자 변수를, 전체 사용자들의 환경 변수를 수정할 경우 시스템 변수를 선택한다. 환경 변수 편집 창에서 "새로 만들기" 버튼을 클릭한다. 새로 추가된 줄에 Python이 설치된 경로를 입력한다. 기존에 사용하던 P..
-
TSMaster API를 사용하여 CAN 메시지 송신하기 (RBS)application 2025.02.07 12:11
시작하기 전에 요즘 절대 다수의 차량 제어기들은 통신을 한다. 이들 중 상당수는 다른 제어기이 보내는 CAN 메시지들을 수신해야 정상 작동 상태가 된다. CAN 메시지들을 공급하는 방법은 크게 두 가지다. 실제 다른 제어기들과 CAN 버스를 직접 연결하는 방법, CAN 버스 통신을 모사(시뮬레이션) 해주는 방법. 전자는 현실적으로 여러가지 어려움이 있다. 후자를 RBS (Remaining/Rest Bus Simulation)이라고 한다. TSMaster GUI에서 TSMaster가 제공하는 기능들을 조작하여 RBS 하는 방법을 CAN 버스 시뮬레이션 (RBS: Remaining Bus Simulation) :: hsl's tsmaster 사용기, 트레이스를 이용한 RBS(Remaining Bus Sim..
-
Read Data By ID(DID)의 DID 스캐닝 측정 데이터 분석application 2025.01.28 02:55
mobis esc readDID scan blfmobis esc를 대상으로 DID(Data IDentifier)를 0x0000부터 0xFFFF까지 변경하며 readDID 요청을 하는 DID 스캐닝을 하였다.DID 스캐닝을 하며 측정한 CAN 버스 트레이스(blf) 파일을 분석하여 긍정 응답을 받은 DID를 추출한다.import osfrom pathlib import Pathimport canimport pandas as pdldf is not supportedxls is not supportedxlsx is not supported# constant# parse_resp()에서 사용되는 고정값들을 정의한다.# 긍정 응답은 진단 요청에 0x40을 더한 값으로 시작한다.k_offset_positive_res..
-
UDS DID(data identifier) 스캐닝application 2025.01.27 16:03
시작하기 전에 진단 응답 해석하기 :: hsl's tsmaster 사용기 에서 Read ECU ID, Read DTC, Read Software Version, Tester Present 요청으로 진단 통신의 m_id (0x700 ~ 0x7FF)를 스캐닝해보았다. Read ECU ID 요청의 응답은 유용했다. Read DTC나 Read Software Version 요청들의 응답은 유용하지 못했다. 서비스 요청의 파라미터가 제어기들이 지원하지 않는 것이기 때문일 수 있다고 생각한다. 그렇다면 "제어기들이 지원하는 파라미터는 어떤 것들일까?" 하는 의문이 생겼다. m_id를 스캐닝한 것처럼 파라미터를 스캐닝해볼 수 있다. UDS에 정의되어 있는 모든 서비스들을 대상으로 파라미터를 찾는 것은 데모로는 과하..
-
진단 응답 해석하기application 2025.01.26 18:17
venue_parse_diag_resp_blf차(베뉴)에서 측정한 CAN 트레이스(blf 파일)를 분석한다.진단 응답 (DTC: Diagnostic Trouble Code)을 해석한다.DTC 설명은 현대차의 DTC(Diagnostic Trouble Code) 설명을 찾는 방법 :: hsl's tsmaster 사용기에서 구한 DTC 설명을 사용하였다.import osfrom pathlib import Pathimport can # blf 파일 처리를 위해 python-can 모듈을 사용한다.import pandas as pdldf is not supportedxls is not supportedxlsx is not supported# 측정한 blf 파일들k_dir_data = Path().absolute..
-
진단 요청과 응답 m_id 짝 찾기application 2025.01.26 16:02
venue_uds_match_diag_req_resp_m_id_blf차(베뉴)에서 측정한 CAN 트레이스 (blf 파일)을 분석한다.진단 요청과 응답 메시지 아이디들의 짝을 찾는다.표준에 따르면 진단 메시지의 아이디(m_id)는 0x700에서 0x7FF로 정해져있다.표준에 Read ECU ID, Read DTC 등 몇몇 서비스는 대부분의 제어기들이 응답한다.위 두 가지 사실에서 착안하여 m_id를 0x700에서 0x7FF까지 순차적으로 증가시키면서 (스캐닝) Read ECU ID, Read DTC 등의 서비스를 요청한 후, 0x700번대 응답 메시지를 500msec(응답 대기 시간) 동안 기다린다.응답이 있으면 그 메시지의 m_id를 요청 메시지 m_id와 짝으로 판정한다.import osfrom pat..
-
진단 통신으로 제어기 확인하기application 2025.01.26 13:10
시작하기 전에 CAN 통신 데이터를 수집하고, 수집한 데이터에서 메시지 아이디들을 찾고, 찾은 메시지 아이디들을 dbc에서 찾는 방식으로 차에 어떤 제어기들이 있는 지 확인할 수 있다. (dbc에서 m_id들을 찾기 :: hsl's tsmaster 사용기) 이는 차량 형상 관리를 위한 최소한의 점검이다. 이 점검을 통해서 차에 있는 제이기들과 빠진 제어기들을 확인할 수 있다. 제어기들의 하드웨어와 소프트웨어가 설계 사양에 맞는지까지 확인하기는 쉽지 않다. 필요가 있으면 발명이 있다.UDS 서비스 중에 Read Data By Identifier라는 것이 있다. 자동차사들은 진단 통신 사양서에 이 서비스를 명시한다. 그래서 제어기의 하드웨어, 소프트웨어 정보를 읽도록 한다. Read Data By Ident..
-
dbc에서 m_id들을 찾기application 2025.01.26 00:16
dbc에서 m_id들을 찾기목적: 차량 형상 관리 관점에서 설계 사양 (dbc)과 실차의 형상(m_info)을 비교한다.m_id_info는 blf 파일에서 m_id, dlc, d_ts 추출하기 :: hsl's tsmaster 사용기에서 측정한 CAN 통신 데이터를 분석한 결과이다. 메시지 아이디(m_id)별로 메시지 길이(dlc), 메지지 전송 주기(d_ts) 정보를 갖고 있다. dbc 파일에서 m_info의 m_id들을 찾는다.찾아야할 m_id들은 ~mid_info.xlsx에 저장되어 있다.cantools라는 Python 모듈을 이용하여 dbc의 내용을 읽는다.찾기와 비교를 쉽게 하기 위해서 pandas라는 Python 모듈을 이용한다.xlsx의 내용을 df_car라는 dataframe(df)으로 만..
-
blf 파일에서 m_id, dlc, d_ts 추출하기tip 2025.01.19 19:17
목적TSMaster로 받은 차량 통신 데이터 파일 (blf)를 분석하여 메시지 아이디 (m_id), 데이터 길이 (dlc, data length code), 전송 주기(d_ts. ts = timestamp, d_ts는 ts의 차이)를 구하는 미니프로그램을 만든다.그동안 나는 blf 파일을 직접 처리할 줄 몰랐다. 그래서 blf를 TSMaster의 Log Converter 기능을 이용하여 텍스트 형식의 asc 파일로 변환한 후, asc 파일을 읽어 데이터를 처리했다. 변환은 한 번만 하면 되는 일이지만 그래도 불편하다. 이 기회에 blf 파일을 직접 다루는 방법을 배운다. blf 파일 읽기m_id, dlc, d_ts를 구하기 위해서는 blf를 읽기만 하면 된다.blf 파일을 읽을 수 있는 Python 모듈..
-
차량 형상 점검application 2025.01.19 18:14
시작하기 전에 새 차를 개발할 때 시작차(Prototype)를 만든다. 시작차는 기존 차(들)에서 시스템들을 가져다 만든다. (이를 캐리-오버라고 부른다.) 내가 말하는 시스템은 제어기, 센서, 액추에이터로 구성된다. 센서나 액추에이터는 단순 부품일 수도 혹은 그 자체가 하나의 시스템일 수도 있다. (ADAS에서 ESC는 액추에이터이지만, ESC 자체로 독립된 시스템이기도 하다. 전통적으로 시스템은 차 안에 있었지만 커넥티비티의 발전으로 요즘 시스템은 차 밖에 있을 수도 있다.) 시스템들은 "통신"을 통하여 개별 시스템은 할 수 없는 기능을 구현한다. 소위, 협조 제어 (coordinated control)라고 한다.캐리-오버한 시스템들로 시작차 조립을 한 후 곧바로 모든 시스템 기능들이 정상 동작하는..
-
주행 중인 도로의 경사도 구하기 1/t.b.d.application 2025.01.15 17:59
gradient_dynamic주행 중 노면의 경사도를 구한다.# importimport sysfrom pathlib import Pathimport numpy as npimport pandas as pdimport plotly.express as pxfrom PIL import Image # plotly 그래프로 출력하면 노트북 크기가 너무 커서 GitHub에 표시가 안됨. 그래서 이미지로 저장해서 표시하기 위해 사용함함# 블로그에 올리기 위해 plotly renderer의 설정이 필요하다. import plotly.io as piopio.renderers.default = "notebook_connected" # constant# 프로젝트 디렉토리 경로k_dir_project = Path('.')...
-
미니프로그램에서 CAN 신호와 시스템 변수 다루기tip 2025.01.10 01:47
시작하기 전에 미니프로그램을 작성하다보면 CAN 신호와 시스템 변수를 다루게 된다. 아래의 경우들이 있다. 미니프로그램에서 CAN 신호를 읽어서 연산에 사용한다.미니프로그램에서 연산한 결과를 CAN 메시지의 신호로 전송한다.신호를 TSMaster의 그래픽, 트레이스, 판넬 창 등에서 사용할 수 있다.메시지는 blf 파일에 저장할 수 있다. (blf 파일을 csv, mat, csv 등으로 변환하여 다른 프로그램에서 읽을 수 있다.)미니프로그램에서 시스템 변수를 읽어서 연산에 사용한다.미니프로그램에서 연산한 결과를 시스템 변수에 저장한다.시스템 변수를 TSMaster의 그래픽, 트레이스, 판넬 창 등에서 사용할 수 있다.시스템 변수를 blf 파일에 저장할 수 있다. (2025-01-10 현재, 시스템 변수..
-
Python 미니프로그램: 코드에서 CAN 메시지의 신호를 읽는 방법simulation 2025.01.07 19:49
코딩을 하다보면 메시지의 신호에서 값을 읽어올 경우가 있다. 그 방법을 설명한다. 신호를 포함하는 메시지를 읽을 수 있도록 준비먼저 읽을 신호를 포함하고 있는 메시지를 코드에서 사용할 수 있도록 준비해야 한다. Python Code Editor의 Properties 탭을 클릭한다. 왼쪽 아래쪽에 Database Symbols 영역이 있다. 읽을 메시지가 포함된 dbc 파일을 체크한다. (TSMaster에서 dbc를 읽으면 pdbc로 변환된다.)Symbols 탭을 클릭한다.Global Definition을 선택한다. 여기에 메시지를 읽는데 필요한 코드가 삽입되어야 한다. 코드 어디에서나 사용되어야 해서 Global Definition에서 정의한다.Functions 탭을 클릭한다.읽을 메시지에서 우클릭한다..
-
침입 감지 시스템 (IDS) - 타임스탬프 보완application 2025.01.05 22:12
시작하기 전에 침입 감지 시스템 (IDS: Intrusion Detection System) :: hsl's tsmaster 사용기에서 실제로 감지된 침입 건수가 내 예상보다 많았다. 원인을 찾다가 아래의 생각이 났다. TSMaster의 Rx 이벤트가 발생할 때 ts(timestamp)를 메시지 수신 시각으로 삼았다.하드웨어에서 메시지를 수신한 시각과 이벤트가 발생한 시각 사이에 차이가 있다면? 그리고 그 차이가 일정하지 않다면?하드웨어가 메시지 수신 시각을 메시지 데이터에 추가하지 않았을까? TSMaster의 메시지는 RawCAN 클래스이다. RawCAN 클래스의 정의에서 time_us (timestamp in microseconds) 를 찾았다. 참고로 RawCAN 클래스는 아래 코드와 같다.cl..
-
IDS 오감지/ 민감 감지에 관한 고찰tip 2025.01.04 23:26
IDS 오감지/ 민감 감지에 관한 고찰IDS 미니프로그램이 잘 작동한다.0x300번대 메시지들은 침입이 아닌데도 주기 기반 침입 감지가 발생한다.혹시 0x300번대에 메시지들이 다른 번호대 메시지들 보다 많나? 그래서 전송 지연이 연쇄 작용을 일으키나? 하는 의문이 생겼다. import pandas as pdfrom pathlib import Pathimport pickleimport plotly.express as pximport plotly.graph_objects as go# 메시지별 d_ts 통계값을 저장한 xlsx 파일을 읽는다.xlsx_d_ts_distribution = Path.cwd() / 'd_ts_distribution.xlsx'df = pd.read_excel(xlsx_d_ts_dis..
-
침입 판정 기준값 데이터 준비tip 2025.01.04 18:01
침입 감지를 판정할 d_ts의 기준값을 준비한다.¶침입이 있다면 메시지 전송 간격인 d_ts (= timestamp의 diff라는 의미로 d_ts)가 줄어들게 된다.칩입이 없을 때 d_ts의 최소값을 d_ts_min이라고 하자.침입 판정 기준을 d_ts_intrusion_detection_threshold라고 하자.d_ts가 d_ts_min 보다 작아으면 침입으로 감지로 의심할 수 있다.d_ts_min을 구하는데 사용된 데이터가 충분히 많다고 할 수 없다.내가 사용한 데이터는 3분 30초 길이로 너무 짧다.내가 했던 주행도 매우 평범하여 제어기에 연산 하중이 매우 작았을 것이다. 그래서 전송 주기에 영향이 거의 없었을 것이다.데이터가 충분하지 않아 너무 민감하게 침입을 감지할 가능성이 있다.메시지별 d_..
-
CAN 메시지 전송 주기 분포 분석카테고리 없음 2025.01.04 14:59
메시지 전송 주기 분포 분석m_id 별로 메시지 전송 주기의 분포를 확인한다.import pandas as pdfrom pathlib import Pathimport plotly.express as pximport plotly.graph_objects as go# data 디렉토리에 있는 모든 .asc 파일들dir_data = Path('.').absolute()/'asc_per_id'ascs = list(dir_data.glob('*.asc'))print(f'{len(ascs) = :,}')# for asc in ascs:# print(asc.name)len(ascs) = 59한 asc를 대상으로 방법을 개발한다.def read_asc_to_df(asc): ''' .asc 파일을 읽어..
-
asc 파일을 pandas 데이터프레임으로 변환하기tip 2025.01.04 14:02
asc to dataframe¶메시지 전송 주기를 분석하기 위해 수치 데이터 처리에 편리한 pandas를 사용할 것이다.m_id별로 분리된 asc 파일을 읽어서 pandas 데이터프레임을 만든다.데이터 길이 (dlc: data length code)가 일정하지 않다. 어떻게 처리할까?In [16]:import pandas as pdfrom pathlib import PathIn [17]:# data 디렉토리에 있는 모든 .asc 파일의 이름을 출력한다.dir_data = Path('.').absolute()/'asc_per_id'ascs = list(dir_data.glob('*.asc'))print(f'{len(ascs) = :,}')for asc in ascs: print(asc.name)len..
-
asc 파일을 m_id별로 분리하기tip 2025.01.04 13:24
asc 파일을 CAN 메시지 아이디별로 분리 저장한다.¶차에서 받은 CAN 트레이스에는 여러 메시지 아이디(m_id)들의 메시지들이 있다.m_id별 분석을 위해서 m_id별로 asc 파일을 만들어 메시지들을 저장한다.In [1]:from pathlib import Pathimport pandas as pdIn [2]:# 아래 asc 파일을 대상으로 한다.path_to_data_asc = Path(r'C:\Users\haese\OneDrive\01_Projects\1_picode\05_tosun\30_기술\00_교육_자료\CySec\IDS\20240725_venue2024_07_26_09_17_29.asc')# 현재 디렉토리 아래에 asc_per_id 디렉토리를 만든다. dir_output = Path('..
-
침입 감지 시스템 (IDS: Intrusion Detection System)application 2025.01.04 13:18
시작하기 전에사이버 보안은 매우 중요한 주제다. "자동차" 사이버 보안은 사생활, 재산, 안전, 생명에 직접적인 위협이 될 수 있다. 자동차가 무선 통신으로 연결되는 네트워크가 증가할 때마다 더 많고 더 다양한 보안 위협에 노출된다. 차량 내외부의 시스템들 사이에 통신을 통한 협조 제어가 증가할수록 사고 피해의 심각성이 커질 위험이 증가할 개연성이 있다. 통신에 대한 적절한 보안이 필요하다. 통신 보안은 침입 감지부터 시작한다고 말해도 무방할 것이다. TSMaster로 CAN 통신 침입 감지 기능을 만들어본다. [참고] 최신 차량들에는 침입 감지 시스템(IDS: Intrusion Detection System)이 장착되어 있다. 개요IDS 구상트레이스 분석IDS 미니프로그램 코딩침입 판정 기준값 데..
-
Symbol Mapping: 시스템 변수를 CAN 신호로 전송하기simulation 2025.01.03 15:36
시작하기 전에 이전 블로그에서 Symbol Mapping 기능들 중에 CAN 신호들을 이용해서 계산한 결과를 시스템 변수에 넣는 방법을 설명하였다. (Symbol Mapping: CAN 신호로 계산한 결과를 시스템 변수에 넣기 :: hsl's tsmaster 사용기) RBS(Remaining Bus Simulation)를 하다보면 내가 계산한 결과를 CAN으로 전송해야 할 경우가 있다. Symbol Mapping 기능으로 시스템 변수를 CAN으로 전송하는 방법을 설명한다. 개요CAN 신호들로 실시간 연산하기 - 미니프로그램으로 yaw_rate_ws 계산 :: hsl's tsmaster 사용기에서 만든 yaw_rate_ws 신호를 CAN으로 전송한다. 시스템 변수를 전송할 CAN 메시지와 신호 만들기시..
-
mdf 데이터 파일을 읽어서 그래프 그리기tip 2025.01.01 18:23
시작하기 전에 CAN은 메시지 단위의 통신을 한다. CAN 메시지들은 blf 파일에는 메시지 단위로 차곡차곡 저장된다. 아래 그림처럼. 이를 메시지 기반 파일 형식이라고 부르겠다. (위 그림에서 하이라이트 되어있는 첫 줄의 "3A 04 91 ..." 처럼) 바이너리로 저장된 데이터에서 신호를 추출해야 한다. 추출에 필요한 정보는 dbc 파일에 정의되어 있다. (dbc 파일이 무엇인지를 CAN 트레이스 보기 - 바퀴 속도 :: hsl's tsmaster 사용기의 '트레이스 창'에서 부분에서 설명하였다.)dbc 파일이 없으면 신호를 보고 싶은 사람에게 blf 파일은 쓸모가 없다.blf 파일와 짝이 맞지 않는 dbc 파일을 적용하는 경우, 신호를 엉뚱하게 추출하게 된다. 추출하지 못하는 상황보다 더 나쁜 ..
-
PC간 데이터 전송 - 소켓 통신analysis 2024.12.31 09:59
시작하기 전에 실시간으로 FFT 하기 - 미니프로그램과 ai :: hsl's tsmaster 사용기 에서 TSMaster의 FFT 계산 결과를 소켓 통신으로 동일 PC의 FFT Visualizer 프로그램으로 전달하는 방법을 설명했다. 소켓 통신으로 서로 다른 PC의 프로그램 사이에 통신이 가능한지 확인해보았다. 개요클라이언트(TSMaster 미니프로그램)쪽 코드 수정 서버(FFT Visualizer)쪽 코드 수정실행 결과 클라이언트(TSMaster 미니프로그램)쪽 코드 수정FFT 계산 결과를 보내는 쪽인 TSMaster 미니프로그램이 클라이언트이다. FFT 계산 결과를 그래프로 표시하는 FFT Visualizer가 서버이다. 소켓 통신을 연결할 때, ip 주소에 FFT Visualizer가 동..
-
CAN dbc 편집tip 2024.12.30 16:14
나는 CANdb++를 사용한다. Vector사의 Freeware이다. 아래 링크에서 다운로드 받을 수 있다. https://www.vector.com/int/en/support-downloads/downloads/add-ons-and-freeware/candb-editor/ CANdb++로 메시지 전송 주기 변경하는 방법CANdb++에는 메시지 전송 주기를 변경하는 기능이 없다. 나는 아래 방법으로 메시지 전송 주기를 변경한다.dbc 파일을 일발 텍스트 에디터로 연다. "MsgCycleTime"으로 검색한다. (예를 들어) 아래의 줄이 검색된다. BA_ "GenMsgCycleTime" BO_ 1025 10;1025는 16진수 0x401의 십진수 값이다. 메시지 아이디 0x401의 전송 주기를 설정한다..
-
시스템 변수를 로깅하는 방법analysis 2024.12.30 14:14
시작하기 전에 앞에서 미니프로그램으로 바퀴 속도에서 요-레이트를 계산하여 시스템 변수 yaw_rate_ws에 할당하는 방법을 소개했었다. 아래의 문의를 받았다.시스템 변수 yaw_rate_ws를 blf 파일에 로깅할 수 있는가?어떻게 하는가?로깅한 blf를 재생하면 시스템 변수가 재생되는가?답부터 말하자면,시스템 변수를 blf에 로깅할 수 있다.어떻게 하는가를 아래에서 설명하겠다.로깅한 blf를 재생하면 시스템 변수가 재생된다. 추가로 blf를 mat으로 변환할 때, 시스템 변수를 추가하여 변환할 수도 있다. 개요시스템 변수를 blf 파일에 로깅하는 방법시스템 변수가 포함된 blf를 오프라인 재생하여 시스템 변수를 그래픽 창에서 보기나중에 로깅하는 방법이 있을까?시스템 변수가 포함된 blf를 mat..
-
Tlog100x 사용법analysis 2024.12.27 11:11
시작하기 전에차에서 데이터를 측정하는 일은 번거롭다. 로거는 번거로움을 덜어준다. 한 번 설정해서 차 안에 설치를 해두면 시동을 걸고 주행하는 동안 데이터가 로깅된다. 개요Tlogger 구성설정사용데이터 다운로드 Tlogger 구성Tlog1002 (2 채널), Tlog1004 (4 채널)는 아래 그림처럼 생겼다. [노트] Tlogger에는 (다른 토선 하드웨어에 있는 온/오프 할 수 있는) 120오옴 저항이 없다. 저항이 필요한 경우, (아래 그림과 같은) 종단 저항을 추가하여 연결해야 한다. 설정Tlogger에는 두 가지 모드가 있다. 분석 모드와 로깅 모드이다.분석 모드는 일반 하드웨어와 같은 방식으로 PC에 연결하여 실시간으로 데이터를 모니터링할 때 사용한다. 이때 자동 로깅..
-
async 유무의 차이 - app.set_system_var_double_async() 에서tip 2024.12.26 11:19
CAN 신호들로 실시간 연산하기 - 미니프로그램으로 yaw_rate_ws 계산 :: hsl's tsmaster 사용기에서 CAN의 WHL_SPD_RL과 WHL_SPD_RR을 이용하여 요-레이트를 구하고 이를 로컬 변수인 yaw_rate_ws에 할당하였다. 그리고 yaw_rate_ws를 사용자 정의 시스템 변수인 calc.yaw_rate_ws에 할당한 후, calc.yaw_rate_ws를 그래픽 창에 곡선으로 출력하였다. yaw_rate_ws를 calc.yaw_rate_ws에 할당할 때 app.set_system_var_double('calc.yaw_rate_ws', yaw_rate_ws) 함수를 사용하였다. 이 함수와 유사한 이름의 app.set_system_var_double_async('calc..
-
LIN 핀 번호 - 벡터와 토선이 다르다.tip 2024.12.26 09:55
벡터 장치를 사용하다가 토선 장치를 사용하는 경우 커넥터 핀 번호에 주의해야 한다. CAN은 핀 2가 CAN Low, 핀 7이 CAN High인 것이 사실상 표준이다. LIN은 표준적(?)으로 사용되는 핀 번호에 없는 것 같다. CAN과 LIN을 지원하는 벡터 장치의 핀 번호는 아래 그림과 같다. (전체가 아니라 일부인 것 같다. 이런 장치는 벡터의 CAN/LIN Y-케이블 사용을 권고한다.) LIN 핀의 번호는 7번이다. 출처: https://support.vector.com/kb?id=kb_article_view&sysparm_article=KB0011609 토선 TC1012P 장치의 LIN 핀 번호는 8번이다. 벡터 장치와 토선 장치의 LIN 핀 번호가 다르다. CAN High (핀 7), CA..
-
CAN 커넥터와 Y-케이블tip 2024.12.14 10:33
나는 아래 그림의 D-sub 커넥터가 ISO 11898 에서 정한 표준 규격으로 알고 있었다. 사진 출처: CAN bus - Wikipedia 방금 위 사진 출처의 위키피디아를 통해서 위 커넥터가 표준이 아니라 "준표준"이라는 것을 알았다. 어쨌든 CAN 통신을 위한 전선을 마련할 때 D-sub 커넥터를 사용하는 것은 기본이라고 할 수 있다. 핀 배열은 아래와 같다. pin 2: CAN-Low (CAN−) (와이어 색: green)pin 3: GND (ground)pin 7: CAN-High (CAN+) (와이어 색: yellow)pin 9: CAN V+ (power) 토선 제품들 중에 CAN 채널이 복수개인 경우 D-sub 커넥터 1개에 채널이 2개 있다. 핀 배열은 아래와 같다. 두 채널을 동시에..
-
YouTube: 데이터 후처리 (post-processing data)tip 2024.12.12 20:17
오프라인 재생하면서 데이터 후처리하기 YouTube: Monitoring playback signal and post-processing features 설명 내용Bus Plabyback 창에서 오프라인 재생을 이용하여 데이터를 후처리하는 방법을 소개한다. 아래의 데이터 처리가 가능하다.재생 중인 신호의 (최대값, 최소값) 같은 통계치를 구할 수 있다.재생 중인 신호들을 이용하여 연산을 하고, 연산 결과를 시스템 변수에 할당하고, 시스템 변수를 그래픽 창에 표시할 수 있다.재생 중인 신호들 중에서 특정 메시지 아이디만 별도의 blf 파일로 분리할 수 있다. 내가 배운것토선에서 자주 하는 데이터 후처리를 위한 C 미니프로그램을 미리 만들어 두었다. 그 미니프로그램들을 불러와서 쉽게 사용할 수 있도록 Bus..
-
그래픽 프로그램(graphic program)으로 yaw_rate_ws 계산하기design 2024.12.11 17:52
시작하기 전에전에 파이썬 미니프로그램으로 뒷바퀴 속도들로 부터 요-레이트(yaw_rate_ws)를 구하는 방법을 설명했었다. TSMaster는 파이썬 미니프로그램, C 미니프로그램, 그래픽 프로그램을 지원한다. 내가 C를 잘 다루지 못하기도 하지만, C 미니프로그램은 파이썬 미니프로그램과 사용법이 거의 비슷하여 별도의 설명이 필요하지 않을 것으로 생각한다. 그래픽 프로그램은 나도 처음 접한다. 직접 사용해 보면서 사용법을 정리한다. 파이썬 미니프로그램과 비교하기 편리하도록 yaw_rate_ws 계산하는 프로그램을 작성한다. 개요그래픽 프로그램 작성법프로그램 설명그래픽 창에서 결과 확인하기 그래픽 프로그램 작성법그래픽 프로그램 기본 준비메인 메뉴/ Design/ Graphic Program 버튼을 클..
-
CAN 통신 실험을 위한 툴tip 2024.12.10 21:12
CAN 버스 모니터링, 측정, 분석나는 TSMaster를 사용한다. Tosun사의 유료 소프트웨어이다.아래 링크에서 다운로드 받을 수 있다.https://tosunai.kr/download/ CAN dbc 편집CAN dbc 편집 :: hsl's tsmaster 사용기 데이터 처리나는 Python을 사용한다. TSMaster의 메인 메뉴/ Help/ About/ Acknowledgements를 보면 TSMaster는 아래 파이썬 모듈들을 사용한다. [1] python https://www.python.org/[2] canmatrix https://github.com/ebroecker/canmatrix[3] cantools https://github.com/eerimoq/cantools[4] asammd..
-
Symbol Mapping: CAN 신호로 계산한 결과를 시스템 변수에 넣기simulation 2024.12.09 10:54
시작하기 전에TSMaster의 Simulation에 Symbol Mapping 이라는 기능이 있다. 이 기능을 이용하면 CAN(LIN/ FlexRay) 신호를/신호들을 이용하여 연산을 할 수 있고, 연산 결과를 시스템 변수에 넣을 수 있다는 것을 알았다.나는 앞에서 미니프로그램으로 CAN의 바퀴 속도 신호들에서 요-레이트(yaw_rate_ws)를 계산한 적이 있다. (CAN 신호들로 실시간 연산하기 - 미니프로그램으로 yaw_rate_ws 계산 :: hsl's tsmaster 사용기) CAN 신호들로 간단한 계산을 하여 시스템 변수에 넣는 방식이었다. 심볼 매핑의 작동 방식과 동일하다. 다시 말하면 미니프로그램이 아닌 심볼 매핑으로 yaw_rate_ws를 계산할 수 있다는 의미다. 심볼 매핑으로 yaw..
-
트레이스를 이용한 RBS(Remaining Bus Simulation)simulation 2024.12.06 12:22
시작하기 전에제어기를 대상으로 실험을 할 때, 제어기 작동에 필요한 신호들을 CAN으로 공급해야 한다. 이를 RBS (Remaining Bus Simulation, Rest Bus Simulation)라고 한다. 차에서 측정한 CAN 트레이스를 TSMaster 온라인 재생(replay) 기능으로 RBS를 할 수 있다.차에서 측정한 CAN 트레이스에는 시험 대상 제어기가 전송한 메시지들이 포함되어 있다. 이 메시지들을 제외하지 않으면 제어기가 전송하는 메시지와 트레이스에서 재생된 메시지가 동시에 버스에 전송되어 충돌이 발생하는 문제가 있다. 트레이스에서 메시지를 제외하여(필터하는) RBS하는 방법을 설명한다. 개요(내가 실험을 한 2024-09-05 현재) TSMaster의 온라인 재생 기능에는 "전송"..
-
Q&A: 옵션에 없는 CAN(-FD) baud rate 설정하는 방법hardware 2024.12.06 10:12
문의TC1001 관련 문의가 있습니다. 해당 제품 데이터시트에서 고지한 지원 baud rate와 달리 TSMaster에서는 125, 250, 500, 1,000kbps만 지원합니다. 100kbps 사용은 불가능 할까요? 해결 방법TSMaster 선택 옵션에 없는 baud rate는 미니프로그램에서 코드로 설정할 수 있습니다.메인 메뉴/ Design/ C Mini Program 버튼을 클릭하여 C Code Editor 창을 엽니다.Functions 탭을 클릭하고, 검색창에 baud를 검색어로 입력합니다. app.configure_can_baudrate()를 찾습니다. 함수를 선택하면 Api Documents 탭에서 상세 정보를 확인할 수 있습니다.baud rate 설정을 위한 미니프로그램을 작성합니다..