ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 시스템 변수를 로깅하는 방법
    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이 이미 구현되어 있나보다.