BỘ ĐIỀU KHIỂN CAN (CAN Controller)

Một phần của tài liệu Nghiên cứu và chế tạo mô hình mô phỏng hệ thống CAN trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 62)

4.3.1. Bộ điều khiển CAN độc lập

Hình 4.19: Cấu trúc tổng thể bộ điều khiển CAN

Những bộ phận chính trong bộ điều khiển: 1. Giao thức quản lý:

- Gói dữ liệu

- Mã hóa khung dữ liệu - Giải mã bit

- Phát hiện lỗi - Đồng bộ dữ liệu

- Thông báo nhận dữ liệu

2. Bộ lọc là bộ phận có chức năng lọc thông tin từ giao thức quản lý 3. Bộ đệm của dữ liệu nhận, số bộ đệm phụ thuộc vào ứng dụng

4. Bộ đệm của dữ liệu truyền,số bộ đệm này cũng phụ thuộc vào ứng dụng. 5. Giao diện CPU

50

4.3.2. Bộ điều khiển CAN tích hợp (Integrated CAN Controller)

Hình 4.20: Bộ điều khiển CAN tích hợp

51 Cấu trúc bộ điều khiển CAN tích hợp bao gồm: Bộ thu phát CAN, vi điều khiên. Cấu trúc bộ điều khiển CAN độc lập gần giống nhƣ bộ điều khiển CAN tích hợp. Bộ điều khiển CAN tích hợp sẽ có thêm một bộ vi điều khiển. Ngày nay bộ điều khiển CAN đƣợc trang bị thêm một số t nh năng:

- Ngắt việc truyền tin yêu cầu trong những trƣờng hợp đặc biệt nhƣ cảnh báo, nhận một thông tin mới, truyền thành công một th ng tin,…

- Giới hạn cảnh báo với những kiểu lỗi khác nhau.

4.4. HỆ THỐNG XỬ LÝ (IMPLEMENTATION) 4.4.1. Module cơ bản (Basic CAN) 4.4.1. Module cơ bản (Basic CAN)

Trong các module, hệ thống xử lý CAN cơ bản có chức năng tạo ra dãy bit đƣợc thực hiện bằng phần cứng. Ngoài ra hệ thống còn có bộ đệm để tạm thời lƣu trữ tin nhắn gửi hoặc nhận. Khi bộ đệm bị quá tải, bộ xử lý trung tâm phải đọc dữ liệu đã nhận trƣớc khi nhận dữ liệu mới. Ngoài ra bộ xử lý trung tâm sẽ chịu trách nhiệm cho việc lọc tin nhắn. Do đó, một phần bộ nhớ của module đƣợc sử dụng cho việc quản lý CAN. Module có hệ thống xử lý CAN cơ bản chỉ thích hợp với tốc độ bit thấp, truyền tải ít tin nhắn với tốc độ bit cao. Ƣu điểm của module so với module CAN đầy đủ là chip nhỏ và giá thành sản xuất thấp.

Hình 4.22: Module CAN cơ bản

52

4.4.2. Module CAN mới (Full CAN)

Module CAN mới là giao thức ƣu tiên trong trƣờng hợp hệ thống phải điều khiển một lƣợng lớn tin nhắn với tốc độ cao và bộ xử lý trung tâm kh ng có dung lƣợng dƣ cho việc truyền thông. Nó chứa thông tin của một số nút, thông tin đó là mã định danh và dữ liệu cụ thể của tin nhắn. Ngoài ra module có nhiệm vụ quyết định các tin nhắn đƣợc gửi bởi bộ điều khiển CAN. Nếu tin nhắn chƣa hoàn chỉnh sẽ đƣợc xử lý thêm. Nếu các tin nhắn có định danh khớp với thông tin của một số nút đã lƣu thì tin nhắn mới đƣợc chấp nhận (lọc tin nhắn).

Bộ điều khiển có module CAN mới rất hữu ích trong việc giao tiếp thông tin. Bởi vì bộ xử lý trung tâm có thể lọc tin nhắn của bộ điều khiển. Ngoài ra bộ điều khiển CAN có thể ghép nối tiếp với bộ vi điều khiển trong hệ thống xử lý dƣới dạng các module độc lập bằng bus địa chỉ/dữ liệu. Một bộ vi điều khiển mạnh sẽ có bộ điều khiển CAN tích hợp trên chip. Đây là kiểu ghép đ i bus có nhiều hiểu quả, vì vậy mọi ngƣời sử dụng rất phổ biến. Một dạng khác của module CAN là module không có bộ xử lý trung tâm. Nó có thể nhập hoặc xuất dữ liệu qua các cổng kết nối. Chúng thích hợp cho việc làm cảm biến hoặc cơ cấu chấp hành tích hợp trên Bus với chi phí thấp và module sẽ cần một thiết bị chủ để điều khiển.

Hình 4.23: Module CAN mới (Full CAN)

53

4.4.2.1. Bộ thu phát (Transceiver)

Bộ điều khiển CAN tạo ra các dãy bit từ tín hiệu nhị phân. Các dãy bit chƣa tƣơng ứng với mức điện áp yêu cầu của CAN Bus. Do đó module Can Bus hoặc bộ thu phát phải tạo ra tín hiệu khác nhau giữa CAN-L, CAN-H và điện áp tham chiếu Uref từ dãy tín hiệu nhị phận.

4.4.2.2. Chế độ ngủ (Sleep mode)

Hệ thống CAN Bus có thể sẵn sàng hoạt động ngay cả khi hệ thống đánh lửa tắt (động cơ tắt), các chức năng khác nhƣ radio, cửa xe, đèn xe vẫn có thể tiếp tục hoạt động. Do đó hệ thống CAN có ít nhất 30 nút hoạt động thƣờng trực. Sau khi động cơ tắt máy, một số nút CAN có thể chuyển sang chế độ nghỉ (Standby) để giảm tải các hệ thống điều khiển không cần thiết. Trong chế độ này, bộ phát của module thu phát đƣợc tắt nhằm giảm tiêu thu điện. Tuy nhiên bộ nhận vẫn hoạt động và kiểm tra các tin nhắn đang đƣợc gửi trên Bus. Nhƣ vậy bộ điều khiển CAN cũng chuyển sang chế độ nghỉ, chờ tin nhắn đánh thức và kích hoạt lại nút CAN.

4.5. QUY TRÌNH TRUYỀN DỮ LIỆU

Chúng ta sử dụng dữ liệu tốc độ động cơ làm v dụ minh họa cho quy trình truyền dữ liệu trên CAN. Hệ thống CAN dùng module CAN mới (Full-CAN).

Hình 4.24: Quá trình truyền và nhận dữ liệu (adsbygoogle = window.adsbygoogle || []).push({});

54

4.5.1. Truyền tải dữ liệu

Hệ thống điều khiển động cơ t nh toán tốc độ động cơ từ tín hiệu cảm biến tốc độ động cơ. Giá trị đƣợc tính một lần trong mỗi chu kỳ đốt. Giá trị đo đƣợc gửi vào bộ đệm nhận và bộ đệm truyền của bộ vi điều khiển (Hình 4.25a). Bộ vi điều khiển và bộ điều khiển CAN đƣợc ghép song song với nhau. Dữ liệu tốc độ động cơ sẽ đƣợc truyền từ bộ đệm truyền đến bộ đệm truyền của bộ điều khiển CAN theo chu ky (VD: 10ms một lần). Một cờ thông báo sẽ đƣợc truyền đến bộ điều khiển CAN thông báo tin nhắn sẵn sàng để gửi. Lúc này, hệ thống điều khiển động cơ đã hoàn thành một phần nhiệm vụ.

Khi dữ liệu tốc độ động cơ đƣợc lƣu trữ trong bộ đệm truyền thì bộ điều khiển CAN bắt đầu mã hóa khung CAN. Trên đƣờng dây RxD, bộ điều khiền CAN sẽ giám sát tình trạng của Bus. Nếu Bus rảnh thì nó sẽ tạo ra dãy bit để hƣớng đến bộ thu phát trên đƣờng dây TxD. Nếu Bus đang truyền dữ liệu thì bộ điều khiển CAN chờ để truy cập.

Từ dãy bit, bộ thu phát sẽ tạo ra tín hiệu với mức điện áp cần thiết cho hệ thống.

4.5.2. Nhận dữ liệu

Hệ thống điều khiển động cơ truyền tin nhắn chứa dữ liệu tốc độ động cơ đến các bộ thu phát của các hệ thống điều khiển khác trên Bus (Hình 4.25b). Tin nhắn đƣợc mã hóa dạng dãy bit truyền đến bộ điều khiển CAN trên đƣờng dây RxD.

Giai đoạn đầu tiên, bộ điều khiển CAN kiểm tra tin nhắn lỗi bằng phƣơng pháp tổng kiểm tra chuỗi CRC. Nếu tin nhắn không có lỗi thì mỗi nút sẽ phản hồi bằng sự xác nhận tin nhắn hợp lệ (ACK Check). Giai đoạn thứ hai, tin nhắn sẽ đi qua bộ lọc. Mỗi nút kiểm tra dịnh danh tin nhắn nhận có gửi đến một nút cụ thể hay không và dữ liệu tin nhắn có cần thiết hay không? Nếu tin nhắn không cần thiết thì tin nhắn sẽ bị loại bỏ. Mặt khác, tin nhắn cần thiết cho hệ thống điều khiển thì một là cờ th ng báo đƣợc truyền thông báo cho bộ vi xử lý tin nhắn đã sẵn sàng để mã hóa.

Ví dụ: Bảng táp lô tiếp nhận tin nhắn chứa dữ liệu tốc độ động cơ trên đƣờng truyền Bus, xử lý dữ liệu tốc độ động cơ và t n toán t n hiệu để kích hoạt cơ cấu chấp hành của đồng đồ hiển thị số vòng quay động cơ.

4.6. ĐẶC ĐIỂM CAN BUS

 Tuân theo tiêu chuẩn ISO 11898

 Giao tiếp theo mức độ ƣu tiên của dữ liệu  Tốc độ truyền dữ liệu tối đa 1Mbit/s

 Dung lƣợng dữ liệu: Mỗi tin nhắn có tối đa 8 byte

 Phản hồi theo thời gian thực: Giao thực CAN đáp ứng các yêu cầu về thời gian thực trong ô tô.

 Phƣơng pháp truy cập Bus không ảnh hƣởng đến dữ liệu  Hệ thống CAN tiêu thụ điện năng t

55  Thiết kế đơn giản và tiết kiệm với đ i dây xoắn

 Hệ thống CAN đạt độ tin cậy cao  Hệ thống CAN phát hiện lỗi và báo lỗi  Ngắt kết nối các nút bị lỗi

 Xử lý lỗi liên tục

 Ngăn chặn ngắn mạch tốt

Về mặt lý thuyết, số lƣợng nút không bị giới hạn. Tuy nhiên, hệ thống CAN có một số phát sinh nhƣ dung lƣợng của Bus và độ trễ của tin nhắn với dung lƣợng cao cần đƣợc gửi nên hệ thống CAN bị hạn chế về số nút.

56

CHƢƠNG 5: XỬ LÝ LỖI CỦA HỆ THỐNG CAN 5.1. CÁC VẤN ĐỀ CƠ BẢN

Hệ thống CAN phát hiện lỗi trong những tin nhắn đƣợc truyền để xác định tính trạng hoạt động của hệ thống. Sau đây là các bƣớc xử lý lỗi:

1. Phát hiện các lỗi của một nút hay cả hệ thống.

2. Trƣờng đi một cờ lỗi (Error Flag) hay tín hiệu thông báo lỗi cho cả hệ thống. 3. Khi xảy ra lỗi cả hệ thống, một cờ lỗi sẽ đuọc truyền sau khoảng phân cách cờ lỗi. 4. Các nút loại bỏ tin nhắn lỗi.

5. Số lỗi các bộ đếm lỗi của mỗi nút tăng lên. 6. Tin nhắn sẽ đƣợc tự động truyền lại.

Trong trƣờng hợp hệ thống CAN không có nút nào trong trạng thái lỗi bị động (Passive Error) hay trạng thái Bus Off thì CAN Bus đảm bảo tính nhất quán dữ liệu giữa các nút nhờ vào hệ thống xử lý lỗi. Trong trƣờng hợp lỗi của một nút, lỗi này sẽ đƣợc thông báo cho tất cả các nút còn lại bằng cách gửi đi một cờ lỗi.

Sau khi khung lỗi (Error Frame) kết thúc, nút sẽ truyền lại tin nhắn đã bị lỗi. Đƣờng truyền Bus không có tin nhắn nào có mức ƣu tiên vào hơn thì khung dữ liêu sẽ truyền lại sau ít nhất 23 bit time. Trong trƣờng hợp lỗi bị động, nút cần 32 bit time để khắc phục lỗi vì một thời gian Bus ở trạng thái treo khoảng 8 bit.

5.1.1. Phát hiện lỗi ảnh hƣởng đến hệ thống từ một nút

Hình 5.1: Nút thứ hai phát hiện lỗi khi nhận tin nhắn (adsbygoogle = window.adsbygoogle || []).push({});

Bộ tiếp nhận của nút thứ hai phát hiện một lỗi khi nhận tin nhắn và lập tức đi một cờ lỗi. Dựa vào cờ lỗi (6 bit) của nút thứ hai, các nút khác trên đƣờng truyền Bus nhận ra quy luật nhồi bit bị phá vỡ và cũng gửi đi một cờ lỗi. Sau khoảng phân cách lỗi và khoảng thời gian nghỉ (Intermission) thì bộ truyền truy cập Bus và truyền lại tin nhắn bị gián đoạn.

57

5.1.2. Chèn bit và xóa chèn (Bit-Stuffing and De-Stuffing)

Khi bộ truyền phát hiện một chuỗi năm bit liên tiếp cùng trạng thái trong tin nhắn, nó tự động chèn một bit ngƣợc lại. Sau khi nhận tin nhắn, bộ nhận sẽ tự động xóa bit đƣợc chèn. Tuy nhiên, nếu hệ thống CAN phát hiện năm bit liên tiếp nằm trong khung khởi động hoặc khoảng phân cách của khung CRC thì quy luật chèn bit đã bị lỗi. Khi đó bộ truyền sẽ truyền một khung lỗi để thông báo với các nút khác. Tin nhắn gián đoạn sẽ đƣợc truyền lại sau đó.

Hình 5.2: Quy luật chèn và xóa bit (Bit-Stuffing and De-Stuffing) 5.1.3. Sự thiếu hụt khoảng Hamming (Shortfall Hamming Distance)

Khoảng Hamming giữa hai dãy kí tự có chiều dài bằng nhau là số các ký tự ở vị trí tƣơng đƣơng khác nhau. Nói cách khác, khoảng cách Hamming đo số lƣợng thay thế cần phải có để đổi giá trị của một dãy ký tự sang một dãy ký tự khác, hay số lƣợng lỗi xảy ra biến đổi một dãy ký tự sang một dãy ký tự khác. Nó đƣợc sử dụng trong kỹ thuật viễn th ng để tính số lƣợng các bit trong một từ nhị phân bị đổi ngƣợc, nhƣ một hình thức để ƣớc tính số lỗi xảy ra trong quá trình truyền thông.

Ví dụ:

- Khoảng cách Hamming giữa 101101 và 101001 là 1. - Khoảng cách Hamming giữa 1011011 và 1001010 là 2. - Khoảng cách Hamming giữa 2143896 và 2233796 là 3. - Khoảng cách Hamming giữa "toned" và "roses" là 3.

58

Hình 5.3: Sự thiếu hụt khoảng Hamming

Về mặt lý thuyết, đa thức CRC trong CAN Bus nhận biết tối đa khoảng hamming của sáu lỗi, nghĩa là năm bit lỗi khác nhau sẽ đƣợc phát hiện. Trong trƣờng hợp đặc biệt hiếm khi xảy ra, các nút nhận trên CAN Bus không thể phát hiện ra 2 lỗi của toàn hệ thống. Vấn đề này có thể giải quyết bằng cách ngăn các tin nhắn nhồi bit.

5.1.4. Các trạng thái lỗi trong nút CAN

Để hệ thống CAN phân biệt lỗi nhất thời hay lỗi thƣờng trực thì mỗi bộ điều khiển CAN phải có hai bộ đếm lỗi:

- Bộ đếm lỗi nhận ( Receive Error Counter _ REC) - Bộ đếm lỗi truyền (Transmit Error Counter_TEC)

Các bộ đếm lỗi đƣợc gia số theo các lỗi đƣợc phát hiện và giảm xuống tƣơng ứng với sự truyền dữ liệu thành công hay một sự tiếp nhận. Tùy vào các giá trị bộ đếm thì trạng thái lỗi sẽ thay đổi.

Lỗi chủ động: Hệ thống điều khiển đếm số lỗi nhận và số lỗi truyền đều t hơn 127 lỗi. Nếu tin nhắn sai đƣợc nhận thì cờ lỗi chủ động đƣợc gửi đến đƣờng truyền Bus và ngăn các bộ điều khiển khác nhận dữ liệu.

Lỗi bị động: Hệ thống điều khiển đếm số lỗi nhận và truyền nhiều đều hơn 127 lỗi. Nếu tin nhắn lỗi bị phát hiện ở chế độ lỗi bị động thì cờ lỗi bị động đƣợc gửi đi để thông báo bộ điều khiển khác. Bởi quy tắc dữ liệu mạng không thể triệt tiêu nên bộ điều khiển có thể xác định lỗi trong dữ liệu hoặc xác định lỗi của hệ thống trong chính nó. Nếu hệ thống không phát hiện sai sót thì số lƣợng đếm sẽ giảm đi. Nếu tổng giá trị REC và TEC thấp hơn 128 thì chế độ lỗi chủ động đƣợc khôi phục.

Bus Off: Nếu lỗi tiếp tục tăng lên trong chế độ lỗi bị động và TEC vƣợt quá 255 thì bộ điều khiển sẽ không truyền dữ liệu và mất kết nối mạng bằng cách đƣa nó vào trạng thái điện trở cao. Tuy nhiên quá trình nhận dữ liệu vẫn diễn ra. Nếu 11 tín hiệu “1” đƣợc phát

59 hiên 128 lần (1 ACK, 7 EOF, 3 Interframes-liên khung) trong khi ở chế độ Bus Off thì quá trình thiết lập đƣợc diễn ra và khôi phục lại chế độ lỗi chủ động.Tuy nhiên, Bus Off xảy ra tiếp tục sau khi khôi phục lại, kết nối mạng bị mất lần thứ 10. Thiết lập khác diễn ra sau khi đánh lửa tắt và bật, truyền th ng đƣợc kích hoạt. Kết nối mạng sẽ bị mất nếu vấn đề tái phát.Tuy nhiên các nhà sản xuất đƣa ra một khuyến cáo rằng không nên bắt đầu sự tái thiết lập về phần cứng vì nó sẽ không còn tuân theo quy luật thời gian chờ của hệ thống CAN Bus.

Hình 5.4: Sơ đồ trạng thái lỗi 5.1.5. Hoãn truyền dữ liệu (Suspend Passive Transmission)

60 Hệ thống CAN tránh việc nghẽn trên đƣờng truyền Bus do một nút bị nhiễu gửi tin nhắn có mức độ ƣu tiên cao thì sự truyền dữ liệu sẽ bị hoãn và nút đó chuyển sang trạng thái lỗi bị động. Sau đó nút sẽ phải chờ 3+8 bit lặn trƣớc khi bắt đầu truyền lại tin nhắn (trạng thái chờ thêm).

5.1.6. Sự nhân đ i tin nhắn

Giao thức CAN đảm bảo không có tin nhắn bị sai lệch hoặc bị mất trong quá trình truyền và nhận dữ liệu. Nhƣng hệ thống CAN Bus vẫn có thể xảy ra hiện tƣởng tin nhắn đƣợc gửi thêm một lần nữa bởi một lỗi bit gần cuối của vùng kết thúc khung (EOF). Vì vậy nhà chế tạo khuyên chúng ta kh ng nên dùng trong m i trƣờng nhiễu nhiều. Nếu CAN Bus dùng trong m i trƣờng bị nhiễu nhiều thì nó phải tuân thủ một số quy tắc: - Không dùng các tin nhắn đảo chiều.

- Không truyền dữ liệu mang tính chất tƣơng đối.

- Sử dụng giao thức chống nhiễu tốt hoặc dánh dấu số thứ tự cho dữ liệu.

Nếu bộ truyền nhận mức Bus trội trong bit cuối của vùng kết thúc khung (EOF) thì nó sẽ truyền lại tin nhắn đó. Mức trội có thể xuất hiện bởi vì:

Một phần của tài liệu Nghiên cứu và chế tạo mô hình mô phỏng hệ thống CAN trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 62)