Đăng ký Đăng nhập
Trang chủ XÂY DỰNG MÔ HÌNH GIAO TIẾP CÁC THIẾT BỊ DÙNG MẠNG CAN...

Tài liệu XÂY DỰNG MÔ HÌNH GIAO TIẾP CÁC THIẾT BỊ DÙNG MẠNG CAN

.PDF
88
314
61

Mô tả:

XÂY DỰNG MÔ HÌNH GIAO TIẾP CÁC THIẾT BỊ DÙNG MẠNG CAN
Chươ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... Đặ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 Hì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. 1.1.2 Về tình hình ngoài nước - Có khá nhiều demo về embedded web server được nhúng lên các dòng chip 8 bit, 16 bit (thông qua module chuyển đổi Ethernet sang truyền thông cơ bản khác như SPI, UART, …) hoặc vi xử lý 32 bit mà điển hình là PIC32 và ARM thực hiện việc giám sát điều khiển từ xa một thiết bị. Đề tài giới thiệu 2 demo mà đề tài có tham khảo trong lúc thực hiện  Application note của hãng Atmel sử dụng vi xử lý AVR 8 bit + CS8900 (10BaseT 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. Hì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 Hì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: Hì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 1.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: Smart phone Internet Internet-PC Home Wifi router LAN-PC Ethernet TCP/IP ADSL CAN Device 3 Main Web server CAN Device 1 CAN Device 5 CAN Access Point CAN Device 2 CAN Device 4 Hình 1.10: Mô hình tổng quát của đề tài CAN Device 5 1.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. Thự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. Hì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. - - 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. Một số tính năng của dòng vi xử lý LM3S:  32-bit RISC:  SystemTick Timer 24bit.  Tốc độ tối đa 50 MHz.  Tích hợp Bộ điều khiển vector ngắt lồng nhau (NVIC): 36 ngắt với tám cấp độ ưu tiên.  Hỗ trợ mode Hibernation: điều khiển công suất sử dụng bộ điều chỉnh bên ngoài riêng biệt, đồng hồ thời gian thực (RTC) 32bit.  Đầy đủ tính năng giải pháp gỡ rối.  … 2.3.2 Vi xử lý LM3S8962 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 - Tốc độ bit lên đến 1 Mbps - 32 bản tin với nhận dạng mask cá nhân - Ngắt mask - Vô hiệu hoá chế độ tự động gửi lại cho ứng dụng Time-Triggered CAN (TTCAN) - 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 và CAN Rx  10/100 Mbps Ethernet Controller - Phù hợp với các đặc điểm kỹ thuật IEEE 802,3-2002 • 10Base-T/100Base-TX IEEE-802,3 • 10Base-T/100Base-TX ENDEC, 100BASE-TX Scrambler / descrambler - Nhiều chế độ hoạt động • 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 - Cấu hình cao • Lập trình địa chỉ MAC • Lựa chọn hoạt động LED • Hỗ trợ chế độ pha tạp • Điều khiển loại bỏ lỗi CRC •Người dùng cấu hình ngắt - 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  Sơ đồ khối Hình 2.2: Sơ đồ khối LM3S8962 Chươ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ó. 3.1.2 Các thành phần trong RTOS: Hình 3.1 : Các đối tượng trong RTOS  Bộ lịch trình ( scheduler): Là một tập các thuật toán để xác định tác vụ ( Task) nào được thực thi .  Đố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.  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ó thể 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: - Hì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 :  Altera Nios II  ARM7, ARM9, Cortex M3  AVR, PIC, 8051  SH, H8S, PowerPC, x86 Đề tài sử dụng FreeRTOS vì sự đơn giản, dễ ứng dụng, tính phổ biến do là mã nguồn mở. 3.1.7 Các hàm quản lý task trong FreeRTOS:  3.4.1 Tạo và xóa Task:  xTaskCreate portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask );  Mô tả: Tạo một Task và thêm vào danh sách các task sẵn sàng để thực thi.  Tham số: pvTaskCode Pointer to đến hàm hiện thưc cho Task pcName Tên mô tả cho Task đó ( chỉ dùng cho mục đích debug hệ thống). Chiều dài tối đa của tên được định nghĩa bằng configMAX_TASK_NAME_LEN. 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.  vTaskDelete void vTaskDelete( xTaskHandle pxTask );  Mô tả: Xóa một Task từ RTOS realtime management  Tham số: pxTask poiter đến Task cần xóa  Trị trả về: Không trị  3.4.2 Điều khiển Task:  vTaskDelay 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)  Tham số: xTicksToDelay: Số Ticks Task bị block  Trị trả về: Không trị.  vTaskDelayUntil void vTaskDelayUntil(portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );  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ị.  uxTaskPriorityGet 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.  vTaskPrioritySet void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority );  Mô tả: Cài đặt độ ưu tiên cho một Task.  Tham số: pxTask : Handle của Task sẽ được set độ ưu tiên. Nếu là NULL thì sẽ set độ ưu tiên của Task đang được gọi ( Task hiện tại). uxNewPriority : Độ ưu tiên mới cho Task.  Trị trả vể: Không trị.  vTaskSuspend 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 đó.  Tham số: pxTaskToSuspend : Handle của Task sẽ bị suspend  Trị trả về: Không trị.  vTaskResume void vTaskResume( xTaskHandle pxTaskToResume );  Mô tả: Resume một Task, sẽ được dùng cùng với xTaskSuspend  Tham số: pxTaskToResume : Task được Resume:  Trị trả về: Không trị  xTaskResumeFromISR portBASE_TYPE xTaskResumeFromISR( xTaskHandle pxTaskToResume );  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() xTaskGetTickCountFromISR() xTaskGetSchedulerState() xTaskGetNumberOfTasks() vTaskList() vTaskStartTrace() ulTaskEndTrace() vTaskGetRunTimeStats() vTaskSetApplicationTag() xTaskCallApplicationTaskHook() uxTaskGetStackHighWaterMark()  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.
- Xem thêm -

Tài liệu liên quan