Professional Documents
Culture Documents
http://hassanheha.forumn.net
تعتمد منظومة التحكم PIDعلى إدخال قيمة للضبط SP_INTوقيمة فعلية إما PV_PERأو PV_INثم قياس الخطأ
بينهما ثم إعطاء قيمة معالجة LMNإما في شكل إشارة تناظرية أو رقمية أو في شكل نبضات QPULSE
ويوجد هناك قسمان للمتحكم PID-Temperature Controllerاألول هو منظومة التحكم نفسها والثاني هو منظومة
الضبط أو التوليف Tuningلضبط بيانات تصرف الوحدة مع التغيرات
والعملية بشكل عام تتعامل مع مجموعة من المدخالت والمخرجات Inputs /Outputsمنها منطقية BOOLومنها
رقمية سواء كانت صحيحة INTأو مضاعقة الدقة DINTأوعشرية REALأو قيم وقت S5T
ويتم تمرير البيانات إما بشكل مباشر من وإلى البلوك عند استدعائه أو إلى بلوك البيانات المصاحب Instance Data
Block
أما عن إدخال القيمة الفعلية للحرارة فيتم هذا عن طريق حساس للحرارة Temperature Sensorباألشكال القياسية
المتعارف عليها و قراءة ذلك عن طريق مدخل تناظري يتناسب مع الحساس المستخدم وسوف نستعرض فيما يلي كيفية
إدخال قيمة الحرارة إلى البرنامج
من أنواع حساسات الحرارة المستخدمة في قراءة درجة الحرارة:
وهذه األنواع يتم توصيلها على وحدات مجهزة لذلك بعدد قنوات إدخال محددة تمثل عدد المدخالت التناظرية الممكن
قراءتها مثل الوحدة Analog input module AI8xRTD, 16bits ، 6ES7 331-7PF01-0AB0والتي يمكن أن
يوصل عليها 8حساسات من أنواع RTDالمختلفة
كذلك الوحدة Analog input module AI8xTC, 16bits ، 6ES7 331-7PF10-0AB0والتي يمكن أن يتم توصيل
8حساسات عليها من األنواع ثيرموكبل
فيتم أوال تحديد أنواع الثرموكبل والوحدات التي سيتم استخدامها بناء على ذلك مثال لو كنا سنستخدم حساس ثرموكبل
النوع Kعدد 8وحدات وسوف نستخدم وحدة Analog input module AI8xTC, ، 6ES7 331-7PF10-0AB0
16bitsفسوف نقوم بفتح HW_Configثم إدراج الوحدة ضمن مكونات النظام
وهنا إن أردنا إدخال قيمة الحرارة مباشرة من الحساس إلى منظومة PIDفإن موضع الدخول سيكون PV_PERحيث
يتم نقل القيمة PIW368مثال إلى DATA Wordالتي تمثل PV_PER
كما يمكن معالجة القيمة بشكل منفصل لتحويلها إلى رقم عشري يمثل درجة الحرارة أو نسبة مئوية أو كما يرغب
المبرمج مع مالحظة أنه في الحساسات العادية فإن درجة الحرارة يتم قراءتها برقم صحيح مضروب في 01فمثال 52
درجة مئوية تقرأ بالقيمة 521والدرجة 032تقرأ بالقيمة 0321وذلك للحصول على كسر من درجة الحرارة فتصبح
دقة القراءة حتى 1.0درجة مئوية ولو أردنا مثال الحصول على قيمة عشرية لتمريرها إلى PV_INحيث صيغته REAL
ITD
DTR
L 10.0
/R
وهكذا نكون قد قمنا بإعداد طريقة إدخال القيمة الفعلية للمنظومة بشكليها المباشر من المدخل التناظري أو من مصدر
بيانات معالج
أما عن القيمة التي نضبط عليها العمل أو المطلوب الوصول إليها Set valueفإنه يتم تمريرها إلى Data Blockإلى
المتغير SP_INTحيث يتم تمريرها في شكل رقم عشري بصيغة REALتمثل درجة الحرارة المطلوب الوصول إليها
عن طريق عملية التسخين
أما عن معالجة اإلشارة وكيفية عمل منظومة PIDفإن هذا يتضح لنا من الشكل التالي:
لو استعرضنا الشكل السابق فسوف نجد فيه البيانات اآلتية:
منطقة تحديد بيانات الضبط وقراءة القيمة الفعلية SP_INTو PV_INأو PV_PER -
منطقة تهيئة القيمة الفعلية إن كانت PV_PERأي من مدخل تناظري مباشرة حيث يتم اختيار الدقة سواء كانت -
1.0أو 1.10أو نسبة %عن طريق )5-0-1( PER_MODEثم تحديد المقياس ونقطة الصفر Offset,
Scaleعن طريق PV_FACو PV_OFFSويتم االختيار بين PV_INوبين PV_PERعن طريق
PVPER_ONوهو مفتاح تحويل وصيغته Binaryيحدد أي من الطريقين ستمر من خالله القيمة الفعلية
بعد إدخال القيمتين ) SP(Set Pointو ) PV(Process Valueيتم تكوين الفرق بين االثنين ERRORفي -
المتغير ERوالذي ستتم عليه المعالجة في كل المراحل التالية
أو منطقة يدخل عليها الخطأ ERهي منطقة Dead Bandعن طريق المتغير DEADB_W -
منطقة Dead Bandهي منطقة لنطاق معين للخطأ ال يتم النظر إليه حتى ال تحدث عملية أرجحة حول قيمة معينة
للمنظومة Oscillationفلو كان الخطأ أقل من حدود Dead Bandأو المنطقة الميتة ال يعتبر تغيير في القيمة
واآلن معنا الخطأ بين القيمة المطلوبة والقيمة الفعلية والمطلوب عالجه ليصل النظام إلى القيمة المطلوبة تماما بشكل
ناعم Smoothوذلك من خالل مجموعة من العمليات المتتابعة والمتوازية وأول هذه العمليات هو تكبير الخطأ عن
طريق GAINإلى الحد المطلوب للدقة ويمكن أن يكون التكبير بالضرب في قيمة أكبر من أو أقل من 0.1وكذلك
باإلشارة فيمكن أن يتم تكبير الخطأ ERبإشارة موجبة أو إشارة سالبة لنحصل على خطأ مكبر بالضرب في قيمة GAIN
وتتفرع بعد ذلك العملية إلى ثالث طرق بالتوازي لتتعامل مع إشارة الخطأ المكبرة بعد المرور على GAIN
-الطريق األول وهو Kpعن طريق PFAC_SPوهو معامل يمثل Kpحيث يتم ضرب القيمة في الخطأ
-الطريق الثاني وهو )Integral( Kiعن طريق المجموعة INTوهي:
معامل Kiويمثله ( TIقيمة وقت)
ويمثل المعامل I_ITL_ONحالة تفعيل العملية TI
ويمثل العامل I_ITLVALالقيمة المبدئية للمعامل TI
وهناك مخرجان BOOLوهما INT_HPOSو INT_HNEGوتتحول حالة كل منهما إلى " "0في حالة
الوصول إلى الحد األقصى الموجب أو السالب والذي يتم إدخاله كقيمة قصوى
-الطريق الثالث وهو )Differential( Kdعن طريق المجموعة DIFوهي:
معامل Tdويمثله ( TDقيمة وقت)
معامل المقياس وهو D_Fأي Derivative factor
وبالتالي نحصل على ثالث قيم للمعالجة بالتوازي وهي LMN_Pو LMN_Iو LMN_Dحيث يتم جمعها معا وإضافة
قيمة هي DISVوتمثل قيمة مضافة إلى المجموع إن كان هذا مطلوبا وإال نحصل على مجموع المعالجات الثالثة لتعطي
قيمة LMN_Sumوالتي تمثل الخطأ بعد معالجته عن طريق المتحكم PIDويتبقى تمرير هذه القيمة إلى وسائل التحكم
الخارجية والتي تتيح لنا التحكم الفعلي في الحرارة
أول منطقة تمر عليها اإلشارة المعالجة هي منطقة Control zoneويتم فيها تحديد تفعيل عمل Control zoneعن
طريق CONZ_ONوهو متغير من النوع BOOLفإن كانت حالته " "0يتم تفعيل عمل Control zoneحيث يتم
احتساب الخطأ ERفإن تجاوزت قيمته قيمة المتغير CON_ZONEفإنه في هذه الحالة يتم تمرير القيمة القصوى
الموجبة أو السالبة لإلشارة المعالجة LMN_LLMأو LMN_HLMأما إن كان الخطأ ERداخل حدود Control Zone
فيتم توصيل LMN_Sumمن خالله دون تغيير للمرحلة التالية
المرحلة التالية وهي إخراج القيمة المعالجة عن طريق المنظومة أو إخراج قيمة أخرى يدويا حيث يمكن عن طريق
معامل مفتاح اختيار Selector switchاالختيار بين القيمة المعالجة والقيمة اليدوية والتي يمكن إدخالها في المتغير
MANعن طريق المفتاح MAN_ONوالذي يجب أن يكون في الحالة " "1حتى تعمل المنظومة آليا
المرحلة التالية وهي مرحلة الحد األقصى واألدنى Limitingحيث يتم تحديد حد أقصى للقيمة المعالجة وهو
LMN_HLMوحد أدنى هو LMN_LLMوفي حالة تجاوز أي منهما فإن هناك مخرجان لقياس ذلك وهما من النوع
BOOLتتحول حالتهما إلى " "0عن تجاوز القيمة وهما QLMN_HLMو QLMN_LLMوبالتالي نحصل بعدها على
اإلشارة بعد التحديد
وندخل بعد ذلك إلى مرحلة اإلخراج النهائي للمنظومة والذي يتم توجيهه إما إلخراج نبضات Pulsesعن طريق مولد
نبضات PULSEGENيتعامل بنظام PWMحيث يتغير عرض النبضة طبقا لقيمة LMNبنسبة من قيمة قصوى مثال إن
كان الزمن الكامل للنبضة هو 0ثانية فيكون التغيير من 1.1وحتى 0.1ثانية حسب قيمة LMNوهذا له جزء خاص
سنتحدث عنه تفصيليا فيما بعد إن شاء هللا
أما االختيار الثاني فهو إخراج القيمة في شكل رقم فبعد معالجته بمقياس LMN_FACو LMN_OFFSيتفرع أيضا إلى
فرعين األول في شكل رقم عشري كما هو من المنظومة في المتغير LMNوالثاني في شكل رقم صحيح يمكن تمريره
مباشرة إلى مخرج تناظري عن طريق LMN_PER
واآلن بعد أن استعرضنا معا كيف تعمل منظومة PIDنبدأ في التعرف على توظيف PIDداخل برنامج STEP-7
أوال :البد من تحديد نوع المنظومة هل ستكون PIDأم PIفقط حيث يفضل الكثيرون استخدام منظومة PIفقط ويتم هذا
عن طريق المتغير PID_ONفإن كانت قيمته " "0تكون المنظومة PIDوإن كانت قيمته " "1تكون المنظومة PIفقط
ثانيا :البد من تحديد الخيارات المنطقية كلها أوال مثل PV_PERو MAN_ONو CONZ_ONوالتي ستشكل شكل
استخدام وعمل المنظومة
رابعا :البد من تحديد هل سيتم استخدام Pulse generatorأم ال حيث يتم توظيف االستخدام لذلك PULSE_ON
ويتم كذلك تحديد زمن دورة التسخين PER_TMوأقل وقت للتسخين BREAK_TM
ويتم استدعاء البلوك FB58والذي يحمل االسم الرمزي " "TCONT_CPداخل أحد بلوكات التنظيم OBالدورية مثل
OB35والذي يتم استدعاؤه كل فترة زمنية محددة Cyclic Interruptوبالتالي نضمن عمال مرتبطا ارتباطا فعليا
بالوقت الحقيقي Real Timeحيث تكون دورة تنفيذ OB35من مضاعفات دورة تنفيذ عملية PIDحيث يوجد عامل
اسمه Cycleيحدد دورية عمل PIDوالذي يجب أن يرتبط مع دورية عمل OB35كما ذكرنا