CAN_OBD-II2010. 1. 7. 09:29

OBD-II로 무엇을 할 수 있을까? 또 어떻게 할까?

제가 해본 것이 CAN 뿐이라, CAN 통신으로 한정해서 이야기를 해보겠습니다.

우선 한가지 짚고 넘어갈 사실.
CAN과 OBD-II 의 관계(?)라고나 할까... 처음 study 할때 나역시 무척 삽질했던 내용입니다.
OBD-II는 차량 배기가스 등을 진단하기 위한 약속이고, CAN은 이 진단을 위한 통신규약의 하나일 뿐입니다.
다시 말해, OBD-II를 구현하기 위해 CAN 통신을 이용하는 것일 뿐, 비교대상이 아니라는 말이죠.

저또한 처음에 저 둘을 비교대상으로 잘못 알고 접근했다가 엄청 헤맸었던 기억이 있습니다.

소프트웨어를 개발하는데 C언어나 베이직, 혹은 어셈블리 등 어떤 언어를 사용할지 선택은 프로그래머의 몫이듯, OBD-II를 구현함에 있어 CAN을 사용할건지, PWM이나 ISO방식을 사용할건지는 선택의 문제입니다.
단, 미국에서 의무적으로 CAN을 사용하도록 법령이 바뀐 상태고, 그 영향으로 전세계적으로 CAN이 의무화될 것 같은 분위기인 것은 확실합니다.

CAN 통신 프로토콜을 보면 ID가 있습니다. CAN 통신에서의 ID는 통신의 최종 목적지일 뿐만 아니라, 우선순위 중재 또한 ID를 통해 이루어지기 굉장히 중요합니다.
그런데 OBD-II 스펙을 보면 PID라는게 있습니다. 이것도 일종의 ID인데, CAN의 ID와 OBD-II의 PID간의 관계를 규명하느라 머리 빠지는 줄 알았네요.

CAN 프로토콜에는 ID와 Data field가 있습니다.(물론 다른것도 많지만)

OBD-II의 PID는 그 자체가 차량 진단에 관련되는 내용으로 CAN 프로토콜의 Data field에 OBD-II의 PID가 들어가게 됩니다.
(이거 나혼자만 고민한 건가???)

자 그럼 본론으로 돌아와서,
OBD-II로 무엇을 할 수 있을까요? 사실 OBD 라는 명칭에 이미 그 답이 들어있습니다.
바로 차량의 고장 진단입니다.
인터넷으로 OBD-II 관련 자료를 검색해 보면 아마도 95% 이상은 차량 스캐너에 관한 내용이 검색될 겁니다.

그럼 두 번째 질문. 어떻게?

차량에 고장이 발생하면 MIL(Mal-function Indicator Lamp)이라는 램프에 불이 들어오게 되고, OBD-II 스캐너로 어느 부위에서 고장이 발생했는지 알 수 있습니다.
이 때 사용되는 DTC(Diagnostics Trouble Codes)라는 진단 코드가 있습니다.
차량 제조사마다 내용이 상이해서(물론 공통되는 부분은 있다) 분량이 방대한데, 인터넷 검색해보면 자료는 쉽게 구할수 있을 것입니다.

참조. PID/DTC list


쓰다보니 내용이 길어져서 2부는 다음에 계속하도록 하겠습니다.
Posted by 못생긴나무