Lập trình cho vi điều khiển thực hiện 1 hàm truyền đạt thì các bước trình tự như thế nào.
(Mình đang định dùng vi điều khiển PIC, lập trình = CCS.)
1. Ví dụ: khi có hàm truyền đạt bộ điều khiển PID:
R(s)=2+(0.2/s)+(20*s) hoăc tương đương với R(s)= (100*s^2 + 10*s + 1)/(5*s)
thì khi thực hiện trong vi điều khiển ta có kết quả:
Err_now = V_set - V_real ;
Err_sum = Err_now + Err_last ;
Err_del = Err_now - Err_last ;
Err_last = Err_now ;
Duty = Duty + Kp*Err_now + Ki*Err_sum + Kd*Err_del ;
//vui lòng xem thêm cái này tại:
http://www.dientuvietnam.net/forums/...inh-voi-27382/
Vậy các bước thực hiện để có được nó là như thế nào?
2. Vậy giả sử ta có hàm truyền thế này thì các bước thực hiện thế nào vậy:
_________ 5000 s^2 + 5 s + 1
G(s)= ------------------------------------------
______ 5000 s^3 + 5000 s^2 + 5 s + 1
___________ 0.6324 z^2 - 1.264 z + 0.6318
hay G(z)= --------------------------------------------- với Tlm=1s, giữ mẫu bậc 0 (ZOH) (cái này gõ lệnh trong matlab : Gz=c2d(Gs,1,'zoh') )
_________ z^3 - 2.367 z^2 + 1.735 z - 0.3679
(Mình đang định dùng vi điều khiển PIC, lập trình = CCS.)
1. Ví dụ: khi có hàm truyền đạt bộ điều khiển PID:
R(s)=2+(0.2/s)+(20*s) hoăc tương đương với R(s)= (100*s^2 + 10*s + 1)/(5*s)
thì khi thực hiện trong vi điều khiển ta có kết quả:
Err_now = V_set - V_real ;
Err_sum = Err_now + Err_last ;
Err_del = Err_now - Err_last ;
Err_last = Err_now ;
Duty = Duty + Kp*Err_now + Ki*Err_sum + Kd*Err_del ;
//vui lòng xem thêm cái này tại:
http://www.dientuvietnam.net/forums/...inh-voi-27382/
Vậy các bước thực hiện để có được nó là như thế nào?
2. Vậy giả sử ta có hàm truyền thế này thì các bước thực hiện thế nào vậy:
_________ 5000 s^2 + 5 s + 1
G(s)= ------------------------------------------
______ 5000 s^3 + 5000 s^2 + 5 s + 1
___________ 0.6324 z^2 - 1.264 z + 0.6318
hay G(z)= --------------------------------------------- với Tlm=1s, giữ mẫu bậc 0 (ZOH) (cái này gõ lệnh trong matlab : Gz=c2d(Gs,1,'zoh') )
_________ z^3 - 2.367 z^2 + 1.735 z - 0.3679
Comment