Professional Documents
Culture Documents
1.1.1.1.1. Khâu quán tính bậc 1
1.1.1.1.1. Khâu quán tính bậc 1
Tuần 1-2: Xây dựng hàm FB mô phỏng đối tượng khâu quán tính bậc 1 và
khâu tích phân (bể nước 1 đầu vào 1 đầu ra)
1.1.1.1. Cơ sở lý thuyết:
1.1.1.1.1. Khâu quán tính bậc 1:
Hàm mô tả toán học của đối tượng trên miền thời gian:
Trong đó: K: hệ số tỷ lệ
Yn: tín hiệu đầu ra của hệ thống tại thời điểm t (%)
Yn+1: tín hiệu đầu ra của hệ thống tại thời điểm t+1 (%)
T: hằng số thời gian (thời gian cần thiết để hàm quá độ tăng lên bằng
63% giá trị xác lập) (s)
B: Bias (sai lệch của hệ thống do sai số của thiết bị đo,…) (%)
1
1.1.1.1.2. Khâu tích phân (bể nước 1 đầu vào 1 đầu ra)
Ta có đối tượng bể nước như trong hình:
2
Δt: thời gian lấy mẫu (s)
→
Đồ thị đáp ứng quá độ:
3
1.1.1.1.3. Linear congruential generator
Để mô phỏng nhiễu trong các hệ thống thực, ta sử dụng bộ sinh số giả ngẫu
nhiên. Bộ sinh số giả ngẫu nhiên sử dụng một số hạt khởi đầu (seed) làm đầu vào cho
thuật toán. Khi thuật toán chạy, nó sẽ tạo ra một chuỗi các số giả ngẫu nhiên dựa trên
hạt khởi đầu.
Linear Congruential Generator (LCG) là một trong những thuật toán tạo số giả
ngẫu nhiên phổ biến nhất. Công thức của LCG là:
Các giá trị a, c và m phải được chọn sao cho đáp ứng một số điều kiện nhất định
để tạo ra chuỗi số giả ngẫu nhiên có chất lượng tốt. Các giá trị này phải được lựa chọn
cẩn thận để tránh tình trạng chuỗi số tạo ra trùng lặp hoặc không ngẫu nhiên đủ.
Trong LCG, giá trị của Xn+1 phụ thuộc vào giá trị Xn. Do đó, nếu chọn sai giá
trị cho a, c, m hoặc giá trị khởi đầu (seed) không tốt, chuỗi số tạo ra có thể bị dự đoán
và không đạt được độ ngẫu nhiên đủ cao. Chính vì vậy, việc chọn giá trị đầu vào và
các tham số trong công thức LCG là rất quan trọng để tạo ra chuỗi số giả ngẫu nhiên
có chất lượng cao.
Dựa trên bảng tham số được sử dụng phổ biến trên trang Wikipedia:
https://en.wikipedia.org/wiki/Linear_congruential_generator
Ta lựa chọn các tham số theo ZX81: m = 65535, a = 75, c = 74.
1.1.1.2. Code mô phỏng:
1.1.1.2.1. Đối tượng quán tính bậc 1:
Dùng hàm FB để mô phỏng đối tượng quán tính bậc 1.
K Real
Input T Real
B Real
dt Real
Source code:
1. #Y_n := #Y_n1;
2. #Y_n1 := (#K * #X - #Y_n) *#dt / #T + #Y_n;
Kiểu dữ
Tên biến Comment
liệu
Max Real
Input
Min Real
5
X_n+1 UInt
Upper_Limit UInt
Lower_Limit UInt
Rand_inrange UInt
Source code:
1. //Chuyển đổi Min, Max
2. #Upper_Limit := REAL_TO_UINT(#Max * 10.0);
3. #Lower_Limit := REAL_TO_UINT(#Min * 10.0);
4. //Tham số Random
5. #a := 75;
6. #c := 74;
7. #m := 65535;
8. #X_n := #"X_n+1";
9. #"X_n+1" := (#a * #X_n + #c) MOD #m;
10.//Giới hạn đầu ra
11.#Rand_inrange := (#"X_n+1" MOD (#Upper_Limit -
#Lower_Limit + 1)) + #Lower_Limit;
12.//Chuyển đổi đầu ra
13.#Random_Noise := UINT_TO_REAL(#Rand_inrange) / 10.0;
Nguyên lý: lưu tín hiệu đầu vào vào 1 mảng, sau thời gian trễ quy định thì xuất
tín hiệu ra Output. Với thời gian lấy mẫu là 0,1s thì thời gian trễ tối đa là 100s.
Bảng địa chỉ I/O:
delay_T Real
Input
delay_Y Real
6
Y_Temp Array[0..999] of Real
Y_Temp_i Int
Source code:
Kiểu dữ
Tên biến Comment
liệu
dt Real s
Input
Area Real m2
Tank_height Real m
Bias_% Real %
7
Tank_Volume Real m3
Water_Volume Real m3
Bias Real m
Static
h-Bias Real mức nước đo được chưa tính sai lệch (m)
Source code:
8
24.//Tính mức nước đã có Bias
25.#h := #"h-Bias" + #Bias;
26.
27.//Tính toán mức nước theo (%)
28.IF #"h" < 0.0 THEN
29. #"h" := 0.0;
30. #"Level_%" := 0.0;
31.ELSIF #"h" >= #Tank_height THEN
32. #"h" := #Tank_height;
33. #"Level_%" := 100.0;
34.ELSE
35. #"Level_%" := (#"h" / #Tank_height) * 100.0;
36.END_IF;
37.#Water_Volume := #h * #Area;
1.1.1.3. Kết quả mô phỏng
1.1.1.3.1. Đối tượng quán tính bậc 1
9
o Diện tích đáy: 3m2
o Bias: 5%
o Lưu lượng nước vào/ra bể thay đổi từ 100.0/3.0 (l/s), khi đến 1 mức
nào đó thì chuyển thành 3.0/3.0 (l/s) đển giữ nguyên mức nước, sau
đó thay đổi thành 3.0/200.0 (l/s)
Đường màu xanh là mức nước của bể khi trễ = 0s, nhiễu = 0%
Đường màu đỏ là mức nước của bể khi trễ = 10s, nhiễu = 2%
10
1.1.2. Tuần 3: Xây dựng chương trình điều khiển PID cho đối tượng quán tính
bậc 1 bằng PID Compact trên TIA Portal và kiểm tra ảnh hưởng của các tham
số.
Dựa vào project mẫu của Siemens (ID: 100746401), tạo project mô phỏng điều
khiển đối tượng quán tính bậc 1 bằng PID Compact có thể Tuning online trên Wincc.
1.1.2.1. Cài đặt tham số.
1.1.2.1.1. Tham số hệ thống mô phỏng:
K 10.0
T 5.0 s
11
1.1.2.2. Test
Tuning hệ thống ở trạng thái tương đối lý tưởng (nhiễu nhỏ, không có Bias, trễ
nhỏ). Sau đó, kiểm tra ảnh hưởng của các yếu tố như nhiễu, Bias, trễ,… đến hệ thống,
với tham số PID dò được ở trường hợp lý tưởng nhất.
1.1.2.2.1. Tuning
Pretuning:
Pretuning với SP = 50.0% theo luật PID theo Chien, Hrones và Reswick:
12
Kết quả sau khi thay đổi SP từ 10 -> 50
13
Fine Tuning rồi chỉnh SP từ 50 -> 20
Đánh giá kết quả:
14
Đáp ứng của hệ thống khi tăng nhiễu lên thành 5-10%
15
Tăng SP lên 50%, khi ổn định sai lệch tĩnh khoảng ±3%:
16
1.1.2.2.5. Xét ảnh hưởng khi thay đổi hệ số K và T
Giảm K: 10->5, T: 5->3s (màu đỏ), PV bị giảm sau đó ổn định lại trong khoảng
5-7s
Tăng K: 5->15, T: 3->8s (màu tím), PV tăng lên sau đó ổn định lại trong khoảng
10s.
17
1.1.3. Tuần 4: Xây dựng chương trình điều khiển PID cho đối tượng tích phân
bằng PID Compact trên TIA Portal và kiểm tra ảnh hưởng của các tham số.
Dựa vào project mẫu của Siemens (ID: 100746401), tạo project mô phỏng điều
khiển đối tượng bể nước (khâu tích phân) bằng PID Compact có thể Tuning online trên
Wincc.
Phần báo cáo này chỉ trình bày điều khiển lưu lượng nước đầu vào của bể.
1.1.3.1. Cài đặt tham số.
1.1.3.1.1. Tham số hệ thống mô phỏng:
Chiều cao bể 3m
Output Limit: 0.0 – 90.0 % ↔ điều khiển lưu lượng nước vào
(Inlet_flowrate) từ 0 - 90 (l/s)
Startup ở chế độ Inactive
Ban đầu lấy tham số mặc định:
18
1.1.3.2. Test
Tuning hệ thống ở trạng thái tương đối lý tưởng (nhiễu nhỏ, không có Bias, trễ
nhỏ). Sau đó, kiểm tra ảnh hưởng của các yếu tố như nhiễu, Bias, trễ,… đến hệ thống,
với tham số PID dò được ở trường hợp lý tưởng nhất.
1.1.3.2.1. Tuning
Pretuning
Pretuning với SP = 20.0% theo luật PID theo Chien, Hrones và Reswick:
19
Đánh giá:
Độ vọt lố <5%
Thời gian quá độ: 80s
Sai lệch tĩnh khoảng ±1%
Fine Tuning
Fine Tuning với Ziegler-Nichols PID khi hệ ổn định với thông số Pretuning ở
Setpoint 20%, dò được thông số bộ PID:
20
Đáp ứng của hệ thống khi thực hiện Fine Tuning
Khi ổn định cháu thay đổi Setpoint: 10%-> 90% -> 10% thì được kết quả:
Đánh giá:
21
Độ vọt lố <5%
Thời gian quá độ khoảng 50s
Sai lệch tĩnh khoảng ±1%
1.1.3.2.2. Xét ảnh hưởng khi thay đổi nhiễu
Tăng nhiễu từ 0-1% lên 5-10% thì được kết quả:
Đáp ứng của hệ thống khi tăng nhiễu lên thành 5-10%
Mất khoảng 1p30s để hệ thống ổn định lại
Sai lệch tĩnh: ±5%
22
1.1.3.2.3. Xét ảnh hưởng thay đổi Bias
Giảm nhiễu còn 0-1% và tăng Bias lên 30% thì được kết quả:
23
Đánh giá:
Độ vọt lố <5%
Thời gian đáp ứng: 42s
Sai lệch tĩnh: ±1%
1.1.3.2.4. Xét ảnh hưởng khi thay đổi trễ
Nhiễu:0-1%, giảm Bias về 0%, đợi hệ thống ổn định rồi tăng thời gian trễ lên 50s
tại điểm đánh dấu, thay đổi Setpoint từ 20 -> 90 -> 40% được kết quả:
Đánh giá:
24
1.1.3.2.5. Xét ảnh hưởng khi thay đổi lưu lượng nước ra
Màu đỏ là Output từ 10 l/s -> 70 l/s
Màu đen là Output từ 70 l/s -> 40 l/s
25
1.1.4. Tuần 5-6: Xây dựng hàm FB nhận dạng đối tượng quán tính bậc 1 sử dụng
hồi quy tuyến tính.
1.1.4.1. Cơ sở lý thuyết
1.1.4.1.1. Hồi quy tuyến tính với phương pháp Normal Equation
Hồi quy tuyến tính là một kỹ thuật quan trọng trong Machine Learning, nó được
sử dụng để tìm ra một mối quan hệ tuyến tính giữa đầu vào và đầu ra.
Phương pháp Normal Equation là một phương pháp giải quyết hệ phương trình
tuyến tính bằng cách tìm ra giá trị của vector hệ số mà giá trị của hàm mất mát là nhỏ
nhất. Bằng cách sử dụng phương pháp này, chúng ta có thể tính được giá trị tối ưu của
các hệ số để giải quyết bài toán hồi quy tuyến tính.
Ta có phương trình:
B vector đầu ra
Công thức giải phương trình trên bằng phương pháp Normal Equation như sau:
26
det(AT.A) ≠ 0 -> ma trận khả nghịch
Tính (A^T.A)* theo công thức:
→
Với AT.A là ma trận 2x2 thì ma trận nghịch đảo của A T.A được tính như
sau:
Tính det(A^T.A) theo công thức:
27
→
1.1.4.2. Giải thuật nhận dạng đối tượng quán tính bậc 1
Bước 1: Thu thập dữ liệu Input (X) và Output (Y).
Khi hệ thống ổn định ta tăng Input hệ thống lên 1 khoảng X 1 sau đó lấy mẫu giá
trị đầu vào và giá trị đầu ra, Trên thực nghiệm khi chỉ có 1 giá trị X 1 thì không thể tính
ra được K, T, B. Nên khi hệ thống ta 1 lần nữa tăng giá trị đầu vào lên X 2 sau đó lấy
mẫu đầu vào và đầu ra. Lúc này ta được 2 tập giá trị của đầu vào (X_buff) và đầu ra
(Y_buff).
Mỗi lần lấy mẫu ta lấy trong 60s, thời gian lấy mẫu 1s → tổng cộng có 120 giá trị
của X và 120 giá trị của Y.
28
Muốn đủ dữ liệu ta phải lấy dữ liệu sao cho được 2 đoạn đường cong của đầu ra
Y như hình trên.
Bước 2: Tính Y(t)
Từ bước 1 ta có được 2 mảng dữ liệu (t = 0 → 59):
t Y_buff
0 Y_buff[0]
1 Y_buff[1]
2 Y_buff[2]
3 Y_buff[3]
… …
59 Y_buff[59]
0 Y_buff[60]
1 Y_buff[61]
2 Y_buff[62]
3 Y_buff[63]
… …
59 Y_buff[119]
Từ 2 mảng dữ liệu ta dừng hồi quy tuyến tính để tìm 2 bộ hệ số cho phương
trình:
29
Sau đó tính Y theo t với 2 bộ số a, b, c tính được nhờ hồi quy, thay t=0,…,60, ta
được 2 đường cong xấp xỉ Y(t):
Mỗi đường cong gồm 60 điểm ứng vưới 2 giá trị của X, lưu các giá trị này vào
mảng Y_model[0…119].
Bước 3: Dùng hồi quy tuyến tính để tính KX+B và T.
Dựa trên phương trình động học của khâu quán tính bậc 1:
30
Dùng hồi quy tuyến tính cho phương trình trên ta thu được T1 và T2. Từ đó tính
được tham số T của model bằng trung bình cộng của T1 và T2.
Bước 4: Tính K, B.
Dựa trên T1, T2 tính được ở Bước 3 và Y_model tính được ở Bước 2. Thay T1 và
T2 vào phương trình động học ta có:
Đặt:
Ta được:
31
Hồi quy hệ trên ta thu được K và B.
1.1.4.3. Kiểm nghiệm kết quả
1.1.4.3.1. Lần 1 (trễ = 0s)
Thông số hệ thống
K 5
T 60s
tau 0s
Bias 0%
X 10 -> 20
Nhiễu 2%
Ban đầu X=0, cho X=10 rồi lấy mẫu, sau khi hệ thống ổn định thì tăng lên X =
20 rồi lấy mẫu lần 2 và tính toán thu được kết quả:
Hệ số X cho phương trình: y(t) = a + b.t + c.t2
a 2.230225
b 0.7688999
c -0.004410475
Hệ số X cho phương trình: y(t) = a + b.t + c.t 2
a 52.32373
b 0.7447586
c -0.003915668
Kết quả hồi quy tính KX + B và T lần 1
KX+B = K.20 + B 48.91859
T 57.66751
Kết quả hồi quy tính KX + B và T lần 2
KX+B = K.40 + B 103.2328
T 65.59924
Thông số KTB tính được lấy trung bình của T ở 2 lần tính trên
K 5.43143
T 61.63
B -5.39569
32
90
80
70
60
50
40
30
20
10
0
1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116
X Y(hệ thống)
80
70
60
50
40
30
20
10
0
1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116
X Y(t)
33
X 16 -> 34
Nhiễu 0 - 5%
Ban đầu X=0, cho X=16 rồi lấy mẫu, sau khi hệ thống ổn định thì tăng lên X =
34 rồi lấy mẫu lần 2 và tính toán thu được kết quả:
Hệ số X cho phương trình: y(t) = a + b.t + c.t2
a 11.507
b 0.477358
c -0.00226
Hệ số X cho phương trình: y(t) = a + b.t + c.t 2
a 43.63806
b 0.533936
c -0.00253
Kết quả hồi quy tính KX + B và T lần 1
KX+B = K.16 + B 49.04037
T 76.19678
Kết quả hồi quy tính KX + B và T lần 2
KX+B = K.32 + B 85.5061
T 75.97705
Thông số KTB tính được lấy trung bình của T ở 2 lần tính trên
K 2.025864
T 76.09
B 16.62659
45
40
35
30
25
20
15
10
0
1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121
X Y(hệ thống)
34
45
40
35
30
25
20
15
10
0
1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121
X Y(t)
35
1.1.5. Tuần 7: Từ thông số nhận dạng đối tượng, tính toán tham số bộ điều khiển
PID cho đối tượng.
Nhận dạng đối tượng quán tính bậc 1 bằng giải thuật nhận dạng thực hiện được
từ tuần trước. Sau đó, từ thông số nhận dạng tính toán ra tham số bộ điều khiển PID và
cho PID Compact chạy ở chế độ Automatic Mode.
1.1.5.1. Test lần 1.
Thông số hệ thống
K 2
T 60s
tau 0s
Bias 10%
X 25 -> 40
Nhiễu 2%
PID output: 0-50.0
1.1.5.1.1. Nhận dạng đối tượng + Test PID:
Thông số hệ thống:
36
Sau khi có kết quả 2 lần lấy mẫu thì tính toán K, T, B:
37
Cho chạy PID với thông số dò được:
Nhận xét:
38
1.1.5.1.2. Test ảnh hưởng của nhiễu:
Tăng nhiễu lên 5-10% tại SP = 50:
39
Mất khoảng 3p để hệ thống ổn định lại
Sai lệch tĩnh: ±1%
1.1.5.1.4. Ảnh hưởng của tau:
Tăng tau lên 10s:
Gần 2 tiếng sau hệ thống mới ổn định, Sai lệch tĩnh khoảng ±1%:
40
Giảm tau về 0s, không xảy ra hiện tượng gì:
41
1.1.5.1.5. Ảnh hưởng của K, T:
Thay đổi K: 2 -> 5, T: 60 -> 40s (Đoạn màu đỏ). Mất khoảng 2p30s để hệ
thống ổn định
Thay đổi K: 5-> 15, T: 40 -> 20s (Đoạn màu Xám). Mất khoảng hơn 2p để hệ
thống ổn định
42
1.1.5.2. Test lần 2
Thông số hệ thống
K 10
T 5s
tau 0s
Bias 10%
X 25 -> 40
Nhiễu 2%
43
Sau khi có kết quả 2 lần lấy mẫu thì tính toán K, T, B:
44
Cho SP từ 15 -> 90 và rồi 90 -> 20:
Nhận xét:
45
1.1.5.2.2. Test ảnh hưởng của nhiễu:
Tăng nhiễu lên 5-10% tại SP = 50:
47
Trả tau về 0s, mất khoảng 15s để hệ ổn định:
48
1.1.5.2.5. Ảnh hưởng của K, T:
Thay đổi K: 10 -> 15, T: 5 -> 10s (Đoạn màu đỏ). Mất khoảng 20s để hệ thống
ổn định
Thay đổi K: 15 -> 7, T: 10 -> 3s (Đoạn màu Xám). Mất khoảng 20s để hệ thống
ổn định
Thay đổi K: 7 -> 10, T: 3 -> 5s (Đoạn màu Vàng). Mất khoảng 20s để hệ thống
ổn định
49