Peugeot 차량 DIY CAN 통신 해보자!(508기준)

(11) Python-OBD로 푸조 엔진 ECU에 연결 실패...(좌절..)

peugeotory 2023. 10. 19. 18:59

"아무런 반응이 없습니다.!  ㅠㅜ"

 

CAN 분석기는 잘 동작하는데, 오픈 소스인 Python-OBD로 명령을 보내거나 수신이 안됩니다.

 

설명에 앞서

지금까지 준비한 것을 간단하게 정리하면,

 

1) 오픈 소스 Software와 Hardware에 대해서 조사하고

2) 엔진 ECU 시뮬레이터 구매 및 사용방법 숙지

3) 각종 케이블 구매후

4) CAN 신호 분석기도 구입하고 사용방법도 모두 학습했습니다.

 

특히, 오픈 소스인 Python-OBD 코드 분석도 다하고, 예제도 많이 돌려보고

엔진 ECU 시뮬레이터에 연결해서 CAN 분석기로 Raw data 수집되는것 까지 확인했습니다.

 

차량에 연결하고 원하는 CAN 송,수신이 되는지 확인하는 것만 남았는데.....

알리에서 구매한 엔진 ECU 시뮬레이터에서 잘 동작했던 Python-OBD 코드 그대로 준비해서 차량에 연결합니다.

 

 

드디어,

CAN 분석기(CANalyst-II)와  푸조 OBD2 콘넥터에 병렬로 연결했더니...

엄청난 CAN raw data가 쏟아져 들어옵니다. (너무 많고 빨라서 CVS 파일로 모두 저장해 놓았습니다.)

 

문제는 원하는 엔진 데이터를 얻기위해 ECU를 호출하는 경우인데... (예를 들어 엔진 냉각수 온도)

 

어라? 아무런 반응이 없습니다. ㅠㅜ

괜히 연결했다가 차량이 고장이라도 난것일까?

 

분명, Python-OBD에서 호출하는 엔진 ECU의 (Response)Frame ID = 7E8이고, ( Query Frame Id =7DF임)

(참고)https://en.wikipedia.org/wiki/OBD-II_PIDs#Standard_PIDs   

(참고) PID:Parameter ID = Frame ID

 

오픈소스이므로 표준에 맞게 만들어져 있습니다.(아래 테이블 참조)

 

엔진 ECU 시뮬레이터에서 잘 응답하는것 까지 확인했는데......

왜 그럴까??

 

확인해 보니,

 

결정적인 차이는 Frame ID = 7E8가 아닌

푸조 508 엔진 ECU (Response) Frame ID = 6A8 사용한다는 것입니다.

 

푸조 차량의 (Query vs Response) Frame Id 확인 방법은,

진단기인 Diagbox의 ECU Test 페이지에서 개별 통신 확인 결과   45 ECU(?)의 정보를 읽어 올 수 있고..

각 ECU마다 Frame Id_호출자와 Frame ID_응답자를 하나씩 동작 시켜서 확인 가능합니다.

 

푸조 차량에 장착된 ECU별로 표에 정리했습니다. (아래 테이블 참조)

( Frame ID_응답자가 없는 것은 차량 옵션에 따라 설치 안된 기능인 경우입니다.(즉, 해당 ECU가 없는 경우임) )

(오타) No. 43, 43, 44는 43, 44, 45로 수정되어야 합니다.

 

아무리 python-obd로 호출해본들...  푸조 엔진이 알아 듣지 못합니다.

 

결국, .....

시중에 나와 있는 표준 Pid를 사용하는 모든 OBD 앱은 푸조 차량에서 동작하지 않는 다는 것이고

지금까지 확인된 FAPCitroen/Peugeot ELM327 OBD2이외에는 동작하는 앱을 아직 보지 못했습니다.

 

오픈 소스인 python-obd로 obd통신에 대한 기술적인 이해와 기능을 익힐 수 있지만

푸조 엔진에 연결할 수 없다는 것입니다. frame id 체계가( dbc 계산로직 포함) 달라서 전혀 응답하지 않기 때문입니다.

 

 

가능하게 하려면,

 

python-OBD 소스코드에서 Frame ID를 모두 푸조 엔진에 맞게 변경하고 추가하는 작업이 필요합니다.

하지만, 문제는 소스코드 어디에서 변경하는지 찾지 못했습니다.

 

대안으로 

(이전글)에서 정리한 두번째 오픈 소스인 python-CAN을 사용해야 했습니다.

 

 

< 다음편에 계속..>