Tin tức Trang chủ diễn đàn eLib Thư viện ảnh Tài trợ SV - Doanh nghiệp Đăng nhập Đăng ký
 
Chào Khách. Bạn có thể đăng nhập hoặc đăng ký.
 
 
Trang: [1] 2   Xuống
  In  
Tác giả Chủ đề: Hiểu hơn về PID  (Đọc 13230 lần)
0 Thành viên và 1 Khách đang xem chủ đề.
NguyenDucHoang
Khách
« vào lúc: 17:31 ngày 26-06-07 »

Mời các bạn vào trang web: http://www.expertune.com/articles.html để tìm hiểu kĩ hơn về bộ điều khiển PID. Rất nhiều bài báo cáo nói về PID.
Admin
Admin
*****

Đánh giá: +4/-0
Offline Offline

Giới tính: Nam
Viet Nam Viet Nam

Bài viết: 613


Chiến binh

Google Talk khvt_sites
WWW Email
« Trả lời #1 vào lúc: 12:19 ngày 01-07-07 »

Mời các bạn vào trang web: http://www.expertune.com/articles.html để tìm hiểu kĩ hơn về bộ điều khiển PID. Rất nhiều bài báo cáo nói về PID.

Để bắt đầu với PID, Admin nghĩ mod Nguyễn Đức Hoàng nên có bài viết giới thiệu về bộ điều khiển này. Có rất nhiều sinh viên tự động sau khi tốt nghiệp không biết PID là gì? Ứng dụng ra sao?... Đấy là một lỗ hổng kiến thức rất lớn.
Việc ứng dụng PID để điều khiển động cơ DC/lò nhiệt là một đề tài rất thường thấy khi các bạn SV DKTĐ làm BTL/LVTN. Thiết nghĩ mod triển khai các đề tài này sẽ rất có ích cho những thành viên tham gia diễn đàn.
Thân mến  winking
hieutue
Khách
« Trả lời #2 vào lúc: 00:28 ngày 27-09-07 »

Tớ có cuốn sách này chuyên nói về PID happy
The effectiveness of proportional-integral-derivative (PID) controllers for a large class of process systems has ensured their continued and widespread use in industry. Similarly there has been a continued interest from academia in devising new ways of approaching the PID tuning problem.

To the industrial engineer and many control academics this work has previously appeared fragmented but a key determinant of this literature is the type of process model information used in the PID tuning methods. PID Control presents a set of coordinated contributions illustrating methods, old and new, that cover the range of process model assumptions systematically. After a review of PID technology, these contributions begin with model-free methods, progress through non-parametric model methods (relay experiment and phase-locked-loop procedures), visit fuzzy-logic- and genetic-algorithm-based methods; introduce a novel subspace identification method before closing with an interesting set of parametric model techniques including a chapter on predictive PID controllers.

Highlights of PID Control include:
an introduction to PID control technology features and typical industrial implementations;
chapter contributions ordered by the increasing quality of the model information used;
novel PID control concepts for multivariable processes.

PID Control will be useful to industry-based engineers wanting a better understanding of what is involved in the steps to a new generation of PID controller techniques. Academics wishing to have a broader perspective of PID control research and development will find useful pedagogical material and research ideas in this text.
link:
http://mihd.net/mlkc1b
NguyenHuuTan
Moderator
***

Đánh giá: +4/-1
Offline Offline

Giới tính: Nam
Viet Nam Viet Nam

Bài viết: 186



WWW Email
« Trả lời #3 vào lúc: 14:53 ngày 18-03-08 »

Anh Hoàng coi giùm em chương trình điều khiển PID số được không? Em chưa hiểu chỗ tính umax sai chỗ nào mà vẫn không chạy được khi nhiệt độ đo lúc đầu lớn hơn nhiệt độ đặt)(umax<0)
(Đây là bài thí nghiệm số 5, phần điều khiển PID cho lò nhiệt đó)
Option Explicit
Dim status As String
Dim DeviceNum As Long
Dim DriverHandle As Long
Dim loi As String * 80
Dim Response As String
Dim voltage As Single 'Bien luu dien ap analog ngo vao
Dim T As Double
Dim Ton As Double
Dim Toff As Double
Dim n As Double
Dim x1, x2, y1, y2, T1, Tdo  As Single
Dim s As Single
Dim lpDioWriteBit As PT_DioWriteBit
Dim Chonkenh As PT_AIConfig
Dim GTapvao As PT_AIVoltageIn
Dim i As Integer
Dim Tn, L, Kp, Ki, Kd, k1, k2, k3, a0, a1, a2, u1, u, e1, e2, e3, umax As Double
Dim Tdat As Double
Dim e0, m As Double 'e0 la bien gia tri sai lech hien tai

'e3 la bien dung de tinh sai lech ban dau nham muc dich tinh umax
'Chuc nang cac timer nhu sau
'Timer 1: kiem soat chu ki dieu rong xung
'Timer 2: tao ra mot khoang thoi gian dung bang tdelay
'Timer 3: duoc cho tran sau moi ms de xuat ra muc dien ap tuong ung
'Timer 4: duoc dung de cong lay trung binh nham ve do thi

Private Sub cmdNhapPID_Click()
   Kp = CDbl(txtKp.Text) 'Cap nhat gia tri trong cac edit box cho cac he so Kp, Ki, Kd
   Ki = CDbl(txtKi.Text)
   Kd = CDbl(txtKd.Text)
End Sub

Private Sub cmdRun_Click()
    i = 0 'Khoi tao chi so luc dau
    s = 0 'Khoi tao tong luc dau
    T1 = 0 'Khoi tao gia tri dau cho t1, t1 la bien luu nhiet do ung voi toa do (x1,y1)
    x1 = 5040 'Gan hoanh do ban dau cho diem x1
    y1 = 6720 'Gan tung do ban dau cho diem y1
    T = CDbl(txtChuKi.Text) * 1000 'Gan chu ki cho bien T
    If (Kp = 0 And Ki = 0 And Kd = 0) Then 'Kiem tra xem da nhap cac thong so Kp, Ki, Kd chua?
        MsgBox ("Moi ban nhap thong so cho bo dieu khien PID")
        Exit Sub
    End If
    a0 = Kp + Kd / T + Ki * T / 2
    a1 = Ki * T / 2 - 2 * Kd / T - Kp
    a2 = Kd / T
    u1 = 0 'Gan gia tri dien ap luc dau bang 0
    e1 = 0 'Gan sai lech dien ap o thoi diem dau bang 0
    e2 = 0
    If (txtTdat.Text = "") Then
        MsgBox ("Moi ban nhap vao gia tri nhiet do dat")
        Exit Sub
    End If
    Tdat = CDbl(txtTdat.Text) 'Doc vao gia tri nhiet do dat
    Call ReadAD 'Goi ham doc gia tri analog
    Tdo = 140 * voltage
    e3 = Tdat - Tdo 'Tinh sai lech nhiet do luc dau
    umax = a0 * e3 ' Tinh dien ap lon nhat
    if (umax <0) then umax = 0.01

    Timer1.Interval = T 'Timer1 kiem soat chu ki cua PWM
    Timer1.Enabled = True 'Khoi dong timer 1
    Timer3.Interval = 1
    Timer3.Enabled = True 'Khoi dong timer 3
    Timer4.Interval = 5
    Timer4.Enabled = True 'Khoi dong timer 4
   
End Sub

Private Sub cmdStop_Click()
    Timer1.Enabled = False 'Tat timer1
    Timer3.Enabled = False 'Tat timer3
    Timer4.Enabled = False 'Tat timer4
       
End Sub

Private Sub cmdThoat_Click()
    lpDioWriteBit.Port = 0 'Chon port xuat ra la port 0
    lpDioWriteBit.bit = 4 'Chon bit 4 cua port 0
    lpDioWriteBit.state = 0 'Xuat ra muc thap
    status = DRV_DioWriteBit(DriverHandle, lpDioWriteBit)
    status = DRV_DeviceClose(DriverHandle) 'Dong cong port 0
    If (status <> 0) Then
        DRV_GetErrorMessage status, loi 'Lay noi dung thong bao loi cat vao bien loi
        Response = MsgBox(loi, vbOKOnly, "Loi khi dong cong!!!")
        Exit Sub
    End If
    Unload Me 'unload form hien tai
       
End Sub

Private Sub cmdTinhPID_Click()
 If (Val(txtL.Text) = 0) Or (Val(txtT.Text) = 0) Then 'Chuyen tu chuoi ra so thuc
    MsgBox ("Ban chua nhap thoi hang T va thoi gian tre L")
    Exit Sub
 End If
   'Cap nhat gia tri cho L va T
    L = CDbl(txtL.Text)
    Tn = CDbl(txtT.Text)
    'Tinh cac he so Kp, Ki, Kd trong cac edit box ben canh nut tinh PID
    k1 = Tn / (2 * L)
    k2 = Tn / (4 * L * L)
    k3 = Tn / 4
    txttinhKp.Text = k1 'Cap nhat gia tri tu cac bien cho cac dieu khien
    txttinhKi.Text = k2
    txttinhKd.Text = k3
End Sub

Private Sub cmdTransfer_Click()
    txtKp.Text = txttinhKp.Text
    txtKi.Text = txttinhKi.Text
    txtKd.Text = txttinhKd.Text
       
End Sub

Private Sub Form_Load()
   status = DRV_DeviceOpen(0, DriverHandle) 'Mo port 0, gan Driver Handle la dieu khien cho port 0
    If (status <> 0) Then 'Neu bi loi
        DRV_GetErrorMessage status, loi 'Chep thong bao loi vao bien loi
        Response = MsgBox(loi, vbOKOnly, "Loi khi mo cong!!!")
        Exit Sub
   End If
   shpDen.FillColor = vbGreen
   
   
End Sub

Private Sub ReadAD()
    Chonkenh.DasChan = 2 'Chon kenh doc ngo vao analog la kenh 1
    Chonkenh.DasGain = 0 'Chon gain code = 0
    status = DRV_AIConfig(DriverHandle, Chonkenh)
    If (status <> 0) Then 'Neu trong qua trinh cau hinh cong analog bi loi
        DRV_GetErrorMessage status, loi 'Luu thong bao loi vao bien loi
        Response = MsgBox(loi, vbOKOnly, "Loi khi cau hinh cong vao analog!!!")
        Exit Sub
    End If
    GTapvao.chan = Chonkenh.DasChan
    GTapvao.gain = Chonkenh.DasGain
    GTapvao.TrigMode = 0 'Kich bang phan mem
    GTapvao.voltage = DRV_GetAddress(voltage) 'Voltage la bien chua dien ap doc ve
    status = DRV_AIVoltageIn(DriverHandle, GTapvao)
    If (status <> 0) Then
        DRV_GetErrorMessage status, loi
        Response = MsgBox(loi, vbOKOnly, "Loi trong luc doc ngo vao analog")
        Exit Sub
    End If
End Sub

Private Sub Timer1_Timer()
    Call ReadAD 'Cu moi lan timer 1 tran thi doc dien ap ve va cap nhat gia tri dien ap ra moi
    Tdo = voltage * 140
    e0 = Tdat - Tdo 'Tinh sai lech hien tai
    u = u1 + a0 * e0 + a1 * e1 + a2 * e2
    If (u < 0) Then u = 0
    If (u > umax) Then u = umax
    Ton = u / umax * T 'Tinh Ton va Toff moi
    Toff = T - Ton
    Text1.Text = Format(Ton, "##0.0##")
    e2 = e1
    e1 = e0
    u1 = u
End Sub

Private Sub Timer2_Timer()
    Timer2.Enabled = False 'Timer 2 dung de tao mot khoang thoi gian dung bang thoi gian delay
End Sub

Private Sub Timer3_Timer() 'Timer 3 cu sau 1ms se bi tran, ta phai tinh gia tri dien ap xuat ra sau moi ms nay
Select Case Ton
    Case 0 'Trong chu ki khong dong % nao
        lpDioWriteBit.Port = 0
        lpDioWriteBit.bit = 4
        lpDioWriteBit.state = 0
        shpDen.FillColor = vbGreen
        status = DRV_DioWriteBit(DriverHandle, lpDioWriteBit)
    Case T 'Dong 100% chu ki
        lpDioWriteBit.Port = 0
        lpDioWriteBit.bit = 4
        lpDioWriteBit.state = 1
        shpDen.FillColor = vbRed
        status = DRV_DioWriteBit(DriverHandle, lpDioWriteBit)
    Case Else
        lpDioWriteBit.Port = 0
        lpDioWriteBit.bit = 4
        lpDioWriteBit.state = 1 'Xuat ra muc 1 trong khoang thoi gian Ton
        status = DRV_DioWriteBit(DriverHandle, lpDioWriteBit)
        'shpDen.FillColor = vbRed
        Call Delay(Ton)
        lpDioWriteBit.Port = 0
        lpDioWriteBit.bit = 4
        lpDioWriteBit.state = 0 'Xuat ra muc 0 trong khoang thoi gian Toff
        status = DRV_DioWriteBit(DriverHandle, lpDioWriteBit)
        'shpDen.FillColor = vbGreen
        Call Delay(Toff)
End Select
End Sub

Private Sub Delay(X As Double)
    Timer2.Interval = X
    Timer2.Enabled = True
    Do
        DoEvents
    Loop Until Timer2.Enabled = False
End Sub

Private Sub Timer4_Timer()
    Call ReadAD
    m = voltage * 140 ' Sua nhiet do
    s = s + m
    i = i + 1
    If i = 15 Then
        n = s / 14
        i = 0
        s = 0
        txtDienap.Text = Format(voltage, "##0.0##")
        txtNhietDo.Text = n 'Xuat ta edit box
        x2 = x1 + 2 'Cap nhat hoành do moi
        y2 = y1 - (n - T1) * 48
        Line (x1, y1)-(x2, y2), vbRed
        x1 = x2 'Cap nhat gia tri moi cho bien
        y1 = y2
        T1 = n
    End If
End Sub
Minh Thao
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Giới tính: Nam
Viet Nam Viet Nam

Bài viết: 7


WWW Email
« Trả lời #4 vào lúc: 21:39 ngày 28-04-08 »

Hi hi ,bác TÂN cứ nhờ XEM Trước không hà ,lên trên phòng thí nghiệm --> TEST là biết liền thui.

Thâth sự ,nhờ làm 2 thí nghiệm DKTĐ1 và DKTĐ2 và ĐỒ ÁN với Fuzzy Logic (PID số) thì mới hiểu rõ cách thiết kế 1 bộ PID thường và PID số như thế nào.  drooling
NguyenHuuTan
Moderator
***

Đánh giá: +4/-1
Offline Offline

Giới tính: Nam
Viet Nam Viet Nam

Bài viết: 186



WWW Email
« Trả lời #5 vào lúc: 06:32 ngày 29-04-08 »

Trời ạ. Bây giờ thì tui biết đoạn chương trình trên sai lỗi chỗ nào rùi. Ngu quá....(hi hi). Chả qua là khi cần ton xấp xỉ bằng T thì thời gian off bị kéo xuống rất nhỏ. Thế là bộ điều khiển "đơ" luôn. Chính vì vậy, mới cần trừ 1% đó. Dù sao cũng cảm ơn anh em nhiều nghe. Lí thuyết khác thực tế hơi bị nhiều.
pocolo
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Viet Nam Viet Nam

Bài viết: 2


« Trả lời #6 vào lúc: 01:03 ngày 26-03-09 »

Em đang làm đề tài về điều khiển PID mờ cho hệ thống ball and beam rất mong các anh,các bác chỉ cho.Các anh có tài liệu về đề tài này or tài liệu về PID mờ cho em xin!Em cảm ơn nhiều!Đk PID mờ này khó quá. violent
ntnbich
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Viet Nam Viet Nam

Bài viết: 7


« Trả lời #7 vào lúc: 18:39 ngày 28-03-09 »

Tân ơi! Bạn cho minh xin tài liều về TN Vi xử lý đi để còn tranh thủ xem trước, có gì không hiểu còn hỏi chứ để đến khi lên làm thì nghiệm mà không biết gì hết khổ lắm.
NguyenHuuTan
Moderator
***

Đánh giá: +4/-1
Offline Offline

Giới tính: Nam
Viet Nam Viet Nam

Bài viết: 186



WWW Email
« Trả lời #8 vào lúc: 11:50 ngày 29-03-09 »

@pocolo: em lên bộ môn tự động, trong đó có một số anh chị làm về PID mờ xem thêm.
@ntnbich: bạn lên văn phòng đoàn khoa điện mua tài liệu chuẩn bị thí nghiệm về đọc trước
huychienspkt
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Viet Nam Viet Nam

Bài viết: 1


« Trả lời #9 vào lúc: 15:02 ngày 29-03-09 »

 canong canong loa loa loa loa loa loa loa loa canong loa loa loa loa loa loa loa loa loa loa loa loa loa loa loa loa
pocolo
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Viet Nam Viet Nam

Bài viết: 2


« Trả lời #10 vào lúc: 01:09 ngày 30-03-09 »

thanks! cheer
khicon
Ban quản trị
****

Đánh giá: +15/-8
Offline Offline

Giới tính: Nam
Bài viết: 445



Email
« Trả lời #11 vào lúc: 22:45 ngày 01-04-09 »

@ntnbich: bạn lên văn phòng đoàn khoa điện mua tài liệu chuẩn bị thí nghiệm về đọc trước

Ặc ặc, cái này phải điều chỉnh lại nhe! Văn phòng Đoàn khoa Điện không có bán tài liệu mà do Đội công tác xã hội bán, bạn liên hệ với phòng 304B1 để mua.
ntnbich
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Viet Nam Viet Nam

Bài viết: 7


« Trả lời #12 vào lúc: 20:39 ngày 04-04-09 »

Thanks
tha nhhuu1987
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Viet Nam Viet Nam

Bài viết: 1


Email
« Trả lời #13 vào lúc: 15:03 ngày 18-04-09 »

mấy anh cho em hỏi 1 ty nhé.Em đang làm đồ án điều khiển nhiệt độ lò nhiệt bằng PID .Em chưa hiểu gì về PID hết mong các anh giúp đỡ .Em muốn đi học 1 lớp về PID nhwng không biết chổ mong ai biết chỉ dùm em .Thanks
phuocduc
Thành viên mới
*

Đánh giá: +0/-0
Offline Offline

Viet Nam Viet Nam

Bài viết: 8


Email
« Trả lời #14 vào lúc: 21:16 ngày 05-04-11 »

các anh ơi em đang làm đồ án Điều khiển PID mờ tốc độ động cơ DC, anh ano2 có tài liệu chỉ dùm em với
Trang: [1] 2   Lên
  In  
 
Chuyển tới: