Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
485,36 KB
Nội dung
MỤC LỤC ĐỀ BÀI: Dùng máy tính khảo sát trình độ hệ điều khiển tự động u cầu: Chương trình viết ngơn ngữ C/C++,visual,VB,matlab, Cho phép người dùng nhập tham số T1,T2,T3,K1,K2,K3, Cho phép người dùng nhập bước cắt mẫu T Hiển thị đường cong độ trục có khắc tọa độ để đánh giá tính ổn định hệ thống Thể tiêu ymax , δmax (%), yod,Tmax ,Tod… đồ thị In hình 100 điểm y[k] ( 10 điểm in giá trị) 1.XẬY DỰNG HÀM TRUYỀN-THIẾT LẬP PHƯƠNG TRÌNH SAI PHÂN Hàm truyền kín hệ thống là: Thay vào hàm W(s) ta có: Biến đổi dạng: Trong đó: Az2Y(z) + BzY(z) + CY(z) = K1K2T2 [z2U(z) + 2zU(z) + U(z)] Dùng tính chất dịch hàm gốc biến đổi Z ta tìm phương trình sai phân tương ứng: AY[k+2] + BY[k+1] + CY[k] = K1K2T2 (U[k+2] + U[k+1] + U[k]) Vì tín hiệu vào tín hiệu nhảy cấp U(t) = 1(t) nên ta có: U[k+2] = U[k+1] = U[k] = AY[k+2] + BY[k+1] + CY[k] = 4K1K2T2 Y[k+2] = (4K1K2T2 – BY[k+1] – CY[k]) /A Từ ta có cơng thức tính giá trị đáp ứng y(t) sau: y[0] = y[1] = 0; y[k+2] = (4K1K2T2 – By[k+1] – Cy[k]) /A; k=0, 1, 2…999; A, B, C số tính 2.CODE CHƯƠNG TRÌNH MƠ PHỎNG – C# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace test { public partial class Form1 : Form { private Graphics graph; private int x0, y0, xMax, yMax; // tọa độ gốc O, xMax, yMax private int min, max; private int delta_x=30; private int delta_y=30; // độ lệch trục tọa độ vẽ private double dx, x, y; private float x1, y1, x2, y2; private bool OnDinh = true; private float K1, K2, K3, T1, T2, T; //thông số đầu vào private float Tmin; private float ymax, yod, x_ymax, Tod, Tmax, xicma; //Thơng số đầu cần tính toán private int x_Tod; // Xác định tọa độ Tod; private float unit_x, unit_y; private float A, B, C; // Độ chia để vẽ đồ thị public Form1() { InitializeComponent(); graph = DrawArea.CreateGraphics(); xMax = DrawArea.Width; yMax = DrawArea.Height; x0 = 0; y0 = DrawArea.Height; } private void button1_Click(object sender, EventArgs e) { int sopt = 1000; graph.Clear(Color.White); float[] y = new float[sopt]; PointF[] pnt = new PointF[sopt]; Pen blackPen = new Pen(Color.Black, 1); Pen redPen = new Pen(Color.Red, 1); Pen greenPen = new Pen(Color.Green, 3); int index = 0; for (int i = 0; i < 100; i++) { // 100 số điểm y[k] cần in comboBox_item.Items.Add(index); index += 10; } listBox1.Items.Clear(); // phải xóa rỗng listbox lần cập nhật lại đồ thị // Kiểm tra nhập thông số hợp lệ hay không if (float.TryParse(textBoxK1.Text, out K1) && float.TryParse(textBoxK2.Text, out K2) && float.TryParse(textBoxT2.Text, out T2) && float.TryParse(textBoxT1.Text, out T1) && float.TryParse(textBoxT.Text, out T) && float.TryParse(textBoxT2.Text, out K3)) { if (T1 < T2) { Tmin = T1/20; } else { Tmin = T2 / 20; } if (T > Tmin) { MessageBox.Show("Xin nhập lại chu kỳ trich mẫu T, T