ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CAN 트레이스 보기 - 바퀴 속도
    analysis 2024. 10. 25. 02:21

    시작하기 전에

    TSMaster 사용법으로 블로그 시리즈를 작성하려고 한다. 그러려면 TSMaster를 소개해야 한다. TSMaster를 소개하기 전에 차량 CAN 통신을 설명해야 한다. 차량 CAN 통신을 설명하기 전에 차량 제어 시스템들을 설명해야 한다. 이렇게 생각하니 이야기를 어디서 어떻게 시작해야 할지 망막하다. 그래서 우선 TSMaster로 할 수 있는 것을 먼저 선보이기로 한다. 마치 수영을 배우려는 사람에게 수영 동작을 하나하나 구분하여 설명하기 전에 수영하는 모습을 보여주면, 배우려는 사람은 전체에 대해 어느 정도 개념을 잡은 상태로 각 부분의 상세를 더 쉽고 빠르게 이해할 수 있는 것처럼 되기를 바란다.

     

    개요

    • 차에는 여러 제어 시스템들이 있다. 엔진 제어, 제동 제어 등. 이런 제어 시스템들은 통신을 통하여 협조 제어 (coordinated control)라는 것을 한다. 차량 시스템들이 통신하는 방식들 중에 하나가 CAN이다. CAN은 Controller Area Network의 약자다.
    • 차량 통신 개발을 위해 (당연히) 통신 내용을 측정하고 분석해야 한다. TSMaster는 측정 및 분석을 포함하여 통신 개발에 필요한 기능들을 모아둔 차량 통신 개발을 위한 PC용 프로그램이다.
    • PC는 물리적인 차이로  CAN 네트워크에 직접 접속할 수 없다. CAN을 USB (혹은 PCIe, Ethernet 등 PC가 지원하는 인터페이스)로 변환해주는 변환기가 필요하다. 

    차량 CAN 통신을 개발하기 위해서는 통신 데이터를 측정, 분석할 수 있는 차량 통신 개발 프로그램이 필요하다. PC는 물리적인 차이로 차량 CAN 네트워크에 직접 접속할 수 없다. PC의 대표적인 입출력 포트인 USB와 CAN을 연결하는 변환기가 필요하다. 차량 통신에는 CAN외에 LIN, FlexRay, Ethenet 등이 있다.

    • 이 블로그는 실습을 가정한다. 이 실습에서는 미리 측정한 CAN 통신 데이터(트레이스 파일)에서 바퀴 속도 신호들을 찾아서 그래프로 표시해 본다. 
    • 이 과정을 통해서 CAN의 기본 특징들을 배운다. 

    실습을 완료하면 TSMaster 그래픽스 창에 WHL_SPD_?? 신호들을 위 그림처럼 그래프로 표시하여 볼 수 있다.

     

    CAN 트레이스 파일

    • 실습에 사용할 CAN 트레이스 파일: 20240725_venue2024_07_26_09_17_29.blf

    20240725_venue2024_07_26_09_17_29.blf
    9.14MB

    • 첨부 트레이스는 내가 내 차(현대자동차 베뉴)에서 직접 측정한 트레이스이다.
    • TSMaster가 디폴트로 트레이스 파일을 저장하는 경로가 있지만 당장은 이를 무시하고, 각자가 원하는 곳에 저장한다.
    • blf는 Vector사 고유의 파일 포맷(바이너리 파일. (아마) “Binary” Logging File)이다. 자동차 산업 내 사실상 표준이다.
    • TSMaster로 blf를 읽어서 재생할 수 있다. 
    • TSMaster로 CAN 데이터를 측정하여 blf 파일로 저장할 수도 있다.

     

    CAN 트레이스 재생

    • TSMaster를 다운로드 받아, 설치를 완료하고, 실행하여, 아래 그림처럼 메인 메뉴가 있는 TSMaster 실행 창까지 도달했다고 가정한다.

    TSMaster 실행 창

    • 메인 메뉴의 Analysis/ Bus Replay를 클릭하여 Bus Playback 창을 연다.
    • Bus Playback 창에서 Select Playback File 버튼을 클릭하면 blf 선택 창이 열린다.

    메인 메뉴/ Aanalysis/ Bus Replay 버튼을 클릭하여 Bus Playback 창을 연다. Bus Playback 창에서 Select Playback File 버튼을 클릭한다.

    • blf를 선택하여 Bus Playback 창에 등록한다.
    • Bus Playback 창에 등록된 blf 들 중 하나를 blf를 선택하고, Start Playback 버튼을 클릭하여 blf를 재생한다.

    Bus Playback 창에 blf를 등록하고 Start Playback 버튼을 클릭하여 재생한다.

    • 재생은 온라인 혹은 오프라인으로 할 수 있다.
      • 온라인 재생은 변환기를 통해서 CAN 메시지들이 전송된다.
      • 오프라인 재생은 변환기를 통해 CAN 메시지들이 전송되지 않는다.
      • 오프라인 재생은 재생 속도 변경이 가능하다.

     

    트레이스 창

    • Trace(트레이스) 창이 열리며, blf의 데이터가 표시된다. 

    트레이스 창은 메인 메뉴/ Analysis/ Trace 버튼을 클릭하여 열 수 있다.

    • 트레이스 창을 보면 왼쪽부터 타임스탬프, 메시지 ID, 데이터 길이, 데이터 컬럼들을 볼 수 있다. 이를 통하여 다음을 알 수 있다. CAN 통신은 메시지들로 구성된다. 메시지는 ID와 데이터를 갖고 있다. 데이터는 길이가 정해져 있다. 데이터는 숫자의 나열/묶음이다. 
    • CAN의 특징을 간략하게 살펴보자. 

     

    CAN의 특징

    메시지

    • CAN은 메시지(message) 단위로 통신한다. 
    • 각 메시지는 고유의 id를 갖는다.
      • 메시지 id라고 한다. 일반적으로 0x386 처럼 16진수로 표시한다. 
      • 메시지 id를 기억하고 지칭하는 것은 불편하다. 메시지마다 기억하기 쉬운 이름을 지어 부르는 경우가 많다. (메시지 이름)
        • 예, 0x386 메시지 대신 WHL_SPD11 메시지라고 부른다.
      • 메시지 id가 낮으면 우선 순위가 높다. (나중에 원리를 설명한다.) 
    • 메시지의 내용(data)은 0개 이상의 신호(signal)들이다.
      • 예, WHL_SPD11 메시지에는 WHL_SPD_FL(Wheel Speed Front Left), WHL_SPD_FR, WHL_SPD_RL, WHL_SPD_RR라는 신호들이 있을 수 있다.
    • 메시지 길이(data length)는 0~8 바이트까지 1 바이트 단위로 정할 수 있습니다. 
      • 예, WHL_SPD11 메시지의 길이를 8 바이트라고 하자.
      • CAN-FD는 메시지 길이를 최대 64 바이트까지 할 수 있습니다. 단, CAN-FD의 경우 메시지 길이를 1 바이트 단위로 정할 수는 없다. (나중에 별도로 설명한다.)

    CAN 데이터베이스

    • 각 메시지 내 각 신호에 대해서 데이터 길이, 메시지 내에서 데이터 위치, 데이터 값을 (속도 같은) 물리량 신호로 변환하는 방법을 미리 정의하고 공유해야 제어기들 사이의 통신이 가능하다.
      • 예, WHL_SPD11 메지시 안에 WHL_SPD_FL은 14 비트 길이의 신호로, 메시지 내 데이터 영역의 0 ~ 13번 비트까지 부분을 차지하고, 속도 범위로 0~512 kph까지 표시하도록 정의할 수 있다. 그러면 데이터의 십진수 값 1은 물리량 속도 0.03125 kph에 해당한다. 이 외에도 데이터를 물리량으로 변환하는데 필요한 변환법을 정의한다. 
        • 14 bit는 십진수로 0부터 16,383 사이의 정수를 표시할 수 있다. 총 16,384개다. 
        • 0 kph부터 512 kph를 16,384개의 등간격으로 표시하면, 간격 하나의 크기는 0.03125kph가 된다.
        • 이 경우, 십진수 데이터 x를 속도라는 물리량 y로 변환할 때, 변환식은 아래와 같이 된다.
    factor = 0.03125
    offset = 0.0
    
    y = factor * x + offset

      

      • 각 메시지의 각 신호에 해당하는 데이터를 물리량으로 변환하는 방법을 모아둔 표 구조를 CAN 데이터베이스 혹은 CAN 매트릭스(matrix) 라고 한다.


      • WHL_SPD_FR, WHL_SPD_RL, WHL_SPD_RR 등도 WHL_SPD_FL와 유사한 방법으로 정의한다면... 메시지 안에 데이터 영역에 각 신호들이 차지하는 위치와 부분은 아래 그림과 같이 표시할 수 있다. 이를 메시지 레이아웃이라고 한다.

      • CAN 데이터베이스에는 각 신호의 십진수 값을 물리량으로 변환하는데 필요한 신호 정의가 되어있다.


     

     

    버스(bus)

    • 제어기들은 한 쌍의 전선들로 연결된다. 모든 제어기들이 공동으로 사용하는 통신선이라는 의미에서 버스(bus)라고 한다.
      • 각각의 전선을 CANH/CAN hi(gh), CANL/ CAN lo(w)라고 칭한다.
      • 전자기 간섭 방지를 위하여 CANH, CANL 전선은 꼬아져 있다. (twisted-pair cable)
      • 버스 선의 끝에는 CANH와 CANL를 연결하는 120 Ohm의 종단 저항이 있다. (버스 별로 1쌍이 존재한다.)

    CAN 버스. 출처: https://www.digikey.fr/fr/blog/how-to-simplify-the-test-of-can-bus-networks

    • 특정 순간 버스에는 한 제어기의 한 메시지만 전송되며 버스에 연결된 모든 제어기들은 그 메시지를 수신할 수 있다. (broadcast 방식

    참고

     

    트레이스 창에서

    • 트레이스 창을 다시 보자. 

    트레이스 창

    • 아래 항목들을 알 수 있다.
      • CAN 버스에 어떤 id의 메시지들이 있는가? 
      • 각 id의 메시지의 길이가 몇 바이트인가?
      • 각 id의 메시지는 얼마나 자주 전송되는가? 
    • 아래 항목들은 알 수 없다.
      • 메시지 안에 어떤 신호들이 포함되어 있는가?
      •  신호의 물리량은 얼마인가? 우리가 알고 싶은 것은 각 신호의 물리량이다.

     

    각 신호의 물리량을 보려면?

    • 각 신호를 변환하는 방법들을 정의한 CAN 데이터베이스 파일을 읽고, 변환법에 따라 CAN 메시지의 데이터에서 신호들을 추출하고, 변환하여, 트레이스 창에 신호들을 표시할 수 있어야 한다.  
    • CAN 데이터베이스는 일반적으로 dbc 형식의 파일로 저장된다. dbc는 Vector사 고유의 파일 포맷이다. 자동차 산업 내 사실상 표준이다.
    • TSMaster는 dbc 파일을 불러올 수 있다.

     

    dbc 불러오기

    • 메인 메뉴/ Analysis/ Show CAN Database 버튼을 클릭한다.

    • CAN Database 창이 열린다.

    • CAN 채널을 선택한다. 데이터베이스 추가 버튼을 클릭한다.

    • dbc 파일을 선택한다.

    • dbc의 내용이 CAN Database 창에 표시된다.

    • TSMaster는 dbc를 읽어서 고유의 파일 형식(pdbc)으로 변경하여 "프로젝트 디렉토리/DB/CAN" 디렉토리에 저장한다.
      • TSMaster에서 dbc 편집기를 시동하여 편집하면, pdbc가 자동으로 업데이트된다. (90% 이상의 유즈 케이스)
      • TSMaster와 상관없이 dbc 편집기를 시동하여 편집하면, CAN Database에서 dbc를 수동을 삭제하고 추가하여야 pdbc가 업데이트된다.
      • TSMaster에는 자체 dbc 편집기가 없다. 내가 사용하는 툴은  CAN 통신 실험을 위한 툴 :: hsl's tsmaster 사용기  에 정리했다.

    dbc를 변환한 pdbc 파일이 저장되는 경로. 프로젝트 디렉토리/DB/CAN 디렉토리에 저장된다.

    • dbc 파일을 TSMaster 화면에 드래그앤드롭해도 된다. 

     

    dbc 파일

    • 나는 현대자동차 제네시스(BH) 프로젝트에 참여했었다. 당시에 WHL_SPD 등 몇몇 메시지들을 정의하는데 관여했다. 당시 정의를 dbc로 만들어 베뉴에 적용해 보니 잘 작동한다. 행운이다. 
    • 첨부 txt 파일을 다운로드하여, 파일 확장자를 dbc로 변경하여 사용하십시오.

    venue_esc.txt
    0.01MB

     

    dbc를 불러온 후 트레이스를 보면

    • dbc에 신호가 정의가 있는 경우, 메시지 내 신호의 물리량을 볼 수 있다.
    • WHL_SPD_FL의 경우, 14 비트 신호이다. 14 비트는 0xF3 0x44 2 바이트로 표시된다.
    • 바이트 오더가 Intel로 선택되어 있다. 0x04F3 해석된다. 
    • 0x04F3는 10진수로 1,267이다.
    • 10진수 데이터 값은 아래 방식으로 물리량으로 변환된다.
      • 물리량 = 데이터 값 x Factor + Offset
      • Factor는 0.03125, Offset은 0으로 정의되어 있다.
      • 물리량의 단위는 km/h로 정의되어 있다.
    • 0x04F3에 해당하는 바퀴 속도는 39.59375km/h 이다.
    • 같은 방식으로 WHL_SPD_FR, WHL_SPD_RL, WHL_SPD_RR도 변환한다.

    CAN dbc의 정의에 따라 WHL_SPD_FL을 물리량 바퀴 속도로 변환하는 과정

     

    트레이스를 그래픽으로 보기

    • 메인 메뉴/ Analysis/ Graphics/ Add Graphics 메뉴로 새 그래픽 창을 연다.
    • 그래픽 창에서 + 버튼을 클릭하여 Add CAN Signal을 선택한다.

    그래픽스 창을 추가하고, 그래픽스 창에 CAN 신호를 추가하는 방법

    • 데이터베이스에서 시그널들을 선택한다.

    그래픽 창에 표시하고 싶은 신호들을 CAN Database 창에서 선택한다.

    • Playback 창에서 Start Playback 버튼을 클릭하면, 트레이스 창에 메시지들을 표시되고, 그래픽스 창에 신호들이 표시된다.

    Playback으로 트레이스 창에 메시지들을 그래픽스 창에 신호들을 표시한다.

    • 트레이스 창에서 신호를 드래그하여 그래픽 창에 드롭하는 방식으로 신호를 그래픽 창에 추가할 수도 있다.

     

    트레이스 분석

    그래프 정리

    • 그래픽스 창에 신호들이 많으면 그래프가 복잡하다. 구역을 나눠서(split) 신호들을 그룹 별로 모아 보기 쉽게 정리할 수 있다.

    그래픽스 창의 신호 선택 영역에서 마우스 우클릭하여 Increment Split을 선택하면, 그래프가 표시되는 부분을 구역을 구분할 수 있다. (아래 그림 참조)
    신호들을 정리하여 표시하는 방법
    예) 앞 바퀴 속도들과 뒷 바퀴 속도들을 분리하여 표시

    그래프 표시 

    • 스케일 체크 박스로 y축 스케일 표시를 on/off 할 수 있다.
    • 신호 체크 박스로 그래프 표시를 on/off 할 수 있습니다.

    그래프 표시를 on/off 하는 방법. 그래프 축 표시를 on/off 하는 방법

    • 신호를 더블 클릭하여, 신호 설정 창을 열고, 설정을 변경할 수 있다.

    그래프 설정을 변경하는 방법

     

    그래프 분석

    • 필요에 따라 커서를 2개까지 사용할 수 있다.

    2개의 커서를 사용하는 방법

    • y 값의 변동 (dY)를 보고 싶은 경우, 그래픽스 창의 View 메뉴를 선택하고 Toggle dY Display를 이용하여 dY를 표시를 on(/off) 할 수 있다.

    dY를 보는 방법

     

    결론

    • TSMaster로 측정한 차량 CAN 데이터 파일을 트레이스 창과 그래픽스 창에서 분석하는 방법을 실습하였다. ( TSMaster에 익숙해지면 수 분 이내에 할 수 있는 작업이다.)
    • 이 과정에서 아래 항목들을 설명하였다.
      •  CAN 메시지, 신호, 데이터베이스
      • 메시지 기반, broadcast 방식의 CAN 메시지 전송 방법
      • CANH, CANL로 구성된 버스, twisted-pair cable, 종단 저항이라는 CAN 물리 계층의 특성