اطلاعیه

Collapse
No announcement yet.

کنترل حلقه بسته cnc با pid ؟

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

    کنترل حلقه بسته cnc با pid ؟

    سلام
    یه CNC حلقه بسته مطابق شکل زیر در نظر بگیرید:

    (البته برای این سرو موتورها درایور هم داره که نکشیدم!)
    در حالتی که فیدبک نداریم کنترلر پالس های لازم برای حرکت دو بعدی CNC مطابق نقشه ای که به آن داده شده است را فراهم می کند. حالا می خواد بره اون نقطه می خواد نره! البته میره خطای خیلی کمی داره که با کالیبره کردن و تنظیماتی درستش می کنند
    حال مطابق شکل بخواهیم از انکدر های سرو موتور هم استفاده کنیم(چون خروجی انکدر تفاضلی است باید درستش کنیم) یعنی به ازای حرکتی که داره پالس های انکدر هم بشماریم ببینیم درست رفته یا نه. اگه کم رفته با پالس های اضافه جبرانش کنیم.
    خوب تا اینجا به صرت تئوری موردی نیست. اما ما در کنترل حلقه بسته در درس کنترل سیستم های حلقه بسته PID داشتیم. حالا اگه بخواهیم یه همچین چیزی را به صورت کنترل حلقه بسته با PID کنترل کنیم چه کاری باید انجام بدیم و بلوک دیاگرام چی میشه و این ضرایب pid را کجا و چطوری پیاده سازی کنیم؟
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    #2
    پاسخ : کنترل حلقه بسته cnc با pid ؟

    در درایور سروموتور، از طریق سه حلقه تو در تو در کنترل کننده داخلی، وضعیت جریان موتور و سرعت و مکان خروجی موتور (که به انکودر کوپل شده) کنترل می شود.



    اما کنترل سرعت و مکان نسبت به انکودر موتور انجام می شود و اگر در سیستم انتقال قدرت هر نوع لقی نسبت به خروجی موتور وجود داشته باشد (علیرغم صحت عملکرد موتور) وضعیت Position در خروجی سیستم انتقال قدرت ممکن است دقیق نباشد. به همین دلیل گاهی لازم است با قرار دادن خط کش و امثال آن، مستقیما از خروجی مکانیکی-و نه خروجی موتور- فیدبک گرفته شود.
    در مورد سوال شما، یک روش ممکن برای انجام کنترل PID حلقه بسته با استفاده از فیدبک از Encoder به این ترتیب است که بجای قرار دادن درایور سروموتور در مد Position، آن را در مد Speed قرار دهیم. در این مد، سرعت موتور متناسب با یک ورودی آنالوگ در محدوده مشخص است. در این حالت با قرائت خروجی انکودر و محاسبه اختلاف مکان فعلی با مکان مطلوب، Error مکانی محاسبه می شود. در نهایت با اعمال این Error به ورودی کنترل کننده PID ، ولتاژ مناسب جهت اعمال به ورودی Speed محاسبه و به آن اعمال می شود. در چنین شرایطی مطابق شکل بالا، حلقه سوم که کنترل مکان است توسط کنترل کننده خارجی و دو حلقه دیگر توسط کنترل کننده داخلی سروموتور انجام می شود.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #3
      پاسخ : کنترل حلقه بسته cnc با pid ؟

      سلام
      ممنون از پاسختان
      بله در مدل estun که من دارم
      http://www.eca.ir/forum2/index.php?topic=68269.0
      دیدم که میشه ورودی آنالوگم داد و با این توضیحات باید کامل تر بررسی اش کنم چون تا الان کاری به کارش نداشتیم! و تا نخونم نمی تونم چیزی در مورد توضیحات شما بگم. در مد position فقط بهش پالس میدادیم و به تعداد پالس می تابید!
      پس با این اوصاف کنترلر pid تو این مد که دارم باهاش کار می کنم معنی نداره و بهتره هر کنترلی می خوایم بکنیم خروجی انکدر که پالسه مستقیم بدیم میکرو و برنامه های میکرو را اصلاح کنیم؟
      فيلم آموزشي ميکروکنترلر LPC1768
      فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
      فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
      فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

      دیدگاه


        #4
        پاسخ : کنترل حلقه بسته cnc با pid ؟

        من مدی دیدم به نام Analoge speed که در اون یک ولتاژی بین 0 تا 10 میدهیم و بر اساس اون سرعت تغییر می کنه. خوب این برای کنترل موقعیت فکر نمی کنم بدرد بخوره چون میشه باهاش سرعت را تنظیم کرد. این طری چطور میشه به سرو موتور گفت مثلا 10 دور بچرخه؟
        فيلم آموزشي ميکروکنترلر LPC1768
        فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
        فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
        فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

        دیدگاه


          #5
          پاسخ : کنترل حلقه بسته cnc با pid ؟

          برای تفهیم این روش و به عنوان یک مثال ساده، فرض کنید کنترلر از نوع P باشد و بین مکان قرائت شده از انکودر و موقعیت مکانی مطلوب تفاوت وجود داشته باشد. در این شرایط در خروجی کنترلر ولتاژی ایجاد می شود که با اعمال این سیگنال خطا به ورودی درایور در مد speed، موتور در جهت مناسب حرکت می کند و بعد از رسیدن به مکان مورد نظر، error صفر می شود. بنابراین به دلیل صفر شدن ورودی فرمان speed، موتور در محل مورد نظر متوقف و قفل می شود و به این ترتیب موتور موقعیت مطلوب را دنبال می کند.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #6
            پاسخ : کنترل حلقه بسته cnc با pid ؟

            نوشته اصلی توسط طراح
            در این شرایط در خروجی کنترلر ولتاژی ایجاد می شود که با اعمال این سیگنال خطا به ورودی درایور در مد speed،
            سلام
            دقیقا مشکل همین جاست که ما در خروجی درایور یعنی خروجی انکدر فقط پالس داریم. من ندیدم خروجی ولتاژ بده به ما.اطلاعی دارید؟ مشکل ما هم همین بود که حالا به فرض خواستیم ورودی بدیم به این PID چطوری تعداد پالس انکدر تبدیل کنیم به ولتاژ!؟ یا اینکه این کار لازم نیست و من اشتباه فکر می کنم؟
            فيلم آموزشي ميکروکنترلر LPC1768
            فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
            فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
            فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

            دیدگاه


              #7
              پاسخ : کنترل حلقه بسته cnc با pid ؟

              با توجه به اینکه خروجی انکودر توسط یک پردازنده خوانده می شود و کنترلر هم توسط همان پردازنده پیاده سازی می شود، تبدیل وضعیت انکودر به ولتاژ مورد نظر برای اعمال به ورودی سروموتور کاملا ممکن است. مثلا فرض کنید که با توجه به موقعیت مورد نظر برای خروجی سیستم و پالس های قرائت شده از انکودر، به میزان 100+ پالس اختلاف وجود داشته باشد که این عدد با یک Scale مناسب می تواند برای کم کردن اختلاف مکانی به صورت یک ولتاژ آنالوگ به سروموتور اعمال شود. برای اختلاف مکانی منفی هم می توان از همین شیوه استفاده کرد.
              اوژن: به معنای افکننده و شکست دهنده است
              دانایی، توانایی است-Knowledge is POWER
              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

              دیدگاه


                #8
                پاسخ : کنترل حلقه بسته cnc با pid ؟

                نوشته اصلی توسط طراح
                با توجه به اینکه خروجی انکودر توسط یک پردازنده خوانده می شود و کنترلر هم توسط همان پردازنده پیاده سازی می شود، تبدیل وضعیت انکودر به ولتاژ مورد نظر برای اعمال به ورودی سروموتور کاملا ممکن است.
                سلام.
                فکر کنم منظور شما این بلوک دیاگرام باشه:

                از اینجا:
                http://servo.ir/education/141-configuration-of-servo-drive-in-position-mode.html
                فيلم آموزشي ميکروکنترلر LPC1768
                فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                دیدگاه


                  #9
                  پاسخ : کنترل حلقه بسته cnc با pid ؟

                  سوالی که ذهن منو درگیر کرده اینه که در کنترلرهای موجود اونهایی که فیدبک دارند و قیمتشونم بالاست چطوری این فیدبک را پیاده سازی کردند که من الان می خوام اینطوری پیاده سازی کنم؟
                  اگر از روش کنترل آنالوگ سرو در مد speed استفاده کنم آیا به دقتی بیش از مد position میرسیم؟
                  این طوری مثلا سروو می خواهد یک دور بچرخد.یه ولتاژی به درایور داده میشه و حرکت شروع میشه. ما می دانیم قراره یک دور حرکت انجام بشه بنابراین هر وقت تعداد پالس های خوانده شده از انکدر 2500 تا شد ولتاژ اعمالی به درایور را 0 می کنیم. این طوری ناگهان سرو موتور می ایستد. حالا اینکه سرعت این چرخش موتور چقدر باشه بستگی داره به اون ولتاژی که به درایور دادیم.
                  در مرحله بعد می توان به تدریج که تعداد پالس های شمرده شده زیاد میشه ولتاژ را کم کرد. این طوری فکر کنم باید از مد DAC میکرو هم استفاده بشه. حالا اگر بخواهیم PID بذاریم بایستی اونو بین خروجی DAC میکرو و سرو درایو بذاریم؟
                  فيلم آموزشي ميکروکنترلر LPC1768
                  فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                  فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                  فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                  دیدگاه


                    #10
                    پاسخ : کنترل حلقه بسته cnc با pid ؟

                    نوشته اصلی توسط mzarkoob
                    اگر از روش کنترل آنالوگ سرو در مد speed استفاده کنم آیا به دقتی بیش از مد position میرسیم؟
                    اگر منظور شما کنترل موقعیت موتور است که این کنترلر بصورت داخلی با امکان تنظیم ضرایب pid در درایور وجود دارد و معمولا نیازی به قرار دادن آن بصورت خارجی نیست. اما همانطور که قبلا توضیح داده شد، روش اخیر در شرایطی مورد استفاده قرار می گیرد که به دلیل وجود لقی و ... یک عدم تطابق بین خروجی موتور و خروجی سیستم مکانیکی وجود دارد و حتی اگر موتور کاملا در مکان مورد نظر قرار داشته باشد، خروجی سیستم انتقال قدرت ممکن است در مکان ایده آل خود قرار نداشته باشد. بنابراین برای رسیدن خروجی مکانیکی نهایی به مکان مورد نظر، از کنترلر خارجی استفاده می شود. در مورد بقیه سوال شما هم دقیقا متوجه توضیحات نشدم (به خصوص بخش خروجی ADC زیرا ADC دارای ورودی است) اما بصورت خلاصه در کنترلر PID، بخش مشتقگیر برای پیش بینی عملکرد خطا در آینده و بخش انتگرال گیر به عنوان حاصل مجموع خطاها در گذشته عمل می کند و در صورت تنظیم درست ضرایب، تغییرات خروجی بصورت دفعی و ناگهانی نخواهد بود.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      #11
                      پاسخ : کنترل حلقه بسته cnc با pid ؟

                      نوشته اصلی توسط طراح
                      در مورد بقیه سوال شما هم دقیقا متوجه توضیحات نشدم (به خصوص بخش خروجی ADC زیرا ADC دارای ورودی است)
                      سلام
                      بله این تیکه به جای DAC(دیجیتال به آنالوگ) اشتباه ADC زدم :redface: که اصلاح شد. خوب حالا این روشی که شرح دادم:
                      این طوری مثلا سروو می خواهد یک دور بچرخد.یه ولتاژی به درایور داده میشه و حرکت شروع میشه. ما می دانیم قراره یک دور حرکت انجام بشه بنابراین هر وقت تعداد پالس های خوانده شده از انکدر 2500 تا شد ولتاژ اعمالی به درایور را 0 می کنیم. این طوری ناگهان سرو موتور می ایستد. حالا اینکه سرعت این چرخش موتور چقدر باشه بستگی داره به اون ولتاژی که به درایور دادیم.
                      در مرحله بعد می توان به تدریج که تعداد پالس های شمرده شده زیاد میشه ولتاژ را کم کرد. این طوری فکر کنم باید از مد DAC میکرو هم استفاده بشه. حالا اگر بخواهیم PID بذاریم بایستی اونو بین خروجی DAC میکرو و سرو درایو بذاریم؟
                      مناسبه برای پیاده سازی؟ و اگر با pid خود سرو کاری نداشته باشیم این pid خودمون را کجای این موقعیت ذکر شده بذارم؟
                      با توجه به این لقی که فرمودید پس استفاده از انکدر خود درایور معنی نداره زیرا باید انکدری در روی محورهای خود cnc باشد.
                      با تشکر
                      فيلم آموزشي ميکروکنترلر LPC1768
                      فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                      فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                      فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                      دیدگاه


                        #12
                        پاسخ : کنترل حلقه بسته cnc با pid ؟

                        از DAC می توانید برای تولید ولتاژ آنالوگ توسط یک کنترلر دیجیتال و اعمال به ورودی Speed استفاده کنید.

                        نوشته اصلی توسط mzarkoob
                        این pid خودمون را کجای این موقعیت ذکر شده بذارم؟
                        در شکلی که در پست دوم قرار دادم، مشخص است که کنترل کننده Position چه بصورت داخلی و چه خارجی در ابتدای حلقه قرار می گیرد.

                        نوشته اصلی توسط mzarkoob
                        با توجه به این لقی که فرمودید پس استفاده از انکدر خود درایور معنی نداره زیرا باید انکدری در روی محورهای خود cnc باشد.
                        در صورت وجود لقی می توان از خروجی خط کش هایی روی محورهای cnc استفاده کرد.
                        اوژن: به معنای افکننده و شکست دهنده است
                        دانایی، توانایی است-Knowledge is POWER
                        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                        دیدگاه

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