Chương trình điều kiển

Một phần của tài liệu NGHIÊN CỨU, THIẾT KẾ CHẾ TẠO MÁY KHẢO NGHIỆM MA SÁT, HAO MÒN, BÔI TRƠN DÙNG TRONG NGÀNH KỸ THUẬT TÀU THỦY (Trang 95 - 100)

a.Giao diện điều khiển

Ta có thể thay đổi nhiệt độ dầu và tốc độ động cơ trên PC, đồng thời các giá trị thực sẽ được cập nhật và hiển thị liên tục.

Lực ma sát, tải tác dụng, kích thước mòn cũng được cập nhật liên tục lên PC với tần số 2 lần/giây. Ngoài ra chúng còn được hiển thị trên đồ thị để tiện theo dõi và so sánh sự thay đổi giá trị trong một khoảng thời gian.Ta cũng có thể quan sát các thông số trên đồ thị tại một thời điểm bất kỳ dựa vào thanh bar thời gian. Bên cạnh đó ta có thể thay đổi giá trị/một ô hiển thị qua thanh bar bên trái màn hình.

Hình 4.11: Dao diện điều khiển b.Xử lý số liệu và lưu trữ

Các giá trị sẽ tự động lưu vào bảng Excel để người dùng tiện sử dụng trong quá trình nghiên cứu và xử lý số liệu.

Trước khi lưu trữ, các số liệu đã được xử lý sơ bộ với các thuật toán và phần cứng. Quá trình này giúp giảm nhiễu để các chuyên gia phân tích dễ dàng hơn.

Bật tắt chế độ

xem lại.

Xem lại thời gian trước. Giá trị cực đại

hiển thị.

Thời gian

c.PID

floatPID_Control(float Error, float Control_old) {/* Tính tỉ lệ*/

float Control_new = Control_old + (PID_KP * Error);

/* Tính tích phân */

Sum_G += Error;

Control_new += PID_KI * Sum_G;

/* Tính vi phân */

Control_new += (PID_KD * SAMPLE_RATE * (Error - Old_error_G));

/* PID_MIN ≤ Control_new ≤ PID_MAX */

if (Control_new > PID_MAX) Control_new = PID_MAX;

else

if (Control_new < PID_MIN) Control_new = PID_MIN;

/* Lưu giá trị lỗi */

Old_error_G = Error;

return Control_new; }

d.Loại các giá trị mẫu đột biến

intNoise_canceler(void) {char i, spl_adc=0;

unsigned int tmp_adc=0, result_adc=0;

//Tính tổng giá trị các mẫu

for(i=0; i<SAMPLE; i++) tmp_adc += adc_data[i]; tmp_adc /= i;

//Loại các mẫu có giá trị đột biến

for(i=0; i<SAMPLE; i++)

if( (tmp_adc-)<adc_data [i]<(tmp_adc+) ) {result_adc += adc_data [i];

spl_adc++;}

return = spl_adc;}

e.Đánh giá giá trị trung bình

floatAverage(void)

{unsigned int i, tmp_s, sample;

float q=0, s=0;

//Loại các giá trị đột biến

sample = Noise_canceler();

//Tính trung bình các giá trị nhiễu

for(i=0; i< sample; i++) q += adc_data[i];

q = q/ sample;

//Tính độ lệch chuẩn

s = 0;

for(i=0; i< sample; i++) {if(q>adc_data [i]) tmp_s = q - adc_data [i];

else

tmp_s = adc_data [i] - q;

Một phần của tài liệu NGHIÊN CỨU, THIẾT KẾ CHẾ TẠO MÁY KHẢO NGHIỆM MA SÁT, HAO MÒN, BÔI TRƠN DÙNG TRONG NGÀNH KỸ THUẬT TÀU THỦY (Trang 95 - 100)

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

(113 trang)