Nghiên cứu hệ điều khiển quá trình theo mô hình dự báo Nghiên cứu hệ điều khiển quá trình theo mô hình dự báo Nghiên cứu hệ điều khiển quá trình theo mô hình dự báo luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
NGUYỄN ĐĂNG KHANG BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ TỰ ĐỘNG HOÁ TỰ ĐỘNG HOÁ 2003-2005 NGHIÊN CỨU HỆ ĐIỀU KHIỂN Q TRÌNH THEO MƠ HÌNH DỰ BÁO NGUYỄN ĐĂNG KHANG HÀ NỘI 2005 HÀ NỘI - 2005 Luận văn tốt nghiệp Nguyễn Đăng Khang MC LC CHƯƠNG1: TỔNG VỀ ĐIỀU KHIỂN Q TRÌNH CƠNG NGHIỆP 1.1 Khái quát chung 01 1.1.1Định nghĩa điều khiển trình .01 1.1.2 Phân loại hệ điều khiển trình 01 1.1.3 Những đặc điểm hệ điều khiển trình 02 1.2 Các cấu trúc điều khiển trình .08 1.2.1 Dùng điều khiển PID truyền thống .08 1.2.2 Cấu trúc mô hình nội IMC .10 1.2.3 Cấu trúc điều khiển phân tầng Cascade control .13 1.2.4 Cấu trúc điều khiển feedforward 14 1.2.5 Hệ điều khiển trình nhiều biến 16 1.2.6 Hệ điều khiển theo mơ hình dự báo MPC 20 1.2.6.1 Điều khiển theo mơ hình dự báo 20 1.2.6.2 Mơ hình điều khiển q trình Smith cho điều khiển q trình có thời gian chết lớn 24 1.2.6.3 Điều khiển ma trận động vòng đơn .27 1.2.6.4 Điều khiển theo mô hình dự báo GPC 30 CHƯƠNG 2: CƠ SỞ CỦA THUẬT TOÁN ĐIỀU KHIỂN THEO MƠ HÌNH DỰ BÁO GPC CHO HỆ SISO 2.1 Giới thiệu chung 32 2.2 Cơ sở toán GPC .32 hc ca Luận văn tốt nghiệp Nguyễn Đăng Khang 2.3 Trường hợp có nhiễu mầu .38 2.4 Xây dựng thuật toán GPC cho hệ SISO 39 2.4.1 Các cải tiến cho thuật toán 39 2.4.2 Thuật toán 44 2.5 Các hàm thực 45 2.6 Ví dụ minh hoạ .48 CHƯƠNG 3: BỘ ĐIỀU KHIỂN THEO MƠ HÌNH DỰ BÁO GPC CHO HỆ MIMO 3.1 Cơ sở toán học 54 3.2 Biểu diễn ma trận hàm truyền thành ma trận đa thức 60 3.3 Xây dựng thuật toán GPC cho hệ MIMO .61 3.3.1 Cải tiến cho thuật toán .61 3.3.2 Thuật toán 63 3.4 Các chương trình thực 65 3.5 Ví dụ minh hoạ .70 CHƯƠNG 4: KẾT QUẢ MƠ PHỎNG 4.1 Ví dụ hệ SISO 74 4.2 Ví dụ hệ MIMO .81 Nhận xét .88 Kết luận 89 Tài liệu tham khảo 90 Luận văn tốt nghiệp Nguyễn Đăng Khang Ph Lc 92 Luận văn tốt nghiệp Nguyễn Đăng Khang LI NểI U Điều khiển theo mơ hình dự báo ( Model Predictive Control – MPC) phát triển đáng kể vào năm gần đây, lĩnh vực nghiên cứu điều khiển công nghiệp Nguyên nhân phát triển thực tế MPC có lẽ giải pháp tổng quát cho toán điều khiển q trình miền thời gian Cơng thức MPC bao gồm điều khiển tối ưu, điều khiển trình ngẫu nhiên, điều khiển q trình có thời gian trễ, điều khiển biết trước quỹ đạo đặt Một ưu điểm khác MPC điều khiển q trình có tín hiệu điều khiển bị chặn, có điều kiện ràng buộc, nói chung trình phi tuyến mà ta thường hay gặp công nghiệp Tuy nhiên việc thực điều khiển MPC u cầu tính tốn phức tạp mặt tốn học, địi hỏi lực tính tốn máy tính cần phải lớn Thực tế năm trước vấn đề gây khơng khó khăn cho kỹ sư điều khiển việc tích hợp hệ thống Tuy nhiên với phát triển ngày hoàn thiện kỹ thuật vi xử lý điều khơng cịn trở ngại đáng kể Chính lý với ưu điểm bật điều khiển theo mơ hình dự báo thúc đẩy tác giả chọn đề tài làm luận văn tốt nghiệp Nhiệm vụ luận văn là: “ Nghiên cứu hệ điều khiển q trình theo mơ hình dự báo” Cụ thể tác giả thực nội dung sau: Tổng quan điều khiển q trình theo mơ hình dự báo MPC, nghiên cứu sở lý thuyết phương pháp điều khiển theo mơ hình dự báo, tìm hiểu số khái niệm thuật toán MPC ph bin Luận văn tốt nghiệp Nguyễn Đăng Khang Nghiờn cu c s toỏn hc ca lut điều khiển theo mơ hình dự báo GPC cho hệ SISO có xét tới trễ hệ MIMO Mơ đặc tính đầu đặc tính điều khiển ngơn ngữ lập trình C++ Kết mơ cho thấy chất lượng hệ thống sử dụng điều khiển theo mơ hình dự báo tốt có trễ Tác giả xin chân thành cảm ơn thầy giáo PGS.TS Bùi Quốc Khánh tận tình hướng dẫn tác giả suốt thời gian làm luận văn Xin bày tỏ lòng biết ơn sâu sắc tới thầy cô môn Tự Động Hố thầy Khoa Điện thầy cô Trung tâm sau đại học Hà nội, ngày 10 tháng 11 năm 2005 Tác giả Nguyễn Đăng Khang Luận văn tốt nghiệp Nguyễn Đăng Khang CHNG 1: TỔNG QUAN VỀ ĐIỀU KHIỂN Q TRÌNH CƠNG NGHIỆP 1.1 Khái quát chung 1.1.1 Định nghĩa điều khiển q trình Trong q trình sản xuất cơng nghiệp, đại lượng vật lý như: nhiệt độ (T), áp suất (P), lưu lượng (Q), dịng điện (i) vv ln ln ảnh hưởng đến chất lượng sản phẩm VD: Trong nhà máy chế tạo khí cần điều khiển nhiệt độ lị tơi, lị ram để đảm bảo độ cứng, độ bền chi tiết máy Điều chỉnh dòng điện vào động để tạo tốc độ quay phù hợp, đảm bảo độ xác gia cơng cắt gọt trơn láng bề mặt Tại nhà máy xi măng, hoá chất cần điều khiển nhiệt độ, áp suất Hệ thống điều khiển đại lượng hệ điều khiển trình Đặc điểm đại lượng nhiệt độ, áp suất, lưu lượng trình điều khiển có qn tính lớn, liên tục diến thời gian dài Việc kiểm soát đại lượng vật lý nhiệm vụ trọng tâm điều khiển trình Điều khiển trình đóng vai trị quan trọng sản xuất, định suất, chất lượng, hiệu Vì người ta chia lĩnh vực riêng để nghiên cứu Trong chương đề cập vấn đề chung cơng nghệ điều khiển q trình 1.1.2 Phân loại điều khiển q trình : Trong cơng nghiệp ta phân loại hệ điều khiển q trình thành loại sau: - Theo đại lượng vật lý : ta có hệ ĐKQT theo nhiệt độ, áp sut, mc, lu lng Luận văn tốt nghiệp Nguyễn Đăng Khang - Theo s mch vũng iu khin: ta có hệ ĐKQT mạch vịng, mạch vịng - Hệ hay nhiều thông số điều khiển: Hệ SISO, hệ MIMO - Các trình phản ứng hoá học - Hệ điều khiển nồng độ 1.1.3 Những đặc điểm điều khiển trình Trong sản xuất ta thường gặp phải trình biến thiên chậm có trễ, hệ thống có tham số rải ,cấu trúc hàm truyền thay đổi có độ phi tuyến lớn, tham số điều khiển có độ tương tác, hệ thống có vùng chết “dead time” Các trình thường gặp điều khiển nhiệt độ, lưu lượng , áp suất , phản ứng hoá học Nó đặc trưng hàm truyền có dạng bậc hay bậc cao với thời gian chết hàm FP= K e − P s (FOPDT- bậc TP s + có thêm thời gian chết), TP số thời gian trình , P thời gian chết trình Nhưng đặc tính biến thiên chậm q trình ta nhận dạng trực tuyến ( online) điều khiển Từ ta thay đổi tham số điều khiển cho phù hợp với đối tượng điều khiển Thời gian chết nhân tố gây khó khăn cho trình điều khiển, thời gian chết lớn điều khiển khó xác Với q trình dùng phương pháp điều khiển truyền thống ( điều khiển PID )thì khó đáp ứng tiêu điều khiển ( ổn định sau thời gian ngắn…) Do để điều khiển xác ta phải kết hợp phương pháp điều khiển truyền thống phương pháp điều khiển khác Cascade, Feedforward, IMC, MPC điều khiển Điều yêu cầu phải có điều khiển mạnh Luận văn tốt nghiệp Nguyễn Đăng Khang Mt số đặc tính cần ý điều khiển trình: - Sự tồn thời gian chết ( dead time) điều khiển trình: Thời gian chết đặc tính tự nhiên hệ thống Nó làm cho hành động điều khiển bị trễ Sau khoảng thời gian tác động tín điều khiển ta chưa quan sát đáp ứng Đặc tính ln tồn tại thời điểm Thời gian chết xuất băng tải đường truyền lượng Thời gian chết gọi trễ Ví dụ xuất thời gian chết hệ thống cân băng tải: Hình 1.1 Valve Cell Weight Output m Setpoint m Controller Hình 1.1: Sơ đồ khối hệ thống cân băng tải Sự tồn thời gian chết (dead time) hệ thống cân băng tải thể đáp ứng tín hiệu đầu vào tín hiệu đầu q trình hỡnh 1.2: Luận văn tốt nghiệp Nguyễn Đăng Khang Qua đồ thị ta thấy tồn thời gian chết nên đáp ứng đầu trình bị trễ khoảng thời gian Td so với tín hiệu đầu vào trình Process input Td Td Process Output Time Hình 1.2 Đáp ứng tín hiệu vào Một số đối tượng điều khiển trình coi khâu tích phân: - Ví dụ ta xét bình chứa chất lỏng hình 1.3 V h Fi LC F0 Hình 1.3Sự thay đổi mức tỷ lệ hiệu lưu lượng dòng vào lưu lượng dòng Với Fi lưu lượng dòng chảy vào, Fo lưu lượng dòng chảy ra, h mức bình chứa, V thể tích bình chứa Luận văn tốt nghiệp 90 Nguyễn Đăng Khang Mơ cho trường hợp hệ thống SISO có trễ khơng có trễ hệ MIMO ngơn ngữ lập trình C++, thấy chất lượng hệ thống tốt có trễ Có thể thấy phát triển mạnh mẽ kỹ thuật vi xử lý ( đặc biệt kỹ thuật vi điều khiển DSP ) công cụ phần mềm mở khả ứng dụng có hiệu phương pháp điều khiển theo mơ hình dự báo cho hệ thống điều khiển trình Việc nghiên cứu phát triển đề tài dừng lại việc mô kiểm tra máy tính chưa kiểm nghiệm điều khiển thực tế Đây gợi ý cho hướng đề tài Cuối tác giả hy vọng luận văn làm tảng cho đề tài tiếp theo, bước thực hoá việc ứng dụng điều khiển theo mơ hính dự báo điều khiển q trình nói riêng cơng nghiệp nói chung Một lần tác giả xin cảm ơn thầy PGS.TS Bùi Quốc Khánh thầy mơn Tự Động Hố Khoa Điện , thầy cô Trung tâm sau đại học Hà Nội, ngày 10 tháng 11 nm 2005 Tỏc gi Nguyn ng Khang 90 Luận văn tốt nghiệp Nguyễn Đăng Khang TI LIU THAM KHO [1] Alberto Bemporad and manfred Morari “ Robust Model Predictive Control: A survey” Automatic Cotrol Laboratory, Swiss Institute of Technology (ETH), Physikstrasse, CH-8092 Zuzich, Switzeland [2] D.W Clarke “Application of Generalized Predictive Control to Industrial Processes” IEEE Control System Magazine, 122: 49-55, 1988 [3] D.W Clarke and C Mohtadi “Properties of Generalized Predictive Control” Automatica, 25(6):859-875, 1989 [4] Eduardo F Camacho and Carlos Bordons “Model Predictive Control” [5] E.F Camacho and Bordons “Implementation of Self Tuning Generalized Predictive Controllers for The Process Industrial” Int Journal of Aduptive Control and Signal Processing, 7:63-73, 1993 [6]F.G Shinskey, “Process Control System”, Mcgraw-Hill Book Company, TP155.75.S5 1988 [7] M.A Lelic and P.E Wellstead “Generalized Pole Placement Self Tuning Controller” Part Basic Algorithm Int J Control, 46(2):547-568, 1987 [8] Micheal J Pole: “PATTERNS FORTIME TRIGGERED EMBEDDED SYSTEM”, [Pearsion Education, 2001, ISBN: 0-201-33138-1] [9] W Marquardt “ Process Engineering”, RWTH Aachen University of Technology, D-52056 Aachen, Germany [10] Phạm Văn Ất (1999), “Kỹ Thuật Lập Trình C”, Nhà xuất khoa học kỹ thuật, 54 Hai B Trng Luận văn tốt nghiệp 91 Nguyễn Đăng Khang [11] Bùi Quốc Khánh, Phạm Quốc Hải, Nguyễn Văn Liễn, Dương Văn Nghi, “ Điều chỉnh tự động truyền động điện”, Nhà xuất koa học kỹ thuật Hà nội 1996 [12] Nguyễn Văn Hồng Nhóm tác giả Elicom (2000), “Tự Học Visual C++6 Trong 21 Ngày”, Nhà xuất thống kê, Công ty sách thiết bị trường học Đà Nẵng [13] Nguyễn Thương Ngô (2000), “Lý Thuyết Điều Khiển Tự Động Hệ Tuyến Tính”, Nhà xuất khoa học kỹ thuật, 70 Trần Hưng Đạo - Hà Nội [14] Nguyễn Thương Ngô (1999), “Lý Thuyết Điều Khiển Tự Động Hiện Đại”, Nhà xuất khoa học kỹ thuật, Công ty in Hàng không [15] Phạm Công Ngô (2001), “Lý Thuyết Điều Khiển Tự Động”, Nhà xuất khoa học kỹ thuật, 70 Trần Hưng Đạo - Hà Nội [16] Hồng Minh Sơn, “ Thư Viên Tính tốn điều khiển hướng đối tượng FMOL++” Phơ lơc Phơ lục I MÃ nguồn ch-ơng trình mô cho hệ SISO Genral Predictive Control * GDC h #if !defined(AFX_GDC_H_304C82CA_F2C5_4B50_9775_8B2AD5960B95_INCLU DED_) #define AFX_GDC_H_304C82CA_F2C5_4B50_9775_8B2AD5960B95_INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "fmol\ vector.h" namespace fmol { namespace control { class GDC { //General Digital Controller public: // public data for simplified access Vector Ku,Kw,Ky; Vector u,w,y; // construction void assign(const Vector& ku, const Vector& kw, const Vector& ky); GDC() : Ku (1,1.0), Kw(1,1.0),Ky(1,1.0),u(1,1.0),y(1,1.0) { } // update reference and controlled values, //execute control algorithm void input(double wn, double yt); // read control value; double output () { return u[ 0] ; } };} } #endif // !defined(AFX_GDC_H_304C82CA_F2C5_4B50_9775_8B2AD5960B95_INCLU DED_) •GDC.cpp : Defines the entry point for //application GDC (General Digital Controller) #include " stdafx h" #include "GDC.h" #ifdef _DEBUG #define new DEBUG_NEW the console Phô lôc #undef THIS_FILE static char THIS_FILE[] = _FILE_;_ #endif //////////////////////////////////////////// // The one and only application object namespace fmol { namespace control { // construction void GDC::assign(const Vector& ku, const Vector& kw, const Vector& ky) { u = Vector(ku.size()); w = Vector(kw.size(),1.0); y = Vector(ky.size()); Ku = ku; Kw = kw; Ky = ky; } // control algorithm void GDC::input(double ref_w, double yt) { w.shift(l,ref_w); y shift (1,yt) ; double ut = Kw.t()*w - Ky.t ()*y - Ku.t ()*u; u.shift(l,ut); } } } •GPC.h #if !defined(AFX_GPC_H_5FB0C125_86D4_4987_98B0_2595040F03E3_INCLU DED_) #define AFX_GPC_H_5FBOC125_86D4_4987_98B0_2595040F03E3_INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "fmol/control/tfmodels.h" #include "gdc.h" namespace fmol { namespace control { // B and A are polynomials of 1/z Phô lôc void GPCDesign(const Vector& B, const Vector& A, int m_d,GDC& ctrl, int m _n, double m_1); // plant is of variable 1/z void GPCDesign(const DTF& plant,GDC& ctrl, int m -n, double m_1); )} #endif // !defined(AFX_GPC_H-5FBOC125_86D4_4987_98B0-2595040F03E3_INCLU DED_) •GPC.cpp : Defines the entry point for the console application #include "stdafx.h" #include "GPC.h" #ifdef_DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[]= _FILE_; #endif namespace fmol { namespace control { void GPCDesign(const Vector& b, const Vector& a, int m_d, GDC& ctrl, int m_n, double m_1) { int na = a.size(); int nb = b.size(); // Tinh vector al Vector al(na+l) ; al(1) = 1; a1 (na+1) = -a (na) ; al(2,na) = a(2,na) - a(l,na-1); // Tinh cac ma tran F,G va G1 Vector fj(na+l) ; fj(1,na) _= - (a1(2, na+l)) ; Vector fj1(na); fjl = fj(l,na); Vector gj(m_d+m_n+nb); gj(l,nb) = b; Vector gjl; gj1 = gj; Matrix F(m_n,na); Matrix G(m_n,m_n); Matrix G1(m_n,nb+m_d-1); int j=l; { if (j>= m_d+1) { F.row(j-m d) = fjl; Phô lôc G.diag(1-j+m_d).fill(gjl(j-m_ d)); G1.row(j-m_d) = gjl(j-m_d+l,j+nb-1); } fj(l,na) = fj1; fjl = fj(2,na+1) - fj[0]*al(2, na+l); gj = gj 1; gj1(j+1,j+nb) = gj(j+1,j+nb) + fj[0]*b; j ++; } while (j 1000 #pragma once #endif //_MSC_VER > 1000 #include #include narnespace fmol { namespace control { class MDTF { //Transfer function model of MIMO plant public: // parameters and states of MIMO plant Matrix A,B; Vector u, y; int m,n; // construction MDTF() : A(1,1,1.0), B(1,1,1.0), u(1,1.0), y(1,1.0), m (1) , n (l) { } void setparams(const Matrix& B1, const Matrix& Al,const int ml, const int nl); // update reference and controlled values, execute control algorithm void input(Vector ut); // read control value; Vector output(); };}} #endif // !defined(AFX_MDTF_H_1D255B76_90D5_47FD_B36E_D4D2571288D1_INCL UDED_) * MDTF.cpp: MDTF(Transfer Function model of MIMO //plant) #include "stdafx.h" #include "MDTF.h" #ifdef_DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] Phô lôc #endif namespace fmol { namespace control { void MDTF::setparams(const Matrix& Bl, const Matrix& A1,const int ml, const int nl) { u = Vector(B1.ncols()); y = Vector(A1.ncols()-nl); A = Al; B = Bl; m = ml; n = nl; } // update inputs for controller and calculate the control signal void MDTF::input(Vector ut) { u.shift(m); u (l,m) = ut; Vector yp = B*u - A.cols (n+1,A.ncols())*y;; y.shift(n); y(l.n) = yp } Vector MDTF::output() { Vector w = y(l,n); return w; } } } *LMFD.h #if !defined(AFX_LMFD_H_EB303CAB_58DB_4949_9F70_DDFlE27778BD_INCL UDED_) #define AFX_LMFD_H_EB303CAB_58DB_4949_9F70_DDF1E27778BD_INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif //_MSC_VER > 1000 //Obtaining the two parameters A and B of MDTF from //its transfer function model #include #include #include #include Phô lôc #include #include "MDTF.h" namespace fmol { namespace control { void v2m(Matrix &N, TVector &Nb, int m, int n); // B and A are polynomials of 1/z void Convert(TMatrix &TF,MDTF& plant); } } #endif // !defined(AFX_LMFD_H_EB303CAB_58DB_4949_9F70_DDF1E27778BD_INCL UDED_) •LMFD.cpp : Defines the entry point for the console //application #include "stdafx.h" #include "LMFD.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = _FILE_; #endif `///////////////////////////////////////// namespace fmol { #if !defined(AFX_MGPC_H_5BA777FD_73A8_4914_AF04_64E524966C46_INCL UDED_) #define AFX_MGPC_H_5BA777FD_73A8_4914_AF04_64E524966C46_INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include #include #include #include #include #include "MDTF.h" #include "MGDC.h" namespace fmol { namespace control { Phô lôc void m2v(TVector &Nb, Matrix &N, int k, int n); void m2m(Matrix &M, TMatrix &Mb, int m, int n); // plant is of variable 1/z void MGPCDesign(const MDTF& plant, MGDC& ctrl, int Nl,int N2,int Nu,double lamda); }} #endif // !defined(AFX_MGPC_H_5BA777FD_73A8_4914_AF04_64E524966C46_INCL UDED_) •MGPC.cpp : Defines the entry point for the console application #include "stdafx.h" #include "MGPC.h" #ifdef_DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = _FILE_; #endif /////////////////////////////////////// // The one and only application object namespace fmol { namespace control { void m2v(TVector &Nb, const Matrix &N, int k, int n) { for(int i = 1; i