وحدة 5 / 9

خوارزميات التحكم: الضبط المدعوم من PID وAI

المكاسب:

  • القدرة على شرح وتطبيق مصطلحات وتأثيرات P وI وD الخاصة بوحدة التحكم PID على الذكاء الاصطناعي في السياق الصحيح
  • القدرة على تنفيذ طرق الضبط التجريبية Ziegler-Nichols خطوة بخطوة بمساعدة الذكاء الاصطناعي
  • القدرة على التعرف على مصائد PID والقضاء عليها مثل التصفية المتكاملة والضوضاء المشتقة في توصيات الذكاء الاصطناعي

الحفاظ على درجة حرارة الفرن ثابتة، ودفع سرعة المحرك بالقيمة المطلوبة، وموازنة زاوية الطائرة بدون طيار؛ في قلب كل منهم هناك خوارزمية التحكم. وأكثرها شيوعًا هو جهاز التحكم PID، وهو العمود الفقري لهذه الصناعة. معرف المنتج؛ إنها بسيطة وقوية وتعمل على مجموعة واسعة من المشاكل. لكن كلمة "بسيط" لا تعني "سهولة الضبط": فإن PID الذي تم ضبطه بشكل غير صحيح سوف يتأرجح أو يتجاوز الهدف أو يتأخر أو يصبح غير مستقر تمامًا. يعد الذكاء الاصطناعي مساعدًا قيمًا هنا: فهو يشرح مصطلحات PID، ويوجه طرق الضبط، ويشخص الأخطاء النموذجية، ويكتب كود الضبط. ومع ذلك، يتم إجراء التعديل النهائي من خلال النظر في السلوك المادي لنظامك ويكون قرار الاستقرار يعود إلى المهندس. نغطي في هذه الوحدة كيفية تثبيت مصائد PID وضبطها والتحقق منها باستخدام الذكاء الاصطناعي.

ثلاثة شروط PID

يستجيب PID لإشارة الخطأ (e = الهدف - المقاس) بثلاث طرق:

مصطلح

إلى ماذا ينظر؟

تأثير

في أقصى الحدود

ف (نسبي)

الخطأ الحالي

استجابة سريعة

التذبذب، الخطأ الدائم

أنا (تكاملية)

خطأ الماضي المتراكم

يعيد تعيين الخطأ الدائم

التجاوز، الرياح، التذبذب

د (مشتق)

معدل تغير الخطأ

التخميد يقلل من التجاوز

تضخيم الضوضاء

الملخص اللفظي: يجيب P على الأسئلة "إلى أي مدى أنا الآن"، "كم من الوقت كنت بعيدًا"، D "ما مدى سرعة اقترابي". وحدة التحكم الجيدة توازن بين الثلاثة.

فئة PID: def __init__(self, Kp, Ki, Kd,output_min=-100,output_max=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.out_min, self.out_max =output_min,output_max self.integral = 0.0 self.previous_error = 0.0 def account(self, target,قاس,dt): خطأ = هدف - تم قياسه # P p = self.Kp * error # I -- self.integral مع حماية الرياح += خطأ * dt i = self.Ki * self.integral # D -- مشتق حساس للضوضاء d = self.Kd * (خطأ - self.previous_error) / dt self.previous_error = error out = p + i + d # تشبع الإخراج والحد من الإنهاء إذا كان الإخراج > self.output_max: الإخراج = self.out_max self.integral -= خطأ * dt # مكافحة اللف: التراجع عن إخراج elif المتكامل <self.output_min: الإخراج = self.output_min self.integral -= خطأ * إخراج إرجاع dt

هذا الرمز ليس "معرف PID للتدريب"، ولكنه هيكل عظمي قريب من منطق الإنتاج: فهو يتضمن تشبع الإخراج ومكافحة الرياح. العديد من معرفات PID البسيطة التي يقدمها الذكاء الاصطناعي تتجاوز هاتين الحمايتين؛ بدونها، عندما يصل المشغل إلى الحد الأقصى، سوف يتضخم التكامل وسيتجاوز النظام بشكل غير متوقع.

نصيحة: عند مطالبة الذكاء الاصطناعي بمعرف PID، قل "أضف تشبع الإخراج ومكافحة الرياح، وقم بتطبيق مشتق عند القياس على مصطلح مشتق". تعمل هذه الإضافات الثلاثة على تحويل معرف PID للكتاب المدرسي إلى معرف PID للحقل.

Windup متكامل والضوضاء المشتقة

هناك خطأان كلاسيكيان هما السببان الأكثر شيوعًا لفشل PID:

الإنهاء المتكامل: عندما يتشبع المحرك (على سبيل المثال، يكون المحرك بكامل طاقته بالفعل) يستمر الخطأ ويستمر المصطلح المتكامل في النمو. يؤدي هذا التكامل المتضخم إلى تجاوز كبير عندما يصل النظام إلى الهدف. الحل: إيقاف التكامل أو استرجاعه عندما يكون الإخراج مشبعًا (مقاوم للالتفاف، كما هو موضح في الكود أعلاه).

الضوضاء المشتقة: يأخذ المصطلح D مشتق الخطأ؛ يكون مشتق القياس الصاخب أكثر ضجيجًا وسيهتز المشغل. الحلول: أخذ المشتق من القياس (مشتق القياس بدلاً من الخطأ)، وإضافة مرشح تمرير منخفض إلى الحد المشتق.

# تقليل الضوضاء المشتقة: مشتق القياس + filterd_raw = -(measured - self.previous_measured) / dt بدلاً من الخطأ

الذكاء الاصطناعي جيد في تحديد هذه المزالق؛ إذا قلت "يتجاوز معرف PID الخاص بي بشكل كبير عندما يصل إلى الهدف"، فإنه يوصي بإنهاء الأمر. لكنك تتحقق من خلال قياس ما إذا كان الإصلاح يعمل على نظامك.

الإعداد مع زيجلر نيكولز

الطريقة الكلاسيكية للعثور على المكاسب (Kp، Ki، Kd) من الصفر هي Ziegler-Nichols. جوهرها: البدء فقط بـ P وزيادة Kp حتى يدخل النظام في تذبذب مستمر؛ احسب Kp وKi وKd من الجدول مع الكسب الحرج Ku وفترة التذبذب Tu عند هذه النقطة.

تحكم

kp

تي

تد

ص.

0.5·كو

-

-

بي.

0.45·كو

تو/1.2

-

معرف المنتج

0.6·كو

تو/2

تو/8

خطوات زيجلر نيكولز (الخطة التي سيتم تنفيذها بواسطة الذكاء الاصطناعي):1. خذ Ki=0، Kd=0. فقط قم بتشغيل P.2. قم بزيادة Kp ببطء حتى يبدأ التذبذب المستقر والمستمر.3. هذا Kp = Ku (الكسب الحرج)، فترة التذبذب = Tu.4. حساب Kp، Ti، Td من الجدول؛ كي = Kp/Ti، Kd = Kp*Td.5. ابدأ بهذه القيم، ثم قم بإجراء تعديلات تجريبية.

تنبيه: يقوم Ziegler-Nichols عمدًا بإيصال النظام إلى حد الاستقرار (التذبذب المستمر). هناك خطر حدوث إجهاد ميكانيكي والتيار الزائد والخطر عند القيام بذلك على أجهزة حقيقية؛ إذا كان ذلك ممكنًا، قم بذلك في المحاكاة أولاً، ثم اعمل بحد طاقة منخفض وتوقف إلكتروني في الأجهزة. يعد Ku الذي يقترحه الذكاء الاصطناعي نقطة انطلاق، حيث يتم قياسه والتحقق منه في نظامك.

التشخيص بمساعدة الذكاء الاصطناعي

يمكنك تشخيص سلوك PID من خلال وصفه للذكاء الاصطناعي. الأعراض → رسم خرائط السبب المحتمل:

أعراض

السبب المحتمل

الاتجاه الذي سيقترحه الذكاء الاصطناعي

الجلوس البطيء

كيلو بايت / كي منخفض

زيادة كيلو بايت

خطأ دائم

أنا غائب أو منخفض جدًا

كي إضافة/زيادة

التجاوز + التذبذب

Kp/Ki مرتفع، لا يوجد D

إضافة دينار كويتي، إنقاص كي

المحرك يهتز

الضوضاء المشتقة

تصفية/تقليل د

عندما تصل إلى التجاوز الكبير

نهاية متكاملة

إضافة مكافحة Windup

موجه ضعيف / موجه قوي

ضعيف: "امنح مكاسب PID." (أي نظام؟ كيف هو السلوك؟ هل هناك أي قياسات؟ تأتي أرقام عشوائية.) قوي: "أقوم بضبط PID للتحكم في سرعة محرك التيار المستمر. حاليًا، Kp=2، Ki=0.5، Kd=0. إنه يتجاوز 35% عند إدخال الخطوة وعندما يصل إلى الهدف، هناك تجاوز ثانٍ كبير؛ ويستغرق وقتًا طويلاً للتسوية. أخذ العينات هو 100 هرتز. قم بإدراج الأسباب المحتملة لهذه الأعراض، والتي تقول "اقترح الاتجاه الذي يجب أن أغيره وأخبرني عن كيفية اختبار ما إذا كان التجاوز هو عملية إغلاق متكاملة."

حالة صغيرة

يقوم مهندس التحكم كيرم بضبط التحكم في درجة حرارة الطارد. بفضل المكاسب التي يقترحها الذكاء الاصطناعي، يصل النظام إلى الهدف بسرعة، ولكن عند كل تغيير في المجموعة يقوم بتجاوز كبير ويستقر ببطء. يشرح كيرم العَرَض لمنظمة العفو الدولية؛ يشتبه الذكاء الاصطناعي في عملية الإنهاء المتكاملة لأن المدفأة تظل بكامل طاقتها (مشبعة) لفترة من الوقت. يضيف Kerem خاصية منع الإنهاء إلى رمز PID ويقلل التجاوز بشكل ملحوظ. ولكن الآن يوجد وميض طفيف عند مخرج المدفأة؛ وهو يعزو ذلك إلى المصطلح D الذي يضخم ضجيج مستشعر درجة الحرارة ويضيف مرشح الترددات المنخفضة إلى المشتق. أخيرًا، يتم التحقق من صحة المكاسب تقريبًا باستخدام Ziegler-Nichols وإجراء الضبط التجريبي. يمتلك الذكاء الاصطناعي تشخيصًا سريعًا؛ لكن كيرم أكد كل تصحيح عن طريق قياس الاستجابة الفعلية للخطوة - سواء تم تصحيح الإنهاء أو اختفاء الوميض، فلا يمكن رؤيته إلا بيانيًا.

الأخطاء الشائعة

  • الفشل في إضافة تشبع الإخراج ومكافحة الرياح إلى PID وتجربة تجاوز كبير في حد المشغل.
  • أخذ المشتق من مشتق قياس الضوضاء واهتزاز المحرك.
  • بافتراض أن dt ثابت، في حين تختلف فترة أخذ العينات.
  • إجراء اختبار تذبذب Ziegler-Nichols على الأجهزة دون احتياطات السلامة.
  • قبول الأرباح الناتجة عن الذكاء الاصطناعي باعتبارها "نهائية" دون التحقق الخاص بالنظام.
  • تغيير مكسب واحد بخطوات كبيرة جداً ودفع النظام إلى عدم الاستقرار.

باختصار

  • معرف المنتج؛ يتفاعل مع P (الخطأ الحالي)، I (الخطأ المتراكم)، D (معدل تغيير الخطأ).
  • يجب أن يشتمل PID الميداني على تشبع الإخراج ومضاد الرياح ومرشح مشتق.
  • التجاوز الكبير المتكامل، والضوضاء المشتقة تسبب اهتزاز المحرك.
  • بدأ زيجلر نيكولز في تحقيق مكاسب. يتم تنفيذه مع التدابير الأمنية في الأجهزة.
  • الذكاء الاصطناعي سريع في التشخيص بدءًا من الأعراض وحتى الأسباب؛ يتم التحقق من التصحيح عن طريق القياس.
  • dt قياس فعلي؛ يتم إجراء تغييرات الأرباح في خطوات صغيرة والمراقبة.

مهمة التطبيق

اختر نظامًا (محرك/سخان حقيقي أو نموذج بسيط من الدرجة الأولى/الثانية في Python) واطلب من الذكاء الاصطناعي إنشاء فئة PID مع التشبع + مقاومة الرياح. بعد ذلك: (1) راقب سلوك التذبذب من خلال البدء بـ P فقط وزيادة Kp، (2) أضف Ki لإزالة الخطأ الدائم وانظر كيف يزيد التجاوز، (3) قارن التأثير على التجاوز الكبير عن طريق تشغيل وإيقاف مقاومة الرياح. قم برسم استجابة الخطوة في كل خطوة ولاحظ أي سلوك يغير السلوك. قارن المكاسب التي حققتها شركة Ziegler-Nichols بالمكاسب التي وجدتها بنفسك.