Ðề tài: Về labview
View Single Post
Old 28-08-2009, 10:53 PM   #11
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Trích:
Nguyên văn bởi tomruoi View Post
thầy ơi, thời gian sắp hết rồi chắc là em chỉ làm về bộ PID Control Toolkit,cái này nó có rồi, chắc bây giờ thiết kế bộ pid trong labview chắc em làm không nổi quá.
thầy chỉ giùm cho em cách chuyển tín hiệu setpoint và tốc độ sang volts, cái này em mơ hồ quá
Cái bộ PID Control Toolkit trong LabVIEW chẳng có gì liên quan đến việc bạn lập trình chuyển đổi tín hiệu cho chương trình điều khiển cả, nó chỉ là thư viện có chứa khoảng chừng 10 cái PID control functions cho hàng triệu triệu người dùng, một hàm PID trong đó cũng giống như bất kỳ bộ điều khiển PID nào khác trên thị trường, muốn dùng chúng thì phải làm cho chúng hoạt động phù hợp với ứng dụng cụ thể của mình.

Cái này là nguyên lý chuyển đổi cực kỳ đơn giản sử dụng khái niệm độ nhạy hoặc gain: trong bộ điều khiển PID hai tín hiệu đem so sánh để tìm error là:

error = setpoint - process varible

bạn so sánh hai tín hiệu thì chúng phải giống nhau - dùng RPM thì hai cái phải là RPM, dùng volt thì hai tín hiệu Setpiont và Process Variable thì phải đều cùng là volt. Khi error chạy qua bộ điều khiển PID thì tín hiệu điều khiển ra bộ PID được tính bằng công thức:

u = Kp*error + Ki*tích phân của Error + Kd*vi phân của error

Vậy thì tất cả ba thành phần tín hiệu của P, I và D đều mang tín hiệu có đơn vị của error (hay nói cách khác là mang đơn vị của setpoint và process variable) nếu như ba khuếch đại Kp, Ki và Kd không có đơn vị. Trong thực hành thì sử dụng các bảng giao diện như USB-6221 đều nhận tín hiệu volt, và phát tín hiệu là volt, như vậy nếu đầu vào bộ PID của bạn là hai tín hiệu setpoint và process variable là volt thì có phải là thuận tiện không? Nghĩa là trong thực hành lập trình bộ điều khiển ngoài việc thiết kế bộ điều khiển ra thì còn phải tiến hành việc xử lý tín hiệu và làm phù hợp đơn vị giữa các khối (phần tử) nữa thì bạn mới có được các thông số để hiển thị trong chương tình điều khiển cho từng phần tử. Các thày dạy về điều khiển có giải thích những điều này khi thực hành thiết kế điều khiển không?

Ví dụ đơn giản: tín hiệu bạn đọc được trong LabVIEW qua USB-6221 từ Encoder là tín hiệu gì? Muốn có RPM thì bạn phải làm công việc là "xử lý tín hiệu" (signal processing) và "điều hòa tín hiệu" (signal conditioning) để bạn có các tín hiệu ở dạng "thuần khiết" có thể hiểu được: tốc độ động cơ có đơn vị là RPM thì dễ hiểu hơn tốc độ có xung/vòng/đơn vị thời gian. Khi đã có tốc độ ở RPM rồi thì bạn phải biết thang tốc độ mà bạn định điều khiển, ví dụ từ 0-4000RPM chẳng hạn, vậy nếu bạn dùng cái USB-6221 có thang phát tín hiệu là 0-10V thì bạn phải làm phù hợp chúng, nghĩa là nếu khi bạn phát tín hiệu 0V thì động cơ có tốc độ 0RPM, và khi phát tín hiệu 10V thì động cơ chạy tốc độ cao nhất 4000RPM, vậy thì chỉ việc làm công việc đơn giản xử lý chuyển đổi tín hiệu 0-4000RPM sang tín hiệu volt 0-10V, nghĩa là:

K = (10V-0V)/(4000RPM-0RPM) = 10/4000 [V/RPM]

Ví dụ khác để bạn tự tìm câu trả lời: tốc độ động cơ có thang đo: 0-4000RPM, bạn dùng tachometer đo tốc độ có tín hiệu ở thang 0-20V chẳng hạn, mà bảng USB-6221 của bạn chỉ có thang đo lớn nhất là 0-10V (hoặc -10/+10V), vậy bạn làm thế nào để có thể đo được toàn bộ thang tốc độ của động cơ? Và bạn làm thế nào để có thể có được số hiển thị bằng volt trong chương trình điều khiển bằng với số đo của tín hiệu volt đầu ra của tachometer?

Việc làm phù hợp đơn vị giữa các phần tử bộ điều khiển này thì trong chương trình điều khiển bạn có thể làm dễ dàng được!

Thêm nữa: khi lập chương trình điều khiển nếu bạn không dùng volt cho setpoint và process variable, bạn dùng RPM, khi đang chạy chương trình nếu khi chuyển setpoint từ 1000 RPM sang 2000 RPM chẳng hạn, sai số sẽ là 1000 RPM, khi sai số này chạy qua PID controller tín hiệu ra sẽ cực lớn, và do vậy tín hiệu điều khiển sẽ bị cắt đi vì quá lớn bảng giao diện không phát tín hiệu lớn hơn thang mà bạn đã chọn (e.g. 0-10V thì bảng giao diện chỉ phát tín hiệu tối đa 10V). Ngoài ra khi dùng RPM thì bạn sẽ có bộ tham số Kp, Ki và Kd khác với khi dùng volt, và rất có thể sẽ nhỏ hơn rất nhiều so với việc dùng volt.

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 28-08-2009 lúc 11:54 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn