ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CAN 트레이스 받기 - 하드웨어 설정
    analysis 2024. 10. 25. 02:27

    시작하기 전에

    이전 블로그(CAN 트레이스 보기 - 바퀴 속도 )에서는 이미 누군가가 만든  CAN 트레이스 파일을 읽고, 그 안에 포함되어 있는 바퀴 속도 신호를 TSMaster에서 그래프로 보는 방법을 설명하였다. 이 과정에서 CAN 데이터베이스, 버스, TSMaster의 트레이스 창과 그래픽 창에 관하여 설명하였다.

    이번 블로그에서는 TSMaster와 CAN-to-USB 변환기로 차량 CAN 네트워크에서 데이터를 받아 트레이스 파일로 저장하는 방법을 설명한다. 

     

    개요

    • TSMaster는 다양한 CAN-to-USB 변환기들을 지원한다. CAN-to-PCIe 변환기들도 있다. 문맥에 따라 CAN 변환기, CAN-to-USB 변환기, CAN-to-PCIe 변환기, 하드웨어라고 하겠다.
    • TSMaster에서 하드웨어 설정을 해주어야 제대로 측정을 할 수 있다. 측정은 TSMaster 관점에서는 메시지 수신이다. 나중에 TSMaster에서 버스로 메시지를 전송하는 방법도 설명할 계획이다. 하드웨어 설정을 올바르게 해야 메시지 수신과 전송이 원활하게 작동한다.
    • 하드웨어는 CAN만 지원하는 것과 CAN과 CAN-FD를 지원하는 것이 있다. 이를 설명하기 위해 필요한 만큼만 CAN과 CAN-FD를 비교한다.
    • 하드웨어 설정은 CAN 메시지 구조와 관련이 있다. 설정에 필요한 만큼만 CAN 메시지의 구조를 설명한다.

     

    하드웨어 연결

    • 설정할 하드웨어를 PC에 연결한다. (아래는 USB 포트에 하드웨어를 연결한 사진이다.)
    • TSMaster에서 하드웨어 설정(Hardware Configuration)을 할 때, 연결된 하드웨어에 해당하는 옵션들이 표시된다.

    CAN-to-USB 하드웨어를 PC의 USB 포트에 연결한 모습

     

    채널 선택 (Channel Selection)

    • TSMaster 메인 메뉴/ Hardware/ Channel Selection를 클릭하여 Channel Selection 창을 연다.

    • 대부분 동일한 (종류의) 하드웨어를 장기간 반복해서 사용한다. 하드웨어 설정은 저장된다. 동일한 (종류의) 하드웨어를 사용하는 동안 하드웨어 설정을 변경할 필요가 없다. 
    • 사용할 채널 수를 선택한다.

    하드웨어/ 채널 수 선택

    • 아래 가상의 차량 CAN 네트워크에서 CGW의 채널은 4개이다. ADAS의 채널은 3개이다. 제동의 채널은 1개이다.
    • 채널을 선택하고 설정한다. 
      • Application Channel은 내가 정하는 CAN 채널 번호이다.
      • Applicaiton Channel을 번호로 기억하거나 소통하는 건 불편하다. 일반적으로 Alias Name을 정하여 소통한다.
        • 예, CAN 1 대신 파워트레인 CAN 혹은 PCAN.
      • Active로 채널을 on/off 할 수 있다.
      • Hardware Channel Selection의 드랍다운 메뉴를 클릭하면 (하드웨어가 연결되어 있다면 연결된) 하드웨어의 종류와 채널을 선택할 수 있는 옵션들이 표시된다. 이들 중에 선택한다. 
    • 하드웨어/ 채널 별 설정
    • 아래 그림에서
      • Application Channel CAN 1은 Powertrain 제어기들이 연결되어 있어서 Powertrain이라고 alias를 정했다. 
      • CAN 1과 CAN 2는 TC1016 하드웨어의 채널 1, 2로 각각 설정하였다.
      • TSMaster는 가상 하드웨어를 지원한다. 가상 하드웨어는 CAN 트레이스 파일을 읽어서 그래프로 보는 것 같은 데이터 분석을 할 때나, 데이터로 연산을 할 때처럼 실제 CAN 통신이 필요하지 않아 하드웨어가 필요하지 않을 경우에 선택하여 사용한다.
      • 채널 설정을 하지 않으면 None이 선택된다. 이 상태에서 OK 버튼을 누르면 설정이 완료되지 않았다는 메시지가 표시되고 설정창은 열린 채로 있다. 
    •  
    • 사용하지 않는 채널이 있다면 채널 수를 변경하고 (아래 그림처럼) 설정에서 None을 없애야 한다. 

     

    하드웨어 설정 (Hardware Configuration)

    • TSMaster 메인 메뉴/ Hardware/ Network Hardware를 클릭하여 Hardware Configuration (하드웨어 설정) 창을 연다.

    • 하드웨어 설정 창에서 설정할 CAN 채널을 선택한다. 화면 오른쪽에 설정 항목들이 표시된다.

    • 하드웨어 설정 항목들은 자동차사의 CAN 사양서에 규정되어 있다. 그대로 설정한다.

    CAN Controller Type

    • CAN, ISO CAN FD, Non-ISO CAN FD 중에서 선택한다. 

    • CAN을 선택한 경우, 설정 항목들

    • CAN-FD를 선택한 경우, 설정 항목들
      • Non-ISO CAN-FD를 선택한 경우에도 설정 항목들은 CAN-FD를 선택한 경우와 동일하다.
      • CAN에 비해서 Data Phase Baud-rate, Data Phase Bit Timing, Data Phase SJW 항목들이 추가로 있다. 즉, Data Phase의 Baud-rate, Bit Timing, SJW 설정이 추가된다.

    • 설정 항목들을 설명하기 위해 CAN과 CAN-FD를 비교한다.

     

    CAN vs. CAN-FD

    • CAN은 여러 장점을 갖고 있는 통신 방식이나 최대 데이터 길이가 8 바이트로 짧다는 단점이 있다. 이를 보완하기 위하여 CAN-FD가 발명되었다.
    • CAN 메시지는 물리적으로는 전선에 on/off가 반복되는 비트의 흐름이다. 이 비트 흐름의 속도(초당 비트 수)가 baud-rate이다. 보통 CAN 속도라고 한다. 차량 CAN 속도는 일반 승용차에서 대부분 500 kbps이다. CAN 표준의 최대 CAN 속도는 1 Mbps(1,000 kbps)이다. 버스에 연결된 모든 제어기들은 동일한 CAN 속도로 설정되어야 한다.
    • CAN과 CAN-FD의 비교를 위해 CAN 메시지 구조를 먼저 설명한다. CAN 메시지는 (프레임이라고도 부른다.) 아래 그림에 표시된 부분들로 구성되어있다. 

    CAN 메시지 구조

    • CAN 메시지는 메시지 id가 있는 헤더 부분, 데이터 부분 (그림의 노란색 표시 부분), 나머지 통신 조절(arbitration)을 위한 트레일러 부분으로 구분된다.
    • 제어기들은 수신한 메시지의 헤더에서 메시지 id를 확인하고, 수신 대상 메시지가 아니면 Bus Idle 신호까지 추가 데이터 처리없이 대기한다.
    • 통신 속도를 올려야 한다면 어떻게 할 수 있는가?
      1. 전체 제어기의 CAN 통신 속도 (baud-rate)를 올린다. 예, 500 kbps --> 1 Mbps. (CAN 속도 증가)
        • 전체 제어기가 모두 통신 속도를 높일 필요가 없는 경우, 불필요한 개발비와 재료비의 인상이 발생한다.
      2. 향상된 속도의 통신이 필요한 제어기들은 메시지의 데이터 전송 부분만 속도를 올린다. (CAN, CAN-FD 혼합)
        • 메시지의 헤더와 트레일러는, 예를 들어, 500 kbps로 통신하고, 데이터 부분만 2 Mbps로 통신을 한다면, 동일 시간에 4배 많은 데이터(500 kbps로 8 바이트를 송신했다면 2 Mbps로 32 바이트)를 통신할 수 있다.
          • 데이터 전송 속도를 유연하게 변경하기에 이 방식을 CAN-FD (Flexible Data-Rate)라고 한다.
          • CAN-FD는 CAN의 8 바이트 데이터 길이 제한을 넘어 데이터 길이를 64 바이트까지 늘릴 수 있다.
        • 메시지 헤더와 트레일러를 기존 속도(500kbps)로 통신하기 때문에 모든 제어기들이 전송 메시지의 id를 확인하고 통신 조절(arbitration)을 할 수 있다.
        • FD 통신을 하지 않은 제어기들은 메시지 id로 수신 대상 메시지가 아닌 것을 확인한 후, 메시지 전송이 완료된 후 Bus Idle 상태에 도달할 때까지 통신을 정지하여 FD 통신을 하는 다른 제어기들을 방해하지 않는다.
        • 네트워크에 CAN만 지원하는 제어기의 변경 없이 필요한 부분의 통신 속도 향상이 가능하다. 개발비와 재료비 인상을 최적화할 수 있다.
      3. 헤더와 트레일러를 포함하여 메시지 전체의 전송 속도를 높이고 데이터 길이도 CAN-FD가 지원하는 한계까지 늘린다. (전체가 CAN-FD. 요즘의 추세다.)

     

    하드웨어 설정 (계속)

    Arbitration Phase Baud-rate

    • CAN의 경우, 메시지 전송 속도이다.
    • CAN-FD의 경우, 헤더와 트레일러의 전송 속도이다.

    Data Phase Baud-rate

    • CAN의 경우, 메시지 전송 속도이다.
    • CAN-FD의 경우, 헤더와 트레일러의 전송 속도이다.

    Arbitration Phase Bit Timing

    • CAN 속도가 500kbps이면, 비트의 길이는 2us이다. 비트의 on/ off는 2us의 비트 지속 시간 중에 특정 순간에 전기적 상태를 샘플링하여 high/ low를 점검하여 결정한다. 
    • 비트 지속 시간 중 특정 순간에 샘플링을 하려면 비트를 더 잘게 쪼개야 한다. 얼마나 잘게 쪼갤 수 있는가는 하드웨어의 성능에 달려있다. 하드웨어가 비트를 쪼갰을 때, 쪼개진 한 조각을 1TQ (Time Quanta)라고 한다.  
    • 한 비트를 8TQ로 쪼갰고, 그 중 6번째 TQ에서 샘플링을 한다면, 6/8 = 75%, 샘플링 포인트는 75%라고 한다.

    • Arbitration Bit Timing 설정은 샘플링 포인트 설정이다.
    • 모든 제어기들의 샘플링 포인트를 동일하게 설정하지 않으면 통신 에러가 발생할 수 있다.
    • 제어기들은 TQ 단위의 시간 조절(arbitration)로 메시지 시간을 동기화한다. 
    • 참조

    Data Phase Bit Timing

    • 데이터 부분의 bit timing이다.

    Arbitration Phase SJW

    • Synchronization Jump Width. 메시지 시간 동기화의 폭.
    • 1TQ로 고정인 것 같다. 

    Data Phase SJW

    • Synchronization Jump Width. 메시지 시간 동기화의 폭.
    • 1TQ로 고정인 것 같다. 

    Controller Mode

    • ACK Off
      • CAN 메시지의 구조를 보면 ACK 비트가 있다. 
      • ACK는 메시지를 수신한 제어기가 수신을 했다고 알리는 신호이다. 전송하는 제어기가 만드는 신호가 아니다.
      • TSMaster로 CAN 버스의 신호를 조용히 모니터링만 한다면 Controller Mode를 ACK Off로 설정한다.
    • Normal
      • 한 제어기와 TSMaster를 직접 연결할 경우, TSMaster가 ACK 신호를 만들어야 제어기는 상대가 메시지를 수신한 것을 확인할 수 있다. 이 경우, Controller Mode를 Normal로 설정한다.

    Filter Type

    • 하드웨어로 메시지를 필터한다.
    • Allow All, Block All, Standard ID Filter, Extended ID Filter 옵션이 있다. 
    • 일반적으로 버스의 모든 메시지들을 측정하여 파일로 저장하고 (measure all), 데이터 분석 과정에서 필요한 메시지들만 선택하여 처리하기에 통상적으로 하드웨어 필더를 하지 않는다.

    Filter ID

    • 필터 할 메시지의 ID 패턴이다.

    Termination Resistor (종단 저항)

    • CAN 버스는 CANH와 CANL 전선의 양 끝단을 120 Ohm의 종단 저항이 연결해줘야 한다. 이를 종단 저항이라 한다. 종단 저항에 관해 이전 블로그에서 설명하였다.  TSMaster로 차량 CAN 트레이스에서 바퀴 속도 보기
    • 대부분의 토선 하드웨어에는 설정으로 on/off 할 수 있는 (스위처블) 종단 저항이 있다. 이 설정이다.
    • 종단 저항이 필요한데 스위처블 종단 저항이 없는 경우, 일반적으로 아래 그림의 종단 저항이 포함된 커넥터를 CAN 변환기 하드웨어와 CAN 통신 케이블 사이에 연결한다.

    Auto Recover From Busoff

    • CAN 통신의 고장 중에 버스 오프가 있다. 통신이 끊긴 것이다. 통신이 끊기는 원인들은 다양하다. CAN 버스를 리셋하여 통신을 복구할 수 있다. 복구 시도를 할 것인지를 설정한다.

     

    차와 연결

    OBD 단자

    • 차에 있는 제어기들은 온보드 진단(On-Board Diagnostics. OBD) 기능을 갖고 있다. 온보드 진단에 관하여 별도로 블로그를 작성할 것이다.
    • 제어기들은 온보드 진단에서 결함을 발견하면 DTC (Diagnostic Trouble Code. 결함 코드)를 저장한다. 그리고 경고등 점등으로 결함 검출 사실을 알린다. 정비사는 경고등만으로 어떤 결함인지 알 수 없다. DTC를 읽어야 한다. DTC를 읽기 위한 장치를 CAN 버스에 연결해야 한다. 차에는 진단 장치와 CAN 버스를 연결할 수 있는 커넥터가 마련되어 있다. 일반적으로 OBD 커넥터/단자라고 부른다.
    • (내 차인) 현대자동차 베뉴는 운전석에 앉았을 때 왼쪽 무릎 위치에 OBD 단자가 있다. 

    OBD 단자 (커버를 제거해야 볼 수 있다.)
    그림 출처: OBD - 나무위키 (namu.wiki)

    차량 CAN 네트워크 --> OBD 단자 --> CAN-to-USB 변환기 --> USB --> PC --> TSMaster

    • 차와 TSMaster를 연결한 모습은 아래 사진과 같다. 

     

    트레이스 파일 저장 설정

    • 메인 메뉴/ Analysis/ Bus Logger를 클릭하여 Bus Logging 창을 연다.

    • Data File Folder
      • 트레이스 파일 (blf 파일)이 저장될 경로이다.
      • TSMaster는 프로젝트 단위로 파일들을 관리한다. 기본 저장 위치는 "프로젝트 디렉토리\Logging\Bus"이다. 
      • 프로젝트 파일 구조를 설명하는 블로그를 별도로 작성할 것이다. 
    • Data File Name
      • 트레이스 파일 이름이다.
      • [ ]로 감싸진 것은 TSMaster의 시스템 변수이다.
      • 파일 이름에 시스템 변수를 추가하고 싶은 경우 (대부분 그렇다), 파일 이름 텍스트의 원하는 곳에 커서를 위치하고, Name Rule 드롭 다운 메뉴를 열어서 원하는 시스템 변수를 선택한다.
      • Name Rule로 선택할 수 있는 시스템 변수들
      • 고정된 텍스트는 그냥 입력하면 된다. 예, my_car_
      • Bus Logging 창 맨 윗줄 Log File: 부분에 새로 만들어질 파일의 이름이 표시된다.

     

    CAN 트레이스 받기

    • 메인 메뉴/ Analysis/ Start 버튼을 클릭하여 TSMaster --> 하드웨어 --> 버스를 연결한다. TSMaster 창의 타이틀 바에 있는 빠른 실행 버튼에서 연결 아이콘을 클릭해도 된다.

    CAN 트레이스를 받는데 사용하는 버튼들

    • 메인 메뉴/ Analysis/ Start Logging 버튼을 클릭하면 트레이스가 파일로 저장되기 시작한다. 파일 저장 경로와 이름은 Bus Logging 창에서 설정한 대로이다.
    • 저장을 멈추려면 메인 메뉴/ Analysis/ Stop Logging 버튼을 클릭한다. 
    • 다시 저장을 시작하려면 Start Logging 버튼을 클릭하면 된다. Bus Logging 창에서 설정한 파일 이름 규칙에 따라 변경된 이름의 파일에 저장된다.
      • 주의: 파일 이름 규칙에 시스템 변수가 없다면 (즉, 파일 이름이 고정이라면) 기존에 저장된 파일의 데이터는 새 데이터로 덮어써진다. 
      • 이를 방지하기 위하여 일반적으로 이름 규칙에 [System Time] 시스템 변수를 추가한다.
    • 측정을 모두 마치면 메인 메뉴/ Analysis/ Stop 버튼을 클릭하여 TSMaster와 버스의 연결을 끊는다.

     

    트레이스 분석

    이전 블로그에서 설명을 참조하십시오. CAN 트레이스 보기 - 바퀴 속도

     

    결론

    • 이전 블로그와 이번 블로그에서 TSMaster로 CAN 버스를 측정하고, 데이터를 파일로 저장하고, 데이터 파일을 읽어서, 메시지들을 확인하고, 메시지 내부의 신호들을 수치와 그래프로 보는 방법을 설명하였다.
    • 이 과정에서 CAN 데이터베이스, CAN 하드웨어 설정, CAN 메시지의 구조, CAN과 CAN-FD 비교를 간략하게 설명하였다.
    • 실제 CAN 버스 측정을 하다 보면, 신호들을 이용하여 실시간으로 연산한 결과를 보고 싶은 경우가 자주 있다. 다음 블로그에서는 바퀴 속도를 이용하여 요-레이트를 계산하고,  계산한 요-레이트와 차의 센서로 측정한 요-레이트 (CAN에 있다)를 비교하는 방법을 설명한다.