Bộ điều khiển PID tương tự
Bây giờ ta tiếp tục với phần thiết kế bộ điều khiển tương tự. Chúng ta có hai lựa chọn:
- Thiết kế bằng Simulink: Có thể coi là phương pháp thực nghiệm. Phương pháp thiết kế đơn giản, nhanh chóng, mọi thứ đều có sẵn, cứ nối vào nhau rồi xem kết quả -> chọn kết quả tốt nhất.
- Thiết kế bằng Matlab: Đòi hỏi phải hiểu bài toán, lý thuyết và phải biết lập trình một chút -> khó hơn một chút nhưng sẽ hiểu sâu hơn về lý thuyết và cách thực hiện. Cho phép khảo sát nhiều đặc tính hơn ngay trong quá trình thiết kế cũng như hiểu thêm về các lệnh Matlab dùng trong thiết kế.
Hướng thứ hai sẽ có ích cho những người cần hiểu sâu thêm về cách thiết kế bộ điều khiển. Tuy nhiên, khi làm thì ta nên kết hợp cả hai hướng trên để vừa thiết kế theo lý thuyết vừa có cái để kiểm chứng ngay.
Bây giờ chúng ta bắt đầu với bộ điều khiển dòng (vòng lặp trong)
Ở đây ta chưa cần quan tâm đến tốc độ vội, kệ nó, muốn bằng bao nhiêu cũng được, miễn là ta đặt dòng bằng bao nhiêu thì nó phải ra bấy nhiêu!
Để sử dụng hàm --connect-- ta vẽ lại sơ đồ điều khiển, trong đó đánh số thứ tự các đầu vào của các khối trong hình tròn, số thứ tự của các đầu ra của các khối trong hình vuông như hình sau
Trong đó khối là khối ta sẽ đặt hàm truyền bằng 1. Khối này được vào để tiện khai báo đầu vào ra cho cả hệ mà lệnh --connect-- yêu cầu thôi. Trong thuật toán điều khiển vì hàm truyền của nó bằng 1 nên có nó cũng không ảnh hưởng gì đến cấu trúc của cả hệ.
Ta khai báo khối bằng lệnh
1. sys1 = tf(1, 1, 'inputname', 'in');
Với khối điều khiển PID thì tạm thời ta chỉ dùng PI và khai báo như sau:
2. Kp = 100;3. Ki = 10; 3. Ki = 10; 4. 5. numpid = [Kp Ki]; 6. denpid = [1 0]; 7.
8. sys2 = tf(numpid, denpid, 'inputname', 'ei', 'outputname','uaref'); 'outputname','uaref');
Cuối cùng là mô hình động cơ, khai báo như sau:
sys3 = ss(A_m, B_m, C_m, D_m, 'inputname', {'ua', 'TL'}, 'outputname',{'ia', 'n'});
Sau đó sử dụng lệnh --append-- để báo cho Matlab biết các khối cần kết hợp và thứ tự của chúng như sau:
sys = append(sys1, sys2, sys3);
Tiếp theo ta phải khai báo các điểm nối của các khâu. Nếu các bạn để ý sẽ thấy, đầu vào của khối là có số thứ tự là 2, nó là hiệu của đầu ra số 1 của khối và đầu ra số 3 của DCM. Vậy nên khi khai báo ma trận ta sẽ phải có dòng:
[đầu vào số 2 = đầu ra số 1 - đầu ra số 3]
Tương tự, đầu vào của khối DCM có số thứ tự là 3 được nối với đầu ra số 2 của khối . Vậy nên khi khai báo ma trận ta sẽ phải có dòng:
[đầu vào số 3 = đầu ra số 2]
Tóm lại, ta khai báo ma trận như sau:
1. Q = [2 1 -32. 3 2 0]; 2. 3 2 0];
Bây giờ khai báo các đầu vào và đầu ra của hệ sau khi đã nối với nhau:
1. inputs = [1 4];2. outputs = [3 4]; 2. outputs = [3 4];
Cuối cùng là dùng lệnh connnect:
sysc = connect(sys,Q,inputs,outputs);
Đến đây ta đã có được mô hình không gian trạng thái tổng hợp của hệ kín gồm cả bộ điều khiển và đối tượng điều khiển. Đầu vào là dòng điện đặt (vì
) và mômen tải , đầu ra là dòng điện thực phần ứng và tốc độ . Bây giờ ta có thể vẽ thử đồ thị Bode và step như sau:
1. figure(3);
2. bodemag(sysc(1,1),'r--', sysc(1,2),'b--', sysc(2,1),'g--', sysc(2,2),'m--',... sysc(2,2),'m--',...
3. logspace(-1,5,500));