Kết quả thử nghiệm

Một phần của tài liệu NGHIÊN CỨU ỨNG DỤNG EMBEDDED OS VÀO BÀI TOÁN GIÁM SÁT TRẠM VỆ TINH (Trang 75 - 91)

- Hệ thống hoạt động ổn định

- Hệ thống có thể thiết lập được các tham số từ xa thông qua chương trình client - Hệ thống nhận được lệnh điều khiển từ xa: Bật tắt điều hòa, máy nổ, đèn điện…

- Hệ thống có thể hoạt động tự động theo kịch bản dựng sẵn

- Các thông tin về điện áp, cảnh báo, nhiệt độ, độ ẩm được tự động gửi về trung tâm thông qua đường ethernet

- Cảnh báo khi mở cửa (ngoài giờ quy định), cảnh báo khi có khói, kĩnh vỡ, cháy, chuyển động (ngoài giờ quy định)

- Một số hình ảnh về hệ thống giám sát tham khảo ở phụ lục 5

5.6 Kết chương

Chương này trình bày thiết kế tổng thể và thiết kế chi tiết cho hệ thống. Cách thức đấu nối các thiết bị đo, cảnh báo… vào hệ thống, cách thức thực hiện phần mềm. Chi tiết về đấu nối các thiêt bị tham khảo phần phụ lục 4, kết quả thử nghiệm tham khảo phụ lục 5.

KẾT LUẬN

Trong luận văn này, học viên đã trình bày các vấn đề về hệ thống nhúng nói chung và hệ điều hành nhúng nói riêng. Nêu nên những đặc điểm và cách thức xây dựng một hệ thống nhúng hoàn chỉnh, từ đó áp dụng vào bài toán giám sát trạm vệ tinh. Các điểm đạt được bao gồm:

- Nghiên cứu tổng quan về hệ thống nhúng, hệ điều hành nhúng - Ứng dụng của hệ thống nhúng

- Cách thức xây dựng một hệ thống nhúng

- Xây dựng một hệ thống nhúng để giám sát các trạm tổng đài vệ tinh

Do thời gian có hạn, rất nhiều các vấn đề lý thuyết và thử nghiệm thực tế chưa được tiến hành đầy đủ tuy nhiên học viên cũng cố gắng khái quát và chỉ ra những điểm quan trọng trong việc thực hiện và phát triển hệ thống nhúng.

Báo cáo không tránh khỏi các thiếu sót, rất mong được sự góp ý của các thày cô và đồng nghiệp có quan tâm để đề tài hoàn thiện hơn trong các nghiên cứu tiếp theo.

HƯỚNG NGHIÊN CỨU PHÁT TRIỂN TIẾP THEO

Hiện nay công nghệ nhúng được ứng dụng rất phổ biến trong các lĩnh vực khác nhau. Do vậy việc nghiên cứu và ứng dụng công nghệ nhúng nói chung và hệ điều hành nhúng nói riêng là cần thiết. Đối với hệ thống giám sát trạm vệ tinh, thì ứng dụng công nghệ nhúng vào sẽ làm giảm giá thành hệ thống, chủ động được công nghệ, tuy nhiên đây mới chỉ là bước đầu trong lĩnh vực ứng dụng công nghệ nhúng. Hướng phát triển tiếp theo sẽ nghiên cứu và ứng dụng trong các hệ thống phức tạp hơn cho viễn thông, ví dụ nghiên cứu và phát triển card báo hiệu SS7…

TÀI LIỆU THAM KHẢO

[1]. Michael Barr, “Programming Embedded Systems in C and C++”, O'Reilly & Associates, 1005 Gravenstein Highway North, Sebastopol, CA 95472, January 1999.

[2]. Jean J.Labrosse, “Embedded System Building Blocks, Second Edition: Complete and Ready-

to-Use Modules in C”, R&D Booksl, 1601 West 23rd Street, Suite 200 Lawrence, Kansas

66046 USA, 1996.

[3]. Systems programing and operating system-McGraw-Hill

[4]. www.freertos.org [5]. http://www.freertos.com/ [6]. www.embedded.com/story/OEG20010304S0004 [7]. www.uclinux.org [8]. http://www.lynuxworks.com [9]. www.atmel.com/atmel/acrobat/doc2467.pdf [10]. http://www.olimex.com/dev/enc28j60-h.html

Phụ lục 1: Thiết kế phần cứng

1. Module nguồn

3. Module IO

Phụ lục 2: Danh sách các đầu đo thiết bị

ST

T Tên thiết bị Đặc tính kỹ thuật Hình vẽ Ghi chú

01 Đầu báo (adsbygoogle = window.adsbygoogle || []).push({});

khói Đầu báo khói Ion loại 4 dây- Phát hiện cả khói hữu hình và vô hình - Dòng điện: hoạt động bình thường 100µA; báo động 77mA

- Nhiệt độ hoạt động: 00-49o - Trọng lượng: 310g

02 Mắt hồng

ngoại - Phạm vi quan sát: 7.5m x 9m- Tần số sóng: cực ngắn loại K-band, 24,125Ghz

- Tỷ lệ phát hiện chuyển động: 0.15m- 3m/giây

- Dòng điện tiêu thụ: 25mA - Đèn led hiển thị màu đỏ

- Nhiệt độ hoạt động: -10oC- 55oC - Kích thước: 11.9 x 7.1 x 4.2 (cm) 03 Đầu báo kính vỡ Báo tất cả các loại kính vỡ - Sử dụng công nghệ mới nhất - Dễ lắp đặt và sử dụng

- Điều chỉnh độ nhạy từ thấp đến cao 04 Đầu báo

mở cửa - Khoảng cách tiêu chuẩn giữa 2 thanh: 25mm - Chế độ điều khiển NC

- Kích thước 1 thanh 64x13x1mm - Điểm tiếp xúc: 300mA

05 Đầu báo nhiệt gia tăng

Kiểm soát nhiệt độ trong dải từ 0oC đến 60oC (chính xác tới 1oC)

- Que đo kiểm soát nhiệt độ trong dải từ -40oC đến 60oC (tuỳ chọn)

- Kết nối tới các thiết bị ngoại vi dễ dàng

Phụ lục 3: Sơ đồ đấu nối các thiết bị đo

1 Sơ đồ đấu nối các đầu đo cảnh báo

Sơ đồ đấu nối đầu báo kính vỡ và đầu phát hiện chuyển động

Sơ đồ đấu nối đầu báo khói, đầu báo lửa, đầu báo nhiệt gia tăng

2 Sơ đồ đấu nối các thiết bị đo

Sơ đồ đo điện áp và tần số máy phát

Sơ đồ đo khác

3 Sơ đồ đấu nối điều khiển

Sơ đồ đấu nối điều khiển đèn chiếu sáng và đầu nối còi báo động

Sơ đồ đấu nối điều khiển đèn chiếu sáng và còi báo động

Sơ đồ đấu nối điều khiển nạp Acquy máy phát

Sơ đồ nối PLC, ATS, Cầu giao 2 vị trí

Sơ đồ nối PLC, ATS, Cầu giao 2 vị trí

Sơ đồ đấu nối giám sát điều khiển điều hòa

Phụ lục 4: Các tác vụ thực hiện việc đo, điều khiển và cảnh báo

1. Tạo task (adsbygoogle = window.adsbygoogle || []).push({});

Đây là một hàm ví dụ để tạo một task trong hệ điều hành FREE RT OS

xTaskCreate(vAC_DC, "AC_DC", configMINIMAL_STACK_SIZE, NULL, mainCOM_TEST_PRIORITY, NULL );

2. Tác vụ đo điện áp và hiển thị thông tin, truyền thông tin

static portTASK_FUNCTION( vAC_DC, pvParameters ) { unsigned char i = 0; unsigned char nCnt1 = 0; for(;;) { if(flag == 0) { if(ADC_Flag == 1) { if(xchannel == 0) {

ac_dc[xchannel].ac_dc = (ADC_Buf[200] + 11) - ac_dc[1].ac_dc; ftoa1((double)(ac_dc[xchannel].ac_dc), szTmp1); szTmp1[5] = 0; sprintf(sztmpx, "DC_DYN:%s ", szTmp1); } else { if(xchannel == 1) { ac_dc[xchannel].ac_dc = ADC_Buf[200] + 11; szTmp2[5] = 0; ftoa1((double)(ac_dc[xchannel].ac_dc), szTmp2); sprintf(sztmpx, "DC_EX:%s ", szTmp2); } } xchannel += 1; if(xchannel > 7) { xchannel = 0; }

ADC_Flag = 0; //Chuan bi me moi Mux_Drv(xchannel); ADC_Start(); flag = 1; } } else { humi_val.f = 0; temp_val.f = 0; temp_val.i = 0; humi_val.i = 0;

measure((unsigned char*) &temp_val.i, 0); temp_val.f = (double) (temp_val.i);

measure((unsigned char*) &humi_val.i,1); humi_val.f = (double) (humi_val.i); linear_calc(&humi_val.f, &temp_val.f);

humi_temp.humi = (unsigned char)(humi_val.f); humi_temp.temp = (unsigned char)(temp_val.f); lcdGotoXY(0, 2);

lcdPrintData(sztmp, strlen(sztmp)); nCnt1 ++;

if(alarm[i].alarm_id > 0) { sztmp[0] = 0; sprintf(sztmp, "ALARM:%d", alarm[i].alarm_id); udp_send(sztmp, strlen(sztmp)); alarm[i].alarm_id = 0; } } switch(cmdflag) { case GET_AIR_1_STATE: cmdflag = 0; udp_send(sztmp, strlen(sztmp)); break; case GET_AIR_2_STATE: cmdflag = 0;

sprintf(sztmp, "Air2State: %d", app_info_air2.current_state); udp_send(sztmp, strlen(sztmp));

break;

case GET_OUT1: cmdflag = 0;

sprintf(sztmp, "OUT1: %d", Out1); udp_send(sztmp, strlen(sztmp)); break;

case SYSTEM_TEST: cmdflag = 0;

sprintf(sztmp, "Hi, I'm Ok!"); udp_send(sztmp, strlen(sztmp)); break;

}

if(cmdflag > 200) { sztmp[0] = 0;

sprintf(sztmp, "RES:%d", cmdflag); udp_send(sztmp, strlen(sztmp)); cmdflag = 0; } flag = 0; } } }

3. Tác vụ điều khiển, giám sát các cổng IO

/**************************************************************/ static portTASK_FUNCTION( vDyn, pvParameters )

{ unsigned char nCnt1 = 0; for(;;) { if(flag1 == 0) { switch(cmdflag) { case START_TEST_DYN_CMD: if(dyn_info.current_state == DYN_ST_IDLE) { dyn_info.current_state = DYN_TEST_STARTING; cmdflag = 150; } else { cmdflag = 255; } break;

case STOP_TEST_DYN_CMD: if(dyn_info.current_state == DYN_TEST_RUNNING) { dyn_info.current_state = DYN_TEST_STOP; cmdflag = 150; } else { cmdflag = 255; } break; case START_LOAD_DYN_CMD: if(dyn_info.current_state == DYN_ST_IDLE) { dyn_info.current_state = DYN_LOAD_STARTING; cmdflag = 150; } else { cmdflag = 255; } break; case STOP_LOAD_DYN_CMD: if(dyn_info.current_state == DYN_LOAD_RUNNING) { SetBit1(1, 0); // Cat tai

running_time = 0; nCnt = 0; dyn_info.current_state = DYN_PRESTOP; cmdflag = 150; } else { cmdflag = 255; } break; case GET_DYN_STATUS_CMD: if(dyn_info.current_state == DYN_ST_IDLE) { cmdflag = 247; // Khong hoat dong } else {

cmdflag = 248; // Dang hoat dong } break; } ProcessDynamoEvent(); flag1 = 1; } else { switch(cmdflag) {

case SET_OUT_3: // air 2 cmdflag = 254; SetBit1(3, 0); nCntAir2 = 0; air2_runningtime = 0; app_info_air2.current_state = AIR_IDLE; break;

case SET_OUT_4: // air 1 cmdflag = 254; SetBit1(4, 0); nCntAir1 = 0; air1_runningtime = 0; app_info_air1.current_state = AIR_IDLE; break;

case RESET_SMOKE_CMD: // Reset bao khoi SetBit1(6, 0);

vTaskDelay(100); SetBit1(6, 1); (adsbygoogle = window.adsbygoogle || []).push({});

cmdflag = 254; break;

case RESET_FIRE_CMD: // Reset bao tia lua SetBit2(3, 0);

vTaskDelay(100); SetBit2(3, 1); cmdflag = 254; break;

case RESET_GLASS_BROKEN_CMD: // Reset bao kinh vo SetBit1(7, 0);

vTaskDelay(100); SetBit1(7, 1); cmdflag = 254; break;

case TURN_LIGHT_DYN_ON: // Bat den dien phong may phat SetBit2(4, 1);

cmdflag = 254; break;

case TURN_LIGHT_EX_OFF: // Tat den dien phong tong dai SetBit2(1, 0); cmdflag = 254; break; } monitor(); } }

Phụ lục 5: Kết quả thử nghiệm

1. Cửa sổ đăng nhập chương trình giám sát một trạm đặt tại huyện

2. Cửa sổ hiển thị các thiết bị giám sát, đo, cảnh báo, điều khiển ở dạng các đối tượng

3. Cửa sổ hiển thị các thiết bị giám sát, đo, cảnh báo, điều khiển ở dạng bảng

Một phần của tài liệu NGHIÊN CỨU ỨNG DỤNG EMBEDDED OS VÀO BÀI TOÁN GIÁM SÁT TRẠM VỆ TINH (Trang 75 - 91)