tip
-
미니프로그램 라이브러리 사용법tip 2025. 4. 7. 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 ..
-
두 TSMaster 간 CAN 통신tip 2025. 3. 20. 20:00
TSMaster의 TS Virtual Device를 이용하면 하드웨어 없이 송/수신 관련 기능을 연습할 수 있다.TSMaster가 실행된 상태에서 TSMaster를 한 번 더 실행하여 TSMaster를 두 개 실행할 수 있다.TSMaster를 실행한 상태에서 윈도의 TSMaster 아이콘에서 마우스 우클릭을 하면 아래 그림처럼 메뉴가 뜬다. TSMaster를 선택하면 두 번째 TSMaster를 실행할 수 있다. 두 TSMaster의 채널 설정을 동일하게 Virtual Device로 하고 동일한 채널 설정을 하면, 두 TSMaster 사이에 CAN으로 통신이 가능하다. 한쪽 TSMaster에서 CAN 메시지를 전송하면 다른 TSMaster에서 수신한다.
-
Python을 PATH에 추가하기tip 2025. 2. 7. 12:34
커맨드 창에서 python을 실행했는데 "알려지지 않은 명령"이라는 에러 메시지가 뜨는 경우, python 디렉토리가 PATH에 없어서 그렇다. 아래 방법으로 PATH를 변경한다.윈도 검색창에 "path"를 입력한다. 검색 결과 중 "시스템 환경 변수 편집"을 선택한다. 시스템 속성창이 열린다. 시스템 속성창이 열리면 "환경 변수(N)..." 버튼을 클릭한다. 환경 변수창이 열린다. 환경 변수 창에서 Path 항목을 더블클릭하여 환경 변수 편집창을 연다.현재 사용자의 환경 변수만 수정할 경우 사용자 변수를, 전체 사용자들의 환경 변수를 수정할 경우 시스템 변수를 선택한다. 환경 변수 편집 창에서 "새로 만들기" 버튼을 클릭한다. 새로 추가된 줄에 Python이 설치된 경로를 입력한다. 기존에 사용하던 P..
-
blf 파일에서 m_id, dlc, d_ts 추출하기tip 2025. 1. 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 모듈..
-
미니프로그램에서 CAN 신호와 시스템 변수 다루기tip 2025. 1. 10. 01:47
시작하기 전에 미니프로그램을 작성하다보면 CAN 신호와 시스템 변수를 다루게 된다. 아래의 경우들이 있다. 미니프로그램에서 CAN 신호를 읽어서 연산에 사용한다.미니프로그램에서 연산한 결과를 CAN 메시지의 신호로 전송한다.신호를 TSMaster의 그래픽, 트레이스, 판넬 창 등에서 사용할 수 있다.메시지는 blf 파일에 저장할 수 있다. (blf 파일을 csv, mat, csv 등으로 변환하여 다른 프로그램에서 읽을 수 있다.)미니프로그램에서 시스템 변수를 읽어서 연산에 사용한다.미니프로그램에서 연산한 결과를 시스템 변수에 저장한다.시스템 변수를 TSMaster의 그래픽, 트레이스, 판넬 창 등에서 사용할 수 있다.시스템 변수를 blf 파일에 저장할 수 있다. (2025-01-10 현재, 시스템 변수..
-
Python 미니프로그램: 코드에서 CAN 메시지의 신호를 읽는 방법tip 2025. 1. 7. 19:49
코딩을 하다보면 메시지의 신호에서 값을 읽어올 경우가 있다. 그 방법을 설명한다. 신호를 포함하는 메시지를 읽을 수 있도록 준비먼저 읽을 신호를 포함하고 있는 메시지를 코드에서 사용할 수 있도록 준비해야 한다. Python Code Editor의 Properties 탭을 클릭한다. 왼쪽 아래쪽에 Database Symbols 영역이 있다. 읽을 메시지가 포함된 dbc 파일을 체크한다. (TSMaster에서 dbc를 읽으면 pdbc로 변환된다.)Symbols 탭을 클릭한다.Global Definition을 선택한다. 여기에 메시지를 읽는데 필요한 코드가 삽입되어야 한다. 코드 어디에서나 사용되어야 해서 Global Definition에서 정의한다.Functions 탭을 클릭한다.읽을 메시지에서 우클릭한다..
-
IDS 오감지/ 민감 감지에 관한 고찰tip 2025. 1. 4. 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. 1. 4. 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_..
-
asc 파일을 pandas 데이터프레임으로 변환하기tip 2025. 1. 4. 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. 1. 4. 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('..