1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

104 107 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 104
Dung lượng 2,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

-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 2

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

-o0o -

Trang 3

Sau 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 4

MỤ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 5

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

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 6

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 …… 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 7

DANH MỤC HÌNH VẼ:

truyền

IS11898

Trang 8

Hì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 9

Hình3.2.7 Giao diện thể hiện dữ liệu nhận được từ mạng CAN

thực tế = 0

Trang 10

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 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 11

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 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 12

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ử

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 14

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 –

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 15

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

Trang 16

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ó

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 17

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

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 18

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

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 19

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

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 20

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 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 21

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

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 22

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

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 23

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

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 25

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 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 26

127

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 27

Phiê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 28

xả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 29

Khoả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 30

Tiế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 31

thế 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 32

Segment 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 33

Hì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 34

và 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 35

Cấ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 36

CHƯƠ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 37

nă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 39

Hình2.1.2 Sơ đồ khối bên trong của PIC18F458

Trang 40

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

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

Ngày đăng: 22/01/2021, 12:56

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Nguyễn Trọng Quế; Giáo trình Phương pháp đo các đại lượng điện và không điện, Hà Nội 1998 Khác
2. Hoàng Minh Sơn; Giáo trình bài giảng hệ thống điều khiển phân tán, Hà Nội 2002 Khác
3. Hoàng Minh Sơn; Mạng truyền thông công nghiệp, NXB Khoa Học Kỹ Thuật, Hà Nội 2004 Khác
4. Robert Bosch GmbH; CAN Protocol, Germany 1988 Khác
5. Siemens Microelectronics Inc; Controller Area Network, Germany October 98 Khác
6. Microchip Technology Inc; PIC18Fxx8 Data Sheet, 2003 Khác
7. Microchip Technology Inc; High speed CAN Transceiver MCP2551, 2003 Khác
8. Gaurang Kavaiya, Microchip Technology Inc, PIC18F458 CAN Driver with Prioritized transmit buffer, 2001 Khác
9. National Instruments Technical Support and Profesional Services; NI-CAN Hardware and Software Manual, USA October 2002 Khác
10. National Instruments;Labview User Manual, July 2000 Edition, Part Number 320999c-01 Khác
11. Thomas Kugelstadt; Texas Instruments, Active filter design Techniques Chapter 16, Dallas 2001 Khác
12. Bruce Carter; Texas Instruments, A Single-Supply Op-Amp Circuit Collection, 2001 Khác
13. National Semiconductor, LM135/LM235/LM335, LM135A/LM235A/LM335A, May 1999 Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm