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 t
Trang 1NGUYỄ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
-o0o -
Hà Nội – 2004
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
Trang 2Nguyễ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
-o0o -
Trang 3Sau hơn 6 tháng thực tập và nghiên cứu tại trung tâm nghiên cứu MICA- Trườ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 toà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 hoà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ọc- Trườ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 quá 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 luôn ủ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
Trang 4MỤC LỤC:
Trang phụ bìa ………
LỜI CẢM ƠN …………
MỤC LỤC .1
DANH MỤC HÌNH VẼ……… 4
MỞ ĐẦU .….7
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. 9
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 thực tế các ngành công nghiệp. ………11
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ế …… 11
CHƯƠNG 1: LÝ THUYẾT CƠ SỞ VỀ GIAO THỨC CAN (Controller Area Network) ………13
1.1 Một số khái niệm cơ bản của CAN bus……… …… 13
1.2 Các dạng frame truyền trong CAN……… …… 15
1.2.1 Dạng frame dữ liệu (Data frame)……… …… 15
1.2.2 Dạng frame yêu cầu xa (Remote frame)……… …… 17
1.2.3 Dạng frame lỗi (Error Frame)……… …… 17
1.2.4 Frame quá tải (Overload Frame)……… …… 18
1.2.5 Khoảng liên kết frame (Interframe space)……… …… 19
1.3 Các cơ chế phát hiện lỗi được sử dụng trong giao thức CAN …… 20
1.3.1 Cơ chế phát hiện lỗi Cyclic Redundancy Check (CRC) …… 20
1.3.2 Cơ chế phát hiện lỗi Acknowledge……… …… 21
1.3.3 Cơ chế kiểm tra frame (Frame Check)……… …… 21
1.3.4 Cơ chế giám sát bit (bit monitoring) ……… …… 21
1.3.5 Cơ chế kểm tra bit nhồi (bit stuffing check)………… …… 22
1.4 Kiểm soát lỗi trong giao thức CAN……… …… 22
1.5 Các phiên bản của giao thức CAN……… …… 23
1.6 Cơ chế đồng bộ đường bus……… …… 24
1.6.1 Khái niệm về mã Non Return to Zero……… …… 24
1.6.2 Khái niệm về bit nhồi (stuffing bit)……… …… 24
1.6.3 Đồng bộ đường bus……… …… 25
1.7 Kiến trúc bit truyền trong giao thức CAN……… …… 26
1.8 Chuẩn kết nối vật lý trong CAN……… …… 31
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 …… 34
Trang 5CAN (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
PIC18F458
…… 40
2.2.5 Quá trình truyền bức điện của module CAN………… …… 43 2.2.6 Quá trình nhận bức điện của module CAN………… …… 45 2.2.7 Các mặt nạ và bộ lọc chấp nhận bức điện……… …… 47 2.2.8 Đặt tốc độ truyền……… …… 49 2.2.9 Đồng bộ……… …… 53
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
…… 53
2.2.11 Các thanh ghi định cấu hình thời gian bit………… …… 54
2.2.12 Phát hiện lỗi……… …… 54 2.2.13 Các ngắt của CAN……… …… 56 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
2.3.2 Sơ đồ mạch nguyên lý vỉ thu thập tín hiệu nhiệt độ và
2.3.2.1 Mạch nguyên lý khối chức năng biến đổi tín hiệu nhiệt
2.3.2.5 Mạch nguyên lý cho khối phối ghép truyền RS232 sử
2.3.2.6 Mạch nguyên lý phối ghép cho bộ Vi điều khiển
PIC18F458.
…… 64
2.3.2.7 Mạch nguyên lý khối cấp nguồn nuôi cho vỉ thu thập tín
2.4 Viết phần mềm điều khiển sự hoạt động cho Card thu thập
Trang 62.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 …… 67
2.4.2 Lưu đồ thuật toán chương trình con khởi tạo hệ thống …… 68
2.4.3 Lưu đồ thuật toán chương trình con truyền dữ liệu lên mạng CAN …… 69
2.4.4 Lưu đồ thuật toán chương trình con đọc dữ liệu về từ mạng CAN …… 70
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 …… 72
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 …… 72
3.1.1 Phần mềm Labview 6.1……… …… 72
3.1.1.1 Labview là gì?……… …… 72
3.1.1.2 Thế nào được gọi là một thiết bị ảo VI (Virtual Instrument) …… 72
3.1.1.3 Môi trường làm việc của Labview……… …… 74
3.1.1.4 Các tùy chọn trợ giúp của Labview……… ………81
3.1.2 Phần mềm công cụ NI-CAN for Windows 2000/ NT/XP/Me/9x V2.0. ………81
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 …… 83
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 …… 83
3.2.1 Bước 1: Tạo một New Project trên Labview………… …… 84
3.2.2 Bước 2: Thiết kế giao diện trên cửa sổ Front Panel… ………85
3.2.3 Bước 3: Viết mã lệnh trong cửa sổ Block Diagram… ………92
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 ………96
CHƯƠNG 4: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI ………98
4.1 Kết quả đạt được của đề tài……… ………98
4.2 Hướng phát triển của đề tài……… ………98
KÊT LUẬN …… 99
TÀI LIỆU THAM KHẢO: …… 100
PHỤ LỤC: ………101
Trang 7DANH MỤC HÌNH VẼ:
truyền
IS11898
Trang 8Hình2.2.2 Sơ đồ khối bộ đệm truyền trong module CAN
Hình3.1.10 Các điều khiển của CAN
LABVIEW
Trang 9Hình3.2.7 Giao diện thể hiện dữ liệu nhận được từ mạng CAN
thực tế = 0
Trang 10MỞ ĐẦ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 toá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 ngoài vòng phát triển đó
Trang 11Ngà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 Yê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 yê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
Trang 12cá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ử
Trang 13đượ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 toà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
đ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ình1.1 Phương thức kết nối điểm-điểm
Trang 14CAN 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 –
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 toà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ình1.2 Phương thức kết nối bus
Trang 15chí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
Trang 16CHƯƠ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ó
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 soá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ình1.1.1 Kết nối node CAN lên Bus
Trang 17truyề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
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
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ình1.1.2 Bảng logic Wired_End
Hình1.1.3 Thể hiện hai trạng thái đường truyền CAN
Trang 18truyề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
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ình1.1.4 Ví dụ cơ chế chiếm đường truyền
Trang 19Sau 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
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 luôn 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ình1.2.1 Dạng frame dữ liệu
Trang 20Cuố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 hoàn toà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
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ình1.2.2 Dạng frame yêu cầu từ xa
Trang 21trê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
thân node phát hiện ra lỗi
Nếu một node với trạng thái lỗi active” (khái niệm trạng thái active” 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
“error-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 passive” (khái niệm trạng thái passive” 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)
“error-1.2.4 Frame quá 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ình1.2.3 Dạng frame lỗi
Trang 22phâ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
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
đượ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ình1.2.4 Dạng frame quá tải
Hình1.2.5 Khoảng liên kết frame
Trang 23cho 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
nhận cũng tính toán CRC liên tiếp sử dụng cùng một công thức tính toá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 toá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 toá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ình1.3.1 Cơ chế phát hiện lỗi CRC
Trang 24để 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
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
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ì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 Hình1.3.2 Cơ chế phát hiện lỗi Acknowledge
Trang 25việ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 luôn ở
một trong ba trạng thái lỗi: “lỗi
chủ động” (“error acitve”), “lỗi bị
độ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ình1.4.1 Các trạng thái lỗi bên trong của một
node CAN
Trang 26127
Nếu bất kỳ bộ đếm lỗi truyền hoặc bộ đếm lỗi nhận đạt đến giá trị 128, node
đó sẽ chuyển sang trạng thái “lỗi bị động” (error-passive) Trong trạng thái “lỗi bị động”, các bức điện vẫn có thể được nhận và truyền, mặc dù vậy, sau khi truyền xong một bức điện thì node đó phải “tạm treo” việc truyền lại Nó sẽ phải đợi một khoảng thời gian của 8 bit, dài hơn các node “lỗi chủ động” trước khi nó có thể truyền trở lại các bức điện khác
Nếu cả hai thanh ghi bộ đếm lỗi đều trở lại giá trị dưới 128 do việc truyền bức điện lên bus đã được thực hiện thành công thì node đó sẽ quay trở lại trạng thái
“lỗi chủ động”
Một đặc tính nữa của giao thức CAN đó là các node lỗi sẽ tự động không tham gia vào bus (trạng thái bus-off) Trạng thái “bus-off” được đưa vào nếu thanh ghi bộ đếm lỗi truyền vượt ra ngoài giá trị 255, tất cả sự hoạt động của node lúc này
bị dừng lại, chúng sẽ tạm thời không thể tham gia vào việc truyền nhận thông tin qua bus Để node có trạng thái lỗi “bus-off” trở lại trạng thái “lỗi chủ động” và reset giá trị của bộ đếm lỗi, ta cần khởi tạo lại cho node CAN đó
1.5 Các phiên bản của giao thức CAN
Hình1.5.1 thể hiện hai phiên bản của frame truyền CAN: frame chuẩn và
frame mở rộng
Các phiên bản đầu tiên
(phiên bản 1.0, phiên bản 1.2 và
phiên bản 2.0A) có độ dài vùng ID
của bức điện là 11 bit, và đây được
coi như một phiên bản chuẩn của
CAN, các frame dữ liệu và frame
truyền xa có chứa 11bit ID vì vậy
được gọi là các frame chuẩn Với
các frame này, có thể phân biệt được 211 = 2048 bức điện khác nhau Tuy vậy, 16 bức điện có mức ưu tiên thấp nhất (2033 2047) vẫn chưa được sử dụng
Hình1.5.1 Các phiên bản giao thức CAN
Trang 27Phiên bản 2.0B được xem như phiên bản CAN mở rộng “Extended CAN” Frame truyền của phiên bản 2.0B có vùng nhận dạng ID là 29 bit, tức nó có thể cho phép phân biệt được 229 = 536 triệu ID khác nhau của các bức điện Phần 29 bit ID này được tạo bởi 11 bit ID chuẩn và 18 bit ID mở rộng thêm Tuy nhiên, phiên bản V2.0B vẫn cho phép sử dụng cả các bức điện có phần ID chuẩn 11 bit lẫn ID mở rộng
1.6 Cơ chế đồng bộ đường bus
1.6.1 Khái niệm về mã Non Return to Zero
Giao thức CAN sử dụng
mã Non-Return to Zero để mã hóa
các bit truyền (Hình1.6.1 thể hiện
cơ chế mã hóa bit sử dụng mã Non
Return to Zero), tức là trong toàn
bộ khoảng thời gian của một bit,
tín hiệu chỉ có một trạng thái xác
định, vì thế nên cũng chỉ cần một
phân đoạn thời gian sử dụng để
đại diện cho cho một bit tín hiệu truyền Thông thường (nhưng không phải là lúc nào cũng vậy), một bít tín hiệu “zero” (bit không) tương ứng với một bít Dominant
và nó sẽ đặt đường truyền vào trạng thái Dominant Một bit tín hiệu “One” (Bit một) tương ứng với một bít
Recessive và đặt đường truyền vào
trạng thái Recessive
1.6.2 Khái niệm về bit
nhồi (stuffing bit)
Một đặc điểm của mã
Non-Return to Rezo đó là khi tín hiệu
trên đường truyền liên tiếp có cùng
cực tính sẽ dẫn đến không phát hiện thấy sườn xuống để đồng bộ lại (việc đồng bộ
Hình1.6.1 Cơ chế mã hóa NRZ
Hình1.6.2 Cơ chế sử dụng bít nhồi
Trang 28xảy ra tại vị trí sườn xuống của tín hiệu trên đường truyền) Trong trường hợp này,
một “bit Stuffing” đặc biệt được sử dụng để tạo sườn xuống giúp việc đồng bộ tất cả
các node có mặt trên bus với nhau sẽ vẫn được thực hiện
Hình1.6.2 thể hiện cơ chế sử dụng bit nhồi Do trong khi truyền một bức
điện, cho phép nhiều nhất là 5 bit liên tiếp truyền ra đường truyền có thể có cùng cực tính với nhau Vì thế bất cứ khi nào bộ truyền đã truyền 5 bit có cùng cực tính,
bộ truyền sẽ tự động chèn vào một bít có cực tính ngược với cực tính của năm bit kia vào trong luồng các bit truyền, sau đó nó mới tiếp tục truyền tiếp các bit còn lại Khi nhận, bộ nhận sẽ kiểm tra số các bit có cùng cực tính sau đó loại bỏ cá bit Stuffing đi, quá trình loại bỏ bit Stuffing goi là quá trình destuffing
node được đồng bộ tại điểm bắt
đầu mỗi bức điện khi có một sườn
xuống đầu tiên của một frame (bit
bắt đầu của frame) Kiểu đồng bộ này gọi là kiểu đồng bộ cứng
Để chắc chắn việc lấy mẫu được thực hiện đúng cho tới bit cuối cùng, các node cần phải được đồng bộ lại tại
mọi nơi trong frame mỗi khi có
một sườn xung từ recessive sang
dominant xảy ra trong luồng dữ
liệu truyền
1.7 Kiến trúc bit truyền
trong giao thức CAN
Hình1.6.3 Các cơ chế đồng bộ bus
Trang 29Khoảng thời gian của một bit truyền CAN (Hình1.7.1) (có thể là một mức
cao hay một mức thấp trong mã NRZ) được tạo nên từ 4 phân đoạn thời gian không chồng lên nhau Trong mỗi một phân đoạn đó lại cấu thành từ một số nguyên lần các thời gian lượng tử (TQ) Thời gian lượng tử là phân đoạn thời gian bé nhất sử dụng trong CAN Độ dài của TQ có thể lập trình được bởi một hệ số chia trước, nó cũng phụ thuộc vào tần số của bộ phát xung nhịp mà ta sử dụng cho hệ thống Một bit có thể có độ dài ít nhất là 8 và nhiều nhất là 25 lần thời gian lượng tử (TQ) Thời gian của bit và do đó tốc độ truyền bit rate có thể đuợc lựa chọn bằng việc lập trình thay đổi “độ rộng” và số lượng thời gian lượng tử trong các phân đoạn (segment)
Phân đoạn đầu tiên trong
một bit truyền CAN có tên gọi
(Synchronization Segment)
(Hình1.7.2) Phân đoạn này dùng
để đồng bộ tất cả các node khác
nhau trên bus Trong khi truyền,
tại vị trí bắt đầu của phân đoạn, mức của bit hiện thời sẽ được đưa ra Nếu như bit truyền ra hiện thời có trạng thái ngược với trạng thái của bit đã được truyền ra trước
đó thì sự thay đổi trạng thái của đường bus được mong muốn làm sao cho xảy ra ở bên trong phân đoạn này (tại các
node nhận) Độ dài của phân đoạn
này luôn là một mức lượng tử TQ
Phân đoạn tiếp theo là
phân đoạn thời gian truyền
(Propagation Time Segment)
Trang 30Tiếp theo là phân đoạn giai
đoạn đệm 1 (Phase Buffer
Segment 1) (Hình1.7.4) được sử
dụng để bù các lỗi ở giai đoạn
sườn (edge phase) Đoạn này có
thể có độ dài từ 1 cho tới 8 đơn vị
thời gian lượng tử và có thể kéo dài hơn trong quá trình đồng bộ lại
Điểm lấy mẫu là thời điểm mà tại đó mức của đường bus được đọc về và nó được xem như là giá trị của bit tương ứng tại thời điểm đó Vị trí của điểm lấy mẫu nằm tại điểm kết thúc của Phase Buffer Segment 1 (giữa hai phân đoạn Phase Buffer)
Phân đoạn cuối cùng có
tên gọi: phân đoạn giai đoạn đệm
2 (Phase Buffer Segment 2)
(Hình1.7.5) Phân đoạn này cũng
được sử dụng để bù lại các lỗi ở
giai đoạn sườn (edge phase)
Phase Buffer Segment 2 có thể
có độ dài từ 1 cho đến 8 đơn vị thời gian lượng tử TQ, nhưng độ dài này ít nhất phải
bằng thời gian xử lý thông tin và không được dài hơn độ dài của Phase Buffer
Segment 1
Thời gian xử lý thông tin được tính bắt đầu tại thời điểm lấy mẫu và được
dành để tính toán cho mức bit theo sau Thời gian xử lý thông tin thường có giá trị nhỏ hơn hoặc bằng 2 lần thời gian lượng tử TQ
Kết quả của việc đồng bộ lại làm cho Phase Buffer Segment 1 có thể bị kéo dài ra hoặc Phase Buffer Segment 2 có thể bị rút ngắn lại để bù cho sự sai lệch (dung sai) của các bộ phát xung nhịp bên trong các node CAN khác nhau
Ví dụ: giả sử bộ phát xung nhịp truyền chậm hơn bộ phát xung nhịp nhận thì
ở sườn xuống kế tiếp sẽ được sử dụng để đồng bộ lại sự trễ có thể xảy ra này, bởi
Hình1.7.5 Phân đoạn Phase buffer segment 2 Hình1.7.4 Phân đoạn Phase buffer segment 1
Trang 31thế Phase Buffer Segment 1 có thể
bị kéo dài ra nhằm điều chỉnh lại
điểm lấy mẫu và kết thúc thời
gian bit (Hình1.7.6) Trong trường
hợp ngược lại, nếu bộ phát xung
nhịp của node truyền mà nhanh
hơn bộ phát xung nhịp của node
nhận thì sườn xuống kế tiếp được
sử dụng để đồng bộ lại sự quá
sớm có thể này, bởi thế Phase
Buffer Segment 2 ở bit thứ N sẽ bị
rút ngắn lại để điều chỉnh điểm
lấy mẫu cho bit thứ N+1 và kết
thúc thời gian bit (Hình1.7.7)
Giới hạn cho việc kéo dài hay rút
ngắn của các Phase Buffer Segmet
được đặt bởi thông số RJW (ReSynchronization Jump Width) Thông số RJW có giá trị nằm trong khoảng từ 1 cho đến 4 mức lượng tử thời gian TQ nhưng không được dài hơn Phase Buffer Segment 2
Nhiều module CAN trong thực tế thường quan niệm hai phân đoạn “thời gian truyền” (propagation time) và phân đoạn “giai đoạn đệm 1” (Phase Buffer Segment 1) được gộp lại (giúp dễ
dàng cho việc lập trình) thành
một phân đoạn và được gọi là
“Phân đoạn thời gian 1” (Timing
Segment 1) Phân đoạn “giai
đoạn đệm 2” (Phase Buffer
Segment 2) được xem như “Phân
đoạn thời gian 2” (Timing
Hình1.7.7 Cơ chế rút ngắn phân đoạn phase
buffer segment 2
Hình1.7.8 Một cách phân chia thời gian bit
khác hay được sử dụng Hình1.7.6 Cơ chế kéo dài phân đoạn phase
buffer segment 1
Trang 32Segment 2) (Hình1.7.8)
Chúng ta nhận thấy, điểm lấy mẫu bit có thể lập trình được, vậy lý do tại sao lại phải lập trình cho điểm lấy mẫu? trả lời câu hỏi này ta có thể hiểu như sau: việc lập trình cho điểm lấy mẫu cho phép ta có thể điểu chỉnh được các đặc tính của hệ thống cho phù hợp với đường truyền tương ứng được sử dụng
- Nếu lấy mẫu sớm sẽ cho phép kéo dài khoảng “Phase Buffer Segment 2” (khoảng này sẽ có số lượng TQ nhiều hơn) bởi vậy thông số SJW có thể lập trình với
độ dài tối đa là 4 TQ Tối đa khả
năng rút ngắn hay kéo dài thời
gian bit sẽ làm giảm độ nhạy/chính
xác của bộ phát xung nhip của
node, và vì thế nó cũng làm giảm
giá thành cho các bộ phát xung
nhịp Hình1.7.9 thể hiện hình ảnh
của việc lấy mẫu sớm
- Việc lấy mẫu muộn lại
cho phép kéo dài phân đoạn thời
gian truyền (Tăng số lượng TQ
trong phân đoạn thời gian truyền
lên), và nó có khả năng sử dụng
được với các đường truyền chất
lượng kém hơn, hoặc có khả năng tăng độ dài đường truyền Hình1.7.10 thể hiện
hình ảnh của việc lấy mẫu muộn
Tốc độ truyền bus tối đa của CAN có thể đạt tới 1 Mbaud, tương ứng với độ dài của đường bus là 40 mét, sử dụng cáp đôi xoắn làm phương tiện truyền dữ liệu chung Nếu như độ dài đường truyền dài ra thì tương ứng tốc độ truyền cần phải được giảm xuống Với độ dài đường bus 1000 mét, việc truyền vẫn có thể thực hiện được ở tốc độ truyền 50 kbps Trong trường hợp muốn độ dài đường truyền lớn hơn
1000 mét, chúng ta cần phải sử dụng các thiết bị phụ trợ khác như bộ lặp tín hiệu
Hình1.7.10 Điểm lấy mẫu bit truyền muộn Hình1.7.9 Điểm lấy mẫu bit truyền sớm
Trang 33Hình1.7.11 là biểu đồ thể hiện mối quan hệ giữa tốc độ truyền và độ dài đường
truyền trong giao thức CAN
Dựa trên các ứng dụng của
CAN, ta có thể phân chia ra làm 3
lớp tương quan với các tính năng
đáp ứng thời gian thực của chúng
như sau:
- Lớp A cho các bus có
tốc độ thấp với tốc độ truyền có
thể lên tới 10 Kbps
- Lớp B cũng cho các bus có tốc độ thấp với tốc độ truyền nằm trong giải
từ 10 Kbps cho tới 125 Kbps, loại này thường sử dụng để truyền các tín hiệu đo, tín hiệu chuẩn đoán lỗi
- Lớp C dành cho các đường truyền tốc độ cao, giải tốc độ của nó có thể đạt từ 125Kbps cho tới 1Mbps Nó thường được ứng dụng trong các hệ thống đòi hỏi độ chính xác về thời gian thực cao
Hình1.7.12 biểu đồ phân
lớp giao thức CAN
Và cũng dựa trên các ứng
dụng này, người ta đưa ra hai
chuẩn về giao diện CAN bus như
sau:
- CAN tốc độ cao tương
ứng với chuẩn ISO-IS 11898 cho
các bus có tốc độ truyền nằm giữa 125 Kbps cho tới 1Mbps
- CAN tốc độ thấp tương ứng với chuẩn ISO-IS 11519-2 cho các bus có tốc
độ truyền dưới 125 Kbps
1.8 Chuẩn kết nối vật lý trong CAN
Một phương thức có thể được sử dụng để truyền đi hai trạng thái Dominant
HìnhII.7.12 Biểu đồ phân lớp giao thức CAN Hình1.7.11 Biểu đồ quan hệ giữa tốc động truyền và độ dài đường truyền
Trang 34và Recessive trên đường truyền đó là sử dụng cáp đôi xoắn (rẻ nhất mà vẫn đạt được các yêu cầu về kỹ thuật) Các đường bus trong CAN có tên gọi đường CAN_L
và CAN_H Hai đường bus
CAN_L và CAN_H lúc này được
điều khiển bởi các node với các
tín hiệu khác nhau Tại điểm đầu
và cuối của bus được mắc các điện
trở đầu cuối thường có giá trị 120
Ohm Chúng ta cũng có thể sử
dụng cáp quang làm đường bus
cho mạng CAN Trong trường
hợp này, trạng thái Dominant sẽ
tương ứng với mức “light On” và
trạng thái Recessive sẽ tương ứng
với mức “Light Off “ (Hình1.8.1)
Việc sử dụng đường truyền
CAN như trên sẽ có độ nhậy cảm
với nhiễu nhỏ (tức khả năng
chống nhiễu tốt) bởi vì: khi có nhiễu tác động, cả hai dây sẽ chịu cùng một tác động
của nhiễu nên sẽ tự động loại trừ nhau đi (Hình1.8.2) Để tăng khả năng chống
nhiễu, bên ngoài vỏ bọc của cáp
truyền nên có thêm lớp vỏ bọc
chống nhiễu Vỏ bọc này cũng
làm giảm sự phát ra nhiễu do
chính bản thân các đường bus gây
nên Trong các hệ thống truyền
tốc độ cao cần thiết phải sử dụng
loại cáp truyền có vỏ bọc chống
nhiễu này
Hình1.8.1 Chuẩn kết nối vật lý trong CAN
Hình1.8.3 Cấu trúc kết nối một đường truyền
CAN theo chuẩn ISO-IS11898 Hình1.8.2 Cơ chế truyền hai dây có khả năng
chống nhiễu tốt
Trang 35Cấu trúc của một Bus CAN theo chuẩn ISO-IS 11898 được thể hiện trong
Hình1.8.3 Độ dài của đường bus có thể lên tới 40 mét khi truyền ở tốc độ 1Mbps
và hai đầu cuối của Bus có trở đầu cuối 120 Ohm Độ dài của đường bus có thể dài hơn nhưng với điều kiện ta phải giảm nhỏ tốc độ truyền xuống Chúng ta có thể mắc
30 node trên một đường bus cho chuẩn này Để kết nối nhiều hơn các node lên bus, chúng ta cần phải sử dụng các bộ lặp hoặc các bộ kích… Độ dài của đoạn nối từ node tới đường bus không nên vượt quá 0.3 mét khi truyền ở tốc độ 1Mbps
Hình1.8.4 thể hiện mức tín
hiệu của đường bus tương ứng với
chuẩn ISO-IS 11898 Một bit
Recessive được thể hiện ở cả hai
đường bus là như nhau và bằng
2.5 volt, vì vậy mức điện thế giữa
hai dây CAN_H và CAN_L là 0
volt Tương ứng như thế, một bit
Dominant được thể hiện bởi mức
điện áp 3.5 volt trên đường CAN_H và 1.5 volt trên đường CAN_L bởi vậy điện thế giữa hai dây CAN_H và CAN_L sẽ là 2 volt
Khả năng sử dụng CAN
như là một chuẩn bus trường công
nghiệp trong hệ thống mở bởi lý
do: CAN tuân theo chuẩn CiA DS
102-1 tạo ra dựa trên nền chuẩn
11898 (Hình1.8.5) Các đường tín
hiệu CAN_H và CAN_L được nối
vào chân 7 và chân 2 của connector hình chữ D 9 chân Các chân khác được sử dụng để nối đất hoặc nguồn hoặc sử dụng cho các mục đích khác sau này khi ta mở rộng tính năng hệ thống
Hình1.8.4 Chuẩn mức tín hiệu trên đuờng
truyền CAN
Hình1.8.5 Chuẩn kết nối connector của CAN
Trang 36CHƯƠNG 2 NGHIÊN CỨU ỨNG DỤNG CHIP 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 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 của nó
Họ vi điều khiển PIC18F458 được hãng Microchip tung ra thị trường vào năm 2003 với các tính năng kỹ thuật mạnh như sau:
• Đặc tính CPU
- Vùng địa chỉ bộ nhớ chương trình lên tới 2Mbytes
- Vùng địa chỉ bộ nhớ dữ liệu lên tới 4Kbytes
- Nhịp clock vào 4MHz-10MHz với khả năng kích hoạt chế độ PLL
- Tập lệnh có độ rộng 16bit, 8bit độ rộng dữ liệu
- Có các mức ưu tiên cho ngắt
- Bộ nhân cứng 8x8 bit một chu kỳ lệnh
• Đặc tính vào ra
- Dòng sink/source cao 25mA/25mA
- Ba chân tín hiệu ngắt bên ngoài
- Module timer0/8bit/16bit- timer/counter với 8 bit chia trước lập trình được
- Module timer1/16bit timer/counter
- Module timer2/8bit timer/counter với thanh ghi chu kỳ 8bit (thời gian cơ sở cho PWM)
- Module timer 3/16bit timer/counter
- Tùy chọn bộ phát xung nhịp clock thứ yếu
Trang 37năng biến đổi ngay trong chế độ ngủ (Sleep)
- Module so sánh analog có khả năng lập trình vào ra đa thành phần
- Module so sánh điện áp
- Module phát hiện điện áp thấp lập trình được hỗ trợ ngắt trong trường hợp phát hiện điện áp thấp
- Reset BrownOut lập trình được
• Các đặc tính của module CAN bus
- Tuân theo chuẩn ISO CAN
- Tốc độ truyền nhận message có thể lên tới 1Mbps
- Phù hợp với chuẩn CAN 2.0B Active với:
+ Vùng Identifier 29 bit
+ Độ dài 8 bytes bức điện
+ Ba bộ đệm truyền bức điện có mức ưu tiên
+ Hai bộ đệm nhận bức điện
+ 6 bộ lọc xác nhận (Acceptance Filter)
+ Có các mức ưu tiên của các bộ đệm lọc xác nhận
+ Các đặc tính quản lý lỗi tiên tiến
• Các đặc tính đặc biệt của vi điều khiển
- Reset Power-On (POR), Power-Up timer và Oscillator Start-Up Timer
- Watch dog timer với bộ tạo dao động RC riêng bên trong Chip
- Chế độ bảo vệ mã lập trình được
- Chế độ ngủ tiết kiệm năng lượng
- Khả năng tùy chọn bộ phát xung nhịp bao gồm:
+ 4x Phase Lock Loop (trong bộ phát xung nhịp chính)
+ Lối vào cho bộ phát xung clock (32KHz) thứ yếu
- Chế độ lập trình nối tiếp trực tiếp trên mạch thông qua hai chân
• Kỹ thuật Flash
- Kỹ thuật Flash năng cao tốc độ, năng lượng thấp
- Giải điện áp hoạt động rộng (từ 2 volt cho đến 5.5 volt)
Trang 38- Giải nhiệt độ làm việc rộng
Hình2.1.1 cho ta thấy sơ đồ chân của một chip DIP PIC18F48
Sơ đồ khối của chip PIC18F458 được trình bày trong Hình2.1.2
Hình2.1.1 Sơ đồ chân DIP của Chip PIC18F458
Trang 39Hình2.1.2 Sơ đồ khối bên trong của PIC18F458
Trang 402.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
Module CAN bus trong PIC18F458 bao gồm một phương tiện giao thức (Protocol engine), bộ đệm bức điện, và bộ điều khiển Phương tiện giao thức của CAN kiểm soát toàn bộ các chức năng nhận và truyền các bức điện trên đường truyền Các bức điện được truyền bằng cách trước tiên nạp dữ liệu thích hợp vào các thanh ghi Trạng thái và các lỗi có thể được kiểm tra bằng cách đọc các thanh ghi trạng thái tương ứng thể hiện nó Bất kỳ bức điện nào đã phát hiện trên đường truyền CAN đều được kiểm tra lỗi, sau đó được đem so sánh với các bộ lọc chấp nhận (filter) để quyết định có nhận bức điện đó vào một trong hai bộ đệm nhận hay không
Module CAN hỗ trợ các kiểu frame sau đây:
- Frame dữ liệu chuẩn
- Frame dữ liệu mở rộng
- Frame truyền xa
- Frame lỗi
- Sự tiếp nhận các frame quá tải (Overload Frame Reception)
- Khoảng liên kết frame (Interframe Space)
Module CAN sử dụng các chân RB3/CANRX và RB2/CANTX/INT2 để giao tiếp với đường bus Để định cấu hình cho các chân CANRX và CANTX đảm nhiệm chức năng truyền nhận dữ liệu CAN, bit TRISB<3> phải được đặt (set mức 1) và bit TRISB<2> phải được xóa (clear mức 0)
2.2.2 Các bộ đệm truyền/nhận
PIC18F458 có ba bộ đệm truyền và hai bộ đệm nhận, hai mặt nạ chấp nhận, mỗi một mặt nạ chấp nhận cho một bộ đệm nhận (Acceptance Mask), và tất cả 6 bộ
lọc chấp nhận (Acceptance Filter) Hình2.2.1 là sơ đồ khối module CAN tích hợp
bên trong PIC18F458