Tải bản đầy đủ (.pdf) (104 trang)

Nghiên cứu ứng dụng vi điều khiển pic18f458 trong hệ thống điều khiển sử dụng giao thức truyền thông tin nối tiếp can

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.19 MB, 104 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------o0o---------------------

NGUYỄN TRUNG HIẾU

NGHIÊN CỨU ỨNG DỤNG VI ĐIỀU KHIỂN PIC18F458 TRONG HỆ THỐNG
ĐIỀU KHIỂN SỬ DỤNG GIAO THỨC TRUYỀTHÔNG TIN NỐI TIẾP CAN

LUẬN VĂN THẠC SỸ
ĐO LƯỜNG VÀ CÁC HỆ THỐNG ĐIỀU KHIỂN

Người hướng dẫn khoa học: PGS–TS Phạm Thị Ngọc Yến

Hà Nội – 2004


BỘ GIÁO DỤC VÀ ĐÀO TẠO
Trường Đại Học Bách Khoa Hà Nội
---------------------o0o---------------------

Nguyễn Trung Hiếu

NGHIÊN CỨU ỨNG DỤNG VI ĐIỀU KHIỂN PIC18F458 TRONG HỆ THỐNG
ĐIỀU KHIỂN SỬ DỤNG GIAO THỨC TRUYỀN THÔNG TIN NỐI TIẾP CAN

Chuyên Ngành: Đo Lường Và Các Hệ Thống Điều Khiển

Luận văn thạc sĩ khoa học

Người hướng dẫn: PGS–TS Phạm Thị Ngọc Yến




Hà Nội – 2004
LỜI CẢM ƠN.

Sau hơn 6 tháng thực tập và nghiên cứu tại trung tâm nghiên cứu MICATrường Đại Học Bách Khoa Hà Nội, tôi đã cơ bản hoàn thành đề tài luận văn tốt
nghiệp “NGHIÊN CỨU ỨNG DỤNG VI ĐIỀU KHIỂN PIC18F458 TRONG HỆ
THỐNG ĐIỀU KHIỂN SỬ DỤNG GIAO THỨC TRUYỀN THƠNG TIN NỐI
TIẾP CAN”.
Tơi xin bày tỏ lịng biết ơn tới tồn bộ tập thể cán bộ nghiên cứu thuộc trung
tâm MICA- Trường Đại học Bách Khoa Hà Nội, đặc biệt các thầy cô giáo: PGS-TS
Phạm Thị Ngọc Yến (người hướng dẫn trực tiếp), Ts Castelli, Th.s Nguyễn Thị Lan
Hương, Ts Nguyễn Quốc Cường, Th.s Nguyễn Việt Tùng cùng nhiều cán bộ nghiên
cứu và đồng nghiệp khác đã giúp đỡ tơi hồn thành tốt luận văn tốt nghiệp này.
Xin bày tỏ lòng biết ơn tới ban giám hiệu, ban chủ nhiệm khoa Tin HọcTrường Cao Đẳng Điện Lực, nơi tôi công tác đã tạo điều kiện, giúp đỡ động viên tơi
trong xuốt q trình học tập chương trình đào tạo thạc sỹ vừa qua.
Tơi cũng xin bày tỏ lòng biết ơn sâu sắc tới bố mẹ, anh chị, bạn bè những người
ln ủng hộ, khích lệ để tôi yên tâm nghiên cứu, làm việc và trưởng thành như ngày
hôm này.
(Một lần nữa tôi xin cảm ơn tất cả, xin cảm ơn !)

Hà Nội 29/10/2004
Nguyễn Trung Hiếu


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

MỤC LỤC:
Trang phụ bìa ....................................................................................
LỜI CẢM ƠN.....................................................................................

MỤC LỤC...........................................................................................
DANH MỤC HÌNH VẼ…………………………………………….
MỞ ĐẦU.............................................................................................

………...
…………
.............1
.............4
........….7
1. Sự ra đời của giao thức CAN và các ứng dụng của nó cho tới .............9

ngày nay trong thực tế các ngành công nghiệp.
1.1. Sự ra đời của giao thức CAN………………………………… ……... ..9
1.2 Các ứng dụng của giao thức CAN cho tới ngày nay trong ………11
thực tế các ngành công nghiệp.
2. Sự phát triển của cơng nghệ và tính thiết yếu cần phải ứng ……... 11
dụng các sản phẩm mới có đặc tính kỹ thuật mạnh vào thực tế.

CHƯƠNG 1: LÝ THUYẾT CƠ SỞ VỀ GIAO THỨC CAN
(Controller Area Network).
1.1 Một số khái niệm cơ bản của CAN bus…………………
1.2. Các dạng frame truyền trong CAN……………………..
1.2.1. Dạng frame dữ liệu (Data frame)…………………….
1.2.2. Dạng frame yêu cầu xa (Remote frame)……………...
1.2.3. Dạng frame lỗi (Error Frame)………………………..
1.2.4. Frame quá tải (Overload Frame)……………………..
1.2.5. Khoảng liên kết frame (Interframe space)……………
1.3. Các cơ chế phát hiện lỗi được sử dụng trong giao thức
CAN.
1.3.1. Cơ chế phát hiện lỗi Cyclic Redundancy Check

(CRC).
1.3.2. Cơ chế phát hiện lỗi Acknowledge………………………
1.3.3. Cơ chế kiểm tra frame (Frame Check)……………….
1.3.4. Cơ chế giám sát bit (bit monitoring). …………………...
1.3.5. Cơ chế kểm tra bit nhồi (bit stuffing check)………….
1.4. Kiểm soát lỗi trong giao thức CAN……………………..
1.5. Các phiên bản của giao thức CAN……………………...
1.6. Cơ chế đồng bộ đường bus……………………………...
1.6.1. Khái niệm về mã Non Return to Zero………………...
1.6.2. Khái niệm về bit nhồi (stuffing bit)…………………...
1.6.3. Đồng bộ đường bus………………………………………..
1.7. Kiến trúc bit truyền trong giao thức CAN……………...
1.8. Chuẩn kết nối vật lý trong CAN………………………..
CHƯƠNG 2. NGHIÊN CỨU ỨNG DỤNG CHÍP VI ĐIỀU
KHIỂN PIC18F458 CHẾ TẠO VỈ THU THẬP TÍN HIỆU
NHIỆT ĐỘ CĨ CỔNG TRUYỀN THƠNG TIN NỐI TIẾP

………13
……... 13
……... 15
……... 15
……... 17
……... 17
……... 18
……... 19
……... 20
……... 20
……... 21
……... 21
……... 21

……... 22
……... 22
……... 23
……... 24
……... 24
……... 24
……... 25
……... 26
……... 31
……... 34

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-1-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

CAN (gọi tắt là vỉ thu thập tín hiệu).
2.1. Họ chip vi điều khiển PIC18F458 và các đặc tính kỹ thuật ……... 34
của nó.

2.2. Module CAN trong Chip vi điều khiển PIC18F458 của
Microchip.
2.2.1. Tổng quan về module CAN trong chip vi điều khiển
PIC18F458.
2.2.2. Các bộ đệm truyền/nhận………………………………
2.2.3. Các thanh ghi của Module CAN……………………...
2.2.4. Các chế độ hoạt động của module CAN trong
PIC18F458.
2.2.5. Quá trình truyền bức điện của module CAN…………

2.2.6. Quá trình nhận bức điện của module CAN…………..
2.2.7. Các mặt nạ và bộ lọc chấp nhận bức điện……………
2.2.8. Đặt tốc độ truyền………………………………………
2.2.9. Đồng bộ………………………………………………..
2.2.10. Các yêu cầu khi thiết lập các tham số cho các phân
đoạn thời gian.
2.2.11. Các thanh ghi định cấu hình thời gian bit………….
2.2.12. Phát hiện lỗi………………………………………….
2.2.13. Các ngắt của CAN……………………………………
2.3. Thiết kế mạch phần cứng vỉ thu thập tín hiệu nhiệt độ
có cổng giao tiếp CAN sử dụng chíp vi điều khiển PIC18F458 (gọi
tắt là vỉ thu thập tín hiệu).
2.3.1. Sơ đồ khối vỉ thu thập nhiệt độ có cổng giao tiếp
CAN.

……... 38

2.3.2. Sơ đồ mạch nguyên lý vỉ thu thập tín hiệu nhiệt độ và
truyền tin nối tiếp thơng qua CAN bus.
2.3.2.1. Mạch nguyên lý khối chức năng biến đổi tín hiệu nhiệt
độ từ 0oC 100oC sang tín hiệu điện áp đã được chuẩn hóa có giải từ
0Volt 5Volt.
2.3.2.2. Mạch nguyên lý khối chức năng đặt baud rate và ID cho
vỉ thu thập tín hiệu.
2.3.2.3. Mạch nguyên lý cho khối tín hiệu đầu ra số (Digital
outputs).
2.3.2.4. Mạch nguyên lý cho khối phối ghép CAN Transceiver…
2.3.2.5. Mạch nguyên lý cho khối phối ghép truyền RS232 sử
dụng MAX232.
2.3.2.6. Mạch nguyên lý phối ghép cho bộ Vi điều khiển

PIC18F458.
2.3.2.7. Mạch nguyên lý khối cấp nguồn ni cho vỉ thu thập tín
hiệu và truyền tin nối tiếp CAN.
2.3.3. Sơ đồ thiết kế và lắp ráp mạch in cho vỉ thu thập tín hiệu...
2.4. Viết phần mềm điều khiển sự hoạt động cho Card thu thập
tín hiệu nhiệt độ và truyền tin nối tiếp thơng qua CAN bus.

……... 59

……... 38
……... 38
……... 39
……... 40
……... 43
……... 45
……... 47
……... 49
……... 53
……... 53
……... 54
……... 54
……... 56
……... 57
……... 57

……... 61
……... 62
……... 63
……... 63
……... 64

……... 64
……... 64
……... 65
……... 67

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-2-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

2.4.1. Lưu đồ thuật toán chương trình chính điều khiển
cho vỉ thu thập tín hiệu.
2.4.2. Lưu đồ thuật tốn chương trình con khởi tạo hệ
thống.
2.4.3. Lưu đồ thuật tốn chương trình con truyền dữ liệu
lên mạng CAN.
2.4.4. Lưu đồ thuật tốn chương trình con đọc dữ liệu về từ
mạng CAN.
CHƯƠNG 3: PHẦN MỀM LABVIEW VÀ SỬ DỤNG PHẦN
MỀM LABVIEW TRONG THIẾT KẾ GIAO DIỆN NGƯỜI
NGƯỜI SỬ DỤNG .
3.1. Phần mềm Labview 6.1 và phần mềm công cụ NI-CAN
for Windows 2000/ NT/XP/Me/9x V2.0.
3.1.1. Phần mềm Labview 6.1………………………………..
3.1.1.1. Labview là gì?……………………………………….
3.1.1.2. Thế nào được gọi là một thiết bị ảo VI (Virtual
Instrument).
3.1.1.3. Môi trường làm việc của Labview…………………..
3.1.1.4. Các tùy chọn trợ giúp của Labview…………………


……... 67
……... 68
……... 69
……... 70
……... 72
……... 72
……... 72
……....72
……... 72

……... 74
………81
3.1.2. Phần mềm công cụ NI-CAN for Windows 2000/ ………81

NT/XP/Me/9x V2.0.
3.1.2.1. Tổng quan về phần mềm công cụ NI-CAN……………… ………81

3.1.2.2. Lựa chọn Frame API cho Labview để viết chương
trình ứng dụng.
3.2. Viết giao diện trên máy tính PC sử dụng phần mềm
Labview6.1 và mềm công cụ NI-CAN for Windows2000/
NT/XP/Me/9x V2.0.
3.2.1. Bước 1: Tạo một New Project trên Labview………….
3.2.2. Bước 2: Thiết kế giao diện trên cửa sổ Front Panel…
3.2.3. Bước 3: Viết mã lệnh trong cửa sổ Block Diagram….
3.3. Kết nối mô phỏng hệ thống truyền tin nối tiếp qua CAN
bus của đề tài tốt nghiệp.
CHƯƠNG 4: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ
TÀI.

4.1 Kết quả đạt được của đề tài………………………………
4.2 Hướng phát triển của đề tài……………………………...
KÊT LUẬN.........................................................................................
TÀI LIỆU THAM KHẢO:................................................................
PHỤ LỤC:..........................................................................................

……... 83
……... 83
……... 84
………85
………92
………96
………98
………98
………98
……... 99
……... 100
………101

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-3-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

DANH MỤC HÌNH VẼ:
Hình1.1
Hình1.2
Hình1.1.1
Hình1.1.2

Hình1.1.3
Hình1.1.4
Hình1.2.1
Hình1.2.2
Hình1.2.3
Hình1.2.4
Hình1.2.5
Hình1.3.1
Hình1.3.2
Hình1.3.3
Hình1.4.1
Hình1.5.1
Hình1.6.1
Hình1.6.2
Hình1.6.3
Hình1.7.1
Hình1.7.2
Hình1.7.3
Hình1.7.4
Hình1.7.5
Hình1.7.6
Hình1.7.7
Hình1.7.8
Hình1.7.9
Hình1.7.10
Hình1.7.11
Hình1.7.12
Hình1.8.1
Hình1.8.2
Hình1.8.3

Hình1.8.4
Hình1.8.5
Hình2.1.1
Hình2.1.2
Hình2.2.1

Phương thức kết nối điểm-điểm
Phương thức kết nối bus
Kết nối node CAN lên Bus
Bảng logic Wired_End
Thể hiện hai trạng thái đường truyền CAN
Ví dụ cơ chế chiếm đường truyền
Dạng frame dữ liệu.
Dạng frame yêu cầu từ xa.
Dạng frame lỗi
Dạng frame quá tải.
Khoảng liên kết frame
Cơ chế phát hiện lỗi CRC
Cơ chế phát hiện lỗi Acknowledge
Cơ chế phát hiện lỗi kiểm tra frame hoặc giám sát bit
Các trạng thái lỗi bên trong của một node CAN
Các phiên bản giao thức CAN
Cơ chế mã hóa NRZ
Cơ chế sử dụng bít nhồi
Các cơ chế đồng bộ bus
Phân chia thời gian bit truyền CAN
Phân đoạn đồng bộ nhận
Phân đoạn thời gian truyền CAN
Phân đoạn Phase buffer segment 1
Phân đoạn Phase buffer segment 2

Cơ chế kéo dài phân đoạn phase buffer segment 1
Cơ chế rút ngắn phân đoạn phase buffer segment 2
Một cách phân chia thời gian bit khác hay được sử dụng
Điểm lấy mẫu bit truyền sớm
Điểm lấy mẫu bit truyền muộn
Biểu đồ quan hệ giữa tốc động truyền và độ dài đường
truyền
Biểu đồ phân lớp giao thức CAN
Chuẩn kết nối vật lý trong CAN
Cơ chế truyền hai dây có khả năng chống nhiễu tốt.
Cấu trúc kết nối một đường truyền CAN theo chuẩn ISOIS11898
Chuẩn mức tín hiệu trên đuờng truyền CAN
Chuẩn kết nối connector của CAN
Sơ đồ chân DIP của Chip PIC18F458
Sơ đồ khối bên trong của PIC18F458
Sơ đồ khối module CAN trong PIC18F458

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-4-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN
Hình2.2.2
Hình2.2.3
Bảng2.2.1
Hình2.2.4
Hình2.2.5
Hình2.2.8
Bảng2.2.2
Hình2.3.1

Hình2.3.2
Hình2.3.3
Hình2.3.4
Hình2.3.5
Bảng2.3.1
Hinh2.3.6
Hình2.3.7
Hình2.3.8
Hình2.3.9
Hình2.3.10
Hình2.3.11
Hình2.3.12
Hình2.3.13
Hình2.4.1
Hình2.4.2
Hình2.4.3
Hình2.4.4
Hình2.4.5
Hình3.1.1
Hình3.1.2
Hình3.1.3
Hình3.1.5
Hình3.1.6
Hình3.1.7
Hình3.1.8
Hình3.1.9
Hình3.1.10
Hình3.1.11
Hình3.1.12
Hình3.2.1

Hình3.2.2
Hình3.2.3
Hình3.2.4
Hình3.2.5
Hình3.2.6

Sơ đồ khối bộ đệm truyền trong module CAN
Sơ đồ khối bộ đệm nhận trong module CAN
Bảng sự thật cho Filter/Mask
Cơ chế lọc và chấp nhận ID trong module CAN
Phân chia thời gian bit trong CAN
Các trạng thái lỗi của PIC18F458
Bảng các mã ngắt tương ứng vơi các bit ICODE
Sơ đồ khối Card thu thập tín hiệu và truyền tin nối tiếp
Thể hiện một Switch
Sơ đồ mạch nguyên lý cho vỉ thu thập tín hiệu
Khối đo, biến đổi chuẩn hóa tín hiệu đo nhiệt độ
Mạch ghép nối đặt bus rete và ID cho Card
Bảng mã hóa tốc độ truyền thơng qua switch
Mạch ghép nối tín hiệu vào ra số
Mạch ghép nối phối ghép đường truyền CAN
Mạch ghép nối phối ghép đường truyền RS232
Mạch ghép nối phối ghép cơ bản cho chip PIC
Mạch cấp nguồn nuôi 5 và 12 (V)
Sơ đồ thiết kế mạch in, mặt trên vỉ thu thập tín hiệu.
Sơ đồ thiết kế mạch in, mặt dưới vỉ thu thập tín hiệu.
Vỉ thu thập tín hiệu nhiệt độ có cổng giao tiếp CAN
Lưu đồ thuật tốn chương trình chính điều khiển
Lưu đồ thuật tốn ctc khởi tạo
Lưu đồ thuật toán truyền bức điện

Sơ đồ khối một frame truyền CAN
Lưu đồ thuật toán nhận bức điện
Một cửa sổ front panel trong labview
Một block diagram tương ứng với front panel của nó
Cửa sổ khởi động chương trình Labview
Bảng các cơng cụ
Bảng các điều khiển
Bảng các hàm
Cửa sổ trợ giúp
Thể hiện vị trí của các điều khiển CAN.
Các điều khiển của CAN
Thể hiện vị trí của các hàm CAN
Các hàm của CAN
Card giao diện PCI-CAN
Cửa sổ khởi đầu Labview
Cửa sổ Name the VI của Labview
Trang giao diện người sử dụng được viết bằng phần mềm
LABVIEW
Giao diện đặt dữ liệu truyền CAN
Giao diện đặt thông số về mạng

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-5-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN
Hình3.2.7
Hình3.2.8
Hình3.2.9
Hình3.2.10

Hình3.2.11
Hình3.2.12
Hình3.2.13
Hình3.2.14
Hình3.2.15
Hình3.2.16
Hình3.2.17
Hình3.3.1
Hình 4.1 :

Giao diện thể hiện dữ liệu nhận được từ mạng CAN
Giao diện vẽ đồ thị tín hiệu nhiệt độ
Cột nhiệt kế
Giao diện thay đổi trạng thái DO
Lưu đồ thuật tốn chương trình trên máy tính
Mã lệnh thực hiện mở giao diện mạng
Mã lệnh thực hiện truyền dữ liệu
Mã lệnh thực hiện đọc dữ liệu từ mạng về
Mã lệnh thực hiện đọc dữ liệu từ mạng về nhưng dữ liệu
thực tế = 0
Mã lệnh đóng giao diện mạng
Mã lệnh tổng thể viết cho máy tính
Mơ hình kết nối CAN bus
Card thu thập tín hiệu nhiệt độ có cổng giao tiếp CAN

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-6-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN


MỞ ĐẦU
Những người làm kỹ thuật nhất là trong lĩnh vực về Đo lường, Điều khiển tự
động và Công nghệ thông tin chắc hẳn không xa lạ với các khái niệm về thông tin
và thông tin công nghiệp:
Thông tin là một trong những khái niệm cơ bản quan trọng nhất của khoa học
kỹ thuật, cũng giống như vật chất và năng lượng. Các dữ kiện đầu vào/ra một hệ
thống kỹ thuật chỉ có thể là vật chất, năng lượng hoặc thông tin. Một hệ thống xử lý
thông tin hoặc một hệ thống truyền tin là một hệ thống kỹ thuật mà các đại lượng
chúng ta cần quan tâm chính là các đầu vào và đầu ra thông tin. Tuy nhiên đa số các
hệ thống kỹ thuật thường có các đầu vào và đầu ra hỗn hợp (vật chất, năng lượng và
thông tin).
Thông tin là thước đo mức nhận thức, sự hiểu biết về một vấn đề, một sự
kiện hoặc một hệ thống. Thông tin giúp chúng ta phân biệt các mặt của một vấn đề,
các trạng thái của một sự vật hay nói một cách khác, thơng tin chính là sự loại trừ
tính bất định. Nếu vật chất và năng lượng là nền tảng của vật lý và hóa học thì thơng
tin chính là chủ thể của công nghệ thông tin và tin học.
Thông tin cịn là cơ sở cho sự giao tiếp, thơng qua giao tiếp mà các đối tác có
thêm hiểu biết lẫn nhau hoặc về một vấn đề, một sự kiện hoặc một hệ thống.
Vậy cịn thơng tin cơng nghiệp? thơng tin công nghiệp cũng là một dạng
thông tin nhưng phạm vi để cập của nó nhỏ hơn, hẹp hơn, ít phức tạp hơn so với
thơng tin nói chung, chủ yếu là các dạng thơng tin số liệu (tín hiệu số và tương tự,
các số liệu thống kê, tính tốn …) nhằm phản ảnh bản thân các hệ thống công
nghiệp.
Nhu cầu trao đổi thông tin giữa các thành phần cá thể trong tổng thể, theo đó
là các vấn đề về khoa học kỹ thuật của loài người phát triển một cách nhanh chóng
đã tất yếu dẫn đến sự hình thành của các hệ thống thông tin khác nhau: như hệ
thống điện đài, điện thoại, mạng máy tính…và thơng tin cơng nghiệp cũng khơng
nằm ngồi vịng phát triển đó.


Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-7-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

Ngày nay khi nói đến thơng tin trong cơng nghiệp, chúng ta thường hay nói
về khái niệm mạng thông tin công nghiệp để chỉ các cơ chế trao đổi thông tin trong
các hệ thống điều khiển công nghiệp. Sự phổ biển của các giải pháp truyền tín hiệu
sử dụng hệ thống truyền thơng số là kết quả tổng hợp của các tiến bộ trong kỹ thuật
vi điện tử, kỹ thuật máy tính, kỹ thuật thơng tin và nhiều ngành kỹ thuật ứng dụng
khác. Mạng truyền thông công nghiệp hay mạng công nghiệp là một khái niệm
chung chỉ các hệ thống mạng truyền thông số, truyền bit nối tiếp, được sử dụng để
ghép nối các thiết bị cơng nghiệp phổ biến hiện nay. Nó cho phép liên kết mạng ở
nhiều mức khác nhau, từ các cảm biến, cơ cấu chấp hành dưới cấp trường cho tới
các máy tính điều khiển, thiết bị quan sát, máy tính điều khiển giám sát và các máy
tính cấp điều hành xí nghiệp, quản lý cơng ty.
Đối tượng của mạng cơng nghiệp là các thiết bị công nghiệp, nên dạng thông
tin được quan tâm duy nhất là dữ liệu với kỹ thuật truyền dữ liệu theo chế độ bit nối
tiếp.
Mạng truyền thông công nghiệp thực chất là một dạng đặc biệt của mạng
máy tính, trong nhiều trường hợp, mạng máy tính sử dụng trong công nghiệp được
coi là một phần (ở các cấp điều khiển giám sát, điều hành sản xuất và quản lý cơng
ty) trong mơ hình phân cấp của mạng cơng nghiệp. u cầu về tính năng thời gian
thực, độ tin cậy và khả năng tương thích trong mơi trường công nghiệp của mạng
truyền thông công nghiệp cao. Các hệ thống mạng này thường có tính chất độc lập,
phạm vi hoạt động tương đối hẹp. Đối với các hệ thống truyền thông công nghiệp,
đặc biệt là ở các cấp dưới thì các u cầu về tính năng thời gian thực, khả năng thực
hiện đơn giản, giá thành hạ luôn được đặt ra hàng đầu.
Giao thức truyền thông tin nối tiếp CAN (Controller Area Network protocol)

là một trong những giao thức truyền tin cơng nghiệp có thể được xếp vào cấp thấp
trong mơ hình phân cấp, đó là cấp trường, rất hữu dụng cho việc truyền thông tin
giữa các thiết bị vào ra với nhau hoặc giữa các thiết bị vi điều khiển (Micro
Controller). Giao thức này được thiết kế để truyền tin trong môi trường nhiều nhiễu.
Tuy về mặt quy mô hệ thống, giao thức CAN thường chỉ được sử dụng để kết nối

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-8-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

các thiết bị vào ra và các thiết bị vi điều khiển, nhưng phạm vi ứng dụng và tầm
quan trọng của nó trong thực tế lại rất to lớn: điển hình là trong ngành cơng nghiệp
sản xuất xe gắn máy, xe hơi, và các ngành công nghiệp sản xuất đồ dân dụng khác.
Việc sử dụng phương thức truyền thơng tin nối tiếp CAN bus đóng vai trò
quan trọng trong sự phát triển cũng như nâng cao các tính năng kỹ thuật cho các hệ
thống điều khiển mà thành phần các trạm là các chip vi điều khiển thuộc các họ vi
điều khiển khác nhau ví dụ như: họ 80C51, họ 89C51, họ 68HC11, họ PIC16Cxxx
họ PIC18Fxxx…Chính vì lý do đó mà tơi đã chọn đề tài :” Nghiên cứu ứng dụng
chip vi điều khiển PIC18F458 trong hệ thống điều khiển sử dụng giao thức
truyền thông tin nối tiếp CAN “.
Một lý do nữa khiến tôi chọn chip vi điều khiển thuộc họ PIC18F458 để sử
dụng trong hệ thống đó là:
- Chip vi điều khiển PIC18F458 là dòng vi điều khiển mới nhất, do hãng
Microchip vừa tung ra thị trường với các tính năng vượt trội về kỹ thuật như tốc độ
cao, bộ nhớ trong (cả chương trình lẫn dữ liệu) lớn.
- Tích hợp sẵn các module chức năng giúp người sử dụng dễ dàng phát triển
các ứng dụng mà không phải tốn thêm các phu kiện đi kèm làm hạ giá thành, giảm
bới sự cồng kệnh, phức tạp của hệ thống.

- Giá thành Chip PIC18F458 khơng cao, chi phí cho hệ thống là thấp, tăng
tính khả thi trong các ngành công nghiệp sản xuất ứng dụng.
Việc ứng dụng vào thực tiễn đề tài này sẽ nâng cao được các đặc tính của hệ
thống làm cho các quá trình điều khiển sử dụng hệ thống truyền thơng tin qua mạng
CAN với các phần tử chính của hệ thống là chip PIC18F458 sẽ có nhiều tính năng
ưu việt hơn ( Các dịng vi điều khiển cũ thì khả năng trao đổi thơng tin hạn chế, kích
thước hệ thống cồng kềnh….).
1. Sự ra đời của giao thức CAN và các ứng dụng của nó cho tới ngày nay
trong thực tế các ngành công nghiệp.
1.1. Sự ra đời của giao thức CAN.
Sự phát triển của CAN bắt đầu khi mà ngày càng nhiều các thiết bị điện tử

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
-9-


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

được sử dụng trong xe gắn máy, xe hơi và các phương tiện giao thông (các loại xe
cộ nói chung) hiện đại như: các hệ thống quản lý điều khiển sự hoạt động của động
cơ, các bộ điều khiển hộp số, điều khiển đèn, điều khiển điều hịa khơng khí, điều
khiển túi khí, điều khiển khóa trung tâm….Sự có mặt của các thiết bị điện tử này
làm cho sản phẩm trở nên tiện nghi hơn, an tồn hơn cho người sử dụng và tất nhiên
nó cũng làm cho xe hoạt động tiết kiệm nhiên liệu tiêu thụ, giảm bớt lượng khơng
khí thải độc hại.
Để nâng cao hơn nữa các
đặc tính của hệ thống, một vấn đề
thiết yếu được đặt ra là các hệ
thống điều khiển riêng biệt khác
nhau phải có sự trao đổi thơng tin.

Ban đầu người ta liên kết các hệ
thống điều khiển cho các phần
riêng biệt đó một cách riêng rẽ (nối

Hình1.1 Phương thức kết nối điểm-điểm

điểm – điểm). HìnhI.1.1 thể hiện cơ chế kết nối hệ thống theo phương thức điểmđiểm.
Nhu cầu trao đổi thông tin ngày càng mở rộng và nhiều thêm, hệ thống cáp
mạng có độ dài lên tới một vài nghìn mét và rất nhiều các rắc nối được sử dụng.
Việc lớn mạnh của nhu cầu trao đổi thông tin này đã nảy sinh các vấn đề về giá
thành vật liệu chế tạo, thời gian thực hiện và độ tin cậy của hệ thống. Và giải pháp
cho vấn đề trên là kết nối các hệ thống điều khiển thông qua một hệ thống bus nối
tiếp. HìnhI.1.2 thể hiện phương thức kết nối hệ thống nối tiếp thông qua bus.
Với việc sử dụng giao thức CAN, phương thức kết nối điểm-điểm (point to
point) đã được thay thế bằng đường truyền nối tiếp kết nối chung tất cả các hệ thống
điều khiển lại với nhau. Việc kết nối này được thực hiện bằng cách thêm một vài
phần tử cụ thể của CAN cho mỗi khối điều khiển. Các phần tử CAN này cung cấp
các luật hay còn gọi là giao thức để thực hiện cơ chế truyền/nhận thông tin thông
qua bus.

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 10 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

CAN là một hệ thống
đường truyền nối tiếp tiên tiến và
nó hỗ trợ rất hiệu quả cho các hệ
thống điều khiển phân tán. Lúc

ban đầu nó được phát triển để sử
dụng trong cơng nghệ xe gắn máy,
các loại xe cộ nói chung khác
nhau bởi Robert Bosch Gmbh –

Hình1.2 Phương thức kết nối bus

Germany vào những năm cuối của thập kỷ 80 (1980s).
CAN là một tiêu chuẩn quốc tế được công nhận bởi tổ chức tiêu chuẩn quốc
tế (ISO) và hiệp hội các kỹ sư tự động hóa. Giao thức CAN sử dụng tầng liên kết dữ
liệu (DataLink layer) và tầng vật lý (Physical layer) trong mơ hình ISO-OSI. Tuy
nhiên vẫn có những giao thức CAN mức cao tồn tại.
1.2 Các ứng dụng của giao thức CAN cho tới ngày nay trong thực tế các
ngành công nghiệp.
CAN được sử dụng rộng rãi trong tự động hóa và cơng nghiệp. Các ứng dụng
cơ bản của nó là trong lĩnh vực xe gắn máy, xe hơi…các ngành sản xuất xe cộ phục
vụ cơng cộng và tự động hóa công nghiệp. Các lĩnh vực ứng dụng khác của CAN
thường hay được sử dụng như các hệ thống tự động trong tầu hỏa, thiết bị y tế, tự
động hóa tịa nhà, các thiết bị gia dụng, tự động hóa văn phịng cơng sở….
Cho đến trước năm 2000, trên tồn thế giới có khoảng 20 triệu node CAN
được sử dụng. Chỉ trong năm 2000 ước tính số lượng node được sử dụng có khoảng
140 triệu node.
2. Sự phát triển của cơng nghệ và tính thiết yếu cần phải ứng dụng các
sản phẩm mới có đặc tính kỹ thuật mạnh vào thực tế.
Tất cả các thông tin được đưa ra ở phần 1.1 kể trên phần nào đã khẳng định
CAN là một chuẩn truyền tin có những ưu điểm lớn và được sử dụng rất rộng rãi
trong các ngành công nghiệp ứng dụng ngày nay.
Thông thường một hệ thống điều khiển sẽ có một (hay nhiều) bộ điều khiển

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển

- 11 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

chính làm nhiệm vụ điều khiển sự hoạt động của toàn bộ hệ thống, các hệ thống
điều khiển mà ta nói ở đây là các hệ thống mà sự trao đổi thông tin giữa chúng được
thực hiện thông qua CAN bus (sử dụng giao thức truyền tin CAN). Các bộ điều
khiển chính này có thể là các chip vi xử lý (Micro Processor) hay các bộ vi điều
khiển (Micro Controller).
Nhiều thế hệ Vi xử lý, Vi điều khiển thực sự bắt đầu ra đời từ những năm
đầu của thập kỷ 70 (những năm 1970s) điển hình của các thế hệ ban đầu này có thể
kể đến như: bộ vi xử lý 4004 (4 bit số liệu, 12 bit địa chỉ) của Intel, bộ vi xử lý
6800, 6809 của Motorola, các bộ vi điều khiển 8051, 68HC11 của Motorola,
PIC12C508, PIC12C508A, PIC12C509 của Microchip…Những thế hệ vi xử lý, vi
điều khiển này đã giải quyết tốt được nhiều vấn đề lúc bấy giờ của hệ thống. Tuy
nhiên cho đến ngày nay, khi mà cơng nghệ đã có những bước tiến rõ rệt, sự ra đời
của các thế hệ vi xử lý/vi điều khiển mới với tính năng vượt trội hơn hẳn các thế hệ
cũ và cũng như các yêu cầu về tính năng ngày càng cao của các hệ thống điều khiển
hiện đại đòi hỏi chúng ta cần phải sử dụng các bộ vi xử lý/vi điều khiển tiên tiến thế
hệ mới nhất (với các tính năng mạnh nhất, tiện dùng nhất, đáp ứng được các yêu cầu
kỹ thuật phức tạp của các hệ thống điều khiển hiện đại) vào các hệ thống điều
khiển.
Một trong những thế hệ vi điều khiển mới nhất hiện nay với các tính năng kỹ
thuật mạnh đó chính là Chip vi điều khiển PIC18F458 của hãng Microchip, và đây
cũng chính là bộ vi điều khiển mà tôi đã chọn để nghiên cứu ứng dụng nó trong đề
tài tốt nghiệp này.

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 12 -



Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

CHƯƠNG 1: LÝ THUYẾT CƠ SỞ VỀ GIAO THỨC CAN (Controller Area
Network).
1.1 Một số khái niệm cơ bản của CAN bus.
CAN có cấu trúc bus nhiều chủ (multi master bus), mở, các node có vai trò
ngang hàng nhau trên hệ thống bus, số lượng node không bị giới hạn bởi giao thức.
Trong giao thức CAN, khơng có địa chỉ node, thơng tin địa chỉ được chứa bên trong
vùng nhận diện (identifier field) của bức điện được truyền. Số lượng node trên
mạng có thể thay đổi động mà không làm nhiễu loạn đến sự truyền tin của các node
khác. CAN còn được hỗ trợ hai chế độ truyền đặc biệt đó là Multicasting và
Broadcasting.
CAN có các cơ chế phát
hiện/kiểm soát lỗi theo nhiều
phương thức phức tạp (ví dụ
như CRC...), khả năng tránh
được những tác động của nhiễu
điện từ không mong muốn là rất
cao, các lỗi tạm thời sẽ được bỏ
qua, các lỗi cơ bản sẽ tự động
tác động làm cho các node có

Hình1.1.1 Kết nối node CAN lên Bus

sai sót đó chuyển sang trạng thái off. Để mã hóa tín hiệu truyền, CAN sử dụng mã
NRZ (Non Retern to Zero). Trong các trường hợp cần thiết để đồng bộ bức điện,
một bit nhồi thêm được sử dụng (stuffing bit) (các trường hợp sử dụng bit nhồi
chúng ta sẽ thấy được ở phần sau). Tốc độ truyền dữ liệu của CAN có thể lên tới

1000 Kbit/sec tương ứng với độ dài tối đa của đường bus là 40 mét và sử dụng cáp
đôi xoắn làm đường truyền dữ liệu chung. Độ dài dữ liệu ngắn, tối đa 8 byte dữ liệu
trong một bức điện truyền đi. Việc truy cập và kiểm sốt đường truyền được thực
hiện thơng qua giao thức Carrier Sense Multiple Access/Collision Detection with
Non-estructive Arbitration. Hình1.1.1 thể hiện cơ chế kết nối node CAN lên đường

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 13 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

truyền.
Trên đường truyền CAN,
có hai trạng thái thể hiện của
đường bus một trạng thái gọi là
“Recessive” và một trạng thái
còn lại gọi là “Dominant”.
Logic bus sử dụng cơ chế có tên
“WIRED_AND” tức là các bits
“Dominant” (tương đương với

Hình1.1.2 Bảng logic Wired_End

mức logic 0) sẽ có khả năng viết đè lên các bit “Recessive” (tương đương mức logic
1). Hình1.1.2 thể hiện bảng trạng thái logic của đường bus khi có nhiều node cùng
truyền dữ liệu lên đường truyền.
Đường bus chỉ ở trạng thái “Recessive” (mức 1) nếu như tất cả các node có
mặt trong hệ thống đều truyền mức 1 (Recessive), và trạng thái của đường bus sẽ ở
trạng thái “Dominant” ngay khi có một node nào đó trong hệ thống truyền bit

“Dominant”. Hình1.1.3 mơ tả các trạng thái đường truyền CAN bus.

Hình1.1.3 Thể hiện hai trạng thái đường truyền CAN

Giao thức CAN kiểm soát và truy cập đường truyền theo một khái niệm có
tên gọi “Carrier Sense Multiple Access with Arbitration on Message Priority”. Khái
niệm về phân xử (Arbitration) được sử dụng để tránh việc đụng độ của các bức điện
mà việc truyền được bắt đầu bởi nhiều hơn một node trong cùng một thời điểm, và
chắc chắn rằng các bức điện quan trọng nhất (có mức ưu tiên lớn nhất) sẽ được
truyền trước tiên mà khơng cần phải đợi. Nếu như có hai hay nhiều node bắt đầu

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 14 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

truyền trong cùng một thời điểm khi chúng phát hiện ra đường truyền rỗi, việc tránh
sự đụng độ giữa các bức điện sẽ được thực hiện thông qua cơ chế phân xử and từng
bit (bitwise arbitration) : mỗi node sẽ lần lượt gửi đi các bit trong vùng ID của mình
và theo dõi mức đường truyền.
Hãy nhìn Hình1.1.4, tại
đúng thời điểm node A và node
C

gửi

một

bit


Dominant

Identifier, node B gửi một bít
Recessive Identifier nhưng đọc
đường truyền về lại thấy một bít
Dominant, lúc này node B bị mất
sự phân xử (loss arbitration) và
sẽ bị chuyển sang chế độ nhận.

Hình1.1.4 Ví dụ cơ chế chiếm đường truyền

Node B tiếp tục truyền thêm một vài bit nữa và cũng bị mất sự phân xử sau một vài
bit truyền, cuối cùng chỉ còn lại node A được phép truyền tiếp. Điều này có nghĩa
rằng các bít trong phần nhận dạng ID của node A có giá trị là nhỏ hơn và vì thế nó
sẽ có mức ưu tiên cao hơn so với node B và C. Node B và node C sẽ tự động truyền
lại khi thấy đường truyền rỗi, node C lại bị mất quyền ưu tiên truyền một lần nữa và
node B sẽ là node được truyền kế tiếp, cuối cùng mới đến node C. Việc hai node
khác nhau truyền các bức điện có phần ID giống nhau là không được cho phép, lúc
này một lỗi sẽ xảy ra và việc truyền dữ liệu sẽ bị tạm dừng.
1.2. Các dạng frame truyền trong CAN.
CAN protocol có tất cả năm dạng frame, chúng ta sẽ lần lượt xem xét tới các
dạng frame đó ở phần bên dưới đây..
1.2.1. Dạng frame dữ liệu (Data frame).
Một frame dữ liệu được tạo bởi một node CAN khi mà node đó muốn truyền
dữ liệu. Hình1.2.1 thể hiện một frame dữ liệu CAN chuẩn.
Frame bắt đầu bằng một bit Dominant gọi là bit bắt đầu của frame để đồng
bộ cứng tất cả các node có mặt trên đường truyền chuẩn bị nhận bức điện.

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển

- 15 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

Sau bit bắt đầu frame là
vùng phân định (Arbitration) bao
gồm 12 bit, 11 bit vùng ID được
sử dụng để phản ảnh nội dung và
mức ưu tiên của bức điện và một
bit yêu cầu truyền xa (Remote
Transmition Request bit). Bit yêu
cầu truyền xa (RTR bit) giúp

Hình1.2.1 Dạng frame dữ liệu.

phân biệt một frame dữ liệu
(RTR bit = 0) với một frame yêu cầu xa (Remote frame) (RTR bit = 1).
Tiếp theo là vùng điều khiển, bao gồm 6 bit. Bit đầu tiên của vùng này là bit
IDE (Identifier Extension). Nếu bit IDE ở trạng thái 0 thì frame đó là một frame
chuẩn (11 bit ID), cịn nếu nó ở trạng thái 1 thì frame đó là một frame mở rộng (29
bit ID). Bit tiếp theo sau bit IDE trong vùng này chưa được sử dụng và nó được
định nghĩa mặc định giá trị 0. Bốn bit tiếp theo sau nữa trong vùng điều khiển là các
bit mã hóa độ dài dữ liệu DLC (Data Length Code), nó được sử dụng để xác định số
lượng byte dữ liệu có trong bức điện (có giá trị từ 0-8).
Dữ liệu được truyền đi sẽ nằm trong “vùng dữ liệu” ngay sau vùng IDE trong
bức điện. Độ dài vùng dữ liệu có thể là 0,8,16,….,64 bit tùy thuộc vào giá trị độ dài
dữ liệu mà chúng ta đã định nghĩa trong DLC.
Vùng CRC (Redundancy Field) được sử dụng để phát hiện các lỗi truyền có
thể xảy ra. Vùng CRC này bao gồm 15 bit CRC liên tiếp, kết thúc bởi bit phân định

danh giới CRC, bit này ln có mức logic 1.
Sau vùng CRC là vùng xác nhận ACK (Acknowledge). Khi một node truyền
bức điện, nó sẽ gửi kèm theo tại vùng ACK này một bit Recessive (bit 1). Bất kỳ
node nào đã nhận frame mà khơng có lỗi, chúng đều phải xác nhận việc đã nhận
được frame không lỗi đó bằng cách gửi trở lại một bit Dominant (bit 0) tại vùng
ACK (khơng cần biết node đó có hay không được định dạng để chấp nhận một bức
điện cụ thể nào đó).

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 16 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

Cuối cùng là 7 bit mức 1 liên tiếp sử dụng để kết thúc frame dữ liệu ( End of
Frame).
1.2.2. Dạng frame yêu cầu xa (Remote frame).
Thông thường, việc truyền dữ liệu được thực hiện dựa trên căn cứ node
nguồn dữ liệu sẽ gửi đi một
frame dữ liệu, tuy nhiên việc đó
cũng hồn tồn có thể được thực
hiện theo cơ chế: một node đích
sẽ yêu cầu node nguồn gửi cho
mình dữ liệu bằng cách gửi đi
một Remote Frame. Hình1.2.2
thể hiện một Remote Frame.

Hình1.2.2 Dạng frame yêu cầu từ xa.

Có hai sự khác biệt giữa

Data Frame và Remote Frame. Thứ nhất: bit RTR được truyền đi với trạng thái 0
bên trong Data Frame, thứ hai: bên trong Remote Frame khơng có vùng dữ liệu.
Trong nhiều trường hợp không mong muốn, một frame dữ liệu và một frame truyền
xa có cùng ID được truyền đi trong cùng một thời điểm, lúc này frame dữ liệu sẽ
thắng trong việc phân xử vì có bit RTR trong vùng Arbitration ở trạng thái
Dominant, với trường hợp này, node mà đã truyền frame truyền xa để yêu cầu dữ
liệu sẽ nhận được dữ liệu yêu cầu ngay lập tức.
Nếu một node muốn yêu cầu dữ liệu từ một nguồn, nó sẽ gửi một remote
frame có phần ID phù hợp với phần ID nằm bên trong một trong những filter của
nơi được yêu cầu frame dữ liệu, node nguồn dữ liệu sau đó sẽ gửi một frame dữ liệu
như là một sự đáp ứng cho yêu cầu đó.
1.2.3. Dạng frame lỗi (Error Frame).
Một frame lỗi được sinh ra bởi bất kỳ node nào phát hiện thấy một lỗi đường
truyền. Hình1.2.3 thể hiện cho ta thấy một frame lỗi.
Frame lỗi bao gồm hai vùng: vùng cờ lỗi và theo sau là vùng phân định lỗi.
Vùng phân định lỗi: bao gồm 8 bit recessive (bit 1), nó cho phép các node

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 17 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

trên bus sẽ bắt đầu lại từ đầu
việc truyền thơng qua bus sau
khi có lỗi xảy ra.
Vùng cờ lỗi: có hai dạng
của vùng cờ lỗi, các dạng của
vùng cờ lỗi này tùy thuộc vào
trạng thái lỗi bên trong của bản


Hình1.2.3 Dạng frame lỗi.

thân node phát hiện ra lỗi.
Nếu một node với trạng thái lỗi “error-active” (khái niệm trạng thái “erroractive” chúng ta sẽ tìm thấy ở các phần sau) phát hiện ra một lỗi trên đường truyền,
node này sẽ ngắt việc truyền bức điện hiện thời bằng cách tạo ra một “cờ lỗi chủ
động” (“active error flag”). Một “cờ lỗi chủ động” được hợp thành bởi 6 bit
dominant (bit 0) liên tiếp. Các bit liên tiếp này được gửi đi trên đường truyền làm
kích hoạt việc vi phạm luật bit nhồi (stuffing bit chúng ta sẽ hiểu ở phần sau). Tất cả
các trạm khác thừa nhận lỗi bít nhồi và tự chúng chuyển sang tạo ra các frame lỗi.
Vùng cờ lỗi vì vậy có thể có từ 6 cho đến 12 bit dominant liên tiếp (được tạo ra bởi
một hay nhiều node). Vùng phân định lỗi sẽ kết thúc frame lỗi. Sau khi truyền hoàn
thành frame lỗi, đường bus được kích hoạt trở lại trạng thái hoạt động bình thường
và node bị ngắt sẽ thực hiện truyền lại bức điện đã bị hủy bỏ.
Nếu một node với trạng thái lỗi “error-passive” (khái niệm trạng thái “errorpassive” chúng ta sẽ tìm thấy ở các phần sau) phát hiện ra lỗi đường truyền, node
này sẽ truyền một “cờ lỗi bị động” ( “passive error flag”) tiếp theo sau vùng phân
định lỗi. “Cờ lỗi bị động” bao gồm 6 bit recessive (bit 1) liên tiếp, vì thế frame lỗi
(cho một node có trạng thái lỗi “error-passive”) bao gồm 14 bit recessive (bit 1)
(khơng có bit dominant) (bit 0).
1.2.4. Frame q tải (Overload Frame).
Một Overload frame (Hình1.2.4) có định dạng giống như một frame “active
error“, tuy nhiên một overload frame chỉ có thể được tạo ra trong khoảng của
Interframe (ta sẽ có khái niệm về Interframe ở trong phần sau). Đây chính là cách

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 18 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN


phân biệt một overload frame
với một error frame (một error
frame được gửi trong lúc truyền
bức điện).
Overload frame bao gồm
hai

phần,

phần

một:

cờ

Overload và tiếp theo sau nó là

Hình1.2.4 Dạng frame quá tải.

phần phân định Overload. Cờ
Overload bao gồm 6 bit dominant (bit 0) theo sau là các cờ Overload được tạo ra
bởi các node khác (giống như cờ lỗi chủ động “active error flag”), tuy vậy nhưng
vùng cờ Overload này nhiều nhất cho phép 12 bit dominant liên tiếp mà thôi. Phần
phân định Overload (Overload Delimiter) bao gồm 8 bit recessive (bit1).
Một frame Overload có thể được tạo bởi một node trong trường hợp do điều
kiện bên trong của node đó vẫn chưa cho phép bắt đầu nhận message tiếp theo. Một
node có thể tạo ra tối đa 2 Overload frame liên tiếp để trễ lại việc bắt đầu nhận
frame kế tiếp.
1.2.5. Khoảng liên kết frame (Interframe space).
Khoảng liên kết frame

(Hình1.2.5) phân tách một frame
trước (bất kỳ dạng frame nào)
với một frame dữ liệu (Data
frame) hoặc frame xa (Remote
frame) theo sau nó.
Khoảng liên kết frame

Hình1.2.5 Khoảng liên kết frame

được tạo bởi ít nhất ba bit recessive (bit 1), các bit này được gọi là “thời gian
ngừng” (“Intermission”). Khoảng thời gian ngừng được sử dụng để cho phép các
node có thời gian xử lý bên trong trước khi bắt đầu truyền các message kế tiếp. Sau
khoảng thời gian ngừng, đối với các node CAN có trạng thái lỗi chủ động “active
error node”, đường bus sẽ giữ ở trạng thái recessive (trạng thái 1, trạng thái bus dỗi)

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 19 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

cho tới khi việc truyền tiếp theo được bắt đầu trở lại.
Khoảng liên kết frame (Interframe Space) có một chút sự khác biệt về định
dạng (format) đối với các node CAN có trạng thái lỗi bị động (“passive error”) đã
truyền bức điện trước khi phát hiện thấy lỗi. Với các node này, nó sẽ phải đợi một
khoảng 8 bit recessive khác gọi là sự “treo truyền” (“Suspend Transmission”) trước
lúc bus chuyển sang trạng thái dỗi kể từ sau thời gian ngừng, và chúng lại được cho
phép trở lại để tiếp tục gửi. Do cơ chế này, các node lỗi chủ động (error active
nodes) có cơ hội để truyền các bức điện của nó trước khi các node lỗi bị động (
error passive nodes) được phép bắt đầu việc truyền.

1.3. Các cơ chế phát hiện lỗi được sử dụng trong giao thức CAN.
Giao thức CAN cung cấp các cơ chế phát hiện lỗi rất tinh vi mà chúng ta sẽ
lần lượt xem xét ở dưới đây.
1.3.1. Cơ chế phát hiện lỗi Cyclic Redundancy Check (CRC).
Hình1.3.1 thể hiện cơ chế
phát hiện lỗi CRC. Với cơ chế
này, bộ truyền sẽ tính tổng của
tất cả các bit liên tiếp, từ bit bắt
đầu của frame cho tới bit kết
thúc của vùng dữ liệu. Kết quả
CRC được truyền đi trong vùng
CRC của frame CAN. Node

Hình1.3.1 Cơ chế phát hiện lỗi CRC

nhận cũng tính tốn CRC liên tiếp sử dụng cùng một cơng thức tính tốn như node
gửi và thực hiện phép so sánh CRC nhận được trong bức điện với CRC vừa tính
tốn. Nếu node nhận phát hiện thấy sự khơng tương xứng giữa hai CRC tính tốn và
CRC nhận được thì một lỗi CRC xảy ra. Node này sẽ hủy bỏ bức điện vừa nhận, sau
đó truyền một frame lỗi để yêu cầu truyền lại bức điện đã bị sai đó.
1.3.2. Cơ chế phát hiện lỗi Acknowledge.
Hình1.3.2 trình bày cơ chế phát hiện lỗi Ack.
Với cơ chế này, bộ truyền sẽ kiểm tra vùng Acknowledge của của bức điện

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 20 -


Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN


để

xác

định

nếu

tại

khe

Acknowledge nơi mà khi truyền
đã được gửi đi một bit recessive
(bit 1) chứa một bit dominant
(bit 0). Nếu trường hợp này xảy
ra thì ít nhất mơt node nào đó đã
nhận được một frame đúng
(khơng có lỗi), cịn nếu khơng

Hình1.3.2 Cơ chế phát hiện lỗi Acknowledge

thì một lỗi đã xảy ra và bức điện sẽ phải được truyền lại.
1.3.3. Cơ chế kiểm tra frame (Frame Check).
Hình1.3.3 thể hiện cơ chế phát hiện lỗi kiểm tram frame hoặc giám sát bit.
Một cơ chế phát
hiện lỗi khác nữa được sử
dụng trong giao thức
CAN là cơ chế kiểm tra
frame. Nếu một bộ truyền

phát hiện thấy một bit
dominant (bit 0) ở một
trong bốn đoạn: phân
định

CRC

Delimiter),

phân

(CRC
định

Hình1.3.3 Cơ chế phát hiện lỗi kiểm tra frame,
giám sát bit hoặc kiểm tra bit nhồi

Acknowledge (Acknowledge Delimiter), kết thúc frame (End of Frame) hoặc
khoảng liên kết frame (Interframe Space) thì một lỗi định dạng đã xảy ra, lúc này
frame lỗi sẽ được tạo, message sẽ được truyền lại ngay sau đó.
1.3.4. Cơ chế giám sát bit (bit monitoring).
Hình1.3.3 thể hiện cơ chế giám sát bit. Tất cả các node có mặt trên bus thực
hiện việc giám sát bit truyền, một bộ truyền gửi một bit dominant (bit 0) nhưng lại
phát hiện thấy một bit recessive (bit 1) trên đường truyền hoặc ngược lại gửi một bit
recessive nhưng lại phát hiện thấy một bit dominant thì một lỗi frame đã xảy ra và

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 21 -



Ứng dụng vi điều khiển PIC18F458 trong truyền thông nối tiếp sử dụng giao thức CAN

việc truyền sẽ được thực hiện lại.
Khi một bit dominant được phát hiện thay vì phải phát hiện thấy một bit
recessive, sẽ khơng có lỗi nào xảy ra nếu như việc phát hiện ra bit đó nằm trong
vùng phân định (Arbitration) hay vùng Acknowledge bởi vì trong các vùng này, khả
năng bị viết đè lên trong chức năng giành đường truyền là có thể xảy ra.
1.3.5. Cơ chế kểm tra bit nhồi (bit stuffing check).
Hình1.3.3 thể hiện cơ chế kiểm tra bít nhồi. Nếu như 6 bit liên tiếp với cùng
trạng thái (dominant hoặc recessive) được phát hiện trong khoảng giữa bit bắt đầu
frame và bit phân định CRC, thì luật bit nhồi đã bị vi phạm. Lúc này một lỗi bit
nhồi xảy ra và một frame lỗi được hình thành, bức điện sẽ được truyền lại.
1.4. Kiểm soát lỗi trong giao thức CAN.
Khi phát hiện ra một lỗi, lỗi
này sẽ được loan báo tới tất cả các
node khác thông qua frame lỗi.
Việc truyền của bức điện có sai sót
sẽ bị hủy bỏ và frame sẽ được
truyền lại ngay sau đó.
Mỗi node CAN đều ln ở
một trong ba trạng thái lỗi: “lỗi

Hình1.4.1 Các trạng thái lỗi bên trong của một

chủ động” (“error acitve”), “lỗi bị

node CAN

động” (“error passive”) hay “bus off”) tương ứng với giá trị của các thanh ghi đếm
lỗi bên trong node (Hình1.4.1).

Trạng thái “lỗi chủ động” là trạng thái lỗi sau khi reset. Các node trên bus
sau đó có thể truyền và nhận các bức điện, truyền các frame lỗi chủ động (được tạo
bởi các bit dominant) mà khơng có bất kỳ hạn chế nào. Trong lúc node truyền bức
điện qua đường truyền, các thanh ghi bộ đếm lỗi luôn được cập nhật theo các luật
khá phức tạp. Cho mỗi một lỗi nhận hay truyền, các thanh ghi bộ đếm lỗi sẽ tăng
đúng một giá trị. Trạng thái lỗi chủ động vẫn đúng khi nào mà cả hai thanh ghi đếm
lỗi truyền và lỗi nhận (REC register, TEC register) vẫn có giá trị nhỏ hơn hoặc bằng

Học Viên: Nguyễn Trung Hiếu – Chuyên ngành: Kỹ thuật đo & Các hệ thống điều khiển
- 22 -


×