Peugeot OBD app 만들기 도전

<3단계> iOS,Android 겸용 Peugeot OBD앱 - 에러 삭제 추가(4)

peugeotory 2024. 5. 25. 19:47

너무 쉽게 생각했나 봅니다.


FAP앱이나, Car Scanner ELM OBD2앱에서 오류코드 확인 가능하고 삭제 기능 있어서 간단하게 구현할 수 있을것이라 생각했습니다. 그런데 기능은 간단해 보이는데 뒤에 숨겨진 엄청난(?) 작업이 기다리고 있었습니다.

이유인 즉,

PSA(지금은 스텔란티스...) 계열 차량에 장착된
1) 엔진 ECU가 다르다... (차종은 다르지만 같은 엔진 ECU 사용도 합니다.)
2) Diagnostic Trouble Code(DTC). 즉, 고장 코드는 ECU 의존성이 있습니다.

그렇다면 대략적인 엔진 ECU는 몇개나 될까요? 대략 86개정도 됩니다. (링크 참조)
(엔진 ECU만 그렇고 다른 ECU 모두 합치면 대략 200개 정도 되는것 같습니다.)

 

위에서 설명한 ECU 리스트는 단지... 엔진 ECU만 언급한 것입니다.
(아래 그림을 보면 1320이라고 표시된 곳입니다. - peugeot service box 참조)

 



2020년 3월기준( 현재 보유하고 있는 Diagbox 9.68 출시 일자 ) 
으로 보면 디젤 508차량(1.6, 2.0)에는 총 12개 엔진 ECU가 장착됩니다. (위의 테이블에 있는 84개중에 포함될것입니다.)

 


잠깐 옆길로 빠져서...


508 차량 1대에는 총 몇 개의 ECU가 있을까요? 최대 45개이고 2011년식 508 1.6에는 엔진 ECU 포함해서 29개가 있습니다.

 

그동안 생산된 차량 및 옵션을 생각하면 얼마나 많은 ECU와 관련된 SW가 있을지 가늠하기가 쉽지 않습니다.

 

 


다시 본론으로 돌아와서...
OBD앱에서 오류코드를 읽어 오고 삭제하는 기능 만들때 가장 어려운점은 세가지가 있습니다.

 

1.엔진 ECU 정보 읽어와서 모델명 확인해야 합니다.
→  모든 ECU별 SW 관리 버전 : 35735개 (아마도 차량 옵션에 따라 관리하는것 같습니다.)

 

예를 들어 엔진 ECU 정보를 읽어보면 "SDI807_BR2"이라고 알려주면 얼마나 좋을까요?
아쉽게도 이런 정보는 없습니다. 그냥 알수 없는 숫자만 나열합니다. (9693241480, 9666681180, 9678917780.....)

위의 숫자들을 별도의 데이터베이스를 구축하고 검색 작업을 해야 합니다.

 

2.엔진 ECU 모델에 맞는 오류코드를 찾아야 합니다.
→  Fault code  : 4443개 입니다.( 중복 코드 미제외시 11579개)

1)어렵게 엔진 ECU 모델을 찾더라도 모델별로 별도로 관리하는 Fault code list가 있어야 한다는 것입니다. 
(1.6, 2.0, 디젤, 휘발유... 등등... 차이가 있으므로 별도 관리가 답인것 같긴 합니다.)

2)기본적으로 ECU는 우리가 알고 있는 Fault code (P0064 등등..)과 같은 코드를 제공하지 않습니다. Diagbox만 인식할 수 있는 별도의 숫자를 알려줍니다.
오류코드를 찾아서 상세 내용을 표출하는 기능는 더 어려운 문제입니다. (예를 들어 영구적인 고장인지.. 고장이 상세내용은 무엇인지...등등)

참고) FAP앱이 이러한 기능을 훌륭하게 수행하는 것으로 판단시, 정말 잘 만들어진 앱이라 할 수 있습니다.

 

 

3.마지막으로 모든 차량에 적용 가능한 "삭제"명령을 보내야 합니다.
위에서 언급한 두가지에 비하면 가장 쉬운것 같습니다. 별도의 데이터베이스가 없어도 되니까요..
문제는 차량에 Fault code가 있어야 지워지는지 알 수 있는데, 현재 저의 차량에는 고장 코드가 없는 상태라 기능은 만들어 놓고 확인을 못하고 있습니다. ㅠㅜ

Fault code가 발생하기만 기다리고 있는 상황이 되었습니다. 헐...



위에서 언급한 여러가지 어려움을 극복하고..

기능 test 가능한 앱으로 개선 했습니다.

사례1) 엔진 ECU 연결 불가능한 경우
2020.3월기준 생산된 PSA 차량중 디젤 엔진 ECU와 연결이 불가능 사례입니다.

원인) OBD 스캐너 문제일수도 있고, 위에서 언급한  6A8:688이라는 frame ID를 사용하지 않고 통신하는 엔진 ECU로 미지원 사례에 해당하는 경우 입니다.
정지) ECU에 연결 불가능 하므로 START 할수 없으며 "붉은색" STOP 버튼으로 표시됩니다.


(위의 사례에서 표시된 메시지의 경우 : OBD는 정상 동작하나, ECU에 연결 안된 경우입니다.)


 
사례2) 엔진 ECU 연결 가능한 경우 (Frame ID - 68A:688 사용시)
① ECU SW버전 관리번호 데이터베이스와 비교해서 ECU 모델 번호 표시해줍니다.
② 엔진 ECU 연결 성공 메시지 표시

③ 아이콘 클릭시 HDI_SID807_BR2 모델의 HW 번호가 표시됩니다. (이번호로 인터넷 검색해도 동일 모델 확인 가능)
④ 엔진 연결이 가능해지면 붉은색 버튼이 파란색 버튼으로 변경("START")

 

"START"버튼을 누려면 각종 센터 데이터 읽어 보는것이 가능합니다. (이전자료 참조)

 


사례3) 고장 1개 발생한 경우 
엔진 ECU 모델 검색후 즉시 Fault Code 읽고 고장 코드가 있는 경우 코드 번호와 상세내용 표시합니다.
② 상세내용 클릭하면 바로 구글검색으로 연결
③ 다양한 고장 사례를 찾아볼 수 있습니다.
④ 구글 크롬, 우측 상단의 "완료" 버튼 누르면 이전 페이지로 돌아옵니다.



고장이 삭제 되지 않는 다면?? 
① 만약 고장 수준이 "간헐적"이 아닌 "영구적"고장이면 " 
② 아래 사진의 "삭제" 아이콘을 눌러도 에러는 삭제되지 않습니다.
③ 이유는 삭제되어도 즉시 다시 발생하므로 다시 표출되기 때문입니다.

 

 

사례4) 고장 코드가 여러개인 경우와 삭제 일부가 재발생한 경우

① 총 7개의 고장 코드가 있는 경우 
② 삭제 아이콘 클릭시 삭제 기능 성공하지만 다
③ 이유는 삭제되어도 즉시 다시 발생하므로 다시 표출되기 때문입니다.

 


글로 설명하려니 쉽지 않네요..
이제 동작하는 동영상을 한번 보시죠...

삭제가 완벽하게 성공한다면 아래와 같이 동작할 것입니다.

 

1) 아이폰 프로 11에서 동작 사례
https://youtube.com/shorts/bq34maUTYRY?si=isfG1y4VN9Tqykjj



2) 안드로이드폰에서 동작 사례

 

https://youtu.be/ShlavLe2a94?si=YVT7zbJyToSoFWew

 

https://youtu.be/GfBRQY7ed94?si=5-IjBvUFMVuxUEiX

 

 

 

앞으로 해야 할일)
이제 엔진 ECU별로 Fault Code 리스트를 각각 만들어야 합니다. 일단은 링크 사이트 참조해서 만들어야 하는데 상세 내용을 추가하려면 상당한 수작업이 필요한 상황이라 고민이 많습니다. fault code만 제공할까??(어차피 구글 검색으로 링크되므로..)

무엇보다 중요한것은 실제 차량에서 고장 코드가 삭제되는지 확인해야 하는데
아직 못해봤습니다. (현재 저의 차량에 고장 코드가 없는 상태라...ㅠㅜ)