2.3.1. S lược lịch sử mạng CAN
CAN là một giao thức giao tiếp nối tiếp hỗ trợ mạnh cho những hệ thống điều khiển phân bố theo thời gian thực với độ ổn định, bảo mật và khả năng chống nhiễu cực kì tốt.
CAN được Bosch Gmbh phát triển từ năm 1983, sau đó đã chính thức ra mắt vào năm 1986 và được công nhận bởi SAE hiệp hội các kĩ sư ô tô Mĩ, có trụ sở đặt tại Detroit Michigan.
Vào những năm đầu tiên sau khi ra mắt, Intel và Philips là 02 nhà sản xuất đầu tiên sản xuất chip xử lý cho CAN (1987) và Mercedes-Benz W140 là chiếc ô tô thương mại đầu tiên được trang bị CAN. Ngày nay, gần như toàn bộ các dòng ô tô hiện đại đều có hỗ trợ CAN và hầu như tất các các nhà sản xuất chip lớn trên thế giới đều sản xuất ra các dòng chip có tích hợp CAN như Siemens, Motorola, NEO, Infineon, Mitsubishi, TI…
Ngoài nền công nghiệp ô tô, CAN còn được ứng dụng rộng rãi trong các ngành công nghiệp tự động hóa, đóng tàu, tàu ngầm, nông nghiệp, y khoa...nhờ vào các ưu điểm về độ tin cậy của mình.
Từ lúc giới thiệu lần đầu đến hiện tại, Bosch đã cho ra rất nhiều phiên bản khác nhau cho CAN, nhưng đại ý có thể tóm lại đơn giản như sau:
-CAN 1.0 -CAN 2.0
+ CAN 2.0 A : CAN tiêu chuẩn, 11-bit ID.
+ CAN 2.0 B tiêu chuẩn: CAN tiêu chuẩn, 11-bit ID. + CAN 2.0 B mở rộng: CAN mở rộng, 29-bit ID.
41 Vào năm 1993, hiệp hội ISO đã phát hành tài liệu tiêu chuẩn hóa cho CAN thông qua ISO 11898 (Cần lưu ý rằng tiêu chuẩn của ISO không phải là toàn bộ các đặc tính của CAN mà Bosch qui định).
-ISO 11898-1: CAN lớp liên kết – dữ liệu _ CAN tốc độ cao. -ISO 11898-2: CAN lớp vật lý _ CAN tốc độ cao.
-ISO 11898-3: CAN lớp vật lý _ CAN tốc độ thấp.
Theo sau ISO 11898, còn rất nhiều phiên bản khác nhằm tiêu chuẩn hóa CAN tính đến thời điểm hiện tại.
2.3.2. Chuẩn giao thức CAN
Chuẩn đầu tiên của CAN là ISO 11898 nhằm định nghĩa các đặc tính của CAN, bao gồm cả CAN tốc độ cao và CAN tốc độ thấp.
2.3.2.1. Truyền tốc độ thấp
CAN-B được định nghĩa trong tiêu chuẩn ISO 11898-3 và hoạt động ở tốc độ bit từ 5 đến 125kbit/s. Nhiều ứng dụng trong phạnm vi thân xe và thoái mái/ tiện nghi. Tốc độ này đủ thỏa các yêu cầu về thời gian thực đòi hỏi trong phạm vi này. Ví dụ các ứng dụng như là:
-Điều khiển hệ thống máy điều hòa. -Điều chỉnh ghế ngồi.
-Bộ cửa sổ tự động.
-Điều kiển cửa trượt trên nóc xe. -Điều chỉnh gương.
-Hệ thống đèn.
-Điêu khiển hệ thống lái.
CAN bus cũng được thấy sử dụng trong chuẩn đoán xe. Ở đây bộ điều khiển điện tử được kết nối trực tiếp với CAN bus từ đó nhận thông tin nó cần cho việc chuẩn đoán ngay tức thì. Các giao diện chuẩn đoán trước đây (KWP 2000) đang trở nên ít phổ biến đi.
2.3.2.2. Truyền tốc độ cao
CAN-C được định nghĩa trong tiêu chuẩn ISO 11898-2 và hoạt động với tốc độ 125kbit/s đến 1Mbit/s. Do đó truyền dữ liệu có thể thỏa các yêu cầu về thời gian thực của hộp số truyền lực.
42 -Hệ thống kiểm soát động cơ (Motronic cho động cơ xăng và động cơ diesel điều
khiển điện tử).
-Điều khiển hệ thống truyền lực bằng điện tử. -Các hệ thống cân bằng xe (ESP).
-Cụm thiết bị.
2.3.2.3. Các mức trạng thái trội và lặn
Trạng thái trội của CAN được định nghĩa: Là trạng thái mà tại đó, giá trị điện áp của bus được chủ động thay đổi bởi nút CAN muốn truyền tín hiệu. Giá trị tương ứng của trạng thái này là 0.
Trạng thái lặn của CAN được định nghĩa: Là trạng thái mà tại đó, giá trị điện áp của bus bị động trả về giá trị mặc định bởi điện trở cuối. Trạng thái lặn chỉ xảy ra khi không có bất kì nút CAN nào muốn truyền tín hiệu. Giá trị tương ứng của trạng thái này là 1.
Đối với CAN tốc độ cao và CAN tốc độ thấp, giá trị của 02 trạng thái trội và lặn là hoàn toàn khác nhau, nhưng cách định nghĩa vẫn giống nhau.
43
Hình 2. 25 Điện áp hoạt động trên hai dây CAN_H và CAN_L CAN tốc độ thấp
Bảng 2. 2 Giá trị điện áp trên hai dây CAN_H vá CAN_L
CAN tốc độ cao CAN tốc độ thấp
CAN H CAN L CAN H CAN L
Tốc độ 125kb/s đến 1 Mb/s 125kb/s
Trạng thái trội 0 3.25 V 1.5 V 4 V 1 V Trạng thái lặn 1 2.5 V 2.5 V 1.75 V 3.25 V
Mức điện áp 5 V 5 V
Cable 2 x 120 Ω Mắc điện trở lại từng nút Độ lệch điện áp Độ lệch tối thiểu là
2.0 V (Tính từ 3.5 V và
1.5 V)
Điện áp vi sai trội > 2.5 V Điện áp vi sai trội < 0.6 V
Mạng CAN trên ô tô là một mạng lưới được tạo thành bởi một nhóm các nút CAN, mỗi nút có thể giao tiếp với bất kì nút nào khác trong mạng. Việc giao tiếp được thực hiện bằng việc truyền đi và nhận các tin nhắn, mỗi tin nhắn trong CAN đều có một ID riêng để thực hiện mức độ ưu tiên của nó. Đó cũng là lý do để ta nói mạng CAN là một hệ thống giao tiếp dạng dựa theo tin nhắn.
2.3.3. C chế giao tiếp
Đặc trưng của CAN là phương pháp định địa chỉ và giao tiếp hướng đối tượng, trong khi hầu hết các hệ thống Bus trường khác đều giao tiếp dựa vào địa chỉ các trạm. Mỗi thông tin trao đổi trong mạng được coi như một đối tượng, được gán một số mã ID.
44 Thông tin được gửi đi trên Bus theo kiểu truyền thông báo với độ dài có thể khác nhau. Các thông báo không được gửi tới một địa chỉ nhất định mà bất cứ trạm nào cũng có thể nhận theo nhu cầu. Nội dung mỗi thông báo được các trạm phân biệt qua một mã ID. Mã ID không nói lên địa chỉ đích của thông báo, mà chỉ biểu diễn ý nghĩa của dữ liệu trong tin nhắn. Vì thế, mỗi trạm trên mạng có thể tự quyết định tiếp nhận và xử lý tin nhắn hay không tiếp nhận tin nhắn qua phương thức lọc tin nhắn. Cũng nhờ sử dụng phương thức lọc tin hắn, nhiều trạm có thể đồng thời cùng nhận một tin nhắn và có các phản ứng khác nhau. Một trạm có thể yêu cầu một trạm khác gửi dữ liệu bằng cách gửi một khung yêu cầu. Trạm có khả năng cung cấp nội dung thông tin đó sẽ gửi trả lại một khung chứa dữ liệu có cùng mã ID với khung yêu cầu. Cùng với tính năng đơn giản, cơ chế giao tiếp hướng đối tượng ở CAN còn mang lại tính linh hoạt và tính nhất quán dữ liệu của hệ thống. Một trạm CAN không cần biết thông tin cấu hình hệ thống (ví dụ địa chỉ trạm). Nên việc bổ xung hay bỏ đi một trạm trong mạng không đòi hỏi bất cứ một sự thay đổi nào về phần cứng hay phần mềm ở các trạm khác. Trong mạng CAN, có thể chắc chắn rằng một tin nhắn hoặc được tất cả các trạm quan tâm tiếp nhận đồng thời, hoặc không được trạm nào tiếp nhận. Tính nhất quán dữ liệu được đảm bảo qua các phương pháp gửi đồng loạt và xử lý lỗi.
2.3.4. Cấu trúc bức điện
CAN sử dụng phương thức định địa chỉ theo đối tượng. Các đối tượng được hiểu ở đây chính là đại diện cho các thông báo mang dữ liệu quan tâm như giá trị đo, giá trị điều khiển, thông tin trạng thái. Mỗi đối tượng thông báo có một tên riêng biệt, hay nói cách khác là là một ID được sử dụng để truy cập trên Bus. Mỗi bức điện sẽ có một ô chứa căn cước của đối tượng với chiều dài 11 bit (dạng khung chuẩn theo (CAN2.0A) hoặc 29 bit (khung mở rộng CAN2.0B). CAN định nghĩa 4 kiểu bức điện sau:
2.3.4.1. Khung tiêu chuẩn
45 Khung dữ liệu: mang dữ liệu từ một trạm truyền tới các trạm nhận. Khung dữ liệu là dạng khung thường gặp nhất vì tất cả các tin nhắn đều được truyền đi dưới dạng khung này.
Khung yêu cầu dữ liệu: được gửi từ một trạm yêu cầu truyền khung dữ liệu với cùng mã ID.
Khung lỗi: được gửi từ bất kỳ trạm nào phát hiện lỗi bus.
Khung quá tải: được sử dụng nhằm tạo một khoảng cách thời gian bổ sung giữa hai khung dữ liệu hoặc yêu cầu dữ liệu trong trường hợp một trạm bị quá tải.
Các khung dữ liệu và yêu cầu dữ liệu có thể sử dụng ở cả dạng khung chuẩn và dạng khung mở rộng. Giữa hai khung dữ liệu hoặc yêu cầu dữ liệu cần một khoảng cách ít nhất là 3 bít lặn để phân biệt được gọi khoảng nghỉ của khung. Trong trường hợp quá tải khoảng cách này sẽ lớn hơn bình thường.
2.3.4.1.1. Khung dữ liệu/Yêu cầu dữ liệu
Mỗi khung dữ liệu có thể mang từ 0 đến 8 byte dữ liệu sử dụng. Khung yêu cầu dữ liệu cũng có cấu trúc tương tự như khung dữ liệu, nhưng không mang dữ liệu và khác với khung dữ liệu ở bit cuối của ô phân xử - RTR.
Hình 2. 27 Minh họa bit bắt đ u khung dữ liệu
Khởi đầu khung là một bit trội và đánh dấu khởi đầu của một khung dữ liệu hoặc khung yêu cầu dữ liệu. Tất cả các trạm sẽ phải đồng bộ hóa dựa vào bit khởi đầu này.
Bắt đầu khung có độ dài 1 bit Luôn nằm ở đầu khung.
Khi một nút CAN muốn gửi một tin nhắn nào đó thì nút đó sẽ đặt SOF trạng thái trội 0 để thông báo cho các nút khác.
SOF còn có nhiệm vụ bắt đầu quá trình đồng bộ giữa các nút (tính từ thời điểm xuất hiện cạnh xuống chuyển từ trạng thái lặn sang trội) đồng thời báo hiệu quá trình phân xử sắp diễn ra.
46 Quá trình đồng bộ theo cạnh mới vừa đề cập chính là tái đồng bộ cứng.
Hình 2. 28 Minh họa vùng phân xử
Vùng phân xử được sử dụng là mức ưu tiên của bức điện ID CAN càng nhỏ thì có mức ưu tiên càng cao.
Quyết định quyền truy nhập bus khi có nhiều tin nhắn được gửi đi đồng thời. Trường phân xử có chiều dài 12 bit đối với dạng khung chuẩn và 32 bit đối với dạng khung mở rộng trong đó ID dài 11 bit hoặc 29 bit. Bit cuối cùng của ô phân xử được gọi là bit RTR, dùng để phân biệt giữa khung dữ liệu (là bit trội) và khung yêu cầu dữ liệu (là bit lặn).
Bất cứ một trạm nào trong mạng cũng có thể bắt đầu gửi tin nhắn, mỗi khi đường truyền rỗi. Mỗi bức điện đều bắt đầu bằng một bít khởi điểm và mã ID, vì thế nếu hai hoặc nhiều trạm cùng đồng thời bắt đầu gửi tin nhắn, việc xung đột trên đường truyền sẽ được phân xử dựa theo từng bit của ID. Mỗi bộ thu phát đều phải so sánh mức tín hiệu của mỗi bit gửi đi với mức tín hiệu quan sát được trên bus. Nếu hai mức tín hiệu có trạng thái logic giống nhau thì trạm có quyền phát bit tiếp theo, trường hợp ngược lại sẽ phải dừng ngay lập tức.
Trong trường hợp thực hiện bit giá trị 0 ứng với mức trội và bit giá trị 1 ứng với mức lặn, bit 0 sẽ lấn át. Vì vậy, một thông báo có mã ID nhỏ nhất sẽ được tiếp tục phát hay nói cách khác, thông báo nào có mã ID càng bé thì mức ưu tiên càng cao. Trong trường hợp xảy ra va chạm giữa một tin nhắn mang dữ liệu và một thông báo yêu cầu gửi dữ liệu với cùng mã ID, tin nhắn mang dữ liệu sẽ được ưu tiên. Phương thức phân xử này không những đảm bảo thông tin không bị mất mát, mà còn nâng cao hiệu quả sử dụng đường truyền.
Lưu ý rằng CAN hoàn toàn không định nghĩa về việc phân chia ID cho từng hệ thống cụ thể, mà chỉ đơn giản đề cập đến việc sử dụng CAN ID cho vấn đề phân xử mà thôi.
47
Hình 2. 29 M ID được ưu tiên truyền trên đường bus
Hình 2. 30 Minh họa ùng điều khiển dữ liệu
Vùng điều khiển có tổng chiều dài 6 bit, IDE bit trội nếu là khung tiêu chuẩn (bit 0), khung mở rộng bit lặn (bit 1) khi khung tiêu chuẩn và khung mở rộng cùng truyền một lúc thì khung tiêu chuẩn sẽ được ưu tiên (bit 0), r0 bit không sử dụng để sự dụng cho mục đích tương lai, 4 bít cuối mã hóa chiều dài dữ liệu. Có nhiệm vụ qui định số byte của trường dữ liệu.
DLC chỉ được mang giá trị (tính theo decimal) từ 0 đến 8, tương ứng với 8 byte dữ liệu. Hoàn toàn có thể có trường hợp khung không chứa bất kì dữ liệu nào (DLC = 0).
Sự mã hóa số byte dữ liệu bởi mã độ dài dữ liệu DLC Viết tắt : d = ‘dominant’ (trội)
48
Hình 2. 31 Mã hóa chiều dài dữ liệu
Hình 2. 32 Vùng chứa dữ liệu
Vùng dữ liệu có chiều dài từ 0 đến 8 byte, vùng dữ liệu chính là vùng chứa dữ liệu mà khung cần truyền, trong đó mỗi byte được truyền đi theo thứ tự từ bit có giá trị cao nhất (MSB) đến bít có giá trị thấp nhất (LSB). Độ dài của vùng dữ liệu phải tương ứng với giá trị của DLC. Nếu có sự khác biệt thì lỗi CAN sẽ được phát và dữ liệu truyền/nhận sẽ bị sai lệch.
Hình 2. 33 Vùng tính toán lỗi
CRC là vùng kiểm tra vòng lặp thừa, gồm 16 bit và được chia làm 02 phần: -Chuỗi CRC
49 + Được đánh dấu từ CRC-14 đến CRC-0.
+ Giá trị của CRC sẽ ứng với một phép tính, thực chất là một phép chia đa thức (chia bit nhị phân).
-Gờ ngăn cách CRC + Có độ dài 1 bit.
+ Vị trí của bit ngăn cách CRC luôn nằm ngay sau CRC-0.
+ Giá trị của bit ngăn cách CRC luôn là bit lặn nhằm làm nhiệm vụ phân cách vùng CRC với vùng liền kề nó.
Một chuỗi CRC cho phép hệ thống kiểm tra sự nguyên vẹn của dữ liệu truyền. Tất cả các nút nhận dữ liệu đều phải thực hiện bước này.
Vùng dữ liệu được đưa vào để tính toán CRC là: (không bao gồm các bit được nhồi). -Bit khởi đầu khung.
-Trường phân xử.
-Vùng điều khiển dữ liệu chỉ đối với khung yêu cầu dữ liệu. -Vùng dữ liệu chỉ đối với khung dữ liệu.
Trên thực tế, độ dài cực đại của khung không được vượt quá 215 bit cho một chuỗi CRC 15 bit.
Quá trình tính toán CRC thực chất là một phép chia nhị phân sử dụng modulo -2 (là một dạng phép toán tìm phần dư của phép chia 2 số, còn gọi là modulus).
Lưu ý rằng mã CRC chỉ phù hợp nhất đối với các chuỗi bit được kiểm tra có độ dài dưới 127 bit.
Đối với khung CAN, tổng bit cần tính CRC tối đa là 83 bit (tiêu chuẩn) và 103 bit (mở rộng).
Hình 2. 34 Vùng xác nhận
Vùng xác nhận có độ dài 02 bit và được chia làm 02 phần: -Rảnh ACK
50 + Có độ dài 1 bit.
+ Nút truyền khung CAN ban đầu sẽ đặt bit này ở giá trị lặn (ACK = 1).
+ Khi một hoặc nhiều nút nhận khung hoàn tất đầy đủ các dữ liệu trong trường dữ liệu mà không trả về lỗi nào đồng thời tính toán CRC chính xác, thì các nút đó sẽ phản hồi lại đến nút nhận thông qua ACK Slot bit.
+ Thông tin phản hồi được thể hiện qua việc các nút nhận khung sẽ kéo giá trị + ACK Slot thành bit trội (ACK = 0).
-Gờ ngăn cách ACK + Có độ dài 1 bit.
+ Có nhiệm vụ phân cách giữa phần ACK với phần khác liền kề sau nó.
Lưu ý, bit ACK Slot luôn được đặt giữa 02 bit lặn là gờ ngăn cách CRC và gờ ngăn cách ACK.