4 Các loại lỗi Canbus Có loại lỗi khác chúng không loại trừ lẫn nhau, nghĩa lỗi xảy thuộc loại Lỗi bit (BIT ERROR) Một Node gửi bit lên bus phải giám sát bit Một lỗi bit phát khoảng thời gian truyền bit giá trị lấy mẫu giám sát khác với giá trị bit truyền Nghĩa truyền bit dominant giám sát thấy recessive ngược lại Ngoại trừ số trường hợp dù giá trị gửi giá trị bit giám sát khác không xem lỗi bit, cụ thể sau: Gửi bit recessive vùng ACK SLOT giám sát thấy bit dominant Node gửi cờ báo lỗi bị động giám sát thấy có bit dominant xuất Lỗi chèn bit (STUFF ERROR) Một Node giám sát thấy chuỗi bit liên tiếp giống kiểm tra bit thứ có khác cực với bit trước hay khơng Nếu khơng khác lỗi chèn bit sau bit dominant liên tiếp phải chèn bit recessive, sau bit recessive liên tiếp phải chèn bit dominant Lỗi CRC (CRC ERROR) CRC SEQUENCE kèm theo thơng điệp tính truyền Các nhận phải tính lại chuỗi CRC giống với cách tính truyền Kết tính toán dùng để so sánh với chuỗi CRC từ truyền Nếu hai chuỗi khác lỗi CRC Lỗi định dạng (FORM ERROR) Một Node giám sát thấy vùng có định dạng bit cố định (các vùng quy định rõ mức logic cố định bit 0) chứa nhiều bit vi phạm quy định lỗi định dạng Ngoại trừ: Một nhận phát thấy bit dominant bit cuối vùng EOF (bit thứ EOF) khơng xem lỗi định dạng Lỗi ACK (ACKNOWLEDGMENT ERROR) lỗi phát truyền khơng thấy bit dominant xuất tròng vùng ACK SLOT Một Node phát thấy lỗi phải phát cờ báo lỗi chủ động bị động tùy vào trạng thái Node Đối với loại lỗi BIT, lỗi chèn bit, lỗi định dạng lỗi ACK việc truyền cờ báo lỗi bắt đầu bit sau phát lỗi Đối với loại lỗi CRC cờ báo lỗi truyền sau vùng ACK DELIMITER trừ có cờ báo lỗi sinh điều kiện khác truyền Phân biệt data Frame remote frame • Khung liệu (Data frame) khung mang liệu từ truyền đến nhận Khung có vùng để mang byte liệu • Khung yêu cầu hay khung điều khiển (Remote frame) khung truyền từ Node để yêu cầu Node khác truyền khung liệu có ID (IDENTIFIER) trùng với khung yêu cầu • Khung báo lỗi (Error frame) khung truyền Node Node phát lỗi bus • Khung báo tải (Overload frame) sử dụng để tạo thêm độ trễ giữa khung liệu khung yêu cầu Mỗi Node bus CAN truyền phát bus rảnh, nêu Node nhận nhiều liệu, dùng khung để ngăn truyền Một khung liệu bao gồm bảy vùng bit khác theo thứ tự là: • Vùng bắt đầu khung (Start of frame – SOF) • Vùng phân xử (Arbitration field) • Vùng điều khiển (Control field) • Vùng dã liệu (Data field) • Vùng kiểm tra (CRC field) • Vùng báo nhận (ACK field) • Vùng kết thúc khung (End of frame – EOF) Một Node hoạt động nhận mong muốn liệu, để nhận liệu từ Node nguồn nhận gửi khung yêu cầu (còn gọi khung điều khiển) Khung u cầu có tác dụng thơng báo cho Node nguồn biết để Node truyền liệu Một khung yêu cầu định dạng chuẩn hay định dạng mở rộng Dù thuộc định dạng khung yêu cầu gồm sáu vùng bit khác là: Vùng bắt đầu khung (Start Of Frame), vùng phân xử (Arbitration Field), vùng điều khiển (Control Field), vùng kiểm tra (CRC Field), vùng ACK (ACK Field), vùng kết thúc khung (End Of Frame) Cấu tạo ý nghĩa vùng khung điều khiển giống khung liệu ngoại trừ số điểm sau khác so với khung liệu: • Khung yêu cầu khơng có vùng liệu (Data Field) Chính vậy, khung yêu cầu không phụ thuộc vào giá trị mã độ dài liệu DLC, DLC nhận giá trị từ đến Nhưng giá trị DLC khung yêu cầu lại độ dài liệu khung liệu tương ứng trả về, tức DLC khung liệu trả giống DLC khung yêu cầu gửi Và khung liệu trả có số byte với giá trị DLC • Bit RTR (thuộc vùng phân xử) khung yêu cầu bit recessive Nó khác với khung liệu khung liệu bit dominant Phân biệt khung Error frame overload Khung báo lỗi (Error frame) truyền bus Node phát thấy có điều kiện lỗi Khung báo lỗi gồm hai vùng khác Vùng (superposition of Error Flags) chồng chập cờ lỗi (Error Flag) phát từ Node khác bus Tiếp theo vùng phân cách khung báo lỗi (Error delimiter) Hình Khung báo lỗi Cờ lỗi (Error Flag) Cờ lỗi có dạng cờ lỗi chủ động (Active Error Flag) cờ lỗi bị động (Passive Error Flag) • Cờ lỗi chủ động có bit dominant liên tiếp • Cờ lỗi bị động có bit recessive liên tiếp Một Node trạng thái chủ động với lỗi (error active station) truyền cờ lỗi chủ động phát điều kiện lỗi Dạng cờ lỗi chủ động vi phạm luật chèn bit (bit stuffing) quy định chuẩn Luật chèn bit quy định sau bit liên tiếp có mức logic giống truyền phải tự động chèn thêm bit khác mức logic bit trước Luật áp dụng từ vùng SOF đến hết vùng CRC khung liệu khung yêu cầu Đồng thời, dạng cờ lỗi chủ động không giống định dạng vùng ACK hay EOF Tất Node phát thấy điều kiện lỗi phải truyền cờ báo lỗi Vì có nhiều Node phát lỗi truyền cờ lỗi nên cờ lỗi phát bus đè hay chồng lên tạo thành vùng chồng chập cờ lỗi Với cờ lỗi chủ động, vùng chồng chập tạo chuỗi bi dominant (bit 0) có số bit tối thiểu tối đa 12 bit Một Node trạng thái lỗi bị động (passive error station) cố gắng báo hiệu cờ lỗi bị động phát điều kiện lỗi Cờ lỗi bị động bị ghi đè cờ lỗi chủ động phát từ Node trạng thái chủ động với lỗi Vì vậy, Node truyền cờ lỗi bị động chờ phát bit liên tiếp cực tính từ lúc bắt đầu phát cờ lỗi bị động Việc truyền cờ lỗi bị động xem hoàn thành bit liên tiếp phát Vùng phân cách khung báo lỗi (Error Delimiter) Vùng gồm bit recessive liên tiếp Sau truyền xong cờ lỗi, Node bắt đầu phát bit recessive phải giám sát bắt đầu nhận bit recessive bit tính bit vùng phân cách khung báo lỗi Lúc này, Node tiếp tục phát thêm bit recessive để hồn thành vùng Giải thích truyền khung báo lỗi Khung báo lỗi phát theo dạng tùy vào trạng thái lỗi Node Trạng thái lỗi Node trình bày khác Khung báo lỗi phát nào? • Bất Node phát điều kiện lỗi bus khung liệu khung u cầu phát phát khung báo lỗi Khung báo lỗi phát ngắt truyền khơng gây ngắt truyền • Chú ý, trường hợp phát lỗi CRC việc truyền cờ báo lỗi phải sau vùng phân cách ACK (ACK DELIMITER) trừ có cờ lỗi khác phát trước Khi khung báo lỗi gây ngắt truyền bus khơng? • Khi khung báo lỗi phát loại khung báo lỗi chủ động cờ lỗi chủ động có bit dominant liên tiếp phá vỡ quy định việc truyền liệu luật chèn bit phá vỡ định dạng chung vùng cấu tạo nên khung liệu khung yêu cầu Vì vậy, việc truyền cờ lỗi chủ động từ Node tất Node mạng phát • Khi khung báo lỗi phát loại khung báo lỗi bị động phát truyềnthơng điệp bus Một truyền trạng thái lỗi bị động phát lỗi bus ngừng truyền việc phát bit recessive liên tiếp vi phạm luật chèn bit báo hiệu cho Node khác • Một nhiều nhận trạng thái lỗi bị động phát lỗi cố gắng phát khung báo lỗi bị động lên bus Nếu lỗi cục riêng Node khơng có Node truyền khung báo lỗi chủ động truyền tiếp tục khung báo lỗi bị động tồn bit recessive nên khơng ảnh hưởng đến liệu truyền bus Lúc này, Node phát khung báo lỗi bị động ngừng nhận liệu gí giát bus để chờ nhận bit liên tiếp quy định trước phát tiếp bit phân cách khung báo lỗi Tại độ dài vùng chồng chập cờ lỗi chủ động từ đến 12 bit? • Giả sử thời điểm phát lỗi bus, lỗi toàn cục, tất Node bus đồng thời nhận phát khung báo lỗi cờ lỗi chủ động chồng chập lên có độ dài ngắn bit • Nếu lỗi xuất có một vài Node nhận các Node phát khung báo lỗi Các Node lại chưa giám sát bus thấy có bit dominant liên tiếp cờ lỗi chủ động bus phát lỗi bắt đầu phát khung báo lỗi Lúc chồng chập cờ lỗi chủ động bit dominant Node phát trước cộng với bit dominant Node phát sau 12 bit Việc khung báo lỗi bị động bị ghi đè khung báo lỗi chủ động? • Đối với trạng phát khung báo lỗi chủ động, trường hợp khơng nhận có khung báo lỗi bị động xử lý bình thường • Đối với Node phát khung báo lỗi bị động, trình bày, phát cờ lỗi bị động, trường hợp bị ghi đè, giám sát thấy bit dominant Đây là bit cực (cùng mức logic) coi phát xong cờ báo lỗi Lúc bắt đầu gửi bit recessive vùng phân tách khung báo lỗi chờ đến phát bit recessive tiếp tục truyền bit recesssive kết thúc việc truyền khung báo lỗi với Node truyền khung báo lỗi chủ động Khung báo tải (Overload frame) 1.1 Vai trò cấu trúc Khung báo tải Node mạng CAN sử dụng để tạo thêm độ trễ khung liệu khung điều khiển Một Node phát nhiều khung báo tải liên tiếp để tạo độ trễ bus phù hợp Hình Khung báo tải (Overload frame) Khung báo tải có cấu tạo gồm hai vùng là: • Vùng chồng lấn cờ báo tải (superposition of Overload flags) vùng Node bus phát cờ báo tải (Overload flag) Vùng tương tự khung báo lỗi chủ động với độ dài khơng cố định • Cờ báo q tải gồm bit dominant • Vùng phân cách khung báo tải (Overload delimiter) gồm bit recessive Khi gặp điều kiện tải Node phát khung báo q tải vị trí sau: • Ngay sau EOF khung liệu khung yêu cầu Nếu bus truyền khung liệu khung yêu cầu, Node phải nhận chờ đến hết vùng EOF phép phát khung báo tải • Ngay sau vùng phân cách (DELIMITER) khung báo lỗi khung báo tải khác “”””Có thể thấy khung báo tải khung báo lỗi chủ động có định dạng giống hai loại khung khơng bị Node hiểu nhầm vị trí phát chúng khác • Vị trí phát khung báo lỗi phát lỗi bus truyền khung liệu khung yêu cầu Vì vậy, Node giám sát bus, phát định dạng mơ tả khung liệu hay khung u cầu chưa truyền xong (chưa hết EOF) khung lỗi chủ động • Vị trí phát khung báo tải sau EOF sau vùng phần cách khung báo lỗi báo tải Vì vậy, Node phát định dạng mơ tả vị trị khung báo tải.”””””” AcK slot dùng để làm ? ACK slot: có độ dài bit, Node truyền liệu thiết lập bit recessive Khi nhiều Node nhận xác giá trị thông điệp (không lỗi so sánh CRC sequence trùng khớp) báo lại cho truyền cách truyền bit dominant vị trí ACK slot để ghi đè lên bit recessive truyền - nút truyền gửi bit recesive ACK slot - nút nhận message thông báo cho nút truyền gửi bit dominant ACK slot Trường data fied có độ dài thay đổi hay cố định ? Phụ thuộc vào ? Vùng liệu (Data field) Vùng có độ dài từ đến byte tùy vào giá trị DLC vùng điều khiển Mỗi byte có bit liệu với bit MSB truyền trước Khi lỗi xảy node bus xử lý Cách xác định trạng thái lỗi Mỗi Node có đếm dùng để xác định trạng thái lỗi Node là: • Bộ đếm lỗi truyền (TRANSMIT ERROR COUNT) • Bộ đếm lỗi nhận (RECEIVE EROR COUNT) Hai đếm lỗi tích hợp phần cứng CAN controller chạy tự động Node CAN hoạt động Giá trị hai đếm lỗi đếm lỗi truyền (Tx_count) đếm lỗi nhận (Rx_count) định Node trạng thái Các khoảng giá trị chúng quy định sau: • Trạng thái lỗi chủ động ‘Error active’ Tx_count ≤ 127 Rx_count ≤ 127 • Trạng thái lỗi bị động ‘Error passive’ Tx_count > 127 Rx_count > 127 Tx_count ≤ 255 • Trạng thái ngắt bus ‘Bus off’ Tx_count > 255 • Trạng thái cảnh báo lỗi 'Error Warning' Tx_count >= 96 Rx_count >= 96 Đây trạng thái không quy định CAN Specification 2.0 tách dựa ý (Note) chuẩn Cụ thể, giá trị đếm lỗi lớn "khoảng" 96 việc bus bị nhiễu nặng cần kiểm tra điều kiện Các trạng thái lỗi CAN Node Để giám sát kiểm soát lỗi, Node tự động xác định trạng thái dựa số lượng lỗi mà phát Tại thời điểm, Node thuộc ba trạng thái sau: • Error active - Trạng thái chủ động với lỗi (gọi tắt trạng thái lỗi chủ động) Đây trạng thái hoạt động thơng thường tốt Node Node tham gia truyền nhận liệu bus cách bình thường, phát lỗi phát khung báo lỗi với cờ báo lỗi chủ động (ACTIVE ERROR FLAG) Khi cờ báo lỗi chủ động phát đường truyền bị ngắt Node nhận biết báo lỗi cờ báo lỗi chủ động gồm bit dominant phá vỡ cấu trúc thông thường khung liệu khung u cầu khơng tn theo luật chèn bit • • Error warning - Trạng thái cảnh báo lỗi trạng thái lỗi chủ động Node CAN lúc giám sát thấy số lượng lỗi phát nhiều đến ngưỡng cần phải báo động để Node có chế xử lý thích hợp Node trạng thái hoạt động trạng thái lỗi chủ động Đây trạng thái không quy định chuẩn CAN Specification 2.0 hều hết CAN controller có Error Passive - Trạng thái bị động với lỗi (gọi tắt trạng thái lỗi bị động) Một Node trạng thái có vài hoạt động bị giới hạn ưu tiên Node trạng thái lỗi chủ động Cụ thể, truyền nhận, phát lỗi bus Node truyền khung báo lỗi bị động với cờ báo lỗi bị động (PASSIVE ERROR FLAG) toàn bit recessive nên ưu tiên thông điệp truyềntruyền tiếp Mặt khác có thẻ bị ghi đè Node phát cờ báo lỗi chủ động Một hạn chế là, Node trạng thái lỗi bị động, sau vừa truyền xong thơng điệp phải chờ thêm khỏng thời gian vùng SUSPEND TRANSMISSION trước phép truyền tiếp Trong khoảng thời gian chờ này, có Node khác truyền liệu trở thành nhận • Bus-off - Trạng thái ngắt khỏi bus CAN (gọi tắt trạng thái ngắt bus) trạng thái Node khơng phép có táng động bus Bộ lái ngõ bus, nằm chip CAN transceiver, bị ngắt ... slot: có độ dài bit, Node truyền liệu thiết lập bit recessive Khi nhiều Node nhận xác giá trị thông điệp (không lỗi so sánh CRC sequence trùng khớp) báo lại cho truyền cách truyền bit dominant vị... bit dominant vị trí ACK slot để ghi đè lên bit recessive truyền - nút truyền gửi bit recesive ACK slot - nút nhận message thông báo cho nút truyền gửi bit dominant ACK slot Trường data fied có độ... thái lỗi bị động, sau vừa truyền xong thông điệp phải chờ thêm khỏng thời gian vùng SUSPEND TRANSMISSION trước phép truyền tiếp Trong khoảng thời gian chờ này, có Node khác truyền liệu trở thành