Mình có suy nghĩ như thế này không biết ý các cao nhân thế nào: Tức là ứng với giá trị nhiệt độ đặt là td thì ta có góc mở là ad.. Thậm chí có khi mở hết 180 độ mà bạn vẫn không đạt được
Trang 1: PID đi ề u ch ỉ nh nhi ệ t đ ộ lò đi ệ n
mumoi
18-12-05, 11:17
Chào các bạn
Mình đang làm về PID điều khiển nhiệt độ sử dụng AT89C51 Các bạn có thể chỉ giáo cho tôi mấy chiêu về PID được không
Tôi đã viết PID trên C và:
Phương trình sai phân của PID số được viết dưới dạngsai phân sau:
U(i+1) = Kp*e + Kd* [e(i+1)-e(i)]/Ts + Ki*Se(i)*Ts
Ở đây: e là sai số
Ts là thời gian lấy mẫu
U là đầu ra
Vấn đề là ở chỗ góc mở a cho Triac của bộ tạo nhiệt
Ta có a nằm trong khoảng 0o đến 180o
Khi đó nhiệt độ đầu ra tương ứng là toout = Tmax¸ 0
Trong lập trình thì góc mở a tương ứng với thời gian trễ của góc mở so với tín hiệu đồng pha được phát hiện bởi ngắt ngoài
Do đó a = 0o¸ 180o tương ứng a = 0 ¸ 10000ms (ở đây tần số công nghiệp là 50Hz)
Vấn đề là mình không tìm được mối quan hệ giữa đầu ra của PID là U và góc mở Triac a
Mình có suy nghĩ như thế này không biết ý các cao nhân thế nào:
Tức là ứng với giá trị nhiệt độ đặt là td thì ta có góc mở là ad Như vậy góc mở tại thời điểm i là: a(i) = ad - au
trong đó au = f(U)
Vấn đề là hàm f(U) xác định như thế nào?
Mình chưa làm thực tế về PID bao giờ nên bỡ ngỡ quá Các bạn chỉ cho mình mấy chiêu được không
Mình cảm ơn anh nha!
Chào
Chúc vui vẻ
AFH
18-12-05, 13:33
Công thức bạn đưa ra là đúng rồi đấy Nhưng tôi thấy bạn chưa hiểu rõ về PID vì vậy bạn nên tìm mua sách mà học PID cho cẩn thận (cái món PID này tưởng dễ chứ thực ra khó phết đấy) Còn về góc mở a thì bạn cho một biến đếm thời gian như bạn đã ghi ấy nghĩ là góc mở 0 tương
Trang 2ứng với 0 và góc mở 180 độ tương ứng với 10000 us (micro giây) Giá trị trả về của bộ PID bạn cho qua bộ chặn trên và chặn dưới Nghĩa là Umax=10000 và Umin = 0 Sau đó gán Biến đếm thời gian = U là xong
Việc điều chỉnh ổn định điều khiển phải được thực hiện qua các thống số là: Hệ số khuếch đại
Kp, Hằng số tích phân Ti và hắng số vi phân Td
Chúc bạn thành công
AFH
Amateur
18-12-05, 13:57
Tôi nghĩ không cần lập quan hệ Góc mở ~ Nhiệt độ
Ta điều khiển theo quan niệm: Còn sai, thì còn điều chỉnh Nếu lò nhiệt có tải (tiêu thụ năng lượng nhiệt) thì còn phải thay đổi góc mở Thậm chí có khi mở hết 180 độ mà bạn vẫn không đạt được nhiệt độ mong muốn đấy, do đó không thể có quan hệ Góc mở ~ NHiệt độ lò Quan hệ này chỉ có khi nhiệt lượng tiêu thu là không đổi hay quá nhỏ Tại một thời điểm, đang mở a độ Nếu
ta nhận được sai số nhiệt độ là e, tính ra gia số góc mở theo PID (Delta a), sau đó góc mở mới =
a + delta a Tiếp tục tìm sai lệch Vấn đề tìm ra bộ thông số Kp, Ki, Kd Và với hệ rời rạc này,
ta chọn tiếp tham số thứ 4 là Ts - Thời gian giữa 2 lần lấy mẫu
mumoi
19-12-05, 16:48
Bác AFH ơi đúng là PID phức tạp thật, bác có nói tới bộ chặn trên và bộ chặn dưới, vậy nó là gì vậy, bác chỉ rõ cho tôi được không
Cám ơn bác
To Amateur: Bác có thể nói rõ cách tính delta a như thế nào được không, tôi đang mắc chỗ đó đó
Cảm ơn nha
Chúc vui vẻ!
CHIBANG
19-12-05, 17:02
Chặn trên và dưới nghĩa là các thành phần tỷ lệ, vi phân và tích phân, rồi góc mở đều có giới hạn Nếu nó vượt qua thì gán nó bằng cái chặn gần nhất Ví dụ:
if(p>P_MAX) p=P_MAX;
Biểu thức liên hệ giữa góc mở và công suất thì chỉ là biểu thức tương đối Ví dụ bạn chia ra 1000 mức công suất đều nhau thì ứng với mức 1 -góc mở 1, mức 2 -góc mở 2 công suất mức 1000 - góc mở 1000 1000 mức công suất đều nhau nhưng 1000 mức góc mở lại phi tuyến vì do hàm sin Bạn dùng exel mà suy ra
Thực tế nếu bạn dùng uC thì có thể dùng timer của nó để làm như bác AFH nói Và có thể chỉ chia mức công suất thành vài đoạn rồi nội suy ra thời gian mở để tiết kiện Flash
Trang 319-12-05, 18:41
bạn có thể hiểu chặn trên và chặn dưới nghĩa là chỉ cho giá trị điều khiển nằm trong 1 khoảng nào đấy thôi Một ví dụ là nếu bộ điều khiển của bạn kô thể đạt giá trị đặt -> bộ tích phân cứ tiếp tục tăng -> giá trị điều khiển tăng liên tục -> tràn bộ tích phân hoặc tràn giá trị điều khiển (cái này bạn rõ nhất khi khai báo kiểu CHAR và giá trị 255 + 1 = 0 do tràn só mà)
Nếu bạn dùng PID thì kô cần quan tâm đến chia đoạn công suất làm gì Cứ còn sai lệhc thì còn tăng giá trị điều khiển đến khi nào U = U max hoặc sai lệch = 0 thì mới thôi
Chúc thành công
AFH
PPIICC
19-12-05, 20:26
Nếu bạn dùng PID thì kô cần quan tâm đến chia đoạn công suất làm gì Cứ còn sai lệhc thì còn tăng giá trị điều khiển đến khi nào U = U max hoặc sai lệch = 0 thì mới thôi
Chúc thành công
AFH
Vậy là bác điều khiển định tính à? Vậy làm sao chính xác được nhỉ?
Ví dụ: Công suất p =k*e
Giả sử k=100, e=4 -> cong suat mức là 400
e=3 >công suất là mức 300
Vậy nghĩa là phải chia mức chứ?
Hơn nữa nếu điều khiển theo thời gian thì chu kỳ bán sin điện lưới 10ms
Nêu chia đều 256 mức thì mức i là (10-i/256)ms
Vậy nếu chia đều như thế này thì sẽ rất thiếu chính xác bởi lẽ những mức cận 0ms và 10ms sẽ rất
bé, còn các mức ở giữa gần 5ms sẽ rất thô(do biên độ) Bởi vậy ChiBang nói đúng
AFH
19-12-05, 20:39
PID nó tự tính cho mình, chả cần chia khoảng công suất làm gì Thế mới gọi là PID xịn chứ :D AFH
PPIICC
19-12-05, 21:37
PID nó tự tính cho mình, chả cần chia khoảng công suất làm gì Thế mới gọi là PID xịn chứ :D AFH
Nghe bí hiểm quá =;
p ở trên tỷ lệ với góc mở, chúng nó là một, chia khoảng góc mở tức là chia khoảng công suất Công suất mình ko cần biết đích xác bao nhiêu mà chỉ cần biết % của nó và nó ứng với góc mở
Ví dụ: 50 % công suất thì ứng góc mở tại 5ms
30% công suất ứng với góc mở khoảng 6.5ms chẳng hạn
Vậy dùng một bảng tra hay một hàm để liên hệ giữa góc mở và % công suất
Còn PID chỉ là công thức liên hệ giữa % công suất với nhiệt độ đặt, các nhiệt độ đo
Nói cách khác
%công suất ~ f(Tset,Tdo)
Trang 419-12-05, 22:59
bạn cần học thêm về PID thì sẽ thấy là chỉ cần biết giải điều khiển (ví dụ như góc mở anpha thì
là từ 0 độ đến 180 độ) mục đích là để giới hạn giá trị điểu khiển trong khoảng đó, ngoài ra thì PID nó làm cho mình hết Thế mới hay Để PID có chất lượng tốt thì cần quan tâm đến 4 thông
số là: Kp, Ti, Td, và Ts
AFH
Amateur
19-12-05, 23:18
Bạn PII có một chút nhầm lẫn Góc mở a sẽ có quan hệ với dòng điện qua tải (điện trở nhiệt), chứ không có quan hệ với nhiệt độ lò Vì ta không biết được vật cần sấy trong lò sẽ tiêu thụ bao nhiêu nhiệt lượng, sự mất nhiệt qua thành lò là bao nhiêu VÌ vậy, nếu tôi mở góc a chưa nóng, tôi tiếp tục tăng a+a1, nếu chưa được, tôi lại tăng thêm một lượng a2 Thậm chí để rã đông tảng thịt bò Úc, có khi mở hết cả chu kỳ dòng điện Chính thế nên cần PID Nếu biết chính xác nhiệt
độ với độ mở thì chẳng cần PID (Ví dụ như điều chỉnh độ sáng của bóng đèn, k0 cần PID) Còn PID thế nào, nên đọc sách Mỗi người sẽ tìm ra một cách cụ thể, đôi khi là bí quyết
BẠn mumoi, cái U(i+1) của bạn sẽ là gia số của góc mở, vấn đề là bạn dò tìm ra các hệ số Kp,
Ki, cho phù hợp Khi tính ra, đơn giản cho nó là độ mở luôn Nếu thấy quá lớn, tìm hệ số Kp, Ki để giảm xuống Đúng là phải chặn, để tránh dao động Nôm na, khi thấy xe giảm tốc độ, phải tăng ga, nhưng theo kinh nghiệm về chiếc xe của mình, sẽ tìm ra mức độ hạn chế sự
tăng/giảm ga để tránh bị giật cục
PPIICC
20-12-05, 09:50
Ko nhầm đâu bạn ạ Vì mình ko phải dân tự động hóa nên diễn đạt có thể ko đúng từ ngữ lắm Góc mở có quan hệ với nhiệt độ của lò, chắc chắc chứ Nếu nói một các thô thiển, nếu nhiệt độ
lò chưa bằng nhiệt độ đặt thì góc mở sẽ điều chỉnh và tính toán lại để thay đổi công suất Việc điều chỉnh đó như thế nào là phụ thuộc vào các đại lượng P,I,D
Nói tóm lại:
-Góc mở và % công suất là một biểu thức phụ thuộc vào nhau Dùng bảng tra để tìm ra cái này -Tính được % công suất theo biểu thức PID dựa vào các thông số: T đặt, T đo(T1,T2 T hiện tại), Ki,kp,kd Sau khi tính được mức công suất(hay dải công suất, hay % công suất) thì dùng bảng tra để tra ngược trở lại tìm ra góc mở tương ứng với % công suất đó
To AFH: PID mình có làm rồi, nói đúng hơn đã làm PI Lúc đầu có khó khăn đôi chút, nhưng rồi sau nhờ có sư phụ mách nước nên hiểu được và lập trình được Độ phân giải của ADC là 0.1 độ thì mình khống chế sai số được 0.2-0.3 độ thì ngon ơ Nhưng khó cái là chỉnh kp,ki rất mất thời gian
Luôn tiện đây mình nói vê cách chỉnh Kp,ki=1/Ti mọi người góp ý kiến nhé:
-Bước 1: cho ki=0,chỉnh Kp tăng dần:=1 quan sát một quá trình, =2 rồi quan sát =i rồi quan sát
Giả sử khi ki=a, nhiệt độ chưa vọt lố, nhưng ki=a+1 thì vọt lố(nhiệt độ tăng quá nhiệt độ đặt tại thời điểm nào đó) Vậy giá trị ki=a được chấp nhận
-Bước 2: ki=a, rồi ki=1 quan sát, = 2 quan sát Ki càng nhỏ thì ổn định nhưng thời gian bám lâu
Trang 5Vậy chỉnh ki đến b, rròi b+1, nếu b+1 bị vọt lố mà b ko bị vọt lố thì giá trị b được lưu lại
-Bước 3: đặt kp=a,ki=b Ấn nút chạy :-w
AFH
20-12-05, 10:26
Gửi bạn PCIICC
Bạn mua sách lý thuyết điều khiển tuyến tính của thầy Nguyễn Doãn Phước về đọc nhé Trong
đó nói rõ cách xác định tham số PID đó
Tóm lại là bạn chưa hiểu rõ về PID (tớ nói bạn đừng buồn và đừng giận) Bạn cần học PID cho bài bản để tránh những hậu quả kô ngờ Thiệt đó, nếu kô tin lời tôi, rồi một ngày bạn sẽ nếm trải điều này Nhất là khi bạn thiết kế PID cho động cơ Tin hay kô thì tùy
Chúc bạn thành công
AFH
PPIICC
20-12-05, 12:20
Cảm ơn lời khuyên của bạn Bạn có thể chỉ rõ một số vấn đề sai sót của mình được ko? vì mình
có đọc một số quyển rồi, và thưch tế thì đã làm được, nhưng có thể gặp một số trường hợp ko ngờ nhưng chưa gặp như bạn nói
Amateur
20-12-05, 17:19
Vẫn nhầm 2*PIC ơi Góc mở và công suất thì OK Công suất và nhiệt độ thì lại khác NHiệt độ phụ thuộc vào cân bằng nhiệt lượng trao đổi giữa lò và vật tiêu thụ nhiệt
Cũng như độ mở tay ga tỷ lệ với công suất động cơ, như k0 tỷ lệ với tốc độ xe Tốc độ phụ thuộc tải trọng, độ dốc đường, tốc độ gió
Các bước lựa chọn thì cứ theo sách, tôi làm rồi, ổn đấy
PPIICC
20-12-05, 17:42
NHiệt độ phụ thuộc vào cân bằng nhiệt lượng trao đổi giữa lò và vật tiêu thụ nhiệt
Nếu vậy cái đó lấy ở đâu ra vậy? bác nói mơ hồ quá Việc mô hình hóa để tìm ra hàm đối tượng
và suy ra các hệ số ki,kp,kd thường làm trên lý thuyết, thực tế thì người ta chỉnh theo kinh nghiệm hoặc cao cấp hơn các bộ điều khiển hiện nay có chế độ tự chỉnh hết cả rồi
Còn tui, cứ công thức mà tương với việc điều khiển nhiệt:
e=Tset-T đo
s=s+e (s là thành phần tích phân)
%Công suất= k*e+ki*s
Và giới hạn các thông số như: s,% công suất trong một dải nào đó
Và từ việc tính được % công suất này, sẽ tính ra được góc mở -> thay đổi góc mở
Còn việc chỉnh k,ki cho phù hợp lò nhiệt thì cần mất ít thời gian
Trang 6To AFH: nếu bác tìm ra cái sai của tui thì tâm phục khẩu phục, còn chỉ nói thì ai cũng nói được AFH
20-12-05, 20:36
Nếu vậy cái đó lấy ở đâu ra vậy? bác nói mơ hồ quá Việc mô hình hóa để tìm ra hàm đối tượng
và suy ra các hệ số ki,kp,kd thường làm trên lý thuyết, thực tế thì người ta chỉnh theo kinh nghiệm hoặc cao cấp hơn các bộ điều khiển hiện nay có chế độ tự chỉnh hết cả rồi
Còn tui, cứ công thức mà tương với việc điều khiển nhiệt:
e=Tset-T đo
s=s+e (s là thành phần tích phân)
%Công suất= k*e+ki*s
Và giới hạn các thông số như: s,% công suất trong một dải nào đó
Và từ việc tính được % công suất này, sẽ tính ra được góc mở -> thay đổi góc mở
Còn việc chỉnh k,ki cho phù hợp lò nhiệt thì cần mất ít thời gian
To AFH: nếu bác tìm ra cái sai của tui thì tâm phục khẩu phục, còn chỉ nói thì ai cũng nói được
Ái chà, chưa chịu khuất phục đây :D
Thế này nhé,
Thứ nhất: với chương trình trên của bạn, tôi không gán nó bằng %Công Suất mà gán góc mở anpha = k*e+ki*s thì có được không? bạn nghĩ thử coi? Nếu được thì tôi đâu cần quan tâm đến công suất phải kô?
Thứ hai:cách chỉnh Kp và Ki của bạn chả có cơ sở lý thuyết gì cả, đấy là chỉnh mò Trong sách
có dậy cách chỉnh theo đặc tính tải, hoặc theo mô hình toán học (thông thường theo đặc tính tải thì dễ hiểu hơn vì nó thực tế còn tính theo mô hình toán học thì có phải tải nào ta cũng biết mô hình toán học đâu?)
Thứ ba: Chỉnh thông số Kp và Ki như bạn thì mấy ngày mới xong? Bởi quá trình nung nhiệt thì nhanh, nhưng quá trình chờ nó nguội có khi cả tiếng đồng hồ
Thứ tư: Công thức của bạn thiếu mất chu kỳ trích mẫu Cái này cũng quan trọng đấy hay bạn lấy chu kỳ trích mẫu là 1 giây?
Thứ năm: Bạn không thiết kế bù bộ tích phân khi đầu ra lớn hơn U_max hoặc nhỏ hơn U_min Bạn có ghi là giới hạn s, nhưng bộ tích phân thì ta kô giới hạn mà phải thiết kế bù dư và bù hụt, nếu giới hạn thì biết bao nhiêu là đủ? Việc này bạn đã nghĩ đến chưa? ví dụ kiểu int chỉ đến
32767 thôi, cộng thêm 1 là nó về -32768 đấy
Vậy đủ chưa bạn PPIICC??
Thật ra tớ cũng chả giỏi gì hơn bạn, chẳng qua là tớ cũng bị mắc nhiều lỗi trong lập trình và trong giải thuật một bài toán cụ thể nên càng thấm thía hơn việc phải học kỹ lý thuyết, từ đó có một đường lối đúng đắn để giải quyết bài toán Tớ khuyên bạn học cho bài bản là vì thế, chứ kô
có ý lên mặt dậy đời Thông cảm nha
Còn ví dụ về cái "trường hợp kô ngờ" thì tôi xin nêu một ví dụ thế này Giả sử bạn dùng PID để điều khiển một tay đòn bám theo một tín hiệu nào đó Nhưng vì lỡ để giá trị Kp lớn và Ti nhỏ nên động cơ chạy công suất lớn nhất ngay ở giai đoạn ấn nút START xong Kết quả là do quán
Trang 7tính, cái cánh tay đòn ấy phang bay luôn cả cái công tắc báo giới hạn chuyện động đi :D :D :D Bạn thấy tai hại chưa?
Chúc bạn thành công
AFH
PPIICC
20-12-05, 21:18
Hê hê bác chẳng làm tui khuất phục một chút nào cả Tui lần lượt tả lời theo thứ tự của bác từ thứ nhất đến thứ hết nhé
-Thứ nhất: đó là cách của bác, còn tui lại dùng % công suất làm biến trung gian Sau khi tính được % công suất thì suy ra được góc mở dùng bảng tra hoặc dùng một hàm liên hệ Việc này sẽ làm tuyến tính hơn, bạn đã nghĩ điều này chưa? và biết lý do tôi dùng như thế sẽ hợp lý hơn bạn
là cái chắc
-Thứ 2 và thứ 3: tôi thấy một số tài liệu họ chỉnh như vậy, cái này ko phải tôi nghĩ ra, đọc một số tài liệu về đồng hồ nhiệt của Hàn Quốc bạn sẽ biết Nếu muốn chỉnh nhanh hơn thì phải dự đoán
mà ko làm kiểu tăng từng bước mà là tăng nhảy cóc
Các câu còn lại:4-5
Dăm ba câu làm sao tôi nói hết tất cả các vấn đề cụ thể ra được Vấn đề bạn đặt ra đó hết sức vô lý
-Thứ 4: cái này thì bạn nói làm gì? tôi làm tốt hơn bạn về khoản này là cái chắc Vấn đề xử lý nhiễu đầu đo và lấy mẫu của tôi cực ổn Số cuối cùng của tôi ko hề nhấp nháy một tý nào cả
Và cái này bạn lại sai, chu kỳ lấy mẫu ko quan trọng, mà là chu kỳ điều khiển Anh có thể lấy mẫu liên tục nhưng ko cần điều khiển thì chết toi à? Vậy bạn sửa lại là chu kỳ điều khiển mới đúng Chu kỳ điều khiển càng lớn thì đồng nghĩa thành phần tích phân lớn Quá trình nhiệt thường biến đôi nhiệt chậm, nên thường người ta đặt khoảng trên dưới 1 giây Của tôi, đại lượng này tôi có thể vào bằng tay(nút ấn) và thường đặt = 0.5 giây
-Thứ 5: Tôi vẫn giới hạn vì rằng nó không thể lớn hơn giới hạn của % công suất Nó chỉ tăng tính ổn định chứ ko làm giảm chất lượng
Ví dụ: % công suất có 100 mức: 0.1 100(max) thì đương nhiên thành phần tích phân này phải
<100*ki chẳng hạn Bởi thế thành phần này tương đối lớn nên dùng kiểu long int Bởi thế rất nhiều thứ thứ tôi đều có giới hạn trên và dưới
Thứ hết: khi xây dựng một hệ điều khiển, phải có chế độ Protect và cảnh báo Ví dụ: các cảnh báo như đứt sensor, đứt tải(điều khiển mãi nhưng ko nhiệt độ ko tăng ) cái đó là những việc phải làm khi đưa thiết bị bàn giao cho khách hàng
Tôi vẫn mong bạn có cái gì thú vị hơn, và mong bạn có một thói quen suy nghĩ kỹ vấn đề người khác nói trước khi phát ngôn
Mong bạn bớt giận /:) nếu có gì quá
AFH
20-12-05, 22:58
Chả biết nói gì hơn, bạn này chả hiểu gì về PID, thế mới buồn :(
Mất công mình trả lời :(
Trang 8Bạn cứ làm theo cách của bạn Tôi chả có gì thú vị dành cho bạn nữa rồi :D
AFH
falleaf
20-12-05, 23:28
F nhảy vào một tí được không nhỉ?
Bác ba quẳng cho cái link này trong lúc đang bận rộn :(
Nhiệt độ đặt (Tset) (+-) > PID (U) ->(a= góc mở hoặc A công suất) Máy tạo nhiệt > Nhiet độ (T)
Rồi sau đó lấy T loop lại cái chỗ (+-)
Đó là hệ thống của các bác phải không?
Vậy thì làm như cách của 2PIC hay của AFH đều đúng Vấn đề là các bạn quan niệm ngõ vào của máy tạo nhiệt là góc mở hay công suất máy mà thôi
Cái điều khó khăn mà chúng ta không biết, đó là hàm truyền của máy tạo nhiệt vào trong căn phòng Có nghĩa là dù góc mở a hay công suất A thì các bạn cũng không thể nào biết được hàm truyền này
Như vậy, từ U chuyển sang a hay A thì chúng ta đều dùng hệ số tuyến tính để chuyển Công thức
có thể viết lại như sau:
e = Tset - T
U = P.e + D.diff(e) + I int(e);
A = kA * U
hoặc a = ka *U
Hay A = kA*P e + kA*D.diff(e) + kA*I.int(e);
hoặc a = ka*P e + ka*D.diff(e) + ka*I.int(e);
Đặt P' = kA*P
Mối quan hệ giữa ka và kA là một mối quan hệ khá phức tạp Tùy theo chúng ta quan niệm, tôi tạm thời chưa bàn ở đây
Vậy thì chúng ta có lại công thức của bộ PID Như vậy, với quan niệm này, cả hai bạn đều đúng Chỉ có điều chọn bộ PID như thế nào cho đúng? Đây là một điều rất cần quan tâm
Cả bài toán PID điều quan trọng nhất là tìm các hệ số này mà thôi
Có rất nhiều cách biến đổi, và để tìm ra các hệ số này, hoặc có thể ghép thêm các bộ điều khiển khác, để tự tìm ra hệ số này, gọi là các hệ điều khiển lai
Trang 9Tuy nhiên, trong giới hạn của em đặt ra bài toán (thiệt tình là em L có viết thư cho tôi, nhưng tôi bận đến mức độ không thể trả lời được, nhưng vì tránh tình hình anh em lại gây chiến với nhau, cho nên phải post bài)
Bạn 2PIC,
Bạn có thể thấy rằng, cho dù bạn cố gắng làm cho công suất có vẻ tuyến tính hơn, khi chuyển đổi qua công suất bằng cách dùng bảng tra, thì thực ra, mối quan hệ giữa nhiệt độ phòng nhiệt và công suất cũng chính là một mối quan hệ không tuyến tính
Bởi vì bạn quên chưa kể đến khả năng hấp thụ nhiệt của thành lò và của các vật liệu trong lò Mối quan hệ này là phi tuyến Nếu như mối quan hệ này là nhỏ, bạn có thể ước lượng được đặc tính hàm truyền của lò Nhưng thực tế không phải vậy Bởi vì một điều rất rõ ràng rằng, nếu như
có được đặc tình hàm truyền này, thì chúng ta có thể điều khiển chỉ cần dùng P, nếu bạn đã coi các tiêu hao là nhỏ
AFH,
Bạn sai ở chỗ nói về chu kỳ lấy mẫu Bởi vì trong công thức, khi đã xét chu kỳ lấy mẫu, thì chu
kỳ lấy mẫu được coi là 1 đơn vị thời gian tsampling Đơn vị trong hàm truyền PID bạn hoàn toàn
có thể tính bằng 1 tsampling
Thời gian lấy mẫu chỉ có giá trị, khi bạn khảo sát hàm truyền của lò Khi đó, giả sử hàm truyền của lò là L(s) (từ công suất hoặc góc mở trên cho nhiệt độ ngõ ra) Thì lúc đó, bạn phải rời rạc thành hàm L(z) Lúc này mới kể đến thời gian sampling
Chính vì không có L(s), cho nên việc giả định thời gian sampling đều không có ý nghĩa gì Bởi vì với mọi hàm PID(s) bạn đều có thể biến đổi thành hàm PID(z) Nhưng vì bạn không có hàm truyền của plant L(z), vậy thì việc biến đổi sang miền rời rạc của PID cũng không cần thiết Khi viết các công thức PID cũng không cần kể đến thời gian tsampling
Theo kinh nghiệm điều khiển nhiệt độ bằng PID, thì hệ số I không ảnh hưởng lớn Bởi vì nhiệt
độ lò biến đổi khá chậm, bạn dùng PD là đã đủ tốt rồi Đây là vấn đề kinh nghiệm của một số người đã làm PID với lò nhiệt Hệ số I cũng khá nhỏ
falleaf
20-12-05, 23:28
Bởi vì quá trình nhiệt diễn ra như sau:
- mở máy, mở công suất Công suất xem như xấp xỉ với nhiệt lượng tỏa ra ở bề mặt máy Nhiệt lượng này lan tỏa vào trong phòng, sẽ gần như xấp xỉ bậc 3 với kích thước phòng Mà kích thước này với đơn vị m cũng là một hệ số đáng kể
- Hệ số lệch giữa nhiệt độ thường 30C và 31C chẳng hạn, thì có thể thấy công suất phải thay đổi rất lớn để tăng được 1C, và đáp ứng lại rất chậm Chính vì vậy, nếu dùng I, cố gắng tăng nhanh nhiệt độ lò, thì lúc giữ cho nhiệt độ lò ổn định lại rất khó, vì đáp ứng chậm Nó như hiện tượng
Trang 10- Với động cơ, thì mình thườgn chú trognj đến việc tăng rising time, nhưng với lò nhiệt, thì mình lại thường chú trọng đến sự ổn định Chính vì thế mà đối với lò nhiệt, I thường có giá trị nhỏ
Những vấn đề điều khiển PID, có thể giải toán rất hay, nhưng mà khi áp dụng thực tế, thì thường
là mình dùng nhiều đến kinh nghiệm Nếu bây giờ mà ngồi tìm hàm truyền max của lò, làm vài thí nghiệm để ước lượng hàm truyền của lò như làm với động cơ, thì có nước mà đốt cả đống hàng Bởi vì không có hàng ở trong đó, thì nó không thể hiện được đặc tính nhiệt đúng với những gì mình muốn làm Phải đưa cái gì đó vào, có khả năng hấp thụ nhiệt giốgn như món hàng mình muốnnung thì mới được
Hơn nữa, thời gian thực hiện thí nghiệm cũng khá dài, bởi vì một ván đề, với động cơ, mình có thể có giá trị âm của điều khiển, nhưng với máy tạo nhiệt, thì không thể làm cho nó có giá trị âm Nếu như có một máy thổi khí lạnh vào, thì mình có thể làm cho nó có một giá trị âm (so với nhiệt độ đặt) Lúc này có thể biến đổi nhanh hơn một chút, nhưng dù sao, ảnh hưởng của nhiệt cũng rất chậm Chính vì vậy, việc tìm hàm truyền với lò nhiệt gần như không khả thi
Nếu liều lĩnh, có thể làm một chuyện như sau Bỏ khối hàng vào, mở công suất tối đa, lấy mẫu liên tục, mở đến khi nào đạt được nhiệt độ cao nhất, nằm ngoài khoảng giới hạn của mình
Vd: mình cần nung lên đến 200C, thì mình mở công suất lò lên cao nhất, cho nó lên đến 220C rồi ngừng lại Từ đó vẽ đặc tuyến thuận của lò Sau đó, chờ cho lò hạ nhiệt độ xuống, vẽ đặc tính ngược của lò Chỉ làm duy nhất 1 lần, chắc cũng hết một ngày Nó có trễ, và tiêu một lô hàng
Sau đó tin tưởng rằng thí nghiệm của mình không bị sai, và máy tao nhiệt không bao giờ bị hao mòn Mình có thể dùng matlab để tìm ra hàm truyền ước lượng của lò
Như vậy, chúng ta sẽ xem xét tính khả thi của mỗi cách làm, và cũng xem xét luôn chi phí chấp nhận để đầu tư Hy sinh một lô hàng để làm thử, hoặc là ngồi dò Tùy theo yêu cầu của khách hàng và khả năng chi trả của họ Nếu họ giàu, muốn ổn định cao, thì bảo họ hi sinh nhiều nhiều
lô hàng một tí, thì tính gần đúng sẽ tốt hơn :D
2PIC,
Chu kỳ lấy mẫu sampling time chính là chu kỳ của hệ điều khiển, chứ bạn không nên hiểu đó là chu kỳ lấy cái mẫu nhiệt độ Khi người ta nói chu kỳ lấy mẫu, có nghĩa là nói đến sampling time Cái này là bạn dùng từ sai
AFH,
Công thức của 2PIC đưa ra hoàn toàn đúng, chỉ có điều đó là bộ điều khiển PI bình thường, chẳng qua là bỏ đi phần D, cũng là một kinh nghiệm điều khiển lò nhiệt Cái này tôi không biết Nếu bỏ đi phần D, nhiệt độ lò sẽ dễ bị dao động lắm, bởi vì nó đáp ứng chậm Chỉ cần nó lệch một tí, thì P sẽ thay đổi nhiều, mà P đáp ứng lại bị trễ, thế nên cứ trồi lên hạ xuống Tôi nghĩ nên
có thêm thành phần D thì sẽ ổn định hơn (định tính, không định lượng, cái này các bạn áp vào