Lựa chọn cụng cụ phần mềm cho Datalogger

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo các module phục vụ đo lường giám sát trong trạm khí tượng tự động (Trang 91)

2. Thiết kế trạm khớ tượng tự động

2.4.1.Lựa chọn cụng cụ phần mềm cho Datalogger

Data logger được xõy dựng trờn cơ sở vi điều khiển Atmega128, đõy là một vi

điều khiển 8 bit, cú tốc độ và bộ nhớở mức trung bỡnh nếu so với cỏc loại vi điều khiển hiện đại hiện nay như cỏc dũng vi điều khiển 16, hay 32 bit hoặc cỏc dũng vi xử lý tớn hiệu như DSPic, ... Tuy nhiờn với những tớnh năng hiện cú, vi điều khiển Atmega128 hoàn toàn phự hợp với yờu cầu đặt ra của bài toỏn.

Để thực hiện phỏt triển phần mềm cho vi điều khiển chỳng tụi lựa chọn bộ

cụng cụ phần mềm của IAR cho dũng vi điều khiển họ AVR bao gồm:

- IAR C/C++ Compiler for AVR

- IAR Library Builder

- IAR XLIB

- IAR XLINK

- IAR Build Utility

- IAR Embedded Workbench IDE

- IAR C-SPY JTAGICE Driver for AVR

- IAR Workbench Target Descriptor for AVR

- IAR Workbench Target Descriptor, JTAGICE, for AVR, …

Với bộ cụng cụ phần mềm này cho phộp cú thể lập trỡnh, gỡ rối, quan sỏt cỏc tham số, cỏc thanh ghi, cỏc vựng nhớ của vi điều khiển, … giỳp cho người sử dụng nhanh chúng tỡm ra cỏc lỗi trong quỏ trỡnh phỏt triển hệ thống.

2.4.2. Thiết kế cỏc chức năng phần mềm cho Data Logger

Trạm khớ tượng xõy dựng nhằm đỏp ứng hai yờu cầu đú là:

- Cho phộp cỏc cỏn bộ tại chỗ cú thể theo dừi được cỏc thụng số liờn quan

đến thời tiết, cũng như số liệu cỏc thụng số này trong mụt khoảng thời gian nhất định

- Cho phộp cú thể truyền thụng với cỏc trung tõm giỏm sỏt cấp trờn để phục vụ theo dừi, tổng hợp, đưa ra cỏc dự bỏo, cảnh bỏo về cỏc hiện tượng thời tiết

Xõy dựng phần mềm cho trạm khớ tượng tự động phải đảm bảo được cỏc yờu cầu đó nờu. Trờn cơ sởđú chỳng tụi đó lựa chọn cỏc chức năng phần mềm cho khối Data Logger của trạm khớ tượng như sau:

Hỡnh 47 - Cỏc chức năng của Data logger

ắ Chức năng đọc giỏ trị số liệu cỏc kờnh đo từ cỏc transmitter/ đầu vào, xử lý số liệu thu được, bao gồm cỏc bước:

- Đọc cỏc giỏ trịđầu vào dạng tớn hiệu tương tự, dạng xung, dạng số, … - Thực hiện cỏc thuật toỏn lọc cần thiết đểđảm bảo số liệu ra là tin cậy

- Calib cỏc số liệu theo cỏc điểm calib được đưa vào từ bàn phớm và màn hỡnh hiển thịứng với từng thụng số

- Lưu cỏc tham số này vào cỏc vựng nhớ RAM để phục vụ cỏc mục đớch tiếp theo

ắ Chức năng giao tiếp với bàn phớm và màn hỡnh hiển thị

- Lựa chọn hiển thị và hiển thị cỏc thụng sốđo

- Cài đặt cỏc thụng số như: giỏ trị calib cỏc thụng số đo, cài đặt địa chỉ

modbus, cài đặt tần số lấy mẫu tớn hiệu, chu kỳ lưu trữ dữ liệu, cài đặt và hiển thị thời gian

ắ Chức năng truyền thụng modbus thụng qua cổng truyền thụng RS485 với

mỏy tớnh PC: cho phộp truyền giỏ trị cỏc thụng số lờn mỏy tớnh PC theo (adsbygoogle = window.adsbygoogle || []).push({});

chuẩn truyền thụng RS485, giao thức modbus.

ắ Chức năng giao tiếp với thẻ nhớ MMC/SD card, thực hiện lưu trữ dữ liệu: - Thực hiện giao tiếp với thẻ nhớ MMC/SD thụng qua cổng truyền thụng nối

- Cho phộp lưu trữ dữ liệu dưới dạng file *.csv thành cỏc hàng, cột thuận tiện cho việc đọc dữ liệu từ phần mềm Microsoft Office/Excel trờn mỏy tớnh PC

ắ Chức năng giao tiếp với modem truyền thụng khụng dõy Maestro 100: - Thực hiện truyền dữ liệu theo chuẩn GSM, cho phộp truyền dữ liệu từ trạm

khớ tượng đến trung tõm

- Cú thể thực hiện gửi dữ liệu tựđộng hoặc theo cơ chế hỏi/đỏp.

Để thực hiện được cỏc chức năng ở trờn thỡ chương trỡnh phần mềm khụng chỉ

cần nhiều tài nguyờn về bộ nhớ dữ liệu và bộ nhớ chương trỡnh mà cũn cần cú sự tổ

chức chương trỡnh rừ ràng để thực hiện điều khiển cỏc tiến trỡnh đảm bảo hoạt động thiết bị. Do đú phần mềm ởđõy được xõy dựng trờn hệ điều hành thời gian thực cho phộp việc thực hiện cỏc nhiệm vụ một cỏch hiệu quả bao gồm giao tiếp với ngoại vi: truyền thụng SPI (với thẻ nhớ, AD7794); thực hiện cỏc ngắt thời gian

timer 0 và timer 1; điều khiển truyền thụng RS232 kết nối với modem GSM,

truyền thụng modbus; cập nhật cỏc đầu vào ra số điều khiển nguồn và ngoại vi khỏc;…. Thực thi cỏc tỏc vụ, việc phõn định thời gian thực hiện cho cỏc tỏc vụ căn cứ vào yờu cầu về tần suất xuất hiện, mức độưu tiờn của cỏc tỏc vụ, căn cứ vào tốc

độđỏp ứng của vi điều khiển về thời xử lý lệnh và tốc độ:

- ButtonScanTask, tỏc vụ xử lý bàn phớm

- ClearWatchdogTask, tỏc vụ thực hiện reset lại thanh ghi watchdog - AnalogReadValueTask, tỏc vụđọc giỏ trị cỏc kờnh đo tớn hiệu tương tự

- PC_communicationTask, tỏc vụđiều khiển truyền thụng với mỏy tớnh PC - Mmc_sdTask, tỏc vụ cấp nhật cỏc thụng số lờn thẻ nhớ

- LcdDisplayTask, tỏc vụ hiển thị số liệu ra màn hỡnh LCD

- Wind2sTask, tỏc vụđọc giỏ trị hướng giú và tốc độ giú trong thời trong 2s - Rainin1minusTask, tỏc vụđọc giỏ trị lưu lượng mưa theo từng phỳt

- GSMtransmitTask, tỏc vụđiều khiển truyền thụng qua GSM

- RTCTask, tỏc vụ cập nhật đồng hồ thời gian thực

- ControlSurfaceTask, tỏc vụ thực hiện lựa chọn chế độ hoạt động thụng qua việc bấm phớm lựa chọn của người sử dụng. Trong đú phõn ra thành cỏc chế độ họat động: chế độ hiển thị thụng thường; chế độ cài đặt tham số ngày, giờ,…, mó bảo vệ, địa chỉ truyền thụng modbus; chế độ calib thụng số: calib

cỏc thụng số tốc độ giú, hướng giú, nhiệt độ mặt đất, nhiệt độ khụng khớ, độẩm khụng khớ, lượng mưa.

Ngoài việc thực hiện điều khiển chương trỡnh hoạt động theo chu trỡnh của cỏc tỏc vụ vi điều khiển cũn thực hiện cỏc ngắt định thời gian, ngắt đếm xung đầu vào thụng sốđo tốc độ giú, lượng mưa.

Với việc xõy dựng phần mềm dựa trờn hệ điều hành thời gian thực cho phộp việc thờm cỏc tỏc vụ cú thểđược tiến hành dễ dàng đồng thời việc quản lý chương trỡnh cũng trở nờn sỏng sủa hơn.

Hỡnh 48 - Sơ đồ tổ chức chương trỡnh

Cỏc chức năng cài đặt và hiển thị trờn màn hỡnh hiển thị LED

- Display mode: chếđộ hiển thị cỏc thụng số

- Setmode: cài đặt cỏc thụng số thụng qua bàn phớm màn hành hiển thị

- Calib mode: thực hiện calib cỏc thụng số

Việc lựa chọn chế độ và chuyển cỏc thụng số được hiển thị thụng qua 8 phớm trờn bàn phớm. Riờng đối với chế độ calib và cài đặt cỏc thụng số để trỏnh xảy ra cỏc trường hợp người sử dụng khụng đỳng thẩm quyền thao tỏc làm thay đổi cỏc giỏ trị khụng mong muốn, chương trỡnh phần mềm yờu cầu cú một mó bảo vệ chỉ

Hỡnh 50 - Giao diện cài đặt ngày giờ hệ thống và khoảng thời gian lưu trữ (adsbygoogle = window.adsbygoogle || []).push({});

Hoạt động của thiết bịđược chia thành 3 chếđộ:

- Chế độ Display: Dữ liệu cỏc thụng số đo được hiển thị trờn cỏc màn hỡnh riờng rẽ bao gồm giỏ trị thụng sốđo và tờn đơn vị nếu cú.

- Chế độ Setup: Chế độ này cho phộp cài đặt cỏc thụng số như: mó cho phộp

truy nhập chế độ calib dữ liệu, cài đặt lại thời gian ngày/thỏng/năm-giờ/phỳt/giõy, chu kỳ lưu trữ dữ liệu vào thẻ nhớ, đặt địa chỉ modbus, ...

- Chế độ Calib dữ liệu: khi muốn thực hiện calib số liệu, trước tiờn người sử

dụng cần nhập vào mó truy nhập chế độ Calib thụng qua giỏ trị cài đặt ở chế độ

Setup, mó này sẽ tựđộng bị xúa đi sau khi calib xong và chuyển về chếđộ Display. Khi thực hiện calib so liệu cỏc thụng số đo, vi điều khiển sẽ thực hiện cỏc cụng việc sau:

+ Xỏc định thụng số cần được calib thụng qua yờu cầu từ bàn phớm

+ Thực hiện lưu giỏ trị thụng số hiện thời cần calib tương ứng với giỏ trị đọc

được từ ADC sau khi đó thực hiện cỏc phương phỏp lọc cần thiết và giỏ trị nhập vào thực hiện calib từ bàn phớm vào bộ nhớ EEPROM.

+ Mỗi thụng số cần được calib tại 2 điểm trong dải số liệu yờu cầu yờu cầu.

2.4.3. Giao tiếp với thẻ nhớ

Hiện nay cỏc loại thiết bị lưu trữ như thẻ nhớ USB, cỏc loại ổ cỳng mini được sử khỏ rộng rói. Đối với cỏc thiết bị lưu trữ dữ liệu như Data Logger việc lưu trữ số

liệu cú thểđược tiến hành với cỏc thiết bị nhớ như RAM, EEPROM, FLASH,... Ưu

điểm của thẻ nhớ so với bộ nhớ RAM, EEPROM là cho phộp ta cú thể dễ dàng thỏo rời và đọc dữ liệu trực tiếp từ mỏy tớnh mà khụng phải thực hiện cỏc phương phỏp đọc dữ liệu thụng qua cỏc chuẩn truyền thụng như RS232, modem, ...

Việc sử dụng thẻ nhớ tiện lợi trong việc lưu trữ dữ liệu như vậy, tuy nhiờn việc viết cỏc driver định dạng FAT16 hay FAT32 cho cỏc thẻ nhớ đối với cỏc loại vi

điều khiển khụng hề dễ dàng và mất nhiều thời gian.

Để cú thể thực hiện được giao tiếp với thẻ nhớ định dạng FAT16 hay FAT32 trước tiờn ta tỡm hiểu một số thụng tin về bản FAT16:

ắ Thẻ nhớđược định dạng giống như một ổđĩa mỏy tớnh với một partition duy

Hỡnh 52: Định dạng FAT16 đối với thẻ nhớ

Sector đầu tiờn của thẻ nhớ bao gồm Master boot record (MBR), sau đú là

FAT partition. Partition bắt đầu với một số sector dự phũng (sector đầu tiờn là boot sector khụng nhầm với MBR), một hoặc nhiều FAT và một bảng thư mục gốc (root directory). Vựng dữ liệu theo sau thư mục gốc, nú được tổ chức bao gồm nhiều nhúm của cỏc sector (được gọi là cluster).

Chỳ ý rằng MBR bao gồm một chương trỡnh khởi động nhỏ (bootstrap loader program) và một bảng partition, tuy nhiờn đối với thẻ nhớ thỡ chỉ quan tõm đến thụng tin ve bảng partition.

ắ Cơ chếđọc một file từ thẻ nhớ như sau:

- Xỏc định vị trớ tờn file trong bảng thư mục gốc. Bảng thư mục gốc được tổ

chức như sau: Số byte 0-7 8-10 11-25 26-27 28-31 Thuộc tớnh file 1 tờn file phần mở rộng thuộc tớnh/thời gian thay đổi cluster đầu tiờn kớch thước Thuộc tớnh file 2 tờn file phần mở rộng thuộc tớnh/thời gian thay đổi cluster đầu tiờn kớch thước ... ... ... ... ... ... Thuộc tớnh file 3 tờn file phần mở rộng thuộc tớnh/thời gian thay đổi cluster đầu tiờn kớch thước Hỡnh 53 - Bảng thư mục gốc

- Đểđọc một file từ thẻ nhớ ta kiểm tra tờn và phần mở rộng của file trong thư

mục gốc và tỡm kiếm bằng cỏch đọc từng sector. Sector đầu tiờn trong FAT

partition là bản ghi khởi động (boot record), nú bao gồm cỏc thụng số cho chỳng ta biết chỗ nào thư mục gốc bắt đầu.

- Số lượng sector trờn một cluster phụ thuộc vào định dạng của thẻ nhớ. Nếu kớch thước cluster càng lớn thỡ kớch thước bảng FAT càng nhỏ lại. Vựng dữ liệu bắt (adsbygoogle = window.adsbygoogle || []).push({});

đầu ngay sau thư mục gốc, do đú chỳng ta cú thể xỏc định được sector đầu tiờn của cluster đầu tiờn.

- Để ghi một file vào trong thẻ nhớ trước tiờn ta cần tỡm một hàng cú thể dựng

được trong thư mục gốc để tạo một đường dẫn mới. Cú thể thực hiện điều này bằng cỏch kiểm tra xem tờn file đó cú trong thẻ nhớ hay chưa. Nếu file chưa được tạo ta sẽ ghi tờn file với phần mở rộng, thời gian khởi tạo và thuộc tớnh của file vào bảng thư mục gốc

- Khi sử dụng thẻ nhớ ta cũn cần cú cỏc hàm liờn tục cập nhật bộ nhớđể giải phúng cỏc ụ nhớ cú cỏc file mà ta đó xúa trờn bảng thư mục gốc và bảng FAT

Ở đõy chỳng tụi đó lựa chọn việc thực hiện lưu dữ liệu vào thẻ nhớ theo định dạng FAT32, với định dạng FAT32 cho phộp lưu dữ liệu lớn mà khụng bị hạn chế

như FAT16. Dữ liệu được lưu dưới dạng file *.csv thành cỏc hàng, cột thuận tiện cho việc đọc trực tiếp dữ liệu từ chương trỡnh Microsoft Office Excel.

Hỡnh 54 - Lưu dữ liệu thẻ nhớ MicroSD

2.4.4. Truyền thụng GSM:

ắ Truyền thụng GSM được thực hiện thụng qua cỏc modem Maestro100. Giao

tiếp giữa modem và trạm thiết bịđo Weather Link được thực hiện thụng qua cổng truyền thụng RS232. Tập lệnh thực hiện đối với modem Maestro100 là tập lệnh chuẩn AT (AT commands) bao gồm một số lệnh chớnh để gửi và nhận tin nhắn như sau:

Hỡnh 55 - Truyền thụng vi điều khiển và modem GSM

- Lệnh kiểm tra hoạt động của modem: AT

- Lệnh chọn địa chỉ lưu tin nhắn: AT+CPMS

- Lệnh bỏo cú tin nhắn gửi đến: AT+CNMI

- Lệnh đọc tin nhắn: AT+ CMGR

- Lệnh gửi tin nhắn: AT+CMGS

- Lệnh lưu tớn nhắn vào bộ nhớ: AT+CMGW

- Lệnh gửi tin nhắn lưu trong bộ nhớ: AT+CMSS

- Lờnh xúa tin nhắn: AT+CMGD

ắ Cấu trỳc khung dữ liệu truyền qua modem như sau:

<FIDxx,Time Stamp,PAR1,PAR2,PAR3,…,PARn>, trong đú:

“<”: ký tự bắt đầu khung

“>”: ký tự kết thỳc khung

“FID”: ký tự bắt buộc (Function ID)

“xx”: là số hiệu FID (1,2,3)

“Time Stamp”: thời điểm đo được giỏ trị thụng số

“PAR1”, ...”PARn”: cỏc tham số cho cỏc phiờn giao dịch

“,”: là ký tự phõn cỏch giữa cỏc giỏ trị toàn vẹn

Giả sử trường hợp cần truyền 6 thụng số theo thứ tự:

ƒ WIND_DIR: hướng giú tức thời trong 2s (0-3550) (adsbygoogle = window.adsbygoogle || []).push({});

ƒ WIND_SPD: tốc độ giú tức thời trong 2s (m/s)

ƒ WIND_DIAVR: Hướng giú trung bỡnh trong 2 phỳt (0-3550)

ƒ WIND_SPAVR: Tốc giú trung bỡnh trong 2 phỳt (m/s)

ƒ WIND_DIMAX: Hướng giú ứng với tốc độ giú lớn nhất trong vũng 60 phỳt (0-3550)

mỗi thụng số gồm 6 ký tự (vớ dụ hướng giú tức thời trong 2s: +49.66), khi

đú sẽ cú 36 ký tự

Thời gian: 20/10/09,15:01:00, 17 ký tự

FID1: như vậy khung truyền sẽ là:

<FID1,20/10/09,15:01:00,+55.00,+10.23,+52.00,+12.20,+78.00,+15.40> Qua thử nghiệm chương trỡnh truyền thụng giữa modem và vi điều khiển để

thực hiện truyền thụng GSM, chỳng tụi lựa chọn tốc độ truyền thụng giữa vi

điều khiển và modem thụng qua cổng RS232 với tốc độ 115200 baud. Để việc thực hiện truyền thụng được hiệu quả, quỏ trỡnh nhận dữ liệu từ modem về vi

điều khiển được thực hiện thụng qua ngắt nhận dữ liệu của cổng RS232. Mỗi khi cú tin nhắn yờu cầu từ một thiết bị khỏc gửi đến yờu cầu modem truyền cỏc số liệu đo, modem sẽ thụng bỏo cho vi điều khiển biết cú bản tin mới thụng qua lệnh AT+CNMI, vi điều khiển sẽđọc tin nhắn và và sẽ gửi bản tin tới modem và yờu cầu modem thực truyền dữ liệu đi.

Để đảm bảo modem cú thể hoạt động liờn tục với cỏc tin nhắn từ cỏc số điện thoại khỏc nhau, cỏc tin nhắn khụng hợp lệ sẽ được đọc và xúa khỏi sim thẻ ngay. Số lượng tin nhắn liờn tục được kiểm tra. Khi số lượng tin nhắn trong bộ nhớ sim lớn hơn 10 tin, sẽ cú lệnh yờu cầu xúa cỏc tin nhắn đó đọc.

Hỡnh 56 - Lưu đồ thư viện Modbus

2.4.6. Thiết kế phần mềm cho Transmitter đo độ ẩm và nhiệt độ khụng khớ

Ở đõy chỳng tụi sử dụng vi điều khiển Atmega16 để thực hiện điều hành cỏc hoạt động của transmitter đo độ ẩm. Cũng giống như vi điều khiển Atmega128 sử

dụng cho Data Logger ởđõy chỳng tụi sử dụng cụng cụ phần mềm của IAR.

Phần mềm của transmitter đo độ ẩm và nhiệt độ khụng khớ thực hiện cỏc chức năng sau:

- Đọc dữ liệu cỏc thụng sốđo từ sensor đo độẩm và nhiệt độ khụng khớ thụng

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo các module phục vụ đo lường giám sát trong trạm khí tượng tự động (Trang 91)