Hệ thống chẩn đoán OBD-2 đƣợc thiết kế trên cơ sở sử dụng trên máy tính, cho phép sử dụng thuận tiện, đơn giản. Để đơn giản cho quá trình sử dụng, phần mềm đƣợc thiết kế trên cơ sở giao tiếp thông qua nút bấm và lựa chọn. Hệ thống cơ sở dữ liệu mở cho phép ngƣời sử dụng dễ dàng cập nhập thông tin trong quá trình sử dụng, phù hợp với thực tế hơn.
Dựa trên yêu cầu trên, đề tài đã tiến hành phân tích thực tế cấu trúc lệnh và dữ liệu gửi về máy tính của thiết bị OBD-2.
Cấu trúc chung câu lệnh điều khiển có dạng sau: <Câu lệnh>CR Trong đó:
<Câu lệnh> - lệnh điều khiển của ELM327, có thể là lệnh liên quan tới OBD-2 hoặc câu lệnh điều khiển AT
CR – Ký tự báo kết thúc dòng của máy tính Cấu trúc chung của dữ liệu gửi trả về có dạng nhƣ sau:
<Dữ liệu gửi về 1>CR <Dữ liệu gửi về 2>CR
…
<Dữ liệu gửi về n>>
Trong đó:
<Dữ liệu gửi về n> - dòng dữ liệu gửi về CR – Ký tự báo kết thúc dòng của máy tính > - Ký tự báo kết thúc dữ liệu gửi về
Dữ liệu gửi về có thể gồm 1 hay nhiều dòng dữ liệu do một hay nhiều ECU cùng gửi về. Kết thúc dữ liệu gửi về là ký tự “>”.
Dựa trên cơ sở đó, phần mềm Hệ thống chẩn đoán OBD-2 có thể đƣợc xây dựng dựa trên thuật toán sau:
Dựa trên thuật toán cơ sở này, đối với từng Mode khác nhau của thiết bị chẩn đoán OBD-2, cần xây dựng thuật toán cụ thể để tách dữ liệu và xử lý thông tin.
Hệ thống chẩn đoán cho động cơ theo chuẩn OBD-2 hoạt động theo nguyên lý trao đổi thông tin hai chiều giữa ECU với hệ thống chẩn đoán thông qua đầu kết nối đƣợc tiêu chuẩn hoá (đầu nối DLC3 16 pins).
Các thông tin trao đổi này cũng có dạng xung với mức điện áp cao là 5 vol. Tuỳ theo các giao thức truyền tin khác nhau mà tín hiệu thông tin từ ECU sẽ gửi tới vị trí chân khác nhau của đầu nối DLC3. Hệ thống có cấu trúc cơ bản sau: bộ thu nhận dữ liệu, thiết bị máy tính PC để xử lý, hiển thị kết quả, lƣu trữ và in dữ liệu, các đầu nối chuyên dụng nối đầu chẩn đoán DLC3 với bộ thu nhận dữ liệu và dây dẫn truyền thông tin.
Cơ sở xây dựng Hệ thống chẩn đoán OBD-2 là một hệ thống mở cho phép giao Lệnh điều khiển Đọc dữ liệu gửi về Kiểm tra ký tự “>” Xử lý và hiển thị Begin End
tiếp giữa xe và máy tính. Hệ thống chẩn đoán OBD-2 có dạng nhƣ sau:\
Hình 3.13. Giao tiếp giữa xe và máy tính
Giao tiếp giữa xe và thiết bị OBD-2 là giao tiếp theo các chuẩn của OBD-2 (các protocol). Trong đó, thiết bị OBD-2 đóng vai trò nhƣ một Master ra gửi lệnh tới xe theo các yêu cầu đƣợc định sẵn. Sau khi xe nhận đƣợc lệnh gửi từ thiết bị OBD-2, ECU trên xe sẽ xử lý lệnh đó và gửi trả về giá trị phù hợp.
Quá trình giao tiếp giữa xe và thiết bị OBD-2 đƣợc thể hiện trên lƣu đồ sau:
Hình 3.14. Giao tiếp giữa xe và tiết bị
Tƣơng tự nhƣ vậy, thiết kế giao tiếp giữa máy tính và thiết bị OBD-2 cho phép máy tính đóng vai trò nhƣ một Master. Máy tính sẽ gửi các lệnh tới thiết bị OBD-2, từ đó thiết bị này sẽ xử lý thông tin nhận đƣợc từ máy tính và gửi tới xe. Sau khi xe gửi trả thông tin về thiết bị OBD-2, thiết bị này sẽ truyền lại dữ liệu đó lên máy tính. Trên cơ sở phân tích dữ liệu nhận đƣợc từ thiết bị OBD-2, máy tính sẽ xử lý và phân tích các dữ liệu này và đƣa cho ngƣời sử dụng các thông tin cần thiết.
Hình 3.15. Giao tiếp giữa máy tính và thiết bị chẩn đoán OBD-2 là giao tiếp giữa thiết bị chẩn đoán và hệ thống tự chẩn đoán của xe.
ECU xe
Bộ kết nối Thông tin gửi đi
Trả lời
Bộ kết nối Máy tính
Thông tin gửi đi
Trả lời Hiển thị ECU Xe Bộ kết nối Máy tính
OBD-2 cho phép ngƣời sử dụng tiếp cận không chỉ với các mã lổi chẩn đoán đƣợc xe phát hiện và lƣu trữ mà còn cho phép ngƣời sử dụng theo dõi các thông số trạng thái hoạt động thực của xe, trên cơ sở đó có thể tiến hành một số phân tích trực tiếp và hiệu chỉnh cần thiết.
Để kết nối thiết bị chẩn đoán với động cơ và với máy tính điều khiển yêu cầu bộ thu nhận dữ liệu phải có 2 đầu kết nối đặc biệt, một đầu kết nối với máy tính và một đầu kết nối với đầu nối chẩn đoán DLC3. Trong hệ chẩn đoán OBD-2, các đầu nối DLC3 của các động cơ đƣợc tiêu chuẩn hoá vì vậy dây nối giữa thiết bị với đầu DLC3 cũng đƣợc chuẩn hoá (xem hình 3.16)
Hình 3.16. Đầu nối giữa thiết bị với đầu DLC3 của động cơ
Kết nối giữa thiết bị với máy tính thông qua các cổng COM hoặc cổng USB. Các máy tính xách tay hiện nay không còn sử dụng cổng COM, việc giao tiếp với các thiết bị ngoại vi thực hiện qua cổng USB. Để thuận lợi cho việc thực hiện chƣơng trình trên máy tính laptop, đề tài đã thiết kế mạch kết nối qua cổng USB. Đối với thiết bị chẩn đoán OBD-2 còn phải tính toán để chọn tốc độ truyền thông tin phù hợp với tính năng của mạch vi xử lý. Thiết bị chẩn đoán đƣợc thiết kế với tốc độ truyền thông tin (baud rate) là 38400 baud. Trong chẩn đoán OBD-2, ngoài các lỗi dùng chung nhiều nhà sản xuất còn sử dụng một số mã lỗi của riêng hãng xe mình. Do đó cần phải nhận dạng động cơ (các thông tin về mác xe, năm sản xuất) để chọn thêm các thông tin về mã lỗi riêng của động cơ đƣa vào chẩn đoán.
nhật các số liệu mới hoặc hiệu chỉnh các số liệu trong quá trình hoàn thiện thiết bị. Chọn chế độ làm việc: trong chuẩn OBD-2 qui định 9 chế độ làm việc. Việc chọn chế độ làm việc thực hiện qua các menu chọn chức năng khi lập trình điều khiển. Hệ thống chẩn đoán đƣợc chế tạo thử nghiệm có các chế độ làm việc sau: $01 (Mode 1): Thông tin (số liệu) về trạng thái làm việc hiện thời của động cơ $03 (Mode 3): Hiển thị các lỗi lƣu trữ trong bộ nhớ
$04 (Mode 4): Xoá lỗi và các trị số lƣu trong bộ nhớ
Thông tin vê trạng thái làm việc hiện thời: chức năng đọc thông tin (các số liệu) về trạng thái làm việc hiện thời của động cơ đƣợc thực hiện bằng lệnh hội thoại giữa ngƣời sử dụng (câu lệnh ngƣời sử dụng gõ vào từ giao diện chƣơng trình máy tính) và ECU. Trong hệ thống chẩn đoán OBD-2, tiêu chuẩn J/1979 qui định qui cách hệ các câu lệnh này và gọi là P-codes hoặc OBD-2 PIDs (On Board Diagnostics Parameter IDs). Bảng 3.2 trình bày ví dụ về hội thoại PIDs trong hệ chẩn đoán OBD-2 (tham số PID xem phụ lục 2)
Bảng 3.2. Ví dụ về P-codes Mode (Hex) PID (Hex) Mô tả Giá trị min Giá trị max Đơn vị tính Công thức tính 01 04 Tính mức độ tải của động cơ 0 100 % A*100/255 01 05 Nhiệt độ nƣớc làm mát động cơ -40 215 0C A-40
01 0A Áp suất nhiên liệu 0 765 kPas A*3 01 0B Áp suất chân không
trên đƣờng nạp
0 255 kPas A
Trong bảng trên, trị số của A, B (cột công thức tính) là giá trị tính theo hệ thập phân tƣơng đƣơng với byte thứ nhất, thứ hai của dữ liệu gửi về.
Dựa vào các câu lệnh PIDs và công thức chuyển đổi để xây dựng bảng thông số làm việc hiện thời của động cơ.
Ví dụ 1: ngƣời sử dụng gõ lệnh > 01 05 (câu lệnh ở chế độ 1 (mode 1), yêu cầu thông tin về nhiệt độ nƣớc làm mát hiện thời của động cơ) trên cửa sổ hội thoại ECU trả lời 41 05 7B (41 05 có ý nghĩa câu trả lời về mode 1, PIDs 05, giá trị của tham số là 7B (số Hex) tƣơng ứng số thập phân 7*16+11=123. Theo công thức tính nhiệt độ A-40 = 123-40 = 83, nhiệt độ nƣớc làm mát hiện thời là 830C
Ví dụ 2: ngƣời sử dụng gõ lệnh > 01 0C (mode 1, tốc độ động cơ) trả lời 41 0C 1A F8 (41 0C có ý nghĩa câu trả lời về mode 1, PIDs 0C, giá trị 1A F8 là dữ liệu 2 bytes tƣơng ứng giá trị thập phân là 6904, tốc độ thực tế của động cơ là 6904/4 = 1726 vg/ph)
Thông tin về trạng thái động cơ khi xuất hiện lỗi:
đƣợc thực hiện cùng với các câu lệnh tƣơng ứng với mode 2
Đọc mã lỗi: khác với nguyên lý đếm xung để đọc mã lỗi của OBD-1, trong chuẩn OBD-2, các mã lỗi đƣợc truyền theo qui cách thống nhất dƣới dạng các bytes liên tiếp. Câu lệnh để kiểm tra xem tổng số các mã lỗi có trong bộ nhớ đƣợc gõ theo cú pháp: > 01 01, khi đó thông thƣờng mã lệnh trả lời sẽ là 41 01 81 07 65 04 trong đó các bytes đầu 41 01 có ý nghĩa thông báo về trả lời câu lệnh mode 1, PIDs 01. Byte thứ 3 biểu thị dạng số hex 81 (chuyển sang số thập phân 8 x 16 +1 = 129) là số các mã lỗi sẽ hiển thị nếu làm việc đủ cả 9 chế độ.
Để liệt kê các lỗi sử dụng câu lệnh > 03 (ở đây không cần gõ giá trị PIDs), giả sử trả lời từ ECU có nội dung 43 01 33 00 00 00 00 với ý nghĩa: 43 trả lời cho yêu cầu 03 - đọc các lỗi; các cặp bytes tiếp sau chỉ các lỗi (ở đây có 1 lỗi 0133, các cặp bytes 00 00 có nghĩa không có lỗi, các mã lỗi OBD-2 Xem ở phụ lục 1).
Số hex đầu tiên chỉ thị về lỗi thuộc phần gầm, động cơ, thân xe, hoặc mạng truyền thông. Có thể chuyển đổi tƣơng ứng giữa số hex này với ký hiệu mã lỗi 5 ký tự thƣờng sử dụng nhƣ trình bày trong bảng 3.3
Bảng 3.3 chuyển đổi số hex đầu tiên của byte mã lỗi với mã lỗi 5 ký tự Số hex
đầu tiên
Tƣơng ứng với
mã lỗi 5 ký tự Ý nghĩa
0 P0 Lỗi phần động cơ, theo tiêu chuẩn chung
1 P1 Lỗi phần động cơ, theo tiêu chuẩn riêng của nhà máy 2 P2 Lỗi phần động cơ, theo tiêu chuẩn SAE
3 P3 Lỗi phần động cơ, theo tiêu chuẩn kết hợp 4 C0 Lỗi phần gầm, theo tiêu chuẩn chung
5 C1 Lỗi phần gầm, theo tiêu chuẩn riêng của nhà máy 6 C2 Lỗi phần gầm, theo tiêu chuẩn SAE
7 C3 Lỗi phần gầm, theo tiêu chuẩn kết hợp 8 B0 Lỗi phần thân xe, theo tiêu chuẩn chung
9 B1 Lỗi phần thân xe, theo tiêu chuẩn riêng của nhà máy A B2 Lỗi phần thân xe, theo tiêu chuẩn kết hợp
B B3 Lỗi phần thân xe, theo tiêu chuẩn SAE C U0 Lỗi phần mạng, tiêu chuẩn chung
D U1 Lỗi phần mạng, theo tiêu chuẩn riêng của nhà máy E U2 Lỗi phần mạng, theo tiêu chuẩn SAE
F U3 Lỗi phần mạng, theo tiêu chuẩn kết hợp Trở lại ví dụ trên, lối P0133 liên quan đến cảm biến oxygen
Thuật toán đọc và xoá mã lỗi đƣợc trình bày ở sơ đồ hình 3.20 Xoá mã lỗi bằng lệnh > 04
Hiển thị các lỗi chờ xử lý (pending codes) bằng cách dùng lệnh >07
Để đảm bảo an toàn dữ liệu cũng nhƣ tránh ngắt chƣơng trình đột ngột, khi thiết kế phần mềm điều khiển cần sử dụng các lệnh ngừng kết nối để trong bất cứ chế độ làm việc nào cũng có thể ngắt chƣơng trình và ngừng kết nối thiết bị với máy tính.
Hình 3.17. Trình tự kiểm tra và xoá lỗi