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 -