Luận văn nhằm xây dựng mô hình giao tiếp các thiết bị dùng mạng CAN. Các thiết bị được đặt ở xa nhau và tương tác với nhau. Mỗi thiết bị đọc các thông số về môi trường như: nhiệt độ, độ sáng, … Đồng thời cũng có khả năng tự giải quyết vấn đề khi xảy ra trường hợp khẩn cấp như rò rỉ gas bằng cách nhắn tin và gọi điện khẩn cấp cho số điện thoại đặt sẵn, thiết bị này cũng thông báo cho các thiết bị khác để giải quyết vấn đề cục bộ như: nháy đèn báo hiệu có sự cố, bật quạt thông gió, …
Trang 1Chương 1: Tổng quan về đề tài
1.1 Tình hình nghiên cứu trong và ngoài nước
1.1.1 Về tình hình trong nước
Giám sát và điều khiển thiết bị từ xa là ý tưởng không mới, đã có rất nhiều công ty hay nhóm kỹ
sư áp dụng các công nghệ về mạng như: PLC (Power Line Communication), X10, Zigbee, Ethernet TCP/IP, … để giám sát và điều khiển từ xa các thiết bị trong nhà Mà lớn hơn bao quát hơn đó là hệ thống nhà thông mình có sự tương tác giữa các thiết bị trong nhà và có thể theo dõi điều khiển từ xa, đồng thời các thiết bị có thể tự cảnh báo cho người dùng trong các trường hợp khẩn cấp
Điển hình xin nêu ra hệ thống nhà thông minh HomeOn của nhóm kỹ sư dự thi Giải thưởng nhân tài đất Việt năm 2011 Là một hệ thống hoàn thiện về các chức năng giám sát điều khiển tự cảnh báo, …
Về chức năng xin trích dẫn lời bài viết từ báo báo Dân Trí khi giới thiệu hệ thống:
- An toàn: HomeOn có thể cảnh báo các mối nguy hiểm như: cháy, đột nhập trái phép, kính
vỡ, rò gas, cửa mở Các cảnh báo được đưa ra chuông báo động, hoặc tự động gọi điện, gửi SMS tới các số điện thoại đặt trước Hệ thống được thiết kế với mưc độ bảo vệ cao, ngay cả khi điện lưới AC hoặc đường điện thoại bị cắt thì hệ thống với chức năng báo động vẫn hoạt động bình thường.Với camera IP tích hợp, nội dung được lưu trữ tại Server từ xa không lo bị mất hoặc phá hủy Việc giám sát ngôi nhà được thực hiện tại chỗ hay từ xa bằng PC, Tablet, smart phone thông qua mạng internet, 3G
- Điều khiển các thiết bị điện tại chỗ hoặc từ xa, điều khiển đơn chiếc hoặc nhiều thiết bị cùng lúc với hàng trăm kịch bản Được trang bị các công nghệ điều khiển không dây như ZigBee, Wifi, việc lắp đặt điều khiển các thiết bị điện rất dễ dàng Có thể điều khiển tức thì hay tự động theo chương trình, ví dụ tưới cây tự động, tự động làm mát ngôi nhà bằng cách tưới nước mái khi nhiệt độ cao, hạn chế việc sử dụng máy điều hòa Các thiết bị có thể điều khiển theo kịch bản như: nghe nhạc ( bật một số đèn, đóng rèm cửa ), xem phim, của mở (
tự động bật đèn ) cũng có thể điều khiển từ xa qua mạng Internet, 3G nếu được phép Các thiệt bị sử dụng nhiều điện năng như điều hòa, bình nóng lạnh sẽ được giám sát và tự động điều chỉnh về chế độ tiết kiệm nhất, sẽ được tắt khi chủ nhà quên không tắt
- Quản lý tiết kiệm năng lượng: việc sử dụng điện, nước, gas được hiển thị tức thời giúp chủ nhân biết được tình hình sử dụng năng lượng hiện tại Các sự cố như rò điện, rò gas, rò nước hoặc các hành vi sử dụng năng lượng vượt mức cho phép cũng sẽ được cảnh báo kịp thời bằng cách gửi ra các thông điệp trên máy tính hoặc điện thoại giúp chủ nhân kịp thời thay đổi các hành vi sử dụng năng lượng
- Các tính năng cao cấp: chăm sóc sức khỏe từ xa, quản lý trẻ em, dịch vụ quảng cáo Mô hình thành phố thông minh: quản lý hành chính tự động, quản lý năng lượng, điện, nước tập trung giúp giảm rất nhiều chi phí nhân công
Trang 2- Đặc biệt hệ thống giúp ngôi nhà tiết kiệm năng lượng hơn, theo tính toán sơ bộ, điện tiêu thụ
sẽ tiết kiệm khoảng 15% đến 35% hàng tháng
Một số hình ảnh về trang web điều khiển từ xa được HomeOn cho phép chạy demo:
Hình 1.1: Hình ảnh trang chủ đăng nhập
Trang 3Hình 1.2: Trang quản lý chung
Hình 1.3: Trang quản lý một phòng (phòng khách)
Hệ thống được xây dựng hoàn chỉnh, quy mô lớn nên web server của hệ thống có nhiều nhiệm vụ bao gồm việc lưu trữ, giám sát, điều khiển, … là một máy chủ Còn đề tài đang thực hiện ở quy mô nhỏ, web server chỉ có chức năng lưu trữ giới hạn, và điều khiển nên được tích hợp chạy trên vi điều khiển Về mặt chức năng hạn chế, độ ổn định thì không cao nhưng rõ ràng về mặt giá thành đảm bảo Hệ thống mà đề tài nhắm đến chỉ thực hiện
ở quy mô một căn phòng
Application note của hãng Atmel sử dụng vi xử lý AVR 8 bit + CS8900
(10Base-T Embedded Ethernet Controller) thực hiện việc điều khiển các LED từ xa thông qua trang web được lập trình trên vi xử lý AVR 8 bit và CS8900 làm nhiệm vụ chuyển đổi Ethernet 10 Mbps sang dạng bus dữ liệu song song
Trang 4Hình 1.4: Phần giới thiệu về demo cua hãng Atmel
Hình 1.5: Phần cứng của demo hãng Atmel
Trang 5Hình 1.6: Mô hình của demo hãng Atmel
Demo: “Web Controlled Arduino LED” được chia sẻ trên trang web của cộng đồng Arduino sử dụng board Arduino Duemilanove (vi xử lý Atmega – 8 bit) và board Ethernet shield (dạng board chuyển đổi Ethernet sang chuẩn giao tiếp khác mà người
sử dụng Arduino hay dùng) Demo thực hiện việc điều khiển LED RGB theo sự cài đặt trên trang web của người truy cập Một số hình ảnh về demo này:
Trang 6Hình 1.7: Giao diện truy cập điều khiển LED RGB
Hình 1.8: Cách làm việc của demo web control dựa trên nền tảng Arduino
Trang 71.2 Phân tích nhiệm vụ luận văn
Luận văn nhằm xây dựng mô hình giao tiếp các thiết bị dùng mạng CAN Các thiết bị được đặt ở
xa nhau và tương tác với nhau Mỗi thiết bị đọc các thông số về môi trường như: nhiệt độ, độ
sáng, … Đồng thời cũng có khả năng tự giải quyết vấn đề khi xảy ra trường hợp khẩn cấp như rò
rỉ gas bằng cách nhắn tin và gọi điện khẩn cấp cho số điện thoại đặt sẵn, thiết bị này cũng thông báo cho các thiết bị khác để giải quyết vấn đề cục bộ như: nháy đèn báo hiệu có sự cố, bật quạt thông gió, …
Các thiết bị trong mạng được giám sát cục bộ bằng thiết bị giao tiếp người dùng Thiết bị có
menu trực quan, dễ điều khiển cung cấp tất cả các thông tin về các thiết bị trong mạng, đồng thời cũng cho phép điều khiển các tải nếu đăng nhập đúng bằng thẻ (tag) RFID Các chức năng giao tiếp với máy tính, quản lý người dùng, thay đổi số điện thoại khẩn cấp cũng được trang bị để tiện lợi hơn cho người sử dụng
Mạng CAN có thể hoạt động độc lập với web server, thiết bị cho phép người dùng giám sát trạng thái, điều khiển từ xa các thiết bị thông qua Internet Với giao diện đơn giản, trực quan không khó để người dùng có thể thao tác và sử dụng Trang web cũng được thiết kế để biểu diễn các thông tin trên đồ thị thời gian thực vừa sinh động vừa dễ theo dõi
Mô hình tổng quát của đề tài:
CAN Access Point
CAN Device 2 CAN Device 4
ADSLHome
CAN Device 5
Internet-PC
Hình 1.10: Mô hình tổng quát của đề tài
Trang 81.2.1 Các vấn đề cần giải quyết trong đề tài
- Xây dựng mô hình mạng CAN về phần cứng
- Xây dựng giải thuật giao tiếp trong mạng CAN giữa các thiết bị với nhau
- Xây dựng giải thuật giao tiếp giữa mạng CAN với web server
- Xây dựng giải thuật HTTP cho web server
- Lập trình một trang web có khả năng truy vấn dữ liệu liên tục, đồng thời cũng cập nhật các thông tin từ dữ liệu đó lên
- Thực hiện phần cứng các module cảm biến: nhiệt độ, độ sáng, cảm biến gas báo động Module rờ le đóng ngắt các tải AC Module LCD 20x4 hiển thị menu Module RFID để đăng nhập hệ thống
- Thực hiện phần cứng các thiết bị bao gồm: các thiết bị đọc cảm biến và điều khiển đóng ngắt tải, thiết bị lưu trữ và truy cập, thiết bị nhúng embedded web server
- Viết phần mềm giao diện người dùng bằng LabView 2010 giao tiếp với thiết bị giao tiếp người dùng (UI Device)
1.2.2 Hướng giải quyết vấn đề
- Về mạng CAN: tham khảo thông tin, tài liệu về CAN Network trên trang web của CiA, Wikipedia, … Tài liệu về SCADA, mạng công nghiệp của thầy Trương Đình Châu để đưa ra mô hình phần cứng thỏa các điều kiện Mô hình mạng sau đó được kiểm tra tính đúng đắn so với lý thuyết Giải thuật giao tiếp được viết trên nền vi điều khiển
LM3S8962 có hỗ trợ CAN 2.0 A/B, giải thuật được tạo ra nhờ tham khảo mô hình mạng
có sử dụng CAN là OBD II
- Về giải thuật HTTP cho web server, đề tài áp dụng một TCP/IP stack (một bộ giao thức TCP/IP viết trên nền C) là lwIP Stack này hỗ trợ rất mạnh các giao thức TCP, UDP và các giao thức trên nền của TCP và UDP trong đó có HTTP
- Các phần cứng được thực hiện trên phần mềm vẽ mạch Altium, sơ đồ mạch có tham khảo
từ thiết kế đề nghị của nhà sản xuất vi điều khiển Texas Instrument Các module cảm biến và rờ le được thiết kế lại để phù hợp hơn
- Giao diện phần mềm viết trên PC với LabView 2010, các tài liệu tham khảo được lấy từ trang web chính hãng tạo ra LabView là National Instrument
1.2.3 Phạm vi của luận văn
Nghiên cứu đưa ra mô hình mạng phần cứng của mạng CAN giao tiếp các thiết bị
Nghiên cứu và đưa ra giải thuật giao tiếp các thiết bị trong mạng CAN, giữa mạng CAN với web server và giữa web server với trình duyệt web
Thực hiện mô hình đã nghiên cứu với các thiết bị: 4 thiết bị đọc cảm biến nhiệt độ, độ sáng
và đóng ngắt tải bằng rờ le; 1 thiết bị báo động sự cố xì gas hoặc khói có trang bị module GSM SIM908; 1 thiết bị giao tiếp người dùng có màn hình LCD 20x4 để hiển thị và module RFID để đăng nhập; 1 thiết bị nhúng web server Tất cả các phần trên nếu sử dụng vi xử lý đều dùng ARM Cortex M3 LM3S8962 của hãng Texas Instrument
Lập trình một trang web đơn giản ứng dụng AJAX
Trang 9Thực hiện phần mềm lập trình trên LabView 2010 của hãng National Instrument
Chương 2 Tổng quan về kiến trúc lõi ARM Cortex M và dòng vi xử lý Stellaris ARM
Cortex M3 của hãng Texas Instrument 2.1 Giới thiệu chung
Dòng ARM Cortex là một bộ xử lí thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ Không giống nhu các chip ARM khác, dòng Cortex là một lõi xử lí hoàn thiện, đưa ra một chuẩn CPU và kiến trúc hệ thống chung Dòng Cortex gồm có 3 phân nhánh chính: dòng A dành cho các ứng dụng cao cấp, dòng R dành cho các ứng dụng thời gian thực nhu các đầu đọc và dòng M dành cho các ứng dụng vi điều khiển và chi phí thấp
Cortex-M3 đưa ra một lõi vi điều khiển chuẩn nhằm cung cấp phần tổng quát, quan trọng nhất của một vi điều khiển bao gồm: hệ thống ngắt (interrupt system), SysTick timer (đuợc thiết kế cho hệ điều hành thời gian thực), hệ thống kiểm lỗi (debug system) và memory map Không gian địa chỉ 4Gbyte của Cortex-M3 đuợc chia thành các vùng cho mã chương trình, SRAM, ngoại vi và ngoại vi hệ thống Cortex-M3 đuợc thiết kế dựa theo kiến trúc Harvard (bộ nhớ chuong trình và bộ nhớ dữ liệu tách biệt với nhau), và có nhiều bus cho phép thực hiện các thao tác song song với nhau, do đó làm tăng hiệu suất của chip
Dòng Cortex duợc thiết kế hỗ trợ tập lệnh ARM Thumb-2, tập lệnh này duợc pha trộn giữa tập lệnh 16 và 32bit, nhằm dạt duợc hiệu suất cao của của tập lệnh ARM 32-bit với mật dộ mã chuong trình tối uu của tập lệnh Thumb 16-bit Tập lệnh Thumb-2 duợc thiết kế dặc biệt dành cho trình biên dịch C/C++, tức là các ứng dụng dựa trên nền Cortex hoàn toàn có thể duợc viết bằng ngôn ngữ C mà không cần dến chuong trình khởi dộng viết bằng assembler nhu ARM7 và ARM9
Trang 10Hình 2.1: Kiến trúc vi xử lý dùng lõi ARM Cortex M3
2.2 Một số ưu điểm nổi trội
Hiệu suất cao: hỗ trợ kiến trúc tập lệnh Thumb-2, giúp nó hoạt động hiệu quả hơn 70% cho mỗi MHz so với một bộ vi xử lý ARM7TDMI-S thực thi với tập lệnh Thumb, và hiệu quả hơn 35% so với bộ xử lý ARM7TDMI-S thực thi với tập lệnh ARM
Dễ sử dụng, phát triển ứng dụng nhanh chóng, hiệu quả: Bộ vi xử lý có mô hình lập trình dựa trên ngăn xếp đã được đơn giản hoá để tương thích với kiến trúc ARM truyền thống nhưng tương tự với hệ thống đã được triển khai trên kiến trúc 8 và 16-bit, giúp việc chuyển tiếp đến kiến trúc 32-bit dễ dàng hơn Ngoài ra tập lệnh ARM Thumb-2 được thiết kế đặc biệt dành cho trình biên dịch C/C++ nên ứng dụng được viết không cần thông qua bất cứ chương trình assembler nào (chương trình startup)
Hoạt động và sử dụng năng lượng hiệu quả hơn:
Bảng 2.1: So sánh giữa dòng ARM7 cũ và lõi Cortex M3 mới
Đơn vị bảo vệ bộ nhớ (MPU): MPU là một thành phần tùy chọn của bộ vi xử
lý Cortex-M3, có thể nâng cao độ tin cậy của hệ thống nhúng bằng cách bảo
vệ các dữ liệu quan trọng được hệ điều hành sử dụng khỏi các ứng dụng khác, tách biệt độc lập các tác vụ đang thực thi bằng cách không cho phép truy cập vào dữ liệu của nhau, vô hiệu hoá quyền truy cập vào một số vùng nhớ, cho phép các vùng nhớ được định nghĩa là chỉ đọc (read only) và phát hiện các truy cập bộ nhớ có thể phá vỡ hệ thống
Hỗ trợ lập trình Gỡ lỗi (Debug) và theo vết (Trace): Debug hệ thống dựa trên
bộ vi xử lý Cortex-M3 được thực hiện thông qua DAP (Debug Access Port), SWD (Serial Wire Debug) sử dụng 2 đường tín hiệu hoặc SWJ-D (Serial Wire JTAG Debug) sử dụng giao thức JTAG
2.3 Dòng vi xử lý Stellaris ARM Cortex M3 của hãng Texas Instrument (TI) và
LM3S8962
2.3.1 Vi xử lý Stellaris ARM Cortex M3 – TI
- Các dòng vi điều khiển Stellaris – ARM ® ™ Cortex-M3 đầu tiên - mang lại những ứng dụng vi điều khiển nhúng hiệu suất cao 32-bit nhưng với chi phí tương đương với các vi điều khiển kế thừa 8 bit và 16bit
Trang 11- Các vi điều khiển Stellaris LM3S có khả năng tương thích, thay thế cho nhau Thư viện hỗ trợ của hãng TI cũng đảm bảo khả năng chuyển đổi linh hoạt khi thay thế vi điều khiển trong dòng này
Hỗ trợ tất cả các tính năng cơ bản của vi xử lý, cũng như các module truyền thông
cơ bản: SSI, I2C, UART Dòng LM3S8xxx còn được TI trang bị module giao tiếp CAN và Ethernet
Controller Area Network (CAN)
- CAN giao thức phiên bản 2.0 A/B
- Lập trình kiểm tra ngược cho chế độ tự kiểm tra
- Cho phép lập trình FIFO lưu trữ của nhiều đối tượng nhắn tin
- Kèm theo một giao diện CAN bên ngoài thông qua các tín hiệu CAN Tx
Trang 12• Song công và bán song công 100 Mbps
• Song công và bán song công 10 Mbps
• Chế độ tiết kiệm điện và giảm công suất xuống
- Thao tác truyền thông vật lý
• Tự động MDI / MDI-X qua chỉnh sửa
• Tự động điều chỉnh phân cực và tiếp nhận tín hiệu 10BASE-T
- IEEE 1588 Giao thức Thời gian chính xác - cung cấp thời gian chính xác cao cho các gói cá nhân
Trang 13 Sơ đồ khối
Hình 2.2: Sơ đồ khối LM3S8962
Trang 14Chương 3: Cơ sở lý thuyết về các giao thức và ngôn ngữ lập trình web
3.1 Giới thiệu chung về hệ điều hành thời gian thực RTOS:
3.1.1 Định nghĩa hệ điều hành thời gian thực RTOS:
- Là hệ thống có:
- Lịch trình thực thi theo thời gian
- Quản lý tài nguyên hệ thống
- Cung cấp những nền tảng cơ bản để phát triển các ứng dụng trên nó
Đối tượng (Object) :
Là những cấu trúc đặc biệt (Kernel) giúp người lập trình tạo ra các ứng dụng
Dịch vụ ( Service) :
Là những điều khiển mà Kernel ( lõi) thực thi trong đối tượng ( object): chia thời gian ( Timing), Ngắt( interrupt), Đáp ứng ( handling) và quản lý tài nguyên hệ thống ( resource management)
3.1.3 Các đối tượng (Objects) trong RTOS:
Tasks:Là các luồng ( thread) thực thi cùng tồn tại và độc lập nhau có thể “ cạnh tranh” nhau để dành quyền thực thi
Semaphores:Là đối tượng bắt sự kiện để đồng bộ giữa các tasks, có thể tăng hoặc giảm
Trang 15 Message Queues:Là một kiểu cấu trúc dữ liệu được dùng để đồng bộ hóa hoặc trao đổi thông tin giữa các Tasks
Real-time embedded applications:Là sự kết nối giữa các đối tượng của Kernel để giải quyết vấn đề thời gian thực như sự đồng thời, sự đồng bộ,và trao đổi dữ liệu
3.1.4 Giải thuật cho lịch trình theo chế độ ưu tiên:
Hình 3.2: Giải thuật lịch trình theo độ ưu tiên
Hầu hết các Real – time Kernel sử dụng giải thuật lịch trình thay thế theo độ ưu tiên ( preemptive priority- based scheduling) làm mặc định
Các task sẽ được thực thi tại bất kì một thời điểm là task có
độ ưu tiên cao nhất so với các task khác đang ở trạng thái sẵn sàng
Real –Time Kernel hỗ trợ 256 cấp độ ưu tiên, với 0 là độ ưu tiên cao nhất và 255 là độ ưu tiên thấp nhất Một số Kernel thì ngược lại với 255 là độ ưu tiên cao nhất và 0 là độ ưu tiên thâp nhất
Với bộ chuyển đổi theo đọ ưu tiên, mỗi task phải có một độ
ưu tiên, và task có độ ưu tiên cao nhất chạy đầu tiên Nếu một Task có
độ ưu tiên cao hơn task đang chạy trở nên sẵn sàng để chạy thì kernel
sẽ ngay lập tức lưu lại trạng thái Task hiện tại và chuyển sang Task có
độ ưu tiên cao hơn
Mặc dù việc phân chia độ ưu tiên của Task được thực hiện khi task đó được tạo nhưng độ ưu tiên của Task là có thể thay đổi một cách linh động sử dụng Lời gọi do kernel cung cấp ( Kernel – provided calls) Khả năng này dùng để thay đổi một cách linh động cho phép
một ứng dụng nhúng có độ linh hoạt để ứng xử với sự kiện bên ngoài khi chúng xuất hiện, tạo ra một hệ thống thời gian thực và đáp ứng tốt
Lưu ý là việc sử dụng không đúng khả năng thay đổi độ ưu tiên này có
Trang 16thể dẫn đến đảo độ ưu tiên ( priority inversion), vùng chết ( deadlock),
và có thể dẫn đến treo hệ thống ( system failure)
3.1.5 Quản lý task trong RTOS:
Định nghĩa task:
Hình 3.3: Sơ đồ cấu trúc của một Task cơ bản
- Task là một luồng thực thi độc lập mà có thể cạnh tranh chiếm quyền thực thi Một ứng dụng được chia ra làm nhiều Tasks đồng thời ( Concurrent Task) để tối
ưu khả năng đáp ứng vào ra trong luật thời gian
- Một Task được định nghĩa thuần túy là một tập các tham số và cấu trúc dữ liệu
- Các thành phần của một Task:Khi được tạo ra, Task sẽ có tên, ID duy nhất, độ ưu tiên, một block điều khiển Task ( TCB), Stack, và Các thủ tục thực thi Task
Các trạng thái của một task:
Trang 17Hình 3.4: Các trạng thái của một Task
Tại bất kì một thời điểm, mỗi task tồn tại một trong số những trạng thái nhỏ bao gồm: Sẵn sàng ( Ready), Đang thực thi ( Running), hoặc Khóa ( Blocked) Khi một hệ thống nhúng thời gian thực chạy, mỗi task thay đổi từ trạng thái này đến trạng thái khác theo quy luật logic của một mấy trang thái hữu hạn đơn giản ( Finite state machine (FSM))
3.1.6 Giới thiệu về FreeRTOS:
FreeRTOS được nghiên cứu bởi Richard Barry với tên ban đầu là FRTOS07 Mục đích của FreeRTOS là portable( khả năng linh động) , open source ( mã nguồn mở) , mini kernel (là một hệ điều hành thời gian thực nhỏ) mà có thể được thao tác trong chế độ
ưu tiên (Pre-emptive) cũng như phối hợp (Cooperative)
FreeRTOS hiện tại hỗ trợ lên đến 27 kiến trúc vi điều khiển khác nhau khác nhau :
Trang 18unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask
usStackDepth Là kích thước của Stack đặc trưng cho số lượng biến mà
Task có thể quản lý được
pvParameters Pointer được sử dụng như là tham số của việc tạo Task uxPriority Độ ưu tiên của Task
pvCreatedTask Pointer trỏ đến Task được tạo
Trị trả về: pdPASS nếu như Task được tạo thành công
void vTaskDelete( xTaskHandle pxTask );
Mô tả: Xóa một Task từ RTOS realtime management
void vTaskDelay( portTickType xTicksToDelay );
Mô tả: Delay ( block) Task một khoảng thời gian kể từ lần cuối hàm được gọi ( số ticks mà Task đó bị block)
Trang 19 Mô tả: Block Task trong một chu kì xác định
Tham số:
pxPreviousWakeTime Pointer đến biến lưu giá trị lần cuối cùng Task được unclocked Biến này phải được khởi tạo giá trị với giá trị hiện tại cho lần dùng đầu tiên
xTimeIncrement : Là chu kì thời gian Task sẽ đươck uncloked sau mỗi thời (*pxPreviousWakeTime + xTimeIncrement) Gọi hàm naỳ với mục đích thực thi một Task theo một chu kì nhất định
Trị trả về: Không trị
unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );
Mô tả:Đọc giá trị độ ưu tiên của Task
Tham số: pxTask : biến Handle của Task cần đọc
Trị trả về: Độ ưu tiên của Task cần gọi
Trị trả vể: Không trị
void vTaskSuspend( xTaskHandle pxTaskToSuspend );
Mô tả: Suspend ( xem thêm chương 1) bất kì Task nào mà không quan tâm đến độ ưu tiên của Task đó
void vTaskResume( xTaskHandle pxTaskToResume );
Mô tả: Resume một Task, sẽ được dùng cùng với xTaskSuspend
Trang 20 Mô tả:Resume một Task từ ISR
Tham số:
pxTaskToResume: Handle Task được Resume
Trị tra về: pdTRUE nếu như trị việc resuming có tác dụng lên context switch, ngược lại là pdFALSE
3.4.3 Các tiện ích khác cho Tasks
xTaskGetCurrentTaskHandle() xTaskGetStackHighWaterMark() xTaskGetTickCount()
Tham khảo thông tin về FreeRTOS:
Ngoài những hàm cơ bản đã nêu ra ở trên, người sử dụng có thể tìm các thông tin cụ thể được hỗ trợ tại trang web chính thức của FreeRTOS là: freertos.org Các hàm kể trên đều
có đường link đến thẻ API Reference trên trang chủ của FreeRTOS
3.2 Giao thức CAN (Control Network Area)
3.2.1 Giới thiệu
Controller Area Network(CAN) là giao tiếp nối tiếp hỗ trợ mạnh cho các cho các hệ thống điều khiển thời gian thực phân bố (distributed realtime control system), với độ ồn định, bảo mật và chống nhiễu cực tốt
Vào giữa những năm 80, CAN xuất hiện lần đầu với nhà cung cấp phụ tùng xe ôtô Đức Robert Bosch với mục tiêu chính là làm cho hệ thống ô tô trở nên an toàn, ổn định và tiết kiệm nhiên liệu, giúp giảm thiểu việc đi dây chằng chịt, đơn giản hóa hệ thống và tiết kiệm chi phí sản xuất
Trang 21Ngày nay, CAN đã được chuẩn hóa thành tiêu chuẩn ISO1898, và có mặt ở hầu hết các nhà sản xuất chip lớn như: Intel, Siemens, Motorola, Microchip, NXP(Philips), TI, NI, nhờ đó việc thực hiện chuẩn CAN trở nên đơn giản hơn với sự trợ giúp kĩ thuật từ các nhà sản xuất
Điểm nổi trội của CAN là ở tính ổn định và an toàn Nhờ cơ chế phát hiện và xử lý lỗi mạnh, hầu hết các lỗi trên đường truyền đều được phát hiện Theo thống kê xác suất để xuất hiện một lỗi CAN mà không bị phát hiện nhỏ hơn 4.7x10-11 (Trung bình 1000 năm mới có một frame lỗi mà không phát hiện)
CAN chiếm lĩnh trong ngành công nghiệp Ô tô
Hình 3.5: Ứng dụng mạng CAN trong điều khiển xe
- CAN High speed dùng điều khiển động cơ và thắng
- CAN Lowspeed dùng điều khiển những thiết bị khác như kiếng hậu, light…
3.2.2 Tổng quan về giao thức CAN
Trang 22Hình 3.6: Sơ đồ mạng CAN CAN sử dụng cáp truyền đơn giản, sự truyền dữ liệu được thực hiện nhờ cặp dây truyền tín hiệu vi sai( CANH và CANL) Đường dây bus kết thúc bằng điện trở 120 ohm (108 ohm – 132 ohm)
Mạng CAN được tạo thành bởi một nhóm các node Mỗi node có thể giao tiếp với bất kỳ node nào khác trong mạng Việc giao tiếp được thực hiện bằng việc truyền và nhận cá gói dữ liệu – message Mỗi message trong mạng CAN được gán một ID quy định mức độ ưu tiên của message
đó
Hình 3.7: Một nút mạng CAN
Sự truyền nhận dữ liệu trong mạng CAN:
- Truyền, nhận các gói dữ liệu - message
- Mỗi loại message được gán một ID tùy theo mức độ ưu tiên của message
- Mạng CAN : message base system, có tính mở hơn vì khi thêm, bớt các node không làm
Trang 23ảnh hưởng đến cả hệ thống, dễ dàng thay đổi mà không cần phải thiết kế lại hệ thống
- Mỗi node có thể nhận nhiều loại message khác nhau, ngược lại một message có thể được nhận bởi nhiều node
- ID của message phụ thuộc vào mức độ ưu tiên của message Điều này cho phép phân tích response time của từng message (quan trọng trong việc thiết kế hệ thống nhúng thời gian thực)
3.2.3 Tiêu chuẩn ISO11898
Mô hình OSI (Open System Interconnection) :
Đây là mô hình được dùng trong các giao thức mạng, mô hình OSI bao gồm 7 lớp, được định nghĩa như hình sau:
Hình 3.8: Mô hình OSI Tiêu chuẩn ISO11898 định nghĩa 2 lớp Data link và Physical như sau:
Data Link thì gồm 2 lớp nhỏ là Logic Link Control (LLC) và Medium Access Control (MAC) LLC điều khiển các bộ lọc tín điện (message filter), thông báo quá tải (overload notification) và quản lý bộ phục hồi (recovery management) MAC bao gồm các bộ đóng gói và giải đóng gói dữ liệu (data enceapsuation/decapsulation), các khung truyền (frame coding), bộ phát hiện lỗi (error detection) và serialization/deserialization
Trang 24Lớp vật lý (physical) gồm các lớp nhỏ là Physical Signaling (PS), Physical Medium Attachment (PMA) và Medium Dependent Interface (MDI) PS điều khiển việc mã hóa bit và đồng
bộ tín hiêu bit PMA và MDI không được định nghĩa trong giao thức CAN, người thiết kế có thể chọn lựa tùy ý các driver/receiver sao cho thỏa các yêu cầu từ PS
2 lớp PMA và MDI thường không có trong ngoại vi CAN của vi điều khiển, nó phụ thuộc vào thiết bị transceiver ( ở đồ án này xài CAN transceiver SN65HVD251 của TI)
Hình 3.9: Các lớp layer giao tiếp
Trang 25 Giá trị mức của bit được giữ trong suốt quá trình của nó Điều này tạo ra vấn đề
về độ ổn định nếu có số lượng lớn bit giống nhau liên tiếp Kỹ thuật Bit stuffing
áp đặt tự động một bit có giá trị ngược lại nếu như nó phát hiện 5 bit liên tiếp trong khi truyền
Hình 3.11: Kỹ thuật Bit Stuffing
- Bit timing:
Thời gian đơn vị nhỏ nhất: Time Quantum
Một bit khoảng 8 đến 25 quantum
Hình 3.12: Giản đồ thời gian
- Độ dài của một bus:
Độ trễ lan truyền trên đường dây của bus
Sự khác nhau của thời gian Time Quantum
Biên độ tín hiệu thay đổi theo điện trở của cáp và tổng trở vào của các nút
Trang 26Hình 3.13: Tốc độ tỉ lệ nghịch với độ dài bus
- Trạng thái “dominant” và “recessive”:
Tương ứng với hai trạng thái là 0 và 1
Trạng thái “dominant” chiếm ưu thế so với trạng thái “recessive”
Tạo ra khả năng giải quyết chanh chấp khi nhiều hơn một nút chiếm quyền sử dụng bus
2 dạng truyền:
Truyền CAN low speed :125 kb/s
Truyền CAN high speed :125 kb/s tới 1Mb/s
Dominant CAN H = 4V, CAN L = 1V CAN H = 3.25, CAN L = 1.5V Recessive CAN H = 1.75, CAN L = 3.75 CAN H = 2.5, CAN L = 2.5
Bảng 3.1: So sáng 2 dạng truyền của CAN
Trang 27Hình 3.14: Mức điện áp bit
- Tính chất vi sai trên đường truyền:
Hình 3.15: Sự kháng nhiễu với ảnh hưởng của điện từ
2 dây của bus đều bị tác động như nhau cùng một lúc bởi tín hiệu nhiễu
3.2.4 Giải quyết tranh chấp trên bus (collision)
Trang 28Phát tán thông tin (broadcast): mỗi điểm kết nối vào mạng thu nhận frame truyền từ nút phát, sau đó mổi nút sẽ quyết định việc xử lý message
Phần ID xác định mức ưu tiên: giao thức CAN cho phép các nút khác nhau đưa dữ liệu cùng một lúc và quá trình xử lí xung đột sẽ được thực hiện nhanh chóng để quyết định nút nào được phát đầu tiên
Sự cấp phát nhanh bus trong trường hợp xung đột: quá trình xử lí xung đột dựa trên phân giải từng bit, theo những nút đang tranh chấp phát đồng thời trên bus Nút nào có ưu tiên thấp hơn sẽ mất sự cạnh tranh với nút ưu tiên cao hơn
Hình 3.16: Giải quyết tranh chấp trên bus 3.2.4 CAN Frame
Trang 29Hình 3.17: Khung truyền
Bốn loại Frame:
Data frame: dùng khi node muốn truyền dữ liệu tới các node khác
Remote frame : dùng để yêu cầu truyền data frame
Error frame và overload frame: dùng trong việc xử lý lỗi
Standard frame:
Hình 3.18: CAN standard frame
1 bit start of frame (SOF)
11 bit Indentifier
1 bit Remote Transmit Request (RTR) : chọn Remote frame hoặc Data frame
1 bit Identifier Extension (IDE) :chọn Standard frame (“dominant”) và
extended frame (“reccesive”)
Trang 30 7bits End of frame
Khoảng cách tối thiểu giữa hai frame truyền inter‐frame space (IFS)
CAN extended frame:
Gần giống như Standard Data Frame nhưng có 29 bit ID
Hình 3.19: CAN extended frame
Remote frame:
Yêu cầu truyền data frame tới một nút khác
Giống data frame nhưng có DLC=0 và không có data field
Hình 3.20: Remote frame
Error frame:
Dược phát ra khi node phát hiện lỗi
Trang 31Hình 3.21: Error frame Frame lỗi gồm 2 phần: Cờ lỗi và phần Delimiter
Overload frame: dùng khi frame bị tràn bộ đệm
3.2.5 Truyền nhận message
Hình 3.22: Sơ đồ khối truyền CAN message
Trang 32Hình 3.23: Sơ đồi khối nhận CAN message
3.2.6 Xử lí lỗi
Khi truyền một frame trên bus, lỗi truyền có thể ảnh hưởng đến hoạt động của các nút trên bus Lỗi có thể đến từ một nút, làm cho mạng không còn hoạt động chính xác Vì vậy, nhiều cách phát hiện lỗi được sử dụng trong CAN
Bit Error:
Mỗi khi nút truyền gửi một bit xuống bus, nó kiểm tra xem mức điện áp trên bus có đúng với bit cần gửi hay không
Lỗi Stuffing( Stuff Error):
Một lỗi Stuffing được phát hiện trong mỗi lần có 6 bit hay nhiều hơn liên tục trên một đường dây của Bus
Lỗi Cyclic Redundancy(CRC Error):
Nếu giá trị CRC tính toán bởi nút nhận không giống với giá trị gửi đi bởi nút phát
Lỗi ACK Delimiter:
Được báo khi nút nhận không thấy một bit recessive trong vùng ACK Delimiter hay trong vùng CRC Delimiter
Lỗi Slot ACK (ACK Error):
Được báo bởi nút phát khi không thấy bit dominant trong vùng Slot ACK
Trang 333.3 Giao thức Ethernet TCP/IP
3.3.1 Tổng quan về Ethernet
Ethernet là một họ lớn và đa dạng gồm các công nghệ mạng dựa khung dữ liệu (frame-based) dành cho mạng LAN Tên Ethernet xuất phát từ khái niệm Ête trong ngành vật lý học Ethernet định nghĩa một loạt các chuẩn nối dây và phát tín hiệu cho tầng vật lý, hai phương tiện để truy nhập mạng tại phần MAC (điều khiển truy nhập môi trường truyền dẫn) của tầng liên kết dữ liệu,
và một định dạng chung cho việc đánh địa chỉ Vì vậy khi nhắc đến Ethernet ta se liên hệ đến lớp
1 và lớp 2 trong mô hình OSI (Open System International) Hai lớp này thuộc về phần cứng Ethernet , trong khi các lớp còn lại thuộc về việc xử lý của phần mềm
Ethernet đã được chuẩn hóa thành IEEE 802.3 Cấu trúc mạng hình sao, hình thức nối dây cáp xoắn (twisted pair) của Ethernet đã trở thành công nghệ LAN được sử dụng rộng rãi nhất từ thập kỷ 1990 cho tới nay, nó đã thay thế các chuẩn LAN cạnh tranh khác như Ethernet cáp đồng trục (coaxial cable), token ring, FDDI(Fiber distributed data interface), và ARCNET Trong những năm gần đây, Wi-Fi, dạng LAN không dây đã được chuẩn hóa bởi IEEE 802.11, đã được sử dụng bên cạnh hoặc thay thế cho Ethernet trong nhiều cấu hình mạng
Hình 3.24: Sơ đồ ý tưởng hình thành Ethernet
3.3.2 So sánh mô hình OSI và mô hình TCP/IP
Trang 35Quản lý về phần mềm , hiển thị thông tin , các giao thức kết nối như FTP, HTTP, SMTP , DNS
3.3.3 Phân loại Ethernet
Hình 3.26: Sơ đồ phân loại Ethernet
Trang 363.3.4 Đóng gói và mở gói trong Ethernet TCP/IP
Trang 37Hình 3.28: Cấu trúc header lớp vật lý
MAC Header:
Gồm có 14 bytes :
+ 6 bytes đầu : địa chỉ đích
+ 6 bytes kế : địa chỉ nguồn
+2 bytes cuối : độ dài hoặc dạng dịch vụ
Hình 3.29: Cấu trúc header đầu lớp MAC
Trang 38Hình 3.30: Bảng
trong lớp MAC Trailer of MAC
header Chứa trường FCS( kiểm tra lỗi CRC) hay trường mở rộng
Hình 3.31: Cấu trúc header cuối lớp MAC
IP( internet protocol)
Trang 39Hình 3.32: Cấu trúc gói lớp IP
Trang 403.3.5 Giao thức TCP/IP
TCP dựa trên nghi thức truyền dữ liệu tin cậy host to host , TCP bảo đảm cho việc chuyển phát dữ liệu , chắc chắn rằng gói tin đã được truyền nhận đúng theo thứ tự TCP sử dụng các cơ cấu như : số thứ tự , xác nhận ACK , timer , bắt tay ba bước
Nghi thức thiết lập kết nối của TCP qua TCP state machine: