Thông báo

Collapse
No announcement yet.

PID điều chỉnh nhiệt độ lò điện

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Nguyên văn bởi Amateur
    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.

    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.

    Comment


    • #17
      Nguyên văn bởi PPIICC
      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.
      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 tí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.
      Bạn thấy tai hại chưa?
      Chúc bạn thành công
      AFH

      Comment


      • #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á

        Comment


        • #19
          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.
          Bạ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.
          AFH

          Comment


          • #20
            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.

            Tuy 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
            Công ty TNHH Thương mại và Giao nhận R&P
            58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
            mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

            Comment


            • #21
              tiếp theo và hết

              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 trễ.
              - 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

              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 thực tế thì mới biết được).

              Về công thức của 2PIC đúng, là bởi vì int(e) chính là một cái tổng từ điểm đầu đến điểm cuối, của tất cả các sai số trong hệ rời rạc. Và chúng ta đang làm việc trên hệ rời rạc.

              Vậy int(e, k+1) = s(k+1) = s(k) + e(k);

              cái này hoàn toàn chính xác.


              2PIC,

              Bạn nói thành phần công suất phải nhỏ hơn Ki*int(e) là sai. Bởi vì lúc đó, bạn không thể biết được độ lệch do sai số gây ra, mà bạn phải có một hàm trước khi output để chặn công suất lò lại.

              A = kA *U
              if A > A_max, A = A max, if A < A_min, A = A_min;

              Đây là điều bắt buộc phải làm.

              Vì chugns ta hoàn toàn có thể chọn được các giá trị Ki, Kp, Kd, lớn, để hệ đáp ứng nhanh.

              Nhưng nếu mới mở lò lên, thì lúc nào U*kA cũng lớn hơn A_max, đó là chắc chắn. Khi đó phải chặn lại bằng A_max.

              Về công thức của bạn đưa, cũng chỉ là công thức để viết lại dưới dạng hàm rời rạc, chứ không phải là cách để tìm Kp và Ki, công thức này chẳng có ý nghĩa gì trong việc tìm Kp và Ki gì cả.



              Mong các bạn xem xét lại những vấn đề này, bởi vì có thể do cáh dùng từ, và khi đọc tài liệu nước ngoài, các bạn dịch ra bị sai, cho nên còn có vấn đề tranh cãi, chứ đa số các điểm mà các bạn đề cập đều chính xác cả.

              Chúc vui.
              Falleaf
              Công ty TNHH Thương mại và Giao nhận R&P
              58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
              mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

              Comment


              • #22
                Em vẫn có một số điểm chưa đồng ý với một số luận điêm của 2 người.
                -Theo tôi, quy ra công suât là dạng hợp lý nhất.
                Ko hiểu ý các bạn hiểu góc mở như thế nào? nếu ko dùng dại lượng % công suất làm trung gian mà tương luôn góc mở sẽ gây ra sự phi tuyến cực lớn do biên độ sóng sin ko đều. Góc mở gần 0 và 180 chứa sự thay đổi công suât rất ít, còn góc mở ở 90 độ lại chứa một phần công suất rất lớn. Ví dụ từ: "90 độ rồi đến 91 độ" sẽ cho một sai lệch công suất > nhiễu lần nếu "5 độ lên 6 độ".
                -Cái PID cho lò nhiệt thì bác F xem lại, do tốc độ tăng nhiệt chậm nên thành phần D bỏ qua chứ I tuyệt đối ko được bỏ qua, nó là thành phần quan trọng nhất đó.
                -Cái khái niệm chu kỳ lấy mẫu và chu kỳ điều khiển khác hẳn nhau. Với nhiệt độ, có thể anh lấy mẫu liên tục tốc độ cao rồi chia trung bình, loại bỏ những điểm có độ tản mát cao.. thì cho kết quả càng tốt. Sau khi lấy giá trị trung bình tin cậy này vào việc điều khiển. Nửa giây tôi update thay đổi lại thống số một lần nhưng tôi có thể lấy mẫu 100 lần không ai bắt tôi mà tính trung bình 100 giá trị này thì còn cho kết quả tốt hơn. Đấy là ý tưởng chung, còn thực tế thì lam khác đi tý chút.
                -Về thành phần tích phân cũng phải giới hạn vì:
                Ví dụ % công suất max là 100, giả sử k=50, ki=2 vậy:
                100>=50*E+2*S
                ---> 2*S>100--->S>=50.
                Vậy chắc chắn cần giới hạn. Nếu ko thì khi S>50, có thể thành phần tỷ lệ ko còn ý nghĩa một chút nào cả.Và tich phân đã quá cao lớn hơn 100 thì tất cả thành phần tham gia vào điều khiển như I,D là có thể vứt đi hết

                Comment


                • #23
                  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ỏ.
                  Úi, giờ em mới nghe nói đến điều khiển PID không cần quan tâm tới thời gian trích mẫu.
                  Bác F nói điều khiển nhiệt kô cần dùng đến bộ I là sai hoàn toàn. Sai 100% luôn. giả sử bác cần điều khiển từ 0 đến 1000 độ.
                  Theo bộ PID của bác là: U_dieu_khien = Kp*e+Kd*de
                  Kp: hệ số khuếch đại bộ P lấy ví dụ Kp=1;
                  Kd: hệ số khuếch đại bộ D với Kd=(Kp*Td)/T_sampling ; lấy ví dụ Kd=0.5

                  khi cho hệ thống chạy, nhiệt độ tăng dần, nhưng khi đến khoảng 700 độ thì gia trị đầu ra như sau. U=Kp*300 + Kd*0 (vì de là đạo hàm của e, e biến đổi chậm nên de ~ 0
                  Do vậy hệ thống cứ mãi nằm ở vị trí nhiệt này. Kô tăng hơn được nếu kô có bộ tích phân. Cái này đề nghị bác F xem lại nhé.
                  Chúc bác vui
                  AFH

                  Comment


                  • #24
                    Nguyên văn bởi AFH
                    Úi, giờ em mới nghe nói đến điều khiển PID không cần quan tâm tới thời gian trích mẫu.
                    Bác F nói điều khiển nhiệt kô cần dùng đến bộ I là sai hoàn toàn. Sai 100% luôn. giả sử bác cần điều khiển từ 0 đến 1000 độ.
                    Theo bộ PID của bác là: U_dieu_khien = Kp*e+Kd*de
                    Kp: hệ số khuếch đại bộ P lấy ví dụ Kp=1;
                    Kd: hệ số khuếch đại bộ D với Kd=(Kp*Td)/T_sampling ; lấy ví dụ Kd=0.5

                    khi cho hệ thống chạy, nhiệt độ tăng dần, nhưng khi đến khoảng 700 độ thì gia trị đầu ra như sau. U=Kp*300 + Kd*0 (vì de là đạo hàm của e, e biến đổi chậm nên de ~ 0
                    Do vậy hệ thống cứ mãi nằm ở vị trí nhiệt này. Kô tăng hơn được nếu kô có bộ tích phân. Cái này đề nghị bác F xem lại nhé.
                    Chúc bác vui
                    AFH
                    Cái này thì bác nói đúng, em ko phản đối

                    Comment


                    • #25
                      Nguyên văn bởi PPIICC
                      Em vẫn có một số điểm chưa đồng ý với một số luận điêm của 2 người.
                      -Theo tôi, quy ra công suât là dạng hợp lý nhất.
                      Ko hiểu ý các bạn hiểu góc mở như thế nào? nếu ko dùng dại lượng % công suất làm trung gian mà tương luôn góc mở sẽ gây ra sự phi tuyến cực lớn do biên độ sóng sin ko đều. Góc mở gần 0 và 180 chứa sự thay đổi công suât rất ít, còn góc mở ở 90 độ lại chứa một phần công suất rất lớn. Ví dụ từ: "90 độ rồi đến 91 độ" sẽ cho một sai lệch công suất > nhiễu lần nếu "5 độ lên 6 độ".
                      -Cái PID cho lò nhiệt thì bác F xem lại, do tốc độ tăng nhiệt chậm nên thành phần D bỏ qua chứ I tuyệt đối ko được bỏ qua, nó là thành phần quan trọng nhất đó.
                      -Cái khái niệm chu kỳ lấy mẫu và chu kỳ điều khiển khác hẳn nhau. Với nhiệt độ, có thể anh lấy mẫu liên tục tốc độ cao rồi chia trung bình, loại bỏ những điểm có độ tản mát cao.. thì cho kết quả càng tốt. Sau khi lấy giá trị trung bình tin cậy này vào việc điều khiển. Nửa giây tôi update thay đổi lại thống số một lần nhưng tôi có thể lấy mẫu 100 lần không ai bắt tôi mà tính trung bình 100 giá trị này thì còn cho kết quả tốt hơn. Đấy là ý tưởng chung, còn thực tế thì lam khác đi tý chút.
                      -Về thành phần tích phân cũng phải giới hạn vì:
                      Ví dụ % công suất max là 100, giả sử k=50, ki=2 vậy:
                      100>=50*E+2*S
                      ---> 2*S>100--->S>=50.
                      Vậy chắc chắn cần giới hạn. Nếu ko thì khi S>50, có thể thành phần tỷ lệ ko còn ý nghĩa một chút nào cả.Và tich phân đã quá cao lớn hơn 100 thì tất cả thành phần tham gia vào điều khiển như I,D là có thể vứt đi hết
                      Về vấn đề dùng a hay A tôi đã phân tích, đó là tùy thuộc vào quan điểm của mỗi người điều khiển, tôi có kinh nghiệm với điều khiển động cơ, còn tôi nói kinh nghiệm lò nhiệt là của những người đã làm thực tế và làm kiếm tiền. Tôi chưa tính toán kỹ lắm, vì hiện nay tôi đang rất bận, bài viết chỉ có tính chất định tính, không có tính chất định lượng, nhằm giải quyết vấn đề tranh chấp giữa các bạn trong tạm thời thôi.

                      à, bạn hiểu sai về thành phần tích phân, tổng các sai số của nó, cũng bao gồm số âm. Cho nên, nếu bạn lấy tích phân một hàm sin, cho dù biên độ lớn đến đâu, thì thích phân của nó trên toàn miền, cũng luôn luôn nhỏ hơn hoặc bằng tích phân của nó trên một nửa chu kỳ. Điều này có thể chứng minh toán học được.

                      Do vậy, nó vẫn có khả năng dập dìu. Bằng chứng, thời điểm đầu nó vọt lên, sau đó nó vọt lố, vọt lố này có thể bù vào thành phần tích phân. Do vậy, người ta nói hệ số tích phân ảnh hưởng mạnh đến việc vọt lố.

                      Về từ ngữ, bạn có thể hiểu thế nào thì hiểu, nhưng với tôi, người làm điều khiển, sampling time trong điều khiển khác với khái niệm lấy mẫu thử sample trong đo lường. Và chu kỳ lấy mẫu khi chúng tôi nói, có nghĩa là chu kỳ lấy mẫu của hệ thống.

                      Còn việc bạn sử dụng từ ngữ nào, tôi không quan trọng, nhưng tóm lại, bạn hiểu đúng vấn đề là được.

                      Về điều này nữa, bạn nên phân biệt giữa hai khái niệm, xử lý tín hiệu (signal processing) và làm sạch tín hiệu (signal cleaning). Nó là hai khái niệm khác nhau. Việc dùng tín hiệu để làm gì, như thế nào, đó là việc xử lý tín hiệu, còn việc lấy một tín hiều tốt để điều khiển, bạn có thể dùng đủ thứ loại mạch lọc, cách lấy trung bình chỉ là một loại mạch lọc đơn giản thôi.

                      Chính vì thế, AFH nói vấn đề này là đúng, chu kỳ lấy mẫu, tiếng anh là sampling time. Nó hoàn toàn chính xác.
                      Falleaf
                      Công ty TNHH Thương mại và Giao nhận R&P
                      58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                      mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                      Comment


                      • #26
                        Nguyên văn bởi AFH
                        Úi, giờ em mới nghe nói đến điều khiển PID không cần quan tâm tới thời gian trích mẫu.
                        Bác F nói điều khiển nhiệt kô cần dùng đến bộ I là sai hoàn toàn. Sai 100% luôn. giả sử bác cần điều khiển từ 0 đến 1000 độ.
                        Theo bộ PID của bác là: U_dieu_khien = Kp*e+Kd*de
                        Kp: hệ số khuếch đại bộ P lấy ví dụ Kp=1;
                        Kd: hệ số khuếch đại bộ D với Kd=(Kp*Td)/T_sampling ; lấy ví dụ Kd=0.5

                        khi cho hệ thống chạy, nhiệt độ tăng dần, nhưng khi đến khoảng 700 độ thì gia trị đầu ra như sau. U=Kp*300 + Kd*0 (vì de là đạo hàm của e, e biến đổi chậm nên de ~ 0
                        Do vậy hệ thống cứ mãi nằm ở vị trí nhiệt này. Kô tăng hơn được nếu kô có bộ tích phân. Cái này đề nghị bác F xem lại nhé.
                        Chúc bác vui
                        AFH
                        Như tôi đã trình bày, vấn đề phân tích trên, hiện tôi đang rất bận, nhưng vì tránh các bạn tranh luận quá xa, dẫn đến tranh cãi, và tự nhiên từ một bất đồng, biến thành tranh luận, tranh luận thành tranh cãi, tranh cãi thành bất hòa.... Chính vì vậy tôi phải post bài. Tôi viết rất rõ là đây là suy nghĩ định tính, tôi vẫn chưa xem lại việc này đúng hay sai, nhưng tôi có nghe một anh bạn của tôi nói lại như vậy về hệ điều khiển nhiệt mà anh bạn tôi đã làm.

                        Tuy nhiên, các bạn xem lại, Kd, càng lớn, thì steady error càng nhỏ. Đây là về mặt lý thuyết, tôi không hiểu các bạn chứng minh như thế nào, nhưng nó là lý thuyết, vì tôi chưa có thời gian để xem kỹ các vấn đề các bạn nói, cho nên chưa thể tiếp tục thảo luận với các bạn về vấn đề này được.

                        Tuy vậy, tóm lại, các bạn đã hiểu được vấn đề, và đã có những điểm tưởng đồng, như vậy lả rất tốt, mong rằng các bạn tiếp tục giúp em L giải quyét vấn đề của em ấy thật tường tận.

                        Chúc vui.
                        Falleaf
                        Công ty TNHH Thương mại và Giao nhận R&P
                        58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                        mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                        Comment


                        • #27
                          Xin lỗi, vì đang vội, nhưng đã trả lời thì trả lời cho hết luôn:

                          Thời gian lấy mẫu, tôi không nói là không cần quan tâm. Thực ra, vì các bạn lập trình, cứ hay bị cứng nhắc giữa thời gian lấy mẫu, vận tốc, và gia tốc của một đại lượng biến thiên (tôi nói vận tốc và gia tốc theo nghĩa rộng, có thể hiểu là tốc độ biến đổi).

                          Nếu như tôi nói vận tốc của một động cơ, là 3000 vòng/phút, và tôi nói vận tốc của động cơ là 30xung/samplingtime. Điều này có khác nhau không?

                          Như vậy, nếu tôi đưa vào chương trình tính toán là xung, chứ không phải là vòng, thì điều này tôi không cần quan tâm về mặt thời gian.

                          Các bạn thật chú ý đến điều này. Nếu như các bạn quy đổi thời gian lấy mẫu, sang đơn vị thời gian chuẩn, công thức tính toán của các bạn sẽ rất phức tạp, vì thường nó phải nhân với một số thực nhỏ, mà điều này không có lợi cho vi điều khiển, vi xử lý..

                          Chưa kể đến việc, các bạn mất thời gian vào việc tính toán đó.

                          Ngoài ra, như tôi nói, khi các bạn không cần quan tâm và biến đổi rời rạc, việc xác định sampling time không phụ thuộc vào nguyên lý Shannon (do các bạn không có thông tin gì về máy nhiệt), thì kết quả, các bạn không cần phải quan tâm đến sampling time, vì trong bài toán này, các bạn chưa giải quyết vấn đề ổn định của hệ thống bằng nguyên lý Shannon.

                          Tất nhiên, nếu bạn cứ sampling liên tục, nó bị nhiễu, nếu bạn sampling ít, thì nó vọt lố, nói một cách nôm na nguyên lý shannon là như vậy. Nhưng thực chất, nó để đảm bảo cho thời gian lấy mẫu của các bạn có một giá trị bị chặn. Nếu tần số lấy mẫu lớn hơn tần số này, thì đảm bảo có thể tạo lại tín hiệu liên tục gần với lúc đầu.

                          Chính vì vậy thời gian lấy mẫu trong thuật toán, hãy coi là 1 đơn vị thời gian. Tất cả các thuật toán lập trình rời rạc trên đời này đều làm như vậy, có thể các bạn chưa làm với nó, nhưng tôi chưa bao giờ thấy ai viết thuật toán tính toán phải tính đến thời gian lấy mẫu cả.

                          Chúc vui.
                          Falleaf
                          Công ty TNHH Thương mại và Giao nhận R&P
                          58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                          mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                          Comment


                          • #28
                            thôi, chủ đề này chấm dứt ở đây đi, bạn L chắc cũng học được nhiều điều từ cái này rồi. Mỗi người một cách hiểu và ứng dụng thế này thì khó mà nhất quán quan điểm lắm. Chỉ mong mỗi người hãy tự suy nghĩ về tính đúng đắn của phương pháp mình đang sử dụng là được rồi.
                            AFH

                            Comment


                            • #29
                              Hihi... tự nhiên em thấy cái luồng này ở đây,tiếc quá, vì biết hơi muộn. Nhưng ko sao:
                              -Anh AFH thì điều khiển, tính toán biểu thức PID với đầu ra là góc mở luôn.
                              -Anh ppiicc thì đầu ra là công suất, sau đó suy ra góc mở(qua bước trung gian là công suất).
                              Cả 2 cách đều không sai, nhưng cách nào hợp lý hơn?

                              Comment


                              • #30
                                Theo em thì cách anh afh đơn giản hơn...nhưng cách anh ppiicc lại hợp lý hơn đó.

                                Comment

                                Về tác giả

                                Collapse

                                mumoi Tìm hiểu thêm về mumoi

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X