-
시스템 변수를 로깅하는 방법analysis 2024. 12. 30. 14:14
시작하기 전에
앞에서 미니프로그램으로 바퀴 속도에서 요-레이트를 계산하여 시스템 변수 yaw_rate_ws에 할당하는 방법을 소개했었다. 아래의 문의를 받았다.
- 시스템 변수 yaw_rate_ws를 blf 파일에 로깅할 수 있는가?
- 어떻게 하는가?
- 로깅한 blf를 재생하면 시스템 변수가 재생되는가?
답부터 말하자면,
- 시스템 변수를 blf에 로깅할 수 있다.
- 어떻게 하는가를 아래에서 설명하겠다.
- 로깅한 blf를 재생하면 시스템 변수가 재생된다.
추가로 blf를 mat으로 변환할 때, 시스템 변수를 추가하여 변환할 수도 있다.
개요
- 시스템 변수를 blf 파일에 로깅하는 방법
- 시스템 변수가 포함된 blf를 오프라인 재생하여 시스템 변수를 그래픽 창에서 보기
- 나중에 로깅하는 방법이 있을까?
- 시스템 변수가 포함된 blf를 mat 파일로 변환하기
시스템 변수를 blf 파일로 로깅하는 방법
- 메인 메뉴/ Simulation/ System Variables 버튼을 클릭하여 System Variable Management 창을 연다.
- System Variable Management 창에서 로깅하려는 변수를 선택한다.
- 마우스 우클릭하고 Enable Logging을 선택한다. 변수 이름 앞에 로깅을 표시하는 심볼이 추가된다.
- 로깅을 시작하면 버스 데이터와 함께 시스템 변수도 로깅된다.
시스템 변수를 저장하려면, 변수를 선택하고 마우스 우클릭한 후 Enable Logging 하면 된다. 변수 이름 앞에 로깅을 표시하는 심볼이 추가된다. 시스템 변수가 포함된 blf를 오프라인 재생하여 시스템 변수를 그래픽 창에서 보기
- 그래픽 창에서 시스템 변수를 추가한다.
- 메인 메뉴/ Analysis/ Bus Replay를 클릭하여 Bus Playback 창을 연다.
- Bus Playback 창의 Offline Replay 탭을 선택한다.
- + 메뉴를 선택하여 재생할 blf 파일을 추가한다.
- blf 파일을 선택하고 Start Playback 버튼을 클릭한다.
- 그래픽 창에 시스템 변수의 커브가 표시된다.
나중에 로깅하는 방법이 있을까?
- 시스템 변수를 포함하지 않은 blf 파일이 있고 시스템 변수를 계산하는 미니프로그램이 있을 때 시스템 변수를 포함하는 blf를 생성할 수 있을까? 나는 미니프로그램을 작동한 상태에서 blf를 재생하면서 로깅을 하는 방식으로 시스템 변수가 포함된 blf를 생성할 수 있었다. 아래의 주의 할 점들이 있다.
- 로깅을 하려면 온-라인 상태여야 한다. (오프-라인 재생으로는 할 수 없다.) 그래서 원본 blf를 측정한 시간만큼 새 blf를 만드는데 시간이 소요된다.
- 온-라인 재생을 하기 때문에 미니프로그램을 조금 손봐야 할 수 있다. 만일 시스템 변수를 계산하는 함수가 On CAN Rx 이벤트에 연결되어 있다면, 같은 연산을 On CAN Tx 이벤트에 연결해야 한다. 온-라인 재생을 하면 blf의 Rx가 Tx로 바뀌기 때문이다.
- 아래의 예에서 나는
- On CAN Rx에서 수행하던 계산을 커멘트 처리하고,
- Global Definition에 calculate_v_ref(ACAN) 이라는 함수를 선언하여 커멘트 처리한 계산을 동일하게 실행하도록 하였고,
- On CAN Tx에 calculate_v_ref() 함수를 연결하였고,
- On CAN Rx에 calculate_v_ref() 함수를 연결하였다. (이 미니프로그램을 온-라인 재생과 오프-라인 재생 모두에 사용하기 위해서다.)
On CAN Rx에서 하던 계산을 커멘트 처리하였다. Global Definition에 커멘트 처리한 계산을 하는 함수 calculate_v_ref()를 선언하였다. On CAN Tx에 calculate_v_ref() 함수를 연결하였다. On CAN Rx에도 calculate_v_ref() 함수를 연결하였다. 이 미니프로그램을 온-라인 재생 때와 오프-라인 재생 때 모두 사용하기 위해서다. 시스템 변수가 포함된 blf를 mat 파일로 변환하기
- 데이터 처리는 대부분 blf 파일을 이용하여 오프-라인 상태에서 별도로 한다. 참조: CAN 데이터로 제동 성능 평가하기 :: hsl's tsmaster 사용기
- 오프-라인 데이터 처리를 위해 blf를 mat 파일로 변환할 때, 시스템 변수 포함한 mat 파일을 만들 수 있다.
- 메인 메뉴/ Analysys/ Log Conveter 버튼을 클릭하여 TS Log Converter 창을 연다.
- Source File에서 변환할 blf 파일을 선택한다.
- Destination File에서 mat 아이콘을 선택한다. 저장할 파일 이름이 자동으로 입력된다.
- Convert 버튼을 클릭한다.
blf 파일을 mat 파일로 변환하기 위해 TS Log Conveter 창을 연다. - Filter for Mat File Conversion 창이 열린다.
- Configure CAN Signals ... 버튼을 클릭하여 mat 파일에 포함할 CAN 시그널들을 선택한다.
- Configure System Variables ... 버튼을 클릭하여 mat 파일에 포함할 시스템 변수들을 선택한다.
- 선택된 변수들이 텍스트 창에 표시된다.
- OK 버튼을 클릭하여 변환을 한다.
결론
- 나는 맨 처음에 dbc에 새 CAN 메시지와 신호를 정의하고, 시스템 변수를 계산할 때마다 시스템 변수를 CAN 메시지로 전송하며, 버스를 로깅하는 방법을 생각했었다.
- 아마도 시스템 변수를 로깅하고 싶은 TSMaster 사용자들이 많이 있었나보다. 그래서 위에 설명한 것처럼 간단한 방법으로 시스템 변수를 로깅하고 재생할 수 있는 기능이 TSMaster이 이미 구현되어 있나보다.
'analysis' 카테고리의 다른 글
PC간 데이터 전송 - 소켓 통신 (0) 2024.12.31 Tlog100x 사용법 (0) 2024.12.27 판넬로 출력하는 방법 - 관계도 (0) 2024.10.25 제동 성능 지표 계산하기 (4) 2024.10.25 mat 파일을 데이터프레임으로 변환하고 feather 파일로 저장하기 (2) 2024.10.25