การควบคุมระดับนํ้าของกระบวนการสองถังที่เชื่อมต่อกัน (coupled tanks process)

MIMO

การศึกษาระบบควบคุมระดับน้ำในถังที่เชื่อมต่อกัน เริ่มต้นที่การศึกษาแบบจำลองของระบบรักษาระดับน้ำถังเดียว แสดงดังรูปที่ 1

รูปที่ 1 ระบบถังเดี่ยว

อัตราการไหลออกของของไหลแสดงได้ด้วยสมการ

\(q_{out}(t)=kh(t)\)

(1)

โดยที่ \(k\) เป็นค่าคงที่

สมการสมดุลมวลของระบบถังเดียวเขียนได้ดังนี้

\(q_{in}(t)-q_{out}(t)=\frac{dV(t)}{dt}\)

(2)

โดยที่ \(V(t)\) คือปริมาตรของของไหล

จัดรูปสมการ (2) จะได้

\(q_{in}(t)-q_{out}(t)=\frac{dA_{T}h(t)}{dt}=\frac{A_{T}dh(t)}{dt}\)

(3)

แทนค่า \(q_{out}\)

\(q_{in}(t)-kh(t)=\frac{A_{T}dh(t)}{dt}\)

(4)

จัดรูปสมการ (4) จะได้สมการพลศาสตร์ของระบบถังที่ 1

\(\frac {dh_{1}(t)}{dt}+\frac{k}{A_{T}}h_{1}(t)=\frac{1}{A_{T}}q_{in}(t)\)

(5)

ต่อมาพิจารณาหาสมการพลศาสตร์ของถังที่ 2 ดังแสดงในภาพที่ 2

รูปที่ 2 ระบบถังคู่

สมการสมดุลมวลของระบบถังที่สองเขียนได้ดังนี้

\(\frac{dh_{2}}{dt}=\frac{k_{2}(h_{1}-h_{2})}{A_{2}}-\frac{k_{3}h_{2}}{A_{2}}\)

(6)

สมการ (5) และ (6) เขียนในรูปสมการเสตท ได้ดังนี้

\(\begin{bmatrix} \frac{dh_{1}}{dt} \\ \frac{dh_{2}}{dt}\end{bmatrix}=\begin{bmatrix} \frac{-k_{2}}{A_{1}} &\frac{k_{2}}{A_{1}} \\ \frac{k_{2}}{A_{2}}&\frac{-(k_{2}+k_{3})}{A_{2}} \\ \end{bmatrix}+\begin{bmatrix} h_{1} \\ h_{2}\end{bmatrix}+\begin{bmatrix} \frac{1}{A_{1}} \\ 0\end{bmatrix}=q_{in}\)

(7)

\(y=\begin{bmatrix} 0 & 1\\ \end{bmatrix}\begin{bmatrix} h_{1} \\ h_{2}\end{bmatrix}+[0]\)

กำหนดให้

\(A_{1}=A_{2}\)= 32 cm^2
\(k_{2}=k_{3}\)=14.3

แทนค่าลงในสมการ (7) จะได้

\(\begin{bmatrix} \frac{dh_{1}}{dt} \\ \frac{dh_{2}}{dt}\end{bmatrix}=\begin{bmatrix} -0.4469 & 0.4469 \\ 0.4469 & -0.8938\\ \end{bmatrix}+\begin{bmatrix} h_{1} \\ h_{2}\end{bmatrix}+\begin{bmatrix} 0.03125 \\ 0\end{bmatrix}=q_{in}\)

(8)

\(y=\begin{bmatrix} 0 & 1\\ \end{bmatrix}\begin{bmatrix} h_{1} \\ h_{2}\end{bmatrix}+[0]\)

นำสมการ (8) ไปสร้างเป็น control block diagram บนโปรแกรม Simulink ดังนี้

ทำการรันสคริปดังนี้

%%state model
A=[-0.4469 0.4469; 0.4469 -0.8938];
B=[0.03125;0];
C=[0 1];
D=[0];

%%check controlable
p=ctrb(A,B);
rankp=rank(p)

%%check observable
q=obsv(A,C);
rankq=rank(q)

%creat transfer function
[num1,den1]=ss2tf(A,B,C,D,1)

open("two_tank.slx")
sim('two_tank.slx')

จะได้ผลลัพธ์การจำลองการทำงาน ซึ่งจะพบว่าผลตอบสนองของระบบยังไม่ลู่เข้าสู่ค่า Set Point ทั้งนี้เพราะยังมิได้มีการเพิ่มตัวควบคุมที่เหมาะสมให้แก่ระบบ ดังนี้

ดาวน์โหลด Matlab/Simulink file ได้ทีนี่