PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 04-08-2009, 11:17 PM   #1
tomruoi
Đệ tử 1 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 20
:
Smile Về labview

em đang làm đề tài về labview, điều khiển động cơ ac bằng pid,cho em hỏi mình phải tìm hiểu về labview như thế nào là đủ để phục vụ đồ án,em có coi tài liệu nhưng khó quá(ít tài liệu cụ thể), mấy anh cho em cái sườn phải học về cái gì trong labview để phục vụ đồ án, em cảm ơn,nghiên cứu hoài mà chỉ thấy mấy bài toancooongj trừ, khổ quá.
tomruoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-08-2009, 12:47 AM   #2
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Thực ra giải bài toán của bạn tài liệu đầy rẫy trên Internet và bằng tiếng Anh. Nếu bạn đọc được bằng tiếng Anh thì vào trang sau http://techteach.no, rồi vào mục LabVIEW.

Bạn lập trình mô phỏng hay điều khiển thiết bị thực bằng LabVIEW? Nếu bằng thiết bị thực thì dùng Data Acquisition Card gì?

Bạn đã học lập trình LabVIEW bao giờ chưa? Nếu là mô phỏng thì phải học lập trình LabVIEW để giải phương trình vi phân mô tả động cơ AC. Còn thực hành thì phải có động cơ AC kết nối với một DAQ Card/Servo Controller/Amplifier, nếu chuyên dụng hơn thì có LabVIEW Motion Module.

Có thể xem trang http://www.hocdelam.org/vn/ để học LabVIEW.

Thêm thông tin về tài liệu sau:
LabVIEW for Electric Circuits, Machines, Drives, and Laboratories
http://www.informit.com/store/produc...sbn=0130618861

Evaluation Version of LabVIEW 6:
http://www.informit.com/store/produc...sbn=0130618861

Thêm bài toán điều khiển động cơ (không phải AC) bằng LabVIEW:
http://www.dieukhien.net/vn/discuss....=465&pagenum=2

HA

thay đổi nội dung bởi: HaiAu2005, 23-08-2009 lúc 07:45 AM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-08-2009, 07:13 PM   #3
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Bạn thiết kế hệ điều khiển PID bằng LabVIEW có thể tham khảo một loạt bài hướng dẫn sử dụng LabVIEW (bằng tiếng Anh) ở trang sau:

http://academic.amc.edu.au/~hnguyen/

Trong mục Applied Control Engineering. Các bài LabVIEW Tutorials không về AC Motors nhưng sau khi bạn học được LabVIEW rồi thì bạn có thể áp dụng được. Tôi chỉ dạy thực hành thiết kế bộ điều khiển nên bạn sẽ không thấy thông tin mấy về lý thuyết điều khiển.

Nếu bạn dùng các tutorials này bạn phải lập chúng từ đầu, không có chương trình mẫu cho bạn tham khảo!

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 26-08-2009 lúc 07:27 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-08-2009, 11:19 PM   #4
tomruoi
Đệ tử 1 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 20
:
Smile

trước hết xin cảm ơn bạn rất nhiều, đúng là mình đau đầu với labview vì mình chỉ làm đồ án này 1 tháng thôi(mình làm quen labview được 3 tuần).mình cứ nghĩ là lấy bộ PID trong labview ra, rồi đặt setpoin(tốc dộ đặt) cho nó thì đường process varible nó sẽ bám theo nhưng mà mình chỉnh nó không bám theo.
mình làm thiết bị thực giao tiếp qua usb 6221 của NI(DAQ Asisstance) usb 6221, mình đọc tần số từ encoder (900xung/vòng). mình đổi ra tốc độ(v/p)= (tần số đếm được *60)/900 như vậy là đúng không bạn.mình cũng có tham khảo anh Bá Hải nhưng vấn đề chính thì kô "free" khổ quá
tomruoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2009, 12:13 PM   #5
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Bạn dùng NI DAQ Card thì cần tham khảo tài liệu về việc lập trình thu nhận và phát tín hiệu. Các bài Tutorials tôi cung cấp dùng cho mô phỏng, giúp cho phần xử lý dữ liệu/tín hiệu khi nhận trong chương trình LabVIEW.

Vậy thì cơ bản bạn đã giải quyết được chương trình điều khiển bằng LabVIEW, còn phần chỉnh bộ điều khiển để có được đáp ứng như mong muốn thì lại không phải là vấn đề của LabVIEW nữa, mà là "vấn đề" của bạn, cái đó thì bạn phải "mày mò" thì mới "bắt" chương trình LabVIEW điều khiển cho bạn được!

Kiểm tra tất cá tín hiệu vào, tín hiệu ra và tất các tín hiệu trong chương trình LabVIEW đã đúng hay chưa. Những cái này thì chỉ có bạn hoặc ai đó sờ tay trực tiếp vào thiết bị của bạn đang dùng thì mới giúp được.

Câu hỏi về Encoder, về nguyên tắc nếu bạn đếm được 900 xung/vòng/giây thì đúng là tốc độ RPM (v/ph) được tính như bạn đã nêu, nhưng lại không biết có phải là giây không vì bạn chỉ cho biết là 900 xung/vòng chưa đủ thông tin, xung thì chưa biết độ rộng xung và chu kỳ. Encoder có tài liệu hướng dẫn gì việc tính tốc độ RPM của động cơ gắn với nó không?

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 27-08-2009 lúc 12:23 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2009, 10:44 PM   #6
tomruoi
Đệ tử 1 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 20
:
chào thầy HAIAU2005! (em mới biết)
Đúng là em nghĩ đã điều khiển được động cơ rồi(vì em nghe nói là labview có "đồ chơi" hết rồi) nên em nghĩ chỉ cần lấy bộ PID là xài được rồi(chỉ chỉnh thông số, kô cần lập trình như phần mềm khác) nhưng mà nó vẫn không được, em nghĩ chắc là cái thu-phát tín hiệu là đúng rồi, em gởi hình sơ đồ mạch nhờ thầy coi giùm chỉ em với
ngõ ra là digital 5v, ngõ vào là counter đếm tần số của card NI
[img] http://img123.imageshack.us/img123/1736/35600291.png [/img]
sau khi đọc tần số vào, em đổi ra tốc độ vòng/phút, rồi qua bộ PID,nhưng mà dạng sóng ra quá kì cục thưa thầy,đây là dạng sóng khi em để: dt(s) = 255:
[img] http://img190.imageshack.us/img190/2596/63080527.png [/img ]
đương màu trắng là đường setpoint, màu đỏ là vận tốc thực tế
khi em để: dt(s) = 25 thì có dạng sóng sau:
[img] http://img132.imageshack.us/img132/2143/43226698.png [/img]
vận tốc thực tế không bám theo vtoc đặt,em có thử thay đổi các thông số khác nhưng vẫn không được.MONG THẦY GIÚP EM VỚI, GẦN HẾT NGÀY NỘP ĐỒ ÁN RỒI THẦY ƠI.
tomruoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2009, 11:00 PM   #7
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
---- quoted---

cả nhà cho em hỏi là: em đang làm đồ án về điều khiển động cơ dc dùng pid. Trong labview thì mình dùng bộ pid nào vậy anh: PID, PID Advanced, PID Autotuning, PID Control Input Filter ....em dùng cái pid nhưng ko điều khiển được, cả nhà chỉ dùm em với (hướng dẫn sơ về cách chọn thông số) em xin cảm ơn.

---unquoted----

Trong LabVIEW PID Control Toolkit có chừng 10 PID Control functions, bạn dùng cái nào cũng được. Hoặc nếu bạn không dùng thì bạn có thể tự lập thuật toán PID riêng của bạn, LabVIEW có đủ công cụ giúp bạn lập trình cho thuật toán PID.

Bảng NI USB-6221 khá tốt. Tôi nghĩ khi làm thí nghiệm, bạn nên thử chương trình điều khiển manual hay open-loop trước, nghĩa là chạy phát tín hiệu từ 0-10V qua một kênh tới động cơ chẳng hạn, và kiểm tra số đo nhận được từ Encoder, chắc chắn là số đo tốc độ đã chính xác thì bạn chuyển sang thử nghiệm bằng điều khiển PID. Đối với động cơ điện, tôi nghĩ chọn các tham số bộ điều khiển PID không có lắm, chỉ cần một tham số Kp không thôi thì động cơ cũng đã có thể ổn định rồi vì bản thân động cơ điện đã là một hệ kín rồi, và khi nối động cơ với Servo Amplifier thì cái Servo Amplifier cũng đã là một bộ điều khiển P.

Hàm PID trong LabVIEW có các "cổng" sau (bạn có thể nhấn Ctrl + H để hiển thị Context Help của hàm này, và sau đó nhấn Detailed Help bạn sẽ có mô tả đầy đủ - tuy nhiên có thể khi đọc help rồi vẫn thấy "tù mù"):

Một vài điểm "thực dụng" áp dụng cho điều khiển tốc độ động cơ:

1. Setpoint: tín hiệu đặt, bản USB-6221 xuất tín hiệu là volts thì nên chuyển tín hiệu đặt từ RPM sang volts.

2. Process variable: biến quá trình, chính là tốc độ động cơ, nếu chọn setpoint là volts thì tín hiệu này cũng phải được chuyển sang volts. Tín hiệu tốc độ đọc từ Encoder nếu có quá nhiều nhiễu cao tần, thì cần phải thiết kế bộ lọc cao tần (lowpass filter) cho tín hiệu này.

3. PID gains: khuếch đại, bạn chọn ba tham số: Kp khuếch đại tỷ lệ, Ti thời gian tích phân tính bằng phút, Td thời gian vi phân tính bằng phút, khi chọn lưu ý Kp lớn thì overshoot sẽ có thể lớn, Ti (Ti = Kp/Ki) thời gian càng lớn thì khếch đại tích phân Ki càng nhỏ do vậy việc bù offset càng lâu, còn Ti càng nhỏ thì Ki càng lớn, gây overshoot quá mức (thừa), Td (=Kd/Kp) thời gian vi phân tỷ lệ với khuyếch đại cần được chọn vừa phải, thông thường thì chỉ cần điều khiển PI cho động cơ là đã có đáp ứng tốt.

4. Output range: đặt giới hạn tín hiệu ra, thông thường giới hạn này là giới hạn mà động cơ điện hoạt động tốt nhất, và cũng là giới hạn thang đo của bản giao diện. Nếu bạn đã chọn thang đo 0-10V thì giới hạn này cũng có thể đặt ở thang đó.

5. dt(s): thời gian lấy mẫu, bạn chọn thời gian này cho chương trình bao nhiêu thì bạn chọn bấy nhiêu.

Điều khiển động cơ điện bằng thuật toán PWM (điều chế độ rộng xung) có lẽ tốt hơn điều khiển bằng tín hiện analog thông thường.

Hải Âu
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2009, 11:19 PM   #8
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Chương trình điều khiển của bạn không ổn. Hàm PID có giới hạn trên là 100 và giới hạn dưới là -100, bạn dùng setpoint và PV là RPM, giá trị quá lớn, vậy cho nên tín hiệu điều khiển ra quá lớn. Nên chuyển toàn bộ tín hiệu setpoint và tốc độ sang volts, và sau đó phát tín hiệu volts thì sẽ ổn. => Chương trình này chạy nhiều quá bắt USB-6221 làm việc quá tải liên tục ở các giá trị cực nên rất có thể sẽ chóng hỏng!

Bạn cần cung cấp thêm thông tin về động cơ, về Servo Amplifier và Encoder may ra mới giải quyết được. Tôi không rõ tín hiệu đọc từ Encoder dưới dạng gì, nếu là tín hiệu xung thì phải có cách chuyển đổi (signal processing) phù hợp mới ra được tốc độ dưới dạng RPM. Ngoài ra hai cái DAQ Assistant bạn thiết trí các giá trị như thế nào?

Trang web sau có đầy đủ thông tin về lập trình điều khiển mà bạn cần:
http://techteach.no/labview/index.htm

Bạn có thể gửi VI và các thông tin tới địa chỉ kamome.seagull@gmail.com, may ra có thể giúp được.

Bạn có thể tham khảo thêm cái thuật toán PID và thực hành thiết kế bằng LabVIEW ở địa chỉ sau:
http://academic.amc.edu.au/~hnguyen/...tutorial07.pdf

Chúc thành công!

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 28-08-2009 lúc 01:10 AM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2009, 11:46 PM   #9
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Nhìn số dt(s) bạn lấy bằng 25, tôi nghĩ rất có thể bạn nhầm lẫn giữa dt(s) = thời gian lấy mẫu tính bằng giây và cái sampling rate tính bằng kS/s, ví dụ 225 kS/s: nghĩa là 225 kilo samples per second, hay nói cách khác là 225000 samples trên một giây, tức là khoảng thời gian lấy mẫu sẽ là 1/225000 giây. Trong khi đó bạn dùng dt(s) = 25 giây, thời gian lấy mẫu này quá lớn đối với động cơ!!!

Hải Âu
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2009, 12:06 PM   #10
tomruoi
Đệ tử 1 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 20
:
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á
tomruoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
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
Old 29-08-2009, 07:56 AM   #12
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Bài toán thực hành này của bạn hay đó, hay ở chỗ bạn đang điều khiển một động cơ mua ở chợ trời, mua Encoder cũng ở chợ trời, và gắn chúng vào NI USB-6221 để điều khiển, nên cần phải lập trình cho phù hợp. Nếu bạn làm thêm nữa bạn sẽ có thể tìm được cách ước lượng các tham số cho động cơ của bạn.

Để giải quyết bài toán này, khi bạn đọc được tín hiệu từ Encoder vào một kênh của USB-6221 là tần số Hz thì bạn phải làm như sau:

Tần số > chuyển đổi sang tốc độ RPM > cần thiết có thể chuyển sang Volt (để làm được thì giải thiết là quan hệ tuyến tính, dùng khái niệm độ nhạy/sensitivity) - bạn có tín hiệu process variable bằng volt.

Tín hiệu đặt (setpoint) RPM > chuyển sang Volt

Cả hai tín hiệu này được dùng đưa vào bộ PID. Tín hiệu điều khiển đầu ra của PID thì phải đặt cho tín hiệu điều khiển hai cái giới hạn trên và dưới, dùng cổng Output Range đó (nhấn phải và chọn Create > Constant, bạn sẽ thấy hai giá trị 100 và -100, chuyển thành 10 và 0 cho thang kênh phát của USB-6221 mà bạn đã chọn).

Trong chương trình bạn cũng có thể lập trình bằng cách dùng hàm Select để lựa chọn giữa hai chế độ: Auto điều khiển tự động, và Man điều khiển bằng tay (phát tín hiệu bằng một Numerical Control trực tiếp tới Servo Amplifier để điều khiển động cơ).

Bạn có thể thử làm lại toàn bộ theo các bước sau:

1. Dùng Measurement and Automation Explorer (MAX) > Test Panels: để phát tín hiệu điều khiển động cơ, có thể cho vài giá trị từ 0 đến 10 V, rồi kiểm tra tín hiệu vào từ Encode

2. Lập trình nhận tín hiệu, đại khái giống như một cái Open-Loop controller, để bạn phát tín hiệu điều khiển động cơ, nhận tín hiệu vào chương trình, và phải làm công việc xử lý tín hiệu nữa để sao cho số đọc trong chương trình phù hợp với số đọc trên Encode (nếu có), và có được tín hiệu tốc độ là RPM. Khi chạy thử, nếu tăng điện áp lên động cơ chạy nhanh hơn thì tốc độ phải tăng lên và tất yếu không dao động ở tần số cao. Nếu tín hiệu vào có nhiều nhiễu ở tần số cao, số đo chạy nhảy lung tung thì phải thiết kế thêm bộ lọc cao tần (lowpass filter) sử dụng một hàm truyền bậc nhất với Tf (hằng số thời gian bộ lọc). Khi đã chắc chắn là cái chương trình Open-loop Controller này đã chạy tốt thì sang bước sau:

3. Lập trình (lưu chương trình với phiên bản mới) cho bộ điều khiển PID, dùng PID của PID Control Toolkit thì đơn giản rồi, cần chuyển đổi cả hai tín hiệu setpoint và process variable sang volt thì tốt hơn, đầu ra của bộ PID cần đặt hai giới hạn trên và dưới (để tránh tín hiệu quá lớn do thành phần tích phân gây ra) - hai giới hạn này cũng được dùng đề điều chỉnh thay đổi đáp ứng hệ thống - giống như việc lái xe lái tầu thủy đó, để giữ hướng tốt bằng cách lái những góc rất nhỏ bé và điều chỉnh liên tục.

4. Dùng Select để chuyển hai chế độ Auto và Man: cái này cho phép bạn sử dụng khi chạy chương trình điều khiển có thể tránh được việc thay đổi tốc độ ở giá trị lớn, chuyển sang Manual và điều chỉnh điện áp để tốc độ động cơ đạt gần tới giá trị mong muốn rồi chuyển sang Auto. Trong thực tế người ta chỉ điều chỉnh/thay đổi setpoint những giá trị nhỏ để hệ thống chạy "mượt mà" (hãy tưởng tượng khi điều khiển máy móc, thay đổi setpoint ở giá trị lớn đột ngột, điện áp tăng đột ngột, dòng tăng đột ngột > rất dễ làm hỏng thiết bị máy móc). Tín hiệu điều khiển trước khi tới USB-6221 cần được đặt giới hạn lần nữa để đảm bảo tín hiệu ra không quá lớn

5. Sau khi lập trình xong phần PID, chạy và kiểm tra chương trình đã chạy tốt chưa. Nếu tốt thì tiếp đến các bước tìm bộ khuếch đại Kp, Ti (phút) và Td (phút) phù hợp.

6. Lập thêm phần lưu dữ liệu để phân tích và viết báo cáo đồ án! (mới học LabVIEW 3 tuần, chưa thành thạo LabVIEW thì hơi khó khăn đó!).

Comments: Cần tìm hiểu thêm về
1. LabVIEW và lập trình DAQmx, data acquisition programming
2. Điều khiển PID, điều chỉnh tham số bộ điều khiển PID
3. Xử lý tín hiệu/điều hòa tín hiệu, hợp nhất đơn vị các tín hiệu giữa các phần tử (khối) trong toàn bộ hệ thống điều khiển
4. Động cơ điện/bộ điều khiển servo cho động cơ

Trang web tôi đã đưa của Finn Haugen là trang web có đầy đủ các thông tin về lập trình LabVIEW, mô phỏng, thiết kế bộ PID cho các hệ thống khác nhau, điều chỉnh (tuning) tham số PID v.v...

Đến đây tôi đã cung cấp rất đầy đủ thông tin cho bài toán của bạn. Bạn cần thực hành và làm tiếp cho đến kết quả cuối cùng. Tôi xin chấm dứt chủ đề này ở đây.

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 29-08-2009 lúc 08:30 AM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-10-2009, 04:59 PM   #13
hoangvu1511
Nhập môn đệ tử
 
Tham gia ngày: Oct 2009
Bài gửi: 1
:
cho mình xin hường dẫn tiếng viết về Labview nha
hoangvu1511_hui@yahoo.com.vn
cám ơn các bạn
hoangvu1511 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-10-2009, 08:17 PM   #14
Mecha
Trưởng lão PIC bang
 
Mecha's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 315
:
Trích:
Nguyên văn bởi tomruoi View Post
trước hết xin cảm ơn bạn rất nhiều, đúng là mình đau đầu với labview vì mình chỉ làm đồ án này 1 tháng thôi(mình làm quen labview được 3 tuần).mình cứ nghĩ là lấy bộ PID trong labview ra, rồi đặt setpoin(tốc dộ đặt) cho nó thì đường process varible nó sẽ bám theo nhưng mà mình chỉnh nó không bám theo.
mình làm thiết bị thực giao tiếp qua usb 6221 của NI(DAQ Asisstance) usb 6221, mình đọc tần số từ encoder (900xung/vòng). mình đổi ra tốc độ(v/p)= (tần số đếm được *60)/900 như vậy là đúng không bạn.mình cũng có tham khảo anh Bá Hải nhưng vấn đề chính thì kô "free" khổ quá

Encoder của bạn dù nó quay châm (1vòng/giây) hay nhanh (1 vòng/1ms) thì độ phân giải vẫn là 900 {xung/vòng}. Vì thế tùy thuộc vào chu kỳ lấy mẫu mà bạn quy đổi ra vòng/phút. Ví dụ bạn lấy mẫu 5ms thì quy đổi như sau:
- Giả sử bạn lấy mẫu với tần số 5ms và sau 1 chu kỳ 5ms nào đó bạn nhận được x xung.
- Xem 1 giây nhận được bao nhiêu xung: 1{s}/5{ms} * x = 200*x {xung/giây}.
- Xem 1 phút nhận được bao nhiêu xung: 200*x*60 {xung/phút}.
- Quy đổi ra vòng/phút: (200*x*60)/900 {vòng/phút}.
Cái trên đây là để cho điều khiển tốc độ. Giá trị (200*x*60)/900 {vòng/phút} là tốc độ đo được; cùng với tốc độ đặt => đưa vào PID để tính toán control output.
__________________
Sống là động nhưng lòng luôn bất động,
Sống là thương nhưng lòng chẳng vấn vương,
Sống yên vui danh lợi vẫn coi thường,
Tâm bất biến giữa dòng đời vạn biến.


Chú ý: đề nghị các thành viên đọc luồng dưới đây trước khi post bài:
http://www.picvietnam.com/forum//showthread.php?t=1263
Mecha vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-03-2012, 04:30 PM   #15
anhcdt43
Nhập môn đệ tử
 
anhcdt43's Avatar
 
Tham gia ngày: Mar 2012
Bài gửi: 4
:
Khai giảng lớp học LabVIEW

LabVIEW được dùng nhiều trong các phòng thí nghiệm, lĩnh vực khoa học kỹ thuật như tự động hóa, điều khiển, điện tử, cơ điện tử, hàng không, hóa sinh, điện tử y sinh,... Hiện tại ngoài phiên bản LabVIEW cho các hệ điều hành Windows, Linux, Hãng NI đã phát triển các mô-đun LabVIEW cho máy hỗ trợ cá nhân (PDA). Các chức năng chính của LabVIEW có thể tóm tắt như sau:
§ Thu thập tín hiệu từ các thiết bị bên ngoài như cảm biến nhiệt độ, hình ảnh từ webcam, vận tốc của động cơ, ...
§ Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp thông qua các cổng giao tiếp: RS232, RS485, USB, PCI,Ethernet
§ Mô phỏng và xử lý các tín hiệu thu nhận được để phục vụ các mục đích nghiên cứu hay mục đích của hệ thống mà người lập trình mong muốn
§ Xây dựng các giao diện người dùng một cách nhanh chóng và thẩm mỹ hơn nhiều so với các ngôn ngữ khác như Visual Basic, Matlab,..
§ Cho phép thực hiện các thuật toán điều khiển như PID, Logic mờ (Fuzzy Logic), một cách nhanh chóng thông qua các chức năng tích hợp sẵn trong LabVIEW.
§ Cho phép kết hợp với nhiều ngôn ngữ lập trình truyền thống như C, C++, ...

Học phí: 1.000.000 VNĐ
Thời lượng: 5 buổi x 2.5 h
Lịch học: tuần 2 buổi
Thiết bị được cung cấp đầy đủ

TRUNG TÂM ĐÀO TẠO CÔNG NGHỆ VPT
Lớp học LabVIEW ở Hà Nội
Tư vấn đào tạo: 09.660.888.05 Mr.Anh
Email: anhcdt43@gmail.com
Web: http://vpt.edu.vn/tudonghoa/labview/
__________________
LỚP HỌC PLC LABVIEW ở Hà Nội
Hotline: 09.660.888.05
Email: anhcdt43@gmail.com
Web: http://vpt.edu.vn/tudonghoa/labview/
anhcdt43 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 11:09 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam