![Korean Institute of Information Technology](/images/basic/pubreader_back.gif)
차량 네트워크 분석을 위한 파이썬 프로그래밍 적용에 관한 연구
초록
CAN(Control Area Network)은 자동차 네트워크라고도 불리는 디지털 신호이다. 자동차 산업에서 그 네트워크의 설계에 대해 Verification과 Validation은 매우 중요한 역할을 한다. 따라서 차량에서 사용되는 수천 개의 신호를 분석하기 위해서는 프로그래밍에 의한 분석을 해야 한다. 본 논문에서는 CAN에서 발생되는 2진 신호를 이용해서 자동차 시험 항목에 대한 분석을 하는 파이썬 프로그램을 개발하였다. 개발된 프로그램을 이용해서 분석한 결과는 기존의 상용 프로그래밍에 의한 분석 결과와 비교하였으며, 비교를 통해 개발된 프로그램의 장점과 향후 개발의 방향에 대해서 제시하였다.
Abstract
CAN(Control Area Network) in the automobile industry is a digital signal, also called an automobile network. Verification and Validation play a very important role in the design of the network in the automobile industry. Therefore, in order to analyze thousands of signals used in vehicles, analysis by programming is required. In this paper, we developed a Python program that analyzes automotive test items using binary signals generated from CAN. The results of analysis using the developed program were compared with the analysis results of existing commercial program, and through comparison, the advantages of the developed program and directions for future development were presented.
Keywords:
CAN, python, vehicle, verification and validationⅠ. 서 론
자동차가 등장한 이래 자동차는 기계적인 성능이 곧 자동차의 성능으로 표현되었으나, 환경규제와 함께 정밀한 엔진제어장치인 EMS(Engine Management System)가 개발되었다. 자동차는 크게 샤시와 바디로 분류되며 이들을 시작으로 자동차의 전 영역에 ECU(Electric Control Unit)를 통한 시스템 제어를 사용하기 시작한다. 자동차의 수많은 부품들은 서로 유기적인 관계로 동작을 하며, 그 기능의 정보를 사용자에게 알리기 위해서 복잡한 하드웨어 시스템을 이용하는 것은 한계에 다다르게 된다[1].
이러한 한계를 극복하기 위해 세계적인 각각의 자동차 회사들은 서로 다른 자동차용 프로토콜이 등장하기도 하였다[2].
이처럼 자동차 네트워크를 위해 다양한 차량 네트워크가 등장하였으나 CAN(Car Area Network)은 자동차에서 기본적인 통신 사양으로 자리 잡았다. 이와 함께 자동차의 제어 장치들은 전기 장치화 되어가고 있으며 그 데이터의 양 또한 매우 많이 증가하였다[1][2]. 따라서 이러한 많은 양의 데이터를 처리하는 자동차 네트워크 설계 사양에 대한 및 호환성 검증 평가는 매우 중요한 요소가 된다.
과거의 자동차의 네트워크 데이터의 양이 많지 않았을 때에는 해당 연구원들의 지식과 기술에 따라 평가가 가능한 수준이었으나, 자동차의 네트워크 데이터의 막대한 증가로 인해 수천 가지 이상의 데이터를 검증하는 것은 현실적인 어려움이 있다.
이에 각각의 자동차 회사들은 소프트웨어를 이용한 분석 방법을 이용하고 있으며, 그 대표적인 예가 벡터사 제품군인 CAPL(Communication Access Programming Language)을 이용하여 분석하는 방법이 있다. CAPL이 CAN 네트워크를 분석하는 데 있어 강력한 도구라고 볼 수 있으나, 상당한 고가의 제품 적 특성과 프로그래밍 언어에 대한 높은 지식이 필요하다.
그 외에도 CANoe에서 지원하는 Matlab을 이용하는 방법도 있으나, CAPL 코드 방식을 이용한 접근이 우세하고 있는 것도 사실이다.
이에 접근성이 상대적으로 좋고, 경제적 경쟁력이 있는 새로운 프로그래밍 언어의 평가결과와 기존의 평가결과의 일치성을 검증하고 객관적인 데이터를 확보할 수 있다면 프로그래밍을 이용한 평가 분야는 다양한 프로그래밍 언어적인 접근이 가능할 수 있다. 그중 파이썬은 다양한 함수 형태의 라이브러리를 제공하여 그래프분석, 엑셀 출력 등 다양한 형태의 결과를 제공하기도 한다[3].
따라서 본 논문에서는 현재 대중적이고 접근성이 용이하고, 경제적으로 장점을 보이는 프로그램인 파이썬을 이용하여 기존의 CAPL 분석결과와 비교하여 신뢰성을 확보하고 분석 업무에 적용하고자 한다.
본 논문의 구성은 다음과 같다. 2장은 CAN의 기초 개념과 함께 데이터 프래임 구조를 소개하며, 3장에서는 현업에서 진행하고 있는 시험방법을 간략히 소개하였고, 4장에서는 이를 분석하고 평가하는 방법에 대해 기존의 평가 방법과 함께 파이썬(Python)을 이용한 실증을 통해 결과 비교 검증을 하였다. 마지막으로 5장에서는 분석결과에 따른 기존 방법과의 비교를 최종 정리하였으며, 새로운 시스템 구축의 가능성을 제시하였다.
Ⅱ. 관련 연구
2.1 Controller area network
CAN은 등장 이래 자동차를 중심으로 지속해서 발전하였으며, CSMA/CD의 액세스 방식을 개량한 방식이다[2]. CAN은 관련 업종 종사 엔지니어들이 이론 정립을 하고 난 뒤 계측기를 제조하는 제조사 및 이를 측정하고 분석하는 것을 전문으로 하는 기업을 중심으로 제조되어 국내 자동차 제조사에 그 기술이 접목되었다.
이후 ISO를 통해 관련 표준화가 진행되었고, ISO(International Organization for Standardization) 11898-1부터 11898-6을 통해 데이터링크 레이어(DLL) 및 CAN BUS에서 신호 전송하는 전압 레벨 정의, 고속 CAN의 토폴러지 구조 통신을 위한 미디엄 억세스 컨트롤(MAU)과 정보 전송 관련 규약인 미디엄 디펜던트 인터페이스(MDI)의 정의하고 성형 토폴러지와 유사한 구조를 소개, OSI 7 Layer의 계층적 모델, CAN 계층적 구조를 비교 설명하였다. 또한, CAN 통신 프로토콜은 CSMA/CD+AMP(Carrier Sense Multiple Access 전송규약 with Collision Detection and 중재 on 메시지 우선순위) 방식을 채택하고 있음을 정의하였으나 벡터사에 제공하는 교육 자료에서는 이를 CSMA/CA(Collosion Avoid) 방식으로 소개하고 있다[4][5].
CAN에는 데이터 프래임 비트 수에 따라 표준 포맷과 확장 포맷으로 분류되었으며, 확장 포맷은 하위호환성을 가진다. 또 속도에 High speed CAN과 Low Speed CAN으로 분류되고 각각 속성에 따른 기능을 가진다. CAN의 네트워크 토폴로지는 성형 구조를 기본으로 하고 있다. CAN의 전위를 데이터로 읽는 원리는 측정 파형의 70~80&지점의 전위를 읽어 그 범위에 따라 Dominant 또는 Recessive로 인식하여 그 Differ 값을 데이터 신호로 사용한다. 메시지 전송 방식은 브로드케스트 방식을 사용하고 있다.
2.2 Message 전송과 충돌
자동차에는 각 제조사의 성격과 그 장치의 성격에 따라 바디, 파워트레인, 샤시, 멀티미디어, 인포테인먼트, 진단 등의 네트워크망을 구분하고, 동일한 망 내에서의 통신과 서로 다른 망 간 게이트웨이를 통해 통신하여 자동차의 기능 정보를 전달하고 있다[6].
자동차에서 메시지 및 시그널의 제어기 간의 통신은 그 기능 구현과 관계가 되며, 차량 사용자의 안전 문제와도 깊은 관계가 있을 수 있다.
즉, 차량과 탑승객의 안전을 고려하여 메시지 전송에 있어 구동, 샤시, 제동 등의 분야에서 메시지 그룹과 인포테인먼트, 멀티미디어 등의 분야의 메시지보다 우선하여야 한다.
그러나 수 천 개의 메시지가 일정 주기 또는 이벤트 특성으로 전송되는 경우 그 메시지의 충돌 현상을 피할 수 없게 된다. 이러한 경우 설계된 의도대로 정의된 우선순위에 의해 전송이 되어야 하며, 이로 인한 전송지연 현상은 일반적인 전송지연 현상과 구분되어야 한다.
2.3 CAN Data Frame의 기능과 구조
일반적으로 CAN은 OSI 7 Layer와 비교 하여 물리계층(Physical layer)과 데이터 링크 계층(Data link layer)에서 전송이 이루어지는 네트워크 통신이다.
나머지 OSI 계층과 함께 분류하여 재정의를 통해 그 시험 항목은 표 1과 같이 구분된다. 이외 OSI의 전달 계층(Transport layer), 세션 계층(Session layer), 표현 계층(Presentation layer), 응용 계층(Application layer)는 모두 제어기가 담당한다.
2.4 Arbitration field에서의 우선 순위
일반적으로 CAN에서는 Dominant가 Recessive보다 우선한다. 이를 통해 ID를 2진 데이터로 분리하여 AND gate적 해석을 적용하여 보면 ID Code가 낮은 HEX Code가 전송 우선권을 갖는다. 그러나 이것은 CAN Data를 전압 파형으로 전송하는 Transceiver인 NXP 사의 반도체 TJA1051 모델의 데이터 시트를 참고하여 전자 회로적인 해석을 통해 BUS 우선순위 결정방법을 보면 그림 1과 같이 나타낼 수 있다.
임의의 ID : 1ED, 37E, 713을 가지는 제어기들이 동일한 시점에 메시지를 전송하는 문제가 발생하였을 때, 첫 번째 비트는 모두 Dominant로 우선순위 결정 로직을 수행하지 않는다. 그러나 두 번째 비트부터 각각 Dominant, Dominant, Recessive 비트를 가지게 되고 그 중 Dominant가 해당 BUS를 전위 Level 0V를 형성하여 결국 논리 로직 0이 되어 Dominant Bit만 BUS에 전송할 수 있게 된다. 이렇게 ID에 따라 정의된 우선순위를 기준으로 해당 ID의 데이터 프래임이 전송될 수 있게 된다.
Ⅲ. 자동차 네트워크 평가
본 연구를 위해 자동차 네트워크의 시험 항목 중 전송지연 현상과 관련된 시험 항목은 메시지 & 시그널 전송지연 평가 방법과 다른 CAN BUS로 전송하는 라우팅 평가, 그리고 네트워크 관리에 의한 Sleep 진입과 관련 Trocken 형성과 해제 방법이 있을 수 있다. 그중 중재(Arbitration) 분석을 위해 전송지연 현상과 관련하여 소프트웨어 분석 방법에 대해 새로운 프로그래밍 분석과 해석을 하고자 한다.
앞서 언급한 바와 같이 전통적인 자동차는 바디와 샤시로 나뉘는 기계적 부품이 화석에너지를 운동에너지는 변환하는 장치 수준이었으나, 점차 환경규제를 통한 제어기능이 발달하며 전자장치의 성격이 더욱 강해지게 된다. 전자장치들은 상호 정보 교환을 통한 제어를 하게 되었으며, 전통적인 분류에 기반하여 각각 Powertrain, Chassis, Body, Infotainment, Multimedia, Diagnostic 및 Electric 등으로 분류되어 운영한다.
이렇듯 각 BUS를 구분하는 데에는 Bus Rate를 관리하여 데이터 손실을 방지하고자 하려는 이유도 있다. 이러한 과정에서 각각 메시지를 각기 다른 BUS로 전송하는 제어기가 필요하였고 이때 등장한 제어기를 통해 각각의 목적지으로 메시지를 전송하게 된다.
따라서 하나의 BUS 내에서 전송되는 메시지가 전송되면서 충돌이 발생하는 경우 중재에 의한 전송지연이 발생했는지, 오류에 의한 전송지연 현상인지 확인하는 과정이 필요하다. 마찬가지로 각각의 다른 BUS 망으로 메시지를 전송하는 경우 그 메시지의 정상적인 전송 여부를 확인하여 Data Trouble Code 발생 여부에 대한 평가가 필요하다.
검증하는 방법에는 자동차의 전원을 켜고, 네트워크가 활성화된 상태에서 각 제어기의 기능을 작동하며 기능의 정상 구현 여부와 네트워크 메시지 상태를 확인한다.
이것을 검증하기 위해 데이터 추적 및 그래픽 분석 분석을 통해 확인하는 기초적인 방법이 있다.
하지만 현재 대부분 제어기가 전자화되고 네트워크화 되어 주고 받는 신호들을 확인하기에는 비효율적이다. 따라서 대부분 프로그램 제작사인 Vector 사의 제품을 통한 프로그래밍 분석 또는 Matlab을 이용한 분석에 접근하고 있으나 파이썬을 이용한 분석은 시도되지 않고 있다.
먼저 Vector 사의 프로그래밍 도구인 CAPL을 이용하여 분석하는 경우 만들어진 프로그램 코드를 기반으로 각각 네트워크 메시지를 평가하고 그 결과를 정해진 형식으로 보고서가 발행된다.
본 연구에서는 디지털 통신 기반 2진 데이터 전송 형태의 CAN 프로토콜의 물리적 특성을 기반으로 CAN에서 사용하고 있는 확장자 포맷인 blf(Binary Logging Format) 포맷을 읽어 올 수 있는 라이브러리를 활용하여 기존의 분석결과와 비교를 통해 분석결과 의 안정성을 증명하고자 한다.
Ⅳ. 파이썬을 활용한 분석 방법
본 연구에서 시행하고자 하는 파이썬을 이용한 분석 방법을 연구하기 위해 CAN 데이터는 디지털 신호 전송을 기반으로 이루어지고 확장자 이름에서 알 수 있듯이 blf 포맷은 이진 데이터를 저장한 포맷임을 알 수 있다. 즉, 이 blf 포맷을 읽어와서 해석 할 수 있는 파이썬 라이브러리를 제작하거나 배포된 라이브러리를 이용하는 분석 방법을 생각해 볼 수 있다. 이에 따라 blf 파일을 읽어오기 위하여 cantools라는 라이브러리를 사용하였고, 데이타의 시간 축을 계산하고 판정하기 위해 Pandas 라이브러리를 사용하였다. 이 결과 데이터를 활용하여 matplotlib을 이용하여 시각화하는 정보 출력을 추가하였다.
파이썬 프로그래밍을 만들기 위한 중재 검증을 위한 알고리즘을 그림 2와 같이 플로우 차트를 설계하였다.
이를 토대로 작성된 프로그래밍 코드의 주요 인자에 대해 정리하면 다음과 같다.
- 1) # BLF 파일 경로 설정
- 2) # CAN 데이터베이스 파일(.dbc) 경로 설정
- 3) # CAN 데이터베이스 파일을 로드
- 4) # id 별로 메시지의 시간 차이를 저장하기 위한 딕셔너리
- 5) # 데이터를 저장할 빈 리스트
- 6) # DBC 파일을 읽어와서 파싱
- 7) # BLF 파일을 열고 메시지를 처리
- 8) # 데이터를 데이터 프레임으로 변환
- 9) # ID를 16진수로 변환하여' id_hex' 열 추가
- 10) # dbc와 BLF 파일의 전송주기 비교
- 11) # 기준 범위 초과(90%, 110%)하는 데이터는 '중재 또는 경고'라고 출력
자동차에서 측정된 Interaction 계층에서의 특정 데이터를 CAPL을 이용하여 분석한 결과는 테스트 형태의 결과를 Pass, Fail, Warning 형태의 판정을 통해 보고한다. 이것을 보고 해당 메시지의 평균 메시지와 비교하여 판정할 수도 있으며, 해당 시점에 발생된 메시지를 보고 ID 값을 비교하여 중재에 의한 전송지연 현상인지, 전송 오류에 의한 지연 현상인지 확인할 수 있다. 그림 3은 Vector사의 전용 프로그램인 CANoe를 이용하여 Vector 사 프로그래밍 도구를 이용하여 자동차 네트워크 전송 주기에 대해서 평가를 진행한 결과를 나타낸다.
분석 결과 제품 사양서에 정의된 전송 주기보다 길게 측정된 항목에 대해서 중재에 의한 전송 지연현상이 발생 되었음을 텍스트 형태로 확인 할 수 있다.
똑같은 측정 데이터를 위에서 제시한 방법으로 작성된 파이썬 코드로 분석한 결과를 보면 그림 4와 같이 출력할 수 있었으며, 결과 비교를 통하여 CAPL을 이용한 분석결과에 대해 파이썬을 이용한 분석결과는 동일한 분석결과를 보여주었다. 그림 4에서 가로축은 해당 BUS에서 전송 주기를 평가한 각 CAN 메시지의 ID이며, 세로축은 전송 주기를 확인한 횟수를 나타낸다.
특히 여기서 파이썬을 이용한 분석결과는 matplotlib을 이용하여 그래프로 표현하였으며, 이를 통해 시험결과를 확인하는데 기존의 테스트 형태의 결과 해석보다 유리하였다. 즉, 파이썬의 결과는 다양한 라이브러리를 이용한 다양한 표현이 가능함을 추가로 확인할 수 있었다.
Ⅴ. 결론 및 향후 과제
CAN(Car Area Network)은 자동차에서 기본적인 통신 표준으로 자리 잡았으며, 이와 함께 제어 장치들이 전기 장치화 되어가면서 데이터의 양도 매우 많이 증가하였다. 따라서 이러한 많은 양의 데이터를 처리하는 자동차 네트워크 설계 사양에 대한 및 호환성 검증 평가는 매우 중요한 요소가 된다.
따라서 CAN에서 발생되는 많은 양의 데이터를 분석하기 위해서 Vector 사의 CAPL 또는 Matlab을 사용하고 있으며, 일반적으로 CAPL이 CAN 네트워크를 분석하는 데 있어 강력한 도구라고 평가되고 있다. 그러나 CAPL은 상당한 고가의 상용 제품이며, 특성과 프로그래밍 언어에 대한 높은 지식이 필요하다는 문제점이 있다.
본 논문에서는 CAN에서 발생되는 2진 신호를 이용해서 자동차 시험 항목에 대한 분석을 하는 파이썬 프로그램을 개발하였다. 본 연구에서 파이썬을 이용해서 CAN 데이터는 분석하는 것은 처음으로 시도되었으며, 추가로 파이썬을 이용한 분석을 진행하면서 그 분석결과를 그래픽으로 출력하면서 결과 해석에 또 다른 방향을 제시할 수 있었다.
결과적으로 기존의 CAPL을 이용한 분석결과에 대해 파이썬을 이용한 분석결과 비교를 통해 CAN 기반 네트워크 메시지 분석이 가능하다는 결론을 도출할 수 있었다.
본 연구에서 제안하는 방법은 리더(Reader) 수준에서 사용하는 엔지니어가 파이썬 분석 방법을 통해 데이터 분석 수준을 향상할 수 있다는 것을 CAPL의 결과와 비교하여 확인할 수 있었다. 또한, 본 시험결과를 토대로 협력사에서 접근하기 어려운 기존결과와의 비교 검증을 증명할 수 있다.
이 결과를 토대로 각 제어기의 각 기능에 대한 신호가 CAN 네트워크를 이용하여 전송된다는 점에 기반하여 각 제어기의 기능 평가를 위한 파이썬 코드 분석이 가능할 것으로 보이며, 파이썬 분석 프로그램에 대한 규격(Specification) 시스템을 구축과 관리를 통해 테스트 엔지니어 분야에서 새로운 시스템 구축을 제안하고자 한다.
Acknowledgments
본 논문은 공주대학교 연구년 사업에 의하여 연구된 결과입니다
References
- Sato Michio, "Automotive Network System", Vehicle Network Expert, 2021.
- Bob Metcalfe, "Automotive Ethernet: The Ultimate Guide˼ Inventor of Ethernet", Harman, 2016.
- S. S. Lee and H. Ha, "Everyone’s Data Analysis With Python", Gilbut, 2021.
- Road vehicles-Controller Area Network(CAN), ISO 11898-3, Part 3: Low-speed, fault-tolerant, medium-dependent interface, International Organization for Standardization, 2020.
- Vector, "CANbedded-OEM-Specific Embedded Software Components", https://www.vector.com/int/en/products/products-a-z/embedded-software/canbedded/#, [accessed: Nov. 30, 2023]
-
J.-S. Han and K.-H. Kang, "A CAN Signal Gateway Design for Car Body Networks", Journal of Institute of Control, Robotics and Systems, Vol. 16, No. 6, pp. 524-531, Jun. 2010. https://doi.org/10.5302/J.ICROS.2010.16.6.524.
[https://doi.org/10.5302/J.ICROS.2010.16.6.524]
- C. S. Oh , "Data Communication and Computer Network", Naeha Publisher, 2015.
- S. W. Ha, "Digital signal processing learned with Python", Saengneung Publisher, 2020.
- K. M. Kim, "CAN Communication Handbook", Nolssu Publisher, 2023.
- Road vehicles-Controller Area Network(CAN), ISO 11898-1, Part 1: Data link layer and physical Signaling, International Organization for Standardization, 2015.
- Road vehicles-Controller area Network(CAN), ISO 11898-2, Part 2: High-speed medium access unit, International Organization for Standardization, 2016.
- Road vehicles-Controller area Network(CAN), ISO 11898-4, Part 4: Time-triggered communication, International Organization for Standardization, 2004.
- S. K. Lee, J. Y. Lee, D. H. Kim, K. J. Choi and J. I. Jeong, "CAN Communication System using CAN Protocol", Proceedings of the Korea Information Processing Society Conference, pp. 1423-1426, May 2006.
- E. J. Kim, "Solving performance problems in CAN communication monitoring system", An Yang Univ. Master’s Thesis, 2012.
- H. S. Kang, "Development of a Automatic Test Simulator for S/W Testing Gateway on CAN", Ajou Univ. Master’s Thesis, 2006.
- Y.-K. Kim, K.-R. Ryu and C.-W. Hur, "A Study On Transmission Protocol for Controller Area Network", Proceedings of the Korean Institute of Information and Commucation Sciences Conference, pp. 836-838, May 2010.
- Vector, "ECU and network testing with CANoe", https://www.vector.com/int/en/products/products-a-z/software/canoe/, [accessed: Nov. 30, 2023]
- https://cantools.readthedocs.io/en/latest/#about, , [accessed: Nov. 30, 2023]
2010년 2월:한경대학교 화학공학과(공학사)
2024년 2월:공주대학교 정보통신과(공학석사)
2005년 ~ 현재 : KG모빌리티 책임연구원
관심분야 : CAN, 네트워크, OTA, UDS
1987년 : 고려대학교 전자공학과(공학사)
1989년 : 고려대학교 전자공학과(공학석사)
1993년 : 고려대학교 전자공학과(공학박사)
1994 ~ 현재 : 국립공주대학교 스마트정보기술 공학과 교수
관심분야 : 네트워크, 임베디드시스템, 적외선영상처리
1985년 2월:연세대학교 전자공학과(공학사)
1987년 2월 연세대학교 전자공학과(공학석사)
1994년 2월 연세대학교 전자공학과(공학박사)
1987년 ~ 1989년 : 삼성전자 연구원
1994년 ~ 현재 : 국립공주대학교 스마트정보기술공학과 교수
관심분야 : 이동통신, 재난통신, 전파간섭