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
550,18 KB
Nội dung
MỤC LỤC ĐỀ BÀI: 1.XẬY DỰNG HÀM TRUYỀN-THIẾT LẬP PHƯƠNG TRÌNH SAI PHÂN 2.CODE CHƯƠNG TRÌNH MƠ PHỎNG – C# 3.IN KẾT QUẢ ĐƯỜNG CONG QUÁ ĐỘ 11 5.IN KẾT QUẢ Y[K] 14 6.CÁC CHỈ TIÊU CHẤT LƯỢNG CỦA HỆ THỐNG 16 7.NHẬN XÉT: 17 8.TÀI LIỆU THAM KHẢO: 17 ĐỀ 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à: 𝐾1 𝐾2 𝐾1 𝐾2 𝑇1 𝑠 + 𝑇2 𝑠 + 𝑊(𝑠) = = 𝐾1 𝐾2 𝐾3 (𝑇1 𝑠 + 1)(𝑇2 𝑠 + 1) + 𝐾1 𝐾2 𝐾3 1+ (𝑇1 𝑠 + 1)(𝑇2 𝑠 + 1) 𝑊(𝑠) = 𝐾1 𝐾2 𝑇1 𝑇2 𝑠 + (𝑇1 + 𝑇2 )𝑠 + 𝐾1 𝐾2 𝐾3 + 2 𝑧−1 Thay 𝑠 = 𝑇 𝑧+1 vào hàm W(s) ta có: 𝑧−1 𝐾1 𝐾2 ( ) 𝑇 𝑧 + 𝑊(𝑧) = 𝑧−1 2 𝑧−1 𝑇1 𝑇2 (𝑇 𝑧 + 1) + (𝑇1 + 𝑇2 ) (𝑇 𝑧 + 1) + 𝐾1 𝐾2 𝐾3 + 𝐾1 𝐾2 𝑇 (𝑧 + 1)2 𝑊(𝑧) = 4𝑇1 𝑇2 (𝑧 − 1)2 + (𝐾1 𝐾2 𝐾3 + 1)𝑇 (𝑧 + 1)2 + 2(𝑇1 + 𝑇2 )𝑇(𝑧 + 1)(𝑧 − 1) Biến đổi dạng: 𝑌(𝑧) 𝐾1 𝐾2 𝑇 (𝑧 + 2𝑧 + 1) = 𝑈(𝑧) 𝐴𝑧 + 𝐵𝑧 + 𝐶 Trong đó: 𝐴 = 4𝑇1 𝑇2 + 2𝑇(𝑇1 + 𝑇2 ) + (𝐾1 𝐾2 𝐾3 + 1)𝑇 𝐵 = −8𝑇1 𝑇2 + 2𝑇 (𝐾1 𝐾2 𝐾3 + 1) 𝐶 = 4𝑇1 𝑇2 − 2𝑇(𝑇1 + 𝑇2 ) + (𝐾1 𝐾2 𝐾3 + 1)𝑇 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 tố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