اطلاعیه

Collapse
No announcement yet.

کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #46
    پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

    ببینید اگه ضریب I , D رو حذف کردید و صفرشون کردید یعنی الان یه کنترلر P دارید و اینکه خطای حالت ماندگار وجود داشته باشه کاملا طبیعیه...اتگرال گیر رو هم بهش اضافه کنید.انتگرال گیر کار همون += رو انجام میده ولی به روشی اصولی...اون کار اصلا مبنا نداره...
    حالا دوباره امتحان کنید اگه بازم درست نشد خودم یه کد PID میذارم واستون...
    موفق باشید
    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

    www.intelart.ir


    ساخت کنترلر دما PID فازی با AVR [آموزشی]

    دیدگاه


      #47
      پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کم

      نوشته اصلی توسط Mahdi.Faani
      ببینید اگه ضریب I , D رو حذف کردید و صفرشون کردید یعنی الان یه کنترلر P دارید و اینکه خطای حالت ماندگار وجود داشته باشه کاملا طبیعیه...اتگرال گیر رو هم بهش اضافه کنید.انتگرال گیر کار همون += رو انجام میده ولی به روشی اصولی...اون کار اصلا مبنا نداره...
      حالا دوباره امتحان کنید اگه بازم درست نشد خودم یه کد PID میذارم واستون...
      موفق باشید
      سلام

      کد:
      
      #define K_P  5.00
      #define K_I  0.25
      #define K_D  5.00
      .
      /
      /
      /
      float error = *Setpoint - *Input;
      	
      	// Calculate Pterm and limit error overflow
      	PTerm = P_Factor * error;
      	
      	// Calculate Iterm and limit integral runaway
        ITerm += (I_Factor * error);
        if(ITerm > outMax) ITerm= outMax;
        else if(ITerm < outMin) ITerm= outMin;
      	
      	// Calculate Dterm
        DTerm = D_Factor *(lastProcessValue - *Input);
      	
        /*Compute PID Output*/
        float output = PTerm + ITerm +  DTerm; /// SCALING_FACTOR;
         
      	if(output > outMax) output = outMax;
        else if(output < outMin) output = outMin;
      	
      	*Output = output;
      	lastProcessValue= *Input;
      با زمان پدیت 100 میلی ثانیه
      نمودار دما


      نمودار ocr


      خب چطور بود ؟ نظر بدین اصلاح کنم
      overshoot یکم زیاده...و نوسانش زیاد
      یه سوال....ما اگه مقدار قدرت هیتر رو خوب کنترل نکنیم احتمال اینکه عمرش بیاد پایین نیست؟
      ممنون :read:

      دیدگاه


        #48
        پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

        نه خوب نیست :redface:
        نوسانش خیلیه...Overshoot هم تقریبا زیاده...ووقتی نوسان زیاد باشه Settling time زیاد میشه.شما باید یکی از معیار های 2% یا 5% رو واسه اینکار انتخاب کنید.ممکنه بدون نوسان باز هم نتونید به معیارهای استاندارد برسید.ممکنه با وجود نوسان بتونید به معیار مورد نظرتون برسید...پیشنهادم اینه اگه فرصتشو دارید یه دور کنترل خطی رو خوب بخونید تا با اصطلاحاتش آشنا بشید.اینطور به سیستمتون تسلط بیشتری دارید
        در مورد آسیب هم نه هیچ مشکلی نیست در صورتی که : مقدار ماکزیمم سیگنال کنترلیتون مقدار نامی هیتر باشه.یعنی مثلا مقدار ولتاژ نامی هیتر 220 ولت هست و مقدار ماکزیمم سیگنال کنترلتون هم همون 220 ولته.از اونجایی که هیتر یک نوع بار مقوامتی محسوب میشه افزایش و یا کاهش حتی ناگهانی ولتاژ آسیبی بهش نمیزنه.ولی مثلا اگه موتور باشه نه دیگه قضیه فرق میکنه...
        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

        www.intelart.ir


        ساخت کنترلر دما PID فازی با AVR [آموزشی]

        دیدگاه


          #49
          پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

          نوشته اصلی توسط Mahdi.Faani
          نه خوب نیست :redface:
          نوسانش خیلیه...Overshoot هم تقریبا زیاده...ووقتی نوسان زیاد باشه Settling time زیاد میشه.شما باید یکی از معیار های 2% یا 5% رو واسه اینکار انتخاب کنید.ممکنه بدون نوسان باز هم نتونید به معیارهای استاندارد برسید.ممکنه با وجود نوسان بتونید به معیار مورد نظرتون برسید...پیشنهادم اینه اگه فرصتشو دارید یه دور کنترل خطی رو خوب بخونید تا با اصطلاحاتش آشنا بشید.اینطور به سیستمتون تسلط بیشتری دارید
          در مورد آسیب هم نه هیچ مشکلی نیست در صورتی که : مقدار ماکزیمم سیگنال کنترلیتون مقدار نامی هیتر باشه.یعنی مثلا مقدار ولتاژ نامی هیتر 220 ولت هست و مقدار ماکزیمم سیگنال کنترلتون هم همون 220 ولته.از اونجایی که هیتر یک نوع بار مقوامتی محسوب میشه افزایش و یا کاهش حتی ناگهانی ولتاژ آسیبی بهش نمیزنه.ولی مثلا اگه موتور باشه نه دیگه قضیه فرق میکنه...
          سلام
          من یه چیزایی از کنترل یادم میاد....ولی یادمه باید ورودی پله میدادیم و از این حرفها...و چیزایی هم که خوندم واسه پارامتر بدست اوردن از نمودار زیگلرنیکولز هم این بود kp رو فقط قرار میدیم و دوتا ضریب دیگه صفر...بعد نمودار نوسانی میشه و اونkp میشه kc و پریود زمانمون هم pc و...
          ولی خب شما گفتین ضرایب صفر نزارم...این میشه ازمون خطا....که ببینم کدوم ضرایب جواب میده....
          از طرفی مشکل همون kp هس....کلا با این کد با صفر کردن انتگرالگیر ما به نوسان نمیرسیم....
          شما اینو به من توضیح بدین دقیق چیکار کنم همون کارو کنم جواب رو بزارم...
          این نمونه آخر با زمان پدیت 100میلی ثانیه بود با در نظر گرفتن سه تا پارامتر و ریختن مستقیم output در ocr....
          خب شما بگین من چطور پارامترمو بدست بیارم اگه روش درسته.به روش جدول زیگلر

          باز هم تشکر از توجهتون

          دیدگاه


            #50
            پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کم

            سلام
            سوالای پست قبلم هنوز پا برجاست :sad:
            یک بار دیگه با زمان پدیت 200 میلی ثانیه و setpoint 35 درجه :

            #define K_P 10.00
            #define K_I 0.1
            #define K_D 50.00

            آزمایش کردم
            نمودار دما:

            نمودار OCR :


            توی نمودار ocr وقتی دما یک پله کم یا زیاد میشه مقدارش صفر میشه :
            .
            .
            .

            T:29.50 OCR:120
            T:29.50 OCR:120
            T:29.50 OCR:120
            T:30.0 OCR:120
            T:30.0 OCR:0
            T:30.0 OCR:115
            T:30.0 OCR:115
            T:30.0 OCR:115
            T:30.0 OCR:115
            T:30.0 OCR:116
            .
            .
            .


            T:33.0 OCR:246
            T:33.0 OCR:246
            T:33.0 OCR:246
            T:33.50 OCR:246
            T:33.50 OCR:116
            T:33.50 OCR:241
            .
            .
            .
            T:36.0 OCR:219
            T:36.50 OCR:219
            T:36.50 OCR:89
            T:36.50 OCR:214
            T:36.50 OCR:214
            .
            .
            .
            T:35.0 OCR:99
            T:34.50 OCR:99
            T:34.50 OCR:229
            T:34.50 OCR:104
            T:34.50 OCR:104
            عیب نداره ؟ ضرایب و اگه دقیق تنظیم کنیم درست میشه؟ واسه ضریب مستق گیره دیگه

            دیدگاه


              #51
              پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)



              #define K_P 10.00
              #define K_I 0.1
              #define K_D 100.00





              .
              .

              T:34.50 OCR:137
              T:34.50 OCR:137
              T:34.50 OCR:137
              T:35.0 OCR:137
              T:35.0 OCR:0
              T:35.0 OCR:132
              T:35.0 OCR:132
              T:35.0 OCR:132
              T:35.0 OCR:132
              T:34.50 OCR:132
              T:34.50 OCR:387
              T:34.50 OCR:137
              T:34.50 OCR:137
              T:34.50 OCR:137
              .
              .
              .
              T:35.0 OCR:133
              T:35.0 OCR:133
              T:35.0 OCR:133
              T:34.50 OCR:133
              T:34.50 OCR:388
              T:34.50 OCR:138
              T:34.50 OCR:138
              T:34.50 OCR:138
              T:34.50 OCR:138

              چیکار کنم این اتفاق نیوفته ؟
              مثلا اگه کنترل دور موتور باشه این پرش ها به چشم میاد حتما...

              دیدگاه


                #52
                پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)


                #define K_P 50.00
                #define K_I 0.1
                #define K_D 100.00
                دما :


                ocr :


                راهنمایی لطفا ...
                مرسی

                دیدگاه


                  #53
                  پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

                  سلام الان بیرونم خونه نیستم
                  امشب میام یه نمونه کد میدم همونو اجرا کن ببین نتیجه چی میشه...
                  تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                  www.intelart.ir


                  ساخت کنترلر دما PID فازی با AVR [آموزشی]

                  دیدگاه


                    #54
                    پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

                    نوشته اصلی توسط Mahdi.Faani
                    سلام الان بیرونم خونه نیستم
                    امشب میام یه نمونه کد میدم همونو اجرا کن ببین نتیجه چی میشه...
                    خیلی ممنون لطف میکنی
                    ولی اگه این پرشاتوی ocr نبود چیزه خوبی میشدا :mrgreen: :mrgreen: :job:

                    دیدگاه


                      #55
                      پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

                      این دوتا عکسو ببین:
                      اینا از یه سیستم حرارتیه...واسه پروژه کارشناسیمه...یادمه صبح روز دفاع پروژه تمومش کردم!
                      ضرایبش کاملا هردمبیله!!!! :biggrin:



                      اینم واسه حالت فازی:



                      اینم کد پردازش PID پروژه خودم:

                      [code=asm]#define PID_EXECUTE()
                      {_PID_ERROR = _PID_SP-_PID_MEASURED_OUTPUT; \
                      _PID_I_TERM += _PID_ERROR*PID_dt*PID_Ki;\
                      _PID_P_TERM=_PID_ERROR*PID_Kp;\
                      _PID_D_TERM = ((_PID_ERROR-_PID_PREVIOUS_ERROR)*PID_Kd)/PID_dt;\
                      _PID_CONTROL_SIGNAL=_PID_P_TERM+_PID_I_TERM+_PID_D _TERM;\
                      _PID_PREVIOUS_ERROR=_PID_ERROR;}[/code]
                      تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                      www.intelart.ir


                      ساخت کنترلر دما PID فازی با AVR [آموزشی]

                      دیدگاه


                        #56
                        پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

                        نمیدونم واسه چی این کدا رو درهم بر هم نشون میده
                        کد:
                        #define PID_EXECUTE()															{_PID_ERROR = _PID_SP-_PID_MEASURED_OUTPUT; \
                        																									_PID_I_TERM += _PID_ERROR*PID_dt*PID_Ki;\
                        																									_PID_P_TERM=_PID_ERROR*PID_Kp;\
                        																									_PID_D_TERM = ((_PID_ERROR-_PID_PREVIOUS_ERROR)*PID_Kd)/PID_dt;\
                        																									_PID_CONTROL_SIGNAL=_PID_P_TERM+_PID_I_TERM+_PID_D_TERM;\
                        																									_PID_PREVIOUS_ERROR=_PID_ERROR;}
                        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                        www.intelart.ir


                        ساخت کنترلر دما PID فازی با AVR [آموزشی]

                        دیدگاه


                          #57
                          پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کمک فوری)

                          نمیدونم واسه چی این کدا رو درهم بر هم نشون میده
                          کد:
                          #define PID_EXECUTE()															                   {_PID_ERROR = _PID_SP-_PID_MEASURED_OUTPUT; \
                          																									_PID_I_TERM += _PID_ERROR*PID_dt*PID_Ki;\
                          																									_PID_P_TERM=_PID_ERROR*PID_Kp;\
                          																									_PID_D_TERM = ((_PID_ERROR-_PID_PREVIOUS_ERROR)*PID_Kd)/PID_dt;\
                          																									_PID_CONTROL_SIGNAL=_PID_P_TERM+_PID_I_TERM+_PID_D_TERM;\
                          																									_PID_PREVIOUS_ERROR=_PID_ERROR;}
                          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                          www.intelart.ir


                          ساخت کنترلر دما PID فازی با AVR [آموزشی]

                          دیدگاه


                            #58
                            پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کم

                            نوشته اصلی توسط Mahdi.Faani
                            این دوتا عکسو ببین:
                            اینا از یه سیستم حرارتیه...واسه پروژه کارشناسیمه...یادمه صبح روز دفاع پروژه تمومش کردم!
                            ضرایبش کاملا هردمبیله!!!! :biggrin:



                            اینم واسه حالت فازی:



                            اینم کد پردازش PID پروژه خودم:

                            [code=asm]#define PID_EXECUTE()
                            {_PID_ERROR = _PID_SP-_PID_MEASURED_OUTPUT; \
                            _PID_I_TERM += _PID_ERROR*PID_dt*PID_Ki;\
                            _PID_P_TERM=_PID_ERROR*PID_Kp;\
                            _PID_D_TERM = ((_PID_ERROR-_PID_PREVIOUS_ERROR)*PID_Kd)/PID_dt;\
                            _PID_CONTROL_SIGNAL=_PID_P_TERM+_PID_I_TERM+_PID_D _TERM;\
                            _PID_PREVIOUS_ERROR=_PID_ERROR;}[/code]
                            سلام مهندس
                            چه جواب تروتمیزی :mrgreen:
                            ضرایب با سعی و خطا بود؟
                            سیگنالارو آنلاین کشیدین یا مث من بعد از اینکه ازمایش تموم شد؟
                            مقدار dt باید همون زمان پدیت pid باشه دگ ?
                            شما انتگرال گیرو واسه حد ماکسیمم چک نکردین؟اسکیل کردنتون هم نیست چطور انجام دادین؟
                            این مشتقگیر فقط موقعی که مقدار خونده شده از سنسور تغییر میکنه عمل میکنه دگ درسته؟
                            اون بریدگیها هم توی نمودار من واسه مشتق گیرمه

                            دیدگاه


                              #59
                              پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کم

                              سلام
                              من از همین کد هم استفاده کردم باز هم وقتی مشتق گیر فعال میشد پرش ناگهانی داشت به سمت مقدارهای مایل به صفر...مثل همونا که نمودارشو فرستاده بودم...
                              http://www.eca.ir/forum2/index.php?t...3680#msg733680
                              http://www.eca.ir/forum2/index.php?t...3660#msg733660
                              ولی وقتی مشتق گیر رو 0 میکنم درسته ...
                              تقریبا توی 6 الا 10 دقیقه به دوتا مقدار مورد نظر رسید

                              #define K_P 50.00
                              #define K_I 0.1
                              #define K_D 0

                              setpoint 35 و 45 درجه :


                              ocr:


                              مشتق گیر فقط زمانی که دما تغییر میکنه فعال میشه مثلا مقدار ارور در زمان قبل 10 بوده الان 9.5 شده ... 10 رو از 9.5 کم میکنیم ضرب در ضریب مشتق میکنیم یه عدد منفی در میاد و مقدار ocr یک افتی پیدا میکنه ... حالا 100میلی ثانیه بعد ارور 9.5 هست...9.5-9.5 صفر میشه ...پس مشتق عمل نمیکنه و مقدار ocr مثل پله های قبل میشه ...
                              اینجور میشه که یک دندونهایی تو نمودارای قبل به وجود اومد...من فک میکنم منطقیه این رفتار...
                              با این شرایط آیا مشتقگیر به درد سیستم هایی میخوره که ارور همش در حال تغییرات سریع هست ؟مثلا دور موتور موقعیت موتور
                              لطفا نظرتون رو بگین یکم واسم آشناتر بشه و شک و ابهامام بر طرف شه
                              ممنون

                              دیدگاه


                                #60
                                پاسخ : پاسخ : کنترل کننده PID برای دمای کوره(نیاز به کم

                                نوشته اصلی توسط کیوان قاسمی
                                سلام مهندس
                                چه جواب تروتمیزی :mrgreen:
                                ضرایب با سعی و خطا بود؟
                                سیگنالارو آنلاین کشیدین یا مث من بعد از اینکه ازمایش تموم شد؟
                                مقدار dt باید همون زمان پدیت pid باشه دگ ?
                                شما انتگرال گیرو واسه حد ماکسیمم چک نکردین؟اسکیل کردنتون هم نیست چطور انجام دادین؟
                                این مشتقگیر فقط موقعی که مقدار خونده شده از سنسور تغییر میکنه عمل میکنه دگ درسته؟
                                اون بریدگیها هم توی نمودار من واسه مشتق گیرمه
                                سلام دوست من
                                با سعی و خطا هم نبود!همینجوری ی چیزی گذاشتم ک برم واسه دفاع!
                                آره آنلاین بودن...
                                اینو متوجه نشدم چی میفرمایین
                                چرا.اگه منظورتون AntiWind up هست یه جای دیگه برنامه گذاشتم که یادم رفت اینجا بذارم...
                                دقیقا فقط وقتی که تغییرات در خطا داریم وارد عمل میشه...
                                تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                                www.intelart.ir


                                ساخت کنترلر دما PID فازی با AVR [آموزشی]

                                دیدگاه

                                لطفا صبر کنید...
                                X