Giới thiệu phần mềm MATLAB Real-time Window Target

Một phần của tài liệu điều khiển hệ thống có trễ áp dụng vào hệ quạt gió tấm phẳng luận văn thạc sĩ (Trang 58)

Để giới thiệu mô hình phần mềm dùng trong luận văn tôi tóm tắt một số khái niệm các gói phần mềm đã sử dụng trong phần mềm MATLAB:

- MATLAB Simulink là gói phần mềm dùng để mô hình hóa, mô phỏng, và phân tích những hệ thống động. Nó hỗ trợ hệ thống tuyến tính, phi tuyến, hệ liên tục, rời rạc hoặc cả hai. Giao diện MATLAB Simulink cung cấp các mô hình dạng hộp block và dùng chuột để nối các block. Ta sẽ thiết kế thuật toán trong môi trường này.

- Real-Time Workshop (RTW): là gói phần mềm tạo code C (C code generation) từ mô hình Simulink. RTW tạo code C trực tiếp từ mô hình Simulink và code này có thể dùng trực tiếp cho vi điều khiển hay DSP… Đây là một gói phần mềm cực kì hữu dụng của MATLAB. Trong trường hợp thuật toán phức tạp ta có thể xây dựng trên MATLAB Simulink để mô phỏng trước sau đó dùng RTW để tạo ra code C và kết hợp phần mềm dưới vi điều khiển để chạy. Trong luận văn này RTW có tác dụng tạo code C từ MATLAB Simulink để có thể chạy trực tiếp trên máy tính PC.

- Real-Time Window Target (RTWT): là gói phần mềm cho phép chạy code C đã tạo từ RTW trên PC trong thời gian thực. Lúc này PC đóng vai trò là host cho MATLAB, Simulink, và RTW.

Để sử dụng RTWT ta phải cài đặt dùng lệnh (vì thông thường nó không được cài đặt ban đầu): rtwintgt –install

Để kiểm tra lại đã cài đặt RTWT trong MATLAB chưa ta dùng lệnh: rtwho. Ngoài ra ta phải cài đặt trình dịch C cho MATLAB sử dụng để build code C tạo ra từ RTW. Ta dùng lệnh: mex –setup

Ngoài phần tạo code như trên MATLAB còn hỗ trợ các hàm và code để có thể truy xuất tới phần cứng kết nối với máy tính (trong trường hợp này là board giao tiếp qua cổng song song LPT). Ta sẽ vào Real-Time Workshop trong Configuration Parameters của Simulink để hiện thực phần giao tiếp giữa PC và phần cứng.

Đầu tiên vào phần header file để khai báo các địa chỉ, các hàm sẽ dùng giao tiếp board như sau:

// printer port registers definition #define LPT_BASE 888U

#define LPT_CTRL 890U #define LPT_ADDR 891U #define LPT_DATA 892U #define LPT_ECPR 1914U #define EPP_CTRL 0 #define EPP_ADDR 1 #define EPP_DATA 2 #define EPP_ECPR 3

// IO module: Digital Input (1) and Digital Output (1) #define IO_INOUT 0x01 // 0x00 // J6-J8 // ENCODER module (4) #define ENC_CH1 0x10 // J5 #define ENC_CH2 0x13 // J5 #define ENC_CH3 0x16 // J5 #define ENC_CH4 0x19 // J5 #define ENC_RESET 0x1C // SPEED module #define SPD_CH1 0x20 // J5 #define SPD_CH2 0x22 // J5 #define SPD_CH3 0x24 // J5 #define SPD_CH4 0x26 // J5 // PWM module #define PWM_DATAL 0x50 // J7 #define PWM_DATAH 0x51 // J7 #define PWM_FDIV 0x52 // J7 #define PWM_CTRL 0x53 // J7 #define PWM_ENA 0x54 // J7 // functions

real_T inport (real_T address);

void outport (real_T address, real_T data); void encoder_reset (real_T channel);

real_T encoder_read (real_T channel); real_T speed_read (real_T channel);

void pwm_enable (void); void pwm_disable (void);

void pwm_write (real_T channel, real_T Ton);

void board_init(void);

Hình 5. 15: Viết code cho các hàm đã khai báo

/* list of Real-Time Windows Target boards */ const int RTWinBoardCount = 4;

RTWINBOARD RTWinBoards[4] = {

{ "Standard_Devices/Generic_8-bit_Port", LPT_CTRL, 0, NULL }, { "Standard_Devices/Generic_8-bit_Port", LPT_ADDR, 0, NULL }, { "Standard_Devices/Generic_8-bit_Port", LPT_DATA, 0, NULL }, { "Standard_Devices/Generic_8-bit_Port", LPT_ECPR, 0, NULL }, };

int32_T Channels = 0;

int32_T BitMode = 1; /*

* Ham doc muc logic tu port DIN o J6 * Gia tri tra ve 8bit tuong ung DI7-DI0 * address: dia chi giai ma

*/

real_T inport (real_T address) {

real_T addrval, dataval; addrval = address;

RTBIO_DriverIO(EPP_ADDR, DIGITALOUTPUT, IOWRITE, 1, &Channels, &addrval, &BitMode); RTBIO_DriverIO(EPP_DATA, DIGITALINPUT, IOREAD, 1, &Channels, &dataval, &BitMode);

return dataval;

}

Ngoài ra Real-Time Window Target còn cho phép người dùng giao tiếp với nó ngay trong khi chạy (on-the-fly) ví dụ như: lưu dữ liệu, thay đổi thông số… bằng

cách dùng External Mode Operation. Vào giao diện cài đặt External Mode Control Panel:

Hình 5. 16: Cài đặt External Mode Operation

Chọn Data Archiving để lưu dữ liệu trong file.

Hình 5. 17: Data Archiving

Sau khi lập trình trong RTW các hàm giao tiếp phần cứng, và thiết lập các thông số đầy đủ, ta dùng các block Simulink để khởi tạo và đưa các hàm này vào trong vòng lặp chạy cùng với giải thuật:

Hình 5. 18: Viết các hàm sử dụng trong chương trình

Cuối cùng là tạo code C từ mô hình Simulink dùng RTW: dùng phím tắt Ctrl+B . Nếu mô hình không có lỗi ta sẽ được MATLAB thông báo là tạo code thành công và toàn bộ code C sẽ lưu trong thư mục có đuôi là –rtwin. Khi này thuật toán từ Simulink đã sẵn sàng để chạy real-time cùng với phần cứng để điều khiển hệ quạt và tấm phẳng.

….

###Compiling

D:\INSTAL~1\ENGINE~1\MATLAB71\rtw\c\src\ext_mode\common\ext_svr.c

wcc386 -wcd=1180 -zq -ei -zp8 -6r -fpi87 -zl -wx -oneatxh -DEXT_MODE -DMODEL=FanPlate_PID1 -DRT -DNUMST=2 -DTID01EQ=1 -DNCSTATES=1- DMT=0 D:\INSTAL~1\ENGINE~1\MATLAB71\rtw\c\src\ext_mode\common\ext_svr.c Creating linker response file FanPlate_PID1.lnk

wlink NAME ..\FanPlate_PID1.rwd @FanPlate_PID1.lnk ### Created Real-Time Windows Target module FanPlate_PID1.rwd.

### Successful completion of Real-Time Workshop build procedure for model: FanPlate_PID1

CHƯƠNG 6. Kết quả và hướng phát triển

Một phần của tài liệu điều khiển hệ thống có trễ áp dụng vào hệ quạt gió tấm phẳng luận văn thạc sĩ (Trang 58)

Tải bản đầy đủ (DOC)

(83 trang)
w