Nghiên Cứu Thiết Kế Hệ Thống Hiển Thị Thông Tin Ô Tô Sử Dụng Giao Tiếp CAN - Máy Chẩn Đoán

Nghiên cứu thiết kế hệ thống hiển thị thông tin từ giao tiếp CAN máy chẩn đoán. Bài viết phân tích giải pháp hiệu quả, tối ưu hóa khả năng hiển thị dữ liệu.

Người đăng

Ẩn danh

Thể loại

đồ án tốt nghiệp

2021

173
2
0

Phí lưu trữ

45 Point

Mục lục chi tiết

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

LỜI CẢM ƠN

DANH MỤC CÁC TỪ VIẾT TẮT

DANH MỤC CÁC BẢNG BIỂU

DANH MỤC HÌNH ẢNH

1. CHƯƠNG 1: ĐẶT VẤN ĐỀ

1.1. Lý do chọn đề tài

1.2. Mục tiêu chọn đề tài

1.3. Phương pháp nghiên cứu

1.4. Phạm vi nghiên cứu

1.5. Bố cục của đề tài

2. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1. Mạng CAN

2.1.1. Ưu điểm của CAN

2.1.2. Hoạt động và nguyên tắc

2.1.3. Các loại CAN Frame và giao thức CAN

2.1.4. Các tính năng và chuẩn CAN

2.2. Khái niệm

2.3. OBD (On – Board Diagnostics) – Hệ thống chẩn đoán lỗi trên xe

2.3.1. Mục đích ra đời

2.3.2. Nguyên lý hoạt động và cấu tạo chung. Giắc chẩn đoán OBD

2.4. ELM327 Định nghĩa, lịch sử ra đời, ứng dụng

2.5. Các loại cảm biến thông dụng. Cảm biến Oxy - Oxygen Sensor

2.6. Cảm biến vị trí trục khuỷu – Crankshaft Sensor

2.7. Cảm biến vị trí trục cam – Camshaft Sensor

2.8. Cảm biến vị trí bướm ga – TPS Sensor. Cảm biến áp suất đường ống nạp – Map Sensor

2.9. Cảm biến nhiệt độ nước làm mát – Engine Coolant Temperature Sensor

2.10. Cảm biến đo khối lượng khí nạp – MAF Sensor. Cảm biến kích nổ – Knock sensor

2.11. Cấu hình phần cứng

2.12. Thiết bị đi kèm với Raspberry

2.13. Hệ điều hành Raspbian

3. CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG VÀ LẬP TRÌNH

3.1. Phần mềm – code chương trình

3.2. Kết nối (Bluetooth hoặc cổng USB): obd_utils

3.3. Dữ liệu: obd2_codes.py; obd_sensors

3.4. Thu thập dữ liệu: obd_capture

3.5. Giao tiếp: obd_io

3.6. Hiển thị giá trị: obd_gui

3.7. Tính năng thêm: debug; recorder

4. CHƯƠNG 4: KẾT QUẢ THỰC NGHIỆM, SO SÁNH

4.1. Kết quả thực nghiệm

4.2. So sánh với kết quả thực tế

5. CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

5.1. Khó khăn tồn đọng

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Hiển Thị Thông Tin Ô Tô Qua CAN OBD2

Trong bối cảnh thị trường ô tô Việt Nam ngày càng phát triển, nhu cầu tự chẩn đoán và theo dõi tình trạng xe trở nên cấp thiết. Báo cáo của Hiệp hội các nhà sản xuất ô tô Việt Nam (VAMA) cho thấy sự tăng trưởng kỷ lục trong doanh số bán xe, đồng nghĩa với việc người dùng ngày càng quan tâm đến việc tự kiểm tra và khắc phục các sự cố cơ bản. Thông qua mạng CAN (Controller Area Network), được tích hợp trên hầu hết các phương tiện hiện đại, việc này trở nên khả thi hơn bao giờ hết. Đề tài nghiên cứu và thiết kế hệ thống hiển thị thông tin sử dụng giao tiếp CAN và máy chẩn đoán tập trung vào việc xây dựng một công cụ cho phép người dùng đọc, giải mã và hiển thị các thông số quan trọng của xe, cũng như xác định và xóa các mã lỗi. Mục tiêu chính là cung cấp một giải pháp tự chẩn đoán cơ bản, tiết kiệm chi phí và dễ sử dụng, đáp ứng nhu cầu ngày càng tăng của người dùng ô tô. Hệ thống chẩn đoán trên xe (OBD) cung cấp khả năng truy cập vào dữ liệu và các chức năng chẩn đoán khác nhau qua cổng OBD2. Công cụ đọc lỗi sẽ giải mã thông tin, cho phép người dùng hoặc kỹ thuật viên xác định nhanh chóng và chính xác vấn đề. Thông tin từ cảm biến như cảm biến oxy, cảm biến vị trí trục khuỷu, cảm biến vị trí bướm ga được thu thập thông qua CAN, xử lý, và hiển thị một cách trực quan.

1.1. Tìm hiểu về mạng CAN trong hệ thống ô tô hiện đại

Mạng CAN (Controller Area Network) là một giao thức truyền thông quan trọng trong ô tô hiện đại. Nó cho phép các bộ phận điện tử khác nhau, chẳng hạn như hệ thống điều khiển động cơ (ECU), hệ thống phanh chống bó cứng (ABS) và hệ thống túi khí, giao tiếp với nhau mà không cần một máy tính chủ trung tâm. Mạng CAN hoạt động theo nguyên tắc truyền thông đa điểm, trong đó tất cả các thiết bị trên mạng đều có thể truy cập và gửi thông tin. Điều này cho phép chia sẻ dữ liệu nhanh chóng và hiệu quả, giúp cải thiện hiệu suất và độ tin cậy của xe. Ưu điểm chính của CAN bao gồm: giảm số lượng dây điện, chia sẻ thông tin hiệu quả giữa các hệ thống, và khả năng chẩn đoán lỗi từ xa.

1.2. Vai trò của cổng OBD2 trong chẩn đoán và hiển thị thông tin

Cổng OBD2 (On-Board Diagnostics II) là một giao diện tiêu chuẩn được tìm thấy trên hầu hết các xe ô tô hiện đại. Nó cung cấp khả năng truy cập vào dữ liệu và các chức năng chẩn đoán khác nhau từ hệ thống điều khiển động cơ (ECU). Cổng OBD2 cho phép người dùng hoặc kỹ thuật viên kết nối một thiết bị chẩn đoán để đọc mã lỗi, theo dõi hiệu suất động cơ và truy cập các thông tin khác liên quan đến hoạt động của xe. Việc sử dụng cổng OBD2 giúp đơn giản hóa quá trình chẩn đoán và sửa chữa, đồng thời cung cấp cho người dùng cái nhìn sâu sắc hơn về tình trạng xe của họ. Các giao thức như SAE J1850, ISO 9141-2, ISO 15765-4 đều được sử dụng.

II. Thách Thức Giải Pháp Hiển Thị Dữ Liệu CAN Qua Máy Chẩn Đoán

Việc hiển thị dữ liệu từ mạng CAN thông qua máy chẩn đoán đối diện với nhiều thách thức. Đầu tiên, dữ liệu CAN thường được truyền dưới dạng mã hóa và cần được giải mã để hiểu được ý nghĩa của nó. Thứ hai, giao thức CAN có thể khác nhau giữa các nhà sản xuất ô tô khác nhau, đòi hỏi máy chẩn đoán phải hỗ trợ nhiều giao thức khác nhau. Cuối cùng, việc hiển thị dữ liệu một cách trực quan và dễ hiểu cho người dùng là một thách thức kỹ thuật. Giải pháp cho những thách thức này bao gồm việc sử dụng các thư viện giải mã CAN, hỗ trợ nhiều giao thức CAN khác nhau và phát triển giao diện người dùng trực quan. Đồ án tốt nghiệp này tập trung vào việc sử dụng ngôn ngữ lập trình Python và Raspberry Pi để xây dựng một công cụ chẩn đoán có khả năng vượt qua những thách thức này. Sự lựa chọn này mang lại tính linh hoạt cao, chi phí thấp và khả năng mở rộng dễ dàng.

2.1. Khó khăn trong việc giải mã và xử lý dữ liệu giao tiếp CAN

Dữ liệu CAN thường được truyền dưới dạng các khung (frame) chứa các ID và byte dữ liệu. Việc giải mã và xử lý dữ liệu này đòi hỏi kiến thức chuyên sâu về giao thức CAN và định dạng dữ liệu cụ thể được sử dụng bởi nhà sản xuất ô tô. Các ID CAN có thể khác nhau giữa các dòng xe và phiên bản phần mềm khác nhau, khiến việc xây dựng một công cụ chẩn đoán đa năng trở nên phức tạp. Ngoài ra, dữ liệu CAN thường được mã hóa để bảo vệ thông tin nhạy cảm, đòi hỏi các thuật toán giải mã phức tạp. Cần phải phân tích các PID (Parameter IDs) để hiểu ý nghĩa của dữ liệu. Các giao thức như CAN 2.0A và CAN 2.0B có cấu trúc khác nhau, đòi hỏi sự linh hoạt trong xử lý.

2.2. Vượt qua rào cản tương thích giao thức CAN giữa các hãng xe

Mỗi nhà sản xuất ô tô có thể sử dụng các giao thức CAN khác nhau hoặc các biến thể của giao thức CAN tiêu chuẩn. Điều này gây ra vấn đề tương thích cho các công cụ chẩn đoán, vì chúng phải hỗ trợ nhiều giao thức khác nhau để hoạt động trên nhiều loại xe. Việc xác định và hỗ trợ tất cả các giao thức CAN khác nhau đòi hỏi nỗ lực nghiên cứu và phát triển đáng kể. Một giải pháp là sử dụng các thư viện và framework CAN mở rộng, cung cấp hỗ trợ cho nhiều giao thức CAN khác nhau. Các giao thức SAE J1939, ISO 15765-4 (CAN), ISO 14230-4 (KWP) thường được sử dụng và cần được hỗ trợ.

III. Thiết Kế Phần Cứng Lập Trình Python Cho Chẩn Đoán CAN

Đồ án này tập trung vào việc thiết kế và lập trình một công cụ chẩn đoán sử dụng Raspberry Pi và ngôn ngữ lập trình Python. Raspberry Pi được chọn vì tính linh hoạt, chi phí thấp và khả năng kết nối với các thiết bị ngoại vi. Python được sử dụng vì cú pháp đơn giản, dễ học và có nhiều thư viện hỗ trợ giao tiếp CAN và hiển thị dữ liệu. Thiết kế phần cứng bao gồm việc kết nối Raspberry Pi với cổng OBD2 của xe thông qua một bộ chuyển đổi CAN-to-USB. Phần mềm được lập trình bằng Python để đọc dữ liệu CAN, giải mã nó và hiển thị nó trên màn hình. Việc sử dụng thư viện obd trong Python giúp đơn giản hóa quá trình giao tiếp với cổng OBD2. Giao diện người dùng được thiết kế để hiển thị các thông tin quan trọng một cách trực quan và dễ hiểu.

3.1. Lựa chọn và cấu hình Raspberry Pi cho ứng dụng chẩn đoán ô tô

Raspberry Pi là một máy tính nhỏ gọn và mạnh mẽ, phù hợp cho các ứng dụng nhúng như chẩn đoán ô tô. Việc lựa chọn phiên bản Raspberry Pi phù hợp phụ thuộc vào yêu cầu của ứng dụng. Raspberry Pi 4 Model B là một lựa chọn tốt vì nó có hiệu suất cao và nhiều cổng kết nối. Việc cấu hình Raspberry Pi bao gồm cài đặt hệ điều hành Raspbian, cài đặt các thư viện Python cần thiết và cấu hình kết nối mạng. Cần đảm bảo rằng Raspberry Pi được cung cấp đủ năng lượng và có một kết nối ổn định với cổng OBD2 của xe. Hệ điều hành Raspbian cung cấp môi trường phát triển thuận tiện.

3.2. Phát triển phần mềm Python để giao tiếp CAN và giải mã dữ liệu

Phần mềm Python là trái tim của công cụ chẩn đoán. Nó chịu trách nhiệm giao tiếp với cổng OBD2, đọc dữ liệu CAN, giải mã dữ liệu và hiển thị nó trên màn hình. Thư viện python-can cung cấp các chức năng cần thiết để giao tiếp với mạng CAN. Việc giải mã dữ liệu CAN đòi hỏi kiến thức về định dạng dữ liệu cụ thể được sử dụng bởi nhà sản xuất ô tô. Các thư viện như cantools có thể giúp đơn giản hóa quá trình này. Giao diện người dùng có thể được xây dựng bằng các thư viện như Tkinter hoặc PyQt.

3.3. Sử dụng ELM327 để kết nối và đọc dữ liệu từ OBDII

ELM327 là một vi điều khiển phổ biến được sử dụng để giao tiếp với cổng OBDII trên ô tô. Nó hỗ trợ nhiều giao thức OBDII và cung cấp một giao diện đơn giản để truy cập dữ liệu chẩn đoán. Việc sử dụng ELM327 giúp đơn giản hóa quá trình kết nối với xe và đọc dữ liệu từ các cảm biến. ELM327 có thể được kết nối với Raspberry Pi thông qua cổng USB hoặc Bluetooth. Các lệnh AT được sử dụng để cấu hình và điều khiển ELM327. Dữ liệu đọc được từ ELM327 có thể được xử lý và hiển thị bằng phần mềm Python.

IV. Kết Quả Thử Nghiệm So Sánh Hiệu Quả Chẩn Đoán Thực Tế

Sau khi thiết kế và lập trình xong, công cụ chẩn đoán được thử nghiệm trên một số xe ô tô khác nhau. Kết quả thử nghiệm cho thấy công cụ có khả năng đọc và giải mã dữ liệu CAN một cách chính xác, hiển thị các thông tin quan trọng một cách trực quan và xác định các mã lỗi. So sánh với các công cụ chẩn đoán chuyên nghiệp, công cụ này có hiệu suất tương đương trong việc đọc và giải mã dữ liệu CAN, nhưng có chi phí thấp hơn đáng kể. Tuy nhiên, công cụ này còn hạn chế về số lượng giao thức CAN được hỗ trợ và tính năng chẩn đoán nâng cao. Việc cải thiện những hạn chế này sẽ là mục tiêu của các nghiên cứu trong tương lai.

4.1. Đánh giá độ chính xác của dữ liệu đọc từ mạng CAN

Độ chính xác của dữ liệu đọc từ mạng CAN là yếu tố quan trọng để đảm bảo tính tin cậy của công cụ chẩn đoán. Để đánh giá độ chính xác, dữ liệu đọc được từ công cụ này được so sánh với dữ liệu đọc được từ các công cụ chẩn đoán chuyên nghiệp. Kết quả cho thấy sự tương đồng cao giữa hai bộ dữ liệu, cho thấy công cụ này có khả năng đọc dữ liệu CAN một cách chính xác. Các sai lệch nhỏ có thể do sự khác biệt trong thuật toán giải mã hoặc lỗi trong quá trình truyền dữ liệu.

4.2. So sánh khả năng chẩn đoán lỗi với các công cụ chuyên nghiệp

Khả năng chẩn đoán lỗi là một trong những chức năng quan trọng của công cụ chẩn đoán. Để so sánh khả năng chẩn đoán lỗi, công cụ này được sử dụng để xác định các mã lỗi trên một số xe ô tô khác nhau. Kết quả cho thấy công cụ này có khả năng xác định hầu hết các mã lỗi phổ biến, nhưng còn hạn chế trong việc xác định các mã lỗi đặc biệt hoặc các lỗi phức tạp. Các công cụ chẩn đoán chuyên nghiệp có lợi thế về số lượng mã lỗi được hỗ trợ và tính năng chẩn đoán nâng cao.

V. Kết Luận Hướng Phát Triển Cho Hệ Thống Chẩn Đoán Ô Tô

Đồ án này đã thành công trong việc xây dựng một công cụ chẩn đoán ô tô cơ bản sử dụng Raspberry Pi và Python. Công cụ này có khả năng đọc và giải mã dữ liệu CAN, hiển thị các thông tin quan trọng một cách trực quan và xác định các mã lỗi. Tuy nhiên, vẫn còn nhiều hướng phát triển tiềm năng cho công cụ này. Trong tương lai, công cụ này có thể được cải thiện để hỗ trợ nhiều giao thức CAN hơn, cung cấp các tính năng chẩn đoán nâng cao hơn và tích hợp với các dịch vụ đám mây. Việc phát triển một giao diện người dùng thân thiện hơn và hỗ trợ nhiều ngôn ngữ khác nhau cũng là những mục tiêu quan trọng.

5.1. Các hạn chế và khó khăn trong quá trình thực hiện đồ án

Trong quá trình thực hiện đồ án, có một số hạn chế và khó khăn gặp phải. Việc tìm kiếm thông tin về giao thức CAN cụ thể được sử dụng bởi các nhà sản xuất ô tô khác nhau là một thách thức. Việc xây dựng một giao diện người dùng trực quan và dễ sử dụng cũng đòi hỏi nhiều thời gian và nỗ lực. Ngoài ra, việc kiểm tra và xác thực tính chính xác của dữ liệu đọc từ mạng CAN là một quá trình phức tạp và tốn kém.

5.2. Đề xuất các hướng nghiên cứu và cải tiến trong tương lai

Có nhiều hướng nghiên cứu và cải tiến tiềm năng cho công cụ chẩn đoán ô tô này. Một hướng đi là tập trung vào việc hỗ trợ nhiều giao thức CAN hơn, bao gồm cả các giao thức độc quyền được sử dụng bởi các nhà sản xuất ô tô khác nhau. Một hướng đi khác là phát triển các tính năng chẩn đoán nâng cao hơn, chẳng hạn như khả năng thực hiện các bài kiểm tra chẩn đoán và điều khiển các bộ phận của xe. Tích hợp với các dịch vụ đám mây có thể cung cấp khả năng lưu trữ dữ liệu, phân tích dữ liệu và chẩn đoán từ xa. Cuối cùng, việc phát triển một giao diện người dùng thân thiện hơn và hỗ trợ nhiều ngôn ngữ khác nhau sẽ làm cho công cụ này dễ tiếp cận hơn với người dùng.

5.3. Ứng dụng thực tế của hệ thống trong garage và cho người dùng cá nhân

Hệ thống chẩn đoán ô tô này có thể được sử dụng trong các garage để giúp kỹ thuật viên chẩn đoán và sửa chữa xe một cách nhanh chóng và hiệu quả. Nó cũng có thể được sử dụng bởi người dùng cá nhân để theo dõi tình trạng xe của họ và phát hiện các vấn đề tiềm ẩn trước khi chúng trở nên nghiêm trọng. Hệ thống có thể cung cấp thông tin về các thông số quan trọng của xe như nhiệt độ động cơ, áp suất dầu, và mức tiêu thụ nhiên liệu. Nó cũng có thể được sử dụng để đọc và xóa các mã lỗi, giúp người dùng tự khắc phục các sự cố nhỏ.

22/09/2025

Trích đoạn nội dung tài liệu

Đặt vấn đề Chương 2: Cơ sở lý thuyết Chương 3: Thiết kế phần cứng và lập trình Chương 4: Kết quả thực nghiệm Chương 5: Kết luận và hướng phát triển 2 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. Mạng CAN CAN được phát triển lần đầu tiên bởi Robert Bosch GmbH, Đức vào năm 1986 khi họ được Mercedes yêu cầu phát triển một hệ thống liên lạc giữa ba ECU (bộ điều khiển điện tử) trên xe. Họ nhận thấy rằng UART không còn phù hợp trong tình huống này vì nó được sử dụng trong giao tiếp điểm – điểm. Nhu cầu về một hệ thống liên lạc đa chủ trở nên cấp thiết.

Bởi vậy, mạng CAN đầu tiên đã xuất hiện vào năm 1987 bởi Intel chế tạo. Về mặt lý thuyết, CAN có thể liên kết tới 2032 thiết bị (giả sử một nút với một mã ID) trên một mạng duy nhất. Nó cung cấp tốc độ truyền thông tốc độ cao lên đến 1 Mbits / giây do đó cho phép điều khiển thời gian thực. Ngoài ra, tính năng hạn chế lỗi và phát hiện lỗi làm cho nó đáng tin cậy hơn trong môi trường nhiễu nghiêm trọng.

Dựa trên đặc điểm thông số kỹ thuật của Bosch.0 của CAN được chia thành hai phần: CAN tiêu chuẩn (Phiên bản 2.0A): sử dụng ID (Identifier) 11 bit. CAN mở rộng (Phiên bản 2.0B): sử dụng ID 29 bit. Hai phần được định nghĩa bởi các ID khác nhau của thông điệp, với sự khác biệt chính là độ dài mã ID. Có hai tiêu chuẩn ISO cho CAN.

Sự khác biệt là ở lớp vật lý: ISO 11898 xử lý các ứng dụng tốc độ cao lên đến 1Mbit / giây và ISO 11519 có giới hạn trên là 125kbit / giây. Ưu điểm của CAN Đơn giản, chi phí thấp: bus CAN chỉ có 2 dây giúp kết nối các module điều khiển với nhau dễ dàng hơn khi so sánh với cách làm truyền thống. Kèm theo đó là nhiều lợi ích về việc dễ lắp đặt và dễ sửa chữa, bảo trì khi có sự cố. 3 Tạo ra một giao thức chung: để nhiều nhà cung cấp khác nhau có thể phát triển các module điều khiển tương thích với nhau Tính ưu tiên của thông điệp (Prioritization of messages): mỗi thông điệp được truyền ra từ một nút (node) hay trạm (station) trên bus CAN đều có mức ưu tiên.

Khi nhiều thông điệp được truyền ra bus cùng lúc thì thông điệp có mức ưu tiên cao nhất sẽ được truyền. Cá thông điệp có mức ưu tiên thấp hơn sẽ tạm dừng và được truyền lại khi bus rảnh. Việc xác định mức ưu tiên của thông điệp dựa trên cấu tạo (cấu trúc) thông điệp và cơ chế phân xử quy định trong chuẩn chuẩn CAN. Cấu hình linh hoạt: cho phép thiết lập cấu hình thời gian bit, thời gian đồng bộ, độ dài dữ liệu truyền, dữ liệu nhận, … Nhận dữ liệu đa điểm với sự đồng bộ thời gian: một thông điệp có thể được nhận bởi nhiều node khác nhau trong bus cùng lúc.

Tất cả các node trên bus đều có thể thấy thông điệp đang truyền trên bus, tùy vào cấu hình ở mỗi node mà node sẽ quyết định có chấp nhận thông điệp này hay không. Nhiều master (multimaster) Phát hiện và báo hiệu lỗi: Mỗi thông điệp có kèm theo mã CRC (Cyclic Redundancy Code) để thực hiện kiểm tra lỗi. Nếu lỗi xuất hiện, node nhận sẽ bỏ qua thông điệp lỗi và truyền khung báo lỗi (error frame) lên bus CAN. Mỗi node trong bus có bộ đếm quản lý lỗi truyền nhận riêng để xác định trạng thái lỗi của chính nó.

Nếu lỗi xuất hiện quá nhiều, một node có thể tự động ngắt khỏi bus. Ngoài ra còn một số dạng lỗi khác có thể được phát hiện với chuẩn CAN. Tự động truyền lại các thông điệp bị lỗi khi bus rảnh: Một thông điệp được truyền ra bus nếu bị lỗi thì sẽ không mất đi mà node truyền thông điệp này sẽ giữ nó lại và tự động phát lại thông điệp này khi bus CAN rảnh cho đến khi thành công. Điều này giúp đảm bảo tính toàn vẹn dữ liệu trong bus.

Hoạt động và nguyên tắc CAN sử dụng CSMA / CD + AMP (Carrier Sense Multiple Access / Collision Detection with Arbitration on Message Priority). Trước khi gửi thông điệp, nút CAN sẽ kiểm tra xem bus có bận không. Nó cũng sử dụng để phát hiện khả năng trùng lặp. Những phương thức này cũng tương tự như Ethernet.

Tuy nhiên, khi một mạng Ethernet phát hiện xung đột, cả hai nút gửi sẽ ngừng truyền. Sau đó, nó đợi một khoảng thời gian trễ ngẫu nhiên trước khi thử gửi lại. Điều này làm cho mạng Ethernet rất nhạy cảm với tải bus cao. Có thể giải quyết vấn đề này với nguyên tắc xác định quyền ưu tiên rất thông minh trong mạng CAN.

Thông điệp dữ liệu được truyền từ bất kỳ nút nào trên bus CAN không chứa địa chỉ của nút truyền hoặc của bất kỳ nút nhận dự kiến nào. Thay vào đó, nội dung của thông điệp được gắn nhãn bởi một số nhận dạng (ID) là duy nhất trên toàn mạng. Tất cả các nút khác trên mạng đều nhận được thông điệp và mỗi nút thực hiện kiểm tra sự chấp nhận trên mã ID để xác định xem thông điệp có liên quan đến nút đó hay không. Nếu thông điệp có liên quan, nó sẽ được xử lý; nếu không thì nó bị bỏ qua.

Các loại CAN Frame và giao thức CAN Dữ liệu CAN được truyền dưới dạng các Frame (khung). Có 4 loại Frame khác nhau, đó là: Data Frame (khung dữ liệu): là khung mang dữ liệu từ một bộ truyền dữ liệu đến các bộ nhận dữ liệu. Khung này có vùng để mang các byte dữ liệu. 1: Dữ liệu CAN dưới dạng các khung ( Frame ) Remote Frame (khung yêu cầu hay điều khiển): là khung được truyền từ một Node bất kỳ để yêu cầu dữ liệu từ Node khác.

Khi Node khác đó nhận được yêu cầu sẽ truyền lại dữ liệu có ID (Identifier) trùng với ID được gửi trong Remote Frame. Error Frame (khung lỗi): là khung được truyền bởi bất kỳ Node nào khi Node đó phát hiện lỗi từ Bus. 6 Overflow Frame (khung báo tràn): mỗi Node trong CAN Bus có thể truyền bất kỳ khi nào nếu phát hiện Bus rảnh. Hoặc nếu một Node nhận quá nhiều dữ liệu và không xử lý kịp, nó sẽ gửi Frame này để các Node khác không gửi thêm dữ liệu cho nó.

Data Frame và Remote Frame làm việc theo cơ chế phân xử quyền ưu tiên của tín hiệu vì thế cấu trúc của chúng có vùng phân xử quyền ưu tiên, nơi chứa ID của khung. Và chúng có hai định dạng khác nhau là định dạng chuẩn (Standard) và định dạng mở rộng (Extended): Định dạng khung chuẩn sử dụng ID có độ dài 11 bit. Định dạng khung mở rộng sử dụng ID có độ dài 29 bit. Giao thức CAN hiện có: CAN 2.

Sự khác biệt giữa các loại giao thức CAN nằm trong cấu trúc của các loại khung (Frame). 2: Giao thức CAN 2. 3: Giao thức CAN 2. Các tính năng và chuẩn CAN ISO 11898 Signal Recessive state Dominant State Unit Min Norminal Max Min Norminal Max CAN-H 2.

1: Giá tri CAN ISO 11898 ISO 11519 Signal Recessive state Dominant State Unit Min Norminal Max Min Norminal Max CAN-H 1. 2: Giá trị CAN ISO 11519 8 Các độ dài bus khác nhau và tốc độ bit tối đa tương ứng Chiều dài Bus (m) Tốc độ Bit rate tối đa (bit/s) 40 1 Mbit/s 100 500 kbit/s 200 250 kbit/s 500 125 kbit/s 6km 10 kbit/s Bảng 2. 3: Độ dài Bus CAN và tốc độ Bit Các tính năng BasicCAN Ứng dụng điền vào thanh ghi Tx hoàn chỉnh bao gồm ID, RTR, Truyền datalength, data -> mọi ID đều có thể được truyền Mọi thông điệp CAN đều có thể được nhận Thông thường có hai bộ đệm nhận trong cấu trúc FIFO Nhận Lọc thông điệp. Thông thường không thể thiết lập bộ lọc để chỉ những thông điệp đặc biệt được cho qua -> ứng dụng phải thực hiện lọc lần cuối Xử lý Remote Remote Frame được ứng dụng để phản hồi Frame Ghi đè Giữ lại thông điệp cũ nhất (thông điệp mới hơn sẽ bị mất) Bảng 2.

4: Tính năng BasicCAN 9 Tính năng FullCAN Truyền hộp thư được khởi tạo một lần Truyền Chỉ các byte dữ liệu được ghi trước khi truyền Chỉ những thư có ID được xác định trong hộp thư nhận mới có thể nhận được Nhận Không có bộ đệm kép cho hộp thư Lọc chấp nhận hoàn toàn (chỉ những ID thư chính xác mới được thông qua) Xử lý Remote Remote Frame được trả lời tự động bởi bộ điều khiển Frame Ghi đè Giữ lại thông điệp mới nhất (các thông điệp cũ có cùng ID sẽ bị mất) Bảng 2. 5: Tính năng FullCAN 2. Khái niệm Hình 2. 4: Biểu tượng ngôn ngữ lập trình Python Python là một ngôn ngữ khá cũ được tạo ra bởi Guido Van Rossum.

Thiết kế bắt đầu vào cuối những năm 1980 và được phát hành lần đầu tiên vào tháng 2 năm 1991. Qua quá trình phát triển xuyên suốt bao năm nay, Python đã trở thành một trong những ngôn ngữ hàng đầu với những tính năng chính sau đây: 10 Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng. Nó dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác như C++, Java, C#. Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào những giải pháp chứ không phải cú pháp.

Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậm chí là dùng nó cho mục đích thương mại. Vì là mã nguồn mở, bạn không những có thể sử dụng các phần mềm, chương trình được viết trong Python mà còn có thể thay đổi mã nguồn của nó. Python có một cộng đồng rộng lớn, không ngừng cải thiện nó mỗi lần cập nhật. Các phiên bản Python đã phát hành: - Python 1.0 tháng Giêng, 1994 - Python 1.5 31 tháng 12, 1997 - Python 1.6 5 tháng 9, 2000 - Python 2.0 16 tháng 11, 2000 - Python 2.1 17 tháng 4, 2001 - Python 2.2 21 tháng 12, 2001 - Python 2.3 29 tháng 7, 2003 - Python 2.4 30 tháng 11, 2004 - Python 2.5 19 tháng 9, 2006 - Python 2.6 1 tháng 11, 2008 - Python 2.7 3 tháng 7, 2010 - Python 3.0 3 tháng 12, 2008 - Python 3.1 27 tháng 6, 2009 - Python 3.2 20 tháng 2, 2011 - Python 3.3 29 tháng 9, 2012 - Python 3.4 16 tháng 3, 2014 - Python 3.5 13 tháng 9, 2015 11 - Python 3.6 23 tháng 12, 2016 - Python 3.7 27 tháng 6, 2018 - Python 3.8 24 tháng 9 năm 2020 - Python 3.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ