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;