اطلاعیه

Collapse
No announcement yet.

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

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

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

    ببینید به طور کلی واسه تعیین ظرایب یا باید تابع تبدیل سیتم رو داشته باشیم که بتونیم بر اساس اون ضرایب رو تعیین کنیم(حالا بدست آوردن این تابع تبدیل خودش چندین راه داره.یکیش استفاده از دیتای سیستم هست) یا اینکه آزمون خطا کنیم یا روش های دستی که اونم البته به داشتن نمودار پاسخ سیستم نیاز منده یا استفاده از روش های هوشمند مثل شبکه های عصبی،فازی،ژنتیک ، عصبی فازی و ....

    یه مدل کنترلر پیشرفته تر هست به اسم : Model Predictive Controller که مختصر میگن MPC ...این کنترلر دیگه کلا ساختارش تفاوت داره...از اونجایی که هدف این تاپیک این کنترلر نیس و در آینده شاید بهش برسیم میتونید خودتون در موردش سرچ کنید...ولی بهتره که بیسش که همون PID باشه رو ابتدا خوب یاد بگیرید...
    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

    www.intelart.ir


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

    دیدگاه


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

      سلام
      با این حال کدی وجود داره که تو متلب ضرایب رو به صورت دیجیتال بدست بیاریم؟
      مثلا تنظیم ضرایب pid با الگوریتم ژنتیک تو متلب یا شبکه عصبی
      با تشکر از همه ی دوستان.

      دیدگاه


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

        نوشته اصلی توسط rekima
        سلام
        با این حال کدی وجود داره که تو متلب ضرایب رو به صورت دیجیتال بدست بیاریم؟
        مثلا تنظیم ضرایب pid با الگوریتم ژنتیک تو متلب یا شبکه عصبی
        با تشکر از همه ی دوستان.
        دوست من خب همین الان داریم این کارو میکنیم
        ما هنوز تو مفاهیم ابتدایی pid موندیم .. عصب و ژنتیک بی خیال
        خب همین فیلم که اقا مهدی ارایه دادند داریم همین کارو میکنیم ... و هدف اصلی همین تعیین ضرایب در حال حاظر

        [glow=red,2,300]راستی اقای مهدی شما ادامه بدید تا پیش بریم .... ما هم خودمونو میرسونیم [/glow]

        دیدگاه


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

          سلام
          میدونم داریم همین کارو میکنیم.
          اما این روشه اوله!
          که باید تابع سیستم رو بدست بیاریم.
          اما اگه جایی نشه تابع سیستم رو بدست اورد یا بدست اوردن تابع مشکل باشه باید از روش دوم استفاده کرد.
          که دوستمون گفتن یا از راه های سعی و خطا یا از استفاده از الگوریتم هایی مثل ژنتیک یا فازی و یا ...

          با تشکر

          حالا من یه کدی قرار میدم اقا مهدی شما هم یه لطف کن یه نگاه به این کد کن. بلکه فرجی بشه...
          تنظیم ضرایب pid با شبکه عصبی

          کد:
          %Single Neural Adaptive PID Controller
          clear all;
          close all;
          
          x=[0,0,0]';
          
          xiteP=0.40;
          xiteI=0.35;
          xiteD=0.40;
          
          %Initilizing kp,ki and kd
          wkp_1=0.10;
          wki_1=0.10;
          wkd_1=0.10;
          %wkp_1=rand;
          %wki_1=rand;
          %wkd_1=rand;
          
          error_1=0;
          error_2=0; 
          y_1=0;y_2=0;y_3=0;
          u_1=0;u_2=0;u_3=0;
          
          ts=0.001;
          for k=1:1:1000
            time(k)=k*ts;
            rin(k)=0.5*sign(sin(2*2*pi*k*ts));
            yout(k)=0.368*y_1+0.26*y_2+0.1*u_1+0.632*u_2;
            error(k)=rin(k)-yout(k);
            
          %Adjusting Weight Value by hebb learning algorithm
          M=4;
          if M==1       %No Supervised Heb learning algorithm 
            wkp(k)=wkp_1+xiteP*u_1*x(1); %P
            wki(k)=wki_1+xiteI*u_1*x(2); %I
            wkd(k)=wkd_1+xiteD*u_1*x(3); %D
            K=0.06;  
          elseif M==2     %Supervised Delta learning algorithm 
            wkp(k)=wkp_1+xiteP*error(k)*u_1; %P
            wki(k)=wki_1+xiteI*error(k)*u_1; %I
            wkd(k)=wkd_1+xiteD*error(k)*u_1; %D
            K=0.12;  
          elseif M==3     %Supervised Heb learning algorithm 
            wkp(k)=wkp_1+xiteP*error(k)*u_1*x(1); %P
            wki(k)=wki_1+xiteI*error(k)*u_1*x(2); %I
            wkd(k)=wkd_1+xiteD*error(k)*u_1*x(3); %D
            K=0.12;  
          elseif M==4     %Improved Heb learning algorithm 
            wkp(k)=wkp_1+xiteP*error(k)*u_1*(2*error(k)-error_1);
            wki(k)=wki_1+xiteI*error(k)*u_1*(2*error(k)-error_1);
            wkd(k)=wkd_1+xiteD*error(k)*u_1*(2*error(k)-error_1); 
            K=0.12;  
          end
            
            x(1)=error(k)-error_1;       %P
            x(2)=error(k);           %I
            x(3)=error(k)-2*error_1+error_2;  %D
          
            wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
            w11(k)=wkp(k)/wadd(k);
            w22(k)=wki(k)/wadd(k);
            w33(k)=wkd(k)/wadd(k);
            w=[w11(k),w22(k),w33(k)];
          
            u(k)=u_1+K*w*x;   %Control law
          
          if u(k)>10
            u(k)=10;
          end  
          if u(k)<-10
            u(k)=-10;
          end  
           
          error_2=error_1;
          error_1=error(k);
            
          u_3=u_2;u_2=u_1;u_1=u(k);
          y_3=y_2;y_2=y_1;y_1=yout(k);
            
          wkp_1=wkp(k);
          wkd_1=wkd(k);
          wki_1=wki(k);
          end
          figure(1);
          plot(time,rin,'b',time,yout,'r');
          xlabel('time(s)');ylabel('rin,yout');
          figure(2);
          plot(time,error,'r');
          xlabel('time(s)');ylabel('error');
          figure(3);
          plot(time,u,'r');
          xlabel('time(s)');ylabel('u'); ...

          دیدگاه


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

            نوشته اصلی توسط rekima
            سلام
            میدونم داریم همین کارو میکنیم.
            اما این روشه اوله!
            که باید تابع سیستم رو بدست بیاریم.
            اما اگه جایی نشه تابع سیستم رو بدست اورد یا بدست اوردن تابع مشکل باشه باید از روش دوم استفاده کرد.
            که دوستمون گفتن یا از راه های سعی و خطا یا از استفاده از الگوریتم هایی مثل ژنتیک یا فازی و یا ...
            دوست من هر سوالی داری بپرس .. در واقع منم فقط هدفم کمک به شماست
            ولی بنظر من اشکال کار شما اینجاست .. که هنوز به اندازه مطلوبی اطلاعات تو این زمینه کسب نکردید
            ولی بفکر مشکلات دیگه هستید .. عصبی .. ژنتیکی .. ووو
            منظورم اینه اول باید از مفاهیم اولیه گذر کنید و زمانی که توانایی شما بیشار شد برید سراغ مباحث پیچیده تر
            در واقع با روند اموزش پیش برید تا جای که بتونید مثال های ساده و امکان پذیر رو انجام بدید .. بعد اون برید سراغ مباحثی که خودتون فرمودید

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

            این نظر من بود .. ولی شما هر جور صلاح میدونید عمل کنید دوست من

            دیدگاه


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

              راستش چند تا موضوع هست که متوجه نمیشم ... اگه مقدور بود یه توضیحی بدید

              خب از اونجا که من در حال دانلود متلب هستم و هنوز کاری باهاش انجام ندادم .. به کمی اینده موکولش کردم
              و سوالاتم در مورد دایجست عزیزه


              با حالی که باز به پست های پیشین مراجعه کردم ولی باز هم متوجه نشدم .. که البته اشکال از من هست در کل

              به عکس توجه کنید


              خب ما قراره ضرایب بدست بیاریم .. ولی من فقط ضریب تناسبی رو میبینم ... در قسمتی که با شماره یک مشخص شده
              kp = 153.5
              و
              tp = دقیق نمیدونم .. ولی اینگار زمان ثابت هست یا زمان تناسب گیر
              و گزینه سوم
              td = ایا منظور زمان تاخیره
              خب نمیدونم دیگه .. واسه همین دارم میپرسم تا فرا بگیرم

              شماره 2 و 4 ؟؟؟ در واقع نمیدونم چی هستن .. تو پست های قبلی هم گویا نیستن .. خب نگاه کردم

              و شماره 3 : controller gain = نمیدونم چیه .. ولی هر چی هست به کنترل تناسبی ربط داره
              خب
              reset time = زمان انتگرال گیری یا همون TI
              derivative time = زمان مشتق گیری یا همون TD


              و بلاخره باید از کدوم استفاده کنیم بین این گزینه های شماره 2 و 4 ؟

              خب من میدونم که ضریب تناسبی رو دارم .. KP
              برای بدست اوردن KI و KD باید این کارو کنم ایا ؟


              در تئوری میبینیم که خروجی سیستم برابر حاصلظرب یک عدد ثابت در مشتق سیگنال خطا هستش. عدد ثابت از ضرب Kp در Td بدست میاد:

              Kd=Kp*Td

              Td در واقع زمان مشتق گیری هستش.این پارامتر در طراحی کنترلر PID استفاده میشه که به جاش مفصلا در موردش صحبت میکنیم.


              و

              در رابطه زیر Ti زمان انتگرال گیری (Reset Time ) نامیده میشود.به معکوس آن Reset Rateگفته می شود.
              خب اگر به رابطه این کنترلر دقت کنید میبینید که خروجی ان ، ضریبی از مجموع خطا از زمان گذشته تا به حال است(چی گفتم چی شد!!!)
              به زبان ساده تر این کنترل کننده در هر مرحله میاد و خطا رو با مرحله قبل جمع میکنه و اونو در یک ضریب که در ادامه توضیح میدم ضرب میکنه.
              خب اون ضریب همون Ki هست که از تقسیم ضریب تناسبی بر زمان انتگرالگیری بدست میاد :



              دیدگاه


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

                نوشته اصلی توسط دیجت
                دوست من هر سوالی داری بپرس .. در واقع منم فقط هدفم کمک به شماست
                ولی بنظر من اشکال کار شما اینجاست .. که هنوز به اندازه مطلوبی اطلاعات تو این زمینه کسب نکردید
                ولی بفکر مشکلات دیگه هستید .. عصبی .. ژنتیکی .. ووو
                منظورم اینه اول باید از مفاهیم اولیه گذر کنید و زمانی که توانایی شما بیشار شد برید سراغ مباحث پیچیده تر
                در واقع با روند اموزش پیش برید تا جای که بتونید مثال های ساده و امکان پذیر رو انجام بدید .. بعد اون برید سراغ مباحثی که خودتون فرمودید

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

                این نظر من بود .. ولی شما هر جور صلاح میدونید عمل کنید دوست من
                باشه دوست عزیز شما راست میگی
                با این روند جلو میریم

                دیدگاه


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

                  خب ما قراره ضرایب بدست بیاریم .. ولی من فقط ضریب تناسبی رو میبینم ... در قسمتی که با شماره یک مشخص شده
                  نهههههه...اون گین تابع تبدیله...تو عکسای قبلی که خودتون هم گذاشتید و البته در فیلم آموزشی هم بود...تابع تبدیلی که بدست میاد یک عدد ثابت پشت کسرش موجوده...این Kp که اینجا گذاشته اون ضریب پشت کسره نه ضریب تناسبی کنترلر...ضرایب کنترلر که در اون جدول سمت چپ نرم افزار مشاهده میشه...

                  اون Tp هم ضریب متغیر S در تابع تبدیل بدست اومده هستش...شما اونجایی که قراره فرم تابع تبدیل رو انتخاب کنید دقیق تر نگاه کنید این ضرایب رو اون جا توی کسری که مربوط به همون تابه تبدیل هست مشاهده میکنید...

                  تو همین عکسی که گذاشتید قسمت بالا سمت راست رو نگاه کنید...نوشته اگه کنترلر P دارید و ضریب اون رو میخاید کلید O کیبورد رو فشار بدید
                  اگه کنترلر PI دارید کلید I رو فشار بدید
                  اگه کنترلر PID دارید کلید D رو بزنید...

                  تو هر مرحله به جز Kp که بهتون میده یه ثابت های زمانی مثل Derivative Time یا Reset Time بهتون میده...خب اینا رو به همون روشی که در پست های قبل گفته شد به Ki یا Kd تبدیل کنید...

                  اون قسمت های قبل که دورش رو بیضی کشیدید..اونا رو تو پستای قبل گفتم...شکل زیر رو ببینید:
                  تو اون پستی که در مورد انواع روش های کنترلی بحث شده اونجا کامل هست


                  خب حالا تو همین عکسی هم که گذاشتید نوشته که :For Set Point Changes یعنی کنترل دنباله رو
                  یا نوشته : For Disturbance Changes یعنی جایی که قراره کنترلر در مقابل ورودی مزاحم مقاومت کنه یعنی کنترل تنظیمی

                  خب اون ITAE یا IAE اونا رو تو پست (ای وای اونارو نکفتم!!!! oo: :mrgreen: )
                  اونا رو مفصلا توضیح میدم ولی فعلا واسه اینکه کارتون راه بیفته : IAE , ISE , ITAE , ITSE اینا هم خودشون معیار هایی هستند واسه تنظیم کنترلر اون دوتایی که مهم هستند رو تو نرم افزار میبینید...معیار های دیگه هم هستند مثل زیگلر نیکولز و کوهن کون که تو همین تصویر هم زیگلر نیکولز رو نذاشته ولی کوهن کون رو گذاشته...

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

                  www.intelart.ir


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

                  دیدگاه


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

                    من میتونم توسط روش سیستماتیکی که شما در بدست آوردن ضرایب داشتین ضرایب آنالوگ سیستم رو بدست بیارم و حالا با روشی که هنوز نمیدونم به چه صورت هست تبدیلشون کنم به ضرایب دیجیتال ؟
                    یا کلا در صورتی که پروسه ما دیجیتال باشه این نرم افزار نمیتونه استفاده بشه
                    بله میشه...یه روش اینه که کلا یه کنترلر دیجیتال طراحی کنید و یه روش دیگه هم اینه که ابتدا یه کنترلر آنالوگ طراحی کنید و بعدش با ی سری تغییراتی به دیجیتال تبدیلش کنید...
                    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                    www.intelart.ir


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

                    دیدگاه


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

                      salam
                      mehdi joon amoozesh ha ro edame nmidi?

                      دیدگاه


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

                        باسلام
                        با تشکر از زحمات اقای مهدی
                        خب همچنان داریم یاد میگیریم و همچنان تعدادی سوال از جناب مهدی عزیز
                        باز هم تشکر میکنم که ابهامات منو متذکر شدید و روشنایی بخشیدید

                        خب به عکس توجه کنید که به تو قسمت 1 و 2 شماره گذاری شده



                        خب قسمت (1 ) : tc ؟ نمیدونم این چیه ... و چرا قابل تنظیم ؟

                        و قسمت (2) : با توجه به توضیحات قبلی شما اون قسمت ها مربوط میشه به انواع روش های کنترلی هستن
                        یعنی در واقع ما باید مطابق با شرایطمون فقط از یکی از این روش ها استفاده کنیم ؟

                        و همچنین : من باورم نمیشه یعنی :

                        controller gain = مساوی با ضریب تناسبی = kp ؟ و

                        reset time = زمان انتگرال گیری یا همون TI که در نتیجه = Ki=Kp/Ti >>> یعنی ضریب انتگرالی

                        derivative time = زمان مشتق گیری یا همون TD که در نتیجه =
                        Kd=Kp*Td >>> یعنی ضریب مشتق

                        ایا درسته ؟ واقعا چه خوب

                        و همچنین این سوال برام ایجاد شده ؟
                        خب مگه اینا همون ضرایب نیستن که ما میخواستیم .. پس منظور از انالوگ و دیجیتال چیه ؟

                        هر وقت مقدور بود ما رو باز روشن کنید

                        دیدگاه


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

                          خب قسمت (1 ) : tc ؟ نمیدونم این چیه ... و چرا قابل تنظیم ؟
                          سلام بر شما
                          خواهش میکنم دوست من....
                          اینو واقعا نمیدونم...دروغ چرا؟...جایی هم ندیدم باهاش کار کنن...باز هم سرچ میکنم در موردش ببینم چیه...

                          قسمت (2) : با توجه به توضیحات قبلی شما اون قسمت ها مربوط میشه به انواع روش های کنترلی هستن
                          یعنی در واقع ما باید مطابق با شرایطمون فقط از یکی از این روش ها استفاده کنیم ؟
                          بله دقیقا همینطوره...مثلا شما قراره یه سیستم رو کنترل کنید که قراره مرتب ست پویند عوض بشه خب شما باید پشن (For Set Point Change) رو انتخاب کنید...باقی موارد هم همینطور...

                          و همچنین : من باورم نمیشه یعنی :

                          controller gain = مساوی با ضریب تناسبی = kp ؟ و

                          reset time = زمان انتگرال گیری یا همون TI که در نتیجه = Ki=Kp/Ti >>> یعنی ضریب انتگرالی

                          derivative time = زمان مشتق گیری یا همون TD که در نتیجه =
                          Kd=Kp*Td >>> یعنی ضریب مشتق

                          ایا درسته ؟ واقعا چه خوب
                          هه هه...چرا باورتون نشه؟؟؟ :biggrin: .... به همین سادگی به همین خوشمزگی!.... بدست آوردن ضرایب با روش های رسم و روش های محاسبه دستی خیلی طولانیه حتی بعضیاشون مثل IAE , ITAE , ISE و .... این مدل ها بر اساس محاسبات خطا طراحی میشن...یعنی هر دفه یه مقدار واسه ضرایب در نظر گرفته میشه و مقدار خطا رو محاسبه میکنن....حالا ممکنه صدها بار این ضرایب انتخاب بشن و نرم افزار اونا رو تست کنه و به ازای کمترین خطا ضرایب رو بهتون پیشنهاد بده...این مدل ها که اصلا با دست قابل انجام نیست و کامپیوتر میخاد...

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

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

                          www.intelart.ir


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

                          دیدگاه


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

                            نوشته اصلی توسط Engineer72
                            salam
                            mehdi joon amoozesh ha ro edame nmidi?
                            سلام آقا ماهان خوبی؟
                            بله چشم این تاپیک لاک پشتی میره جلو ولی قرار نیس وایسه! :mrgreen:
                            تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                            www.intelart.ir


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

                            دیدگاه


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

                              این داستان ادامه نداره؟؟؟؟
                              با تشکر

                              دیدگاه


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

                                سلام
                                ممنون از زحماتتون :job:
                                خواهشا بازم ادامه بدید هنوز فازی نرسیدیم!
                                چنتا سوال داشتم من کنترل دیجیتال اوگاتا را تقریبا نصفیشو خوندم اما دقیقا نمیدونم باید چیکار کرد! :(
                                آیا توی کنترلر دیجیتال باید تابع تبدیل برای مبدل A/D و نگهدار هم به سیستممون اضافه کرد ؟ این کافی هست؟
                                برای بدست آوردن ضرایب کنترلر دیجیتال میتونیم توی سیمولینک سیستم مورد نظرمونو بزاریم بعد با ZOH یا FOH گذاشتن ضرایب گسسته را در بیاریم ؟
                                یک چیزی مثل این :

                                دیدگاه

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