بالفعل أخي العزيز فإن معظم أنظمة الدانسر المرتبط ب PID كانت تتم عن طريق كروت إلكترونية والتي قد تحتوي على مصدر جهد داخلي مثلا 15,0,-15 فولت ثم بعد ذلك وظيفة PID والتي تتم عن طريق دوائر OP-AMP ويتم التوليف في الغالب عن طريق مقاومات أو مكثفات متغيرة حسب نوع الكارت
دعونا نستكمل ما بدأناه فقد توقفنا عند تخصيص المدخلات والمخرجات فيما يخص الوظيفة التي معنا والآن نبدأ في تخطيط منظومة PID التي نريدها
ومن واقع الخبرة العملية فإننا سوف نكتفي إن شاء الله باستخدام PI فقط أن أن D سوف يلغى من حساباتنا
وأول شئ سوف نبدأه هو بإضافة OB35 إلى بلوكات البرنامج
Insert --> S7 Block --> Organization block
ثم كتابة رقم البلوك ليكون OB35 ثم نقوم بفتح البلوك واستدعاء الدالة FB41 وكتابة رقم DB فقط فوقه وليكن DB10 لحامل الإمداد و DB20 لحامل الاستقبال
وسوف يصبح لدينا الآن استدعاءان ل PID ولدينا عدد 2 بلوك بيانات كالصورة المصغرة الآتية والتي تشمل الاثنان معا
لا تقم بتغيير أي شئ فسوف نقوم بذلك في بلوك البيانات الخاص بكل واحدة على حدة
أيضا لو قمنا باستعراض خصائص CPU لمعرفة وقت تنفيذ (( الدوري )) للبلوك OB35 فسوف نجده 100 مللي ثانية حسب الصورة التالية
ثم نبدأ بفتح DB10 لاختيار القيم الافتراضية والتي على أساسها سوف نحدد طريقة عمل المنظومة والجدول كما في الصورة التالية يشمل البيانات بعد الضبط الأولي حيث أن هذه القيم هي القيم الافتراضية والتي يتم تحميلها مع بداية تشغيل النظام وتبقى كما هي ما لم يتم تغييرها عن طريق البرنامج
وإذا نظرنا إلى الجدول معنا فسوف نجد الآتي
البيانات COM_RST,MAN_ON,PVPER_ON,INT_HOLD,I_ITL_ON,D_SEL قد تم ضبطها لتكون False وهذا يعني أنها معطلة
أما البيانات P_SEL,I_SEL فقد تم ضبطها لتكون مفعلة
وهذا يعني أن الدخل لن يكون مباشرة إلى المنظومة وإنما سنقوم نحن بإعداده وتمريره إلى العنوان PV_IN أو DB10.DBD10
كذلك فقد تم اختيار المنظومة لتكون PI وقد تم تعطيل D وكذلك تم تعطيل Integral hold function
أما عن وقت العمل أو Cycle DB10.DBD2 فقد تم ضبطها كالقيمة الافتراضية للنظام على 1 ثانية وهذا من مضاعفات 100 مللي ثانية فهو عشرة أضعاف وقت تنفيذ OB35 وبالتالي فهو اختيار مناسب
كذلك فقد تم ضبط SP_INT DB10.DBD6 على القيمة 50.0 وهي كما سبق وقلنا أنها نقطة المنتصف للدانسر وسوف نقوم إن شاء الله بعمل Scaling لقيمة الدخل من الدانسر لتتراوح بين صفر و100 حتى يمكن المقارنة بين القيمتين
كذلك قمنا بتغيير المتغير LMN_LLM DB10.DBD44 ليكون -100% حيث أن خرج PID من المفترض أن يقوم بالتصحيح في الاتجاهين بالموجب والسالب أي يزيد السرعة أو ينقصها
وقد تم الإبقاء على بقية القيم كما هي دون تغيير ويتم ضبطها مع التشغيل وعند الضبط النهائي للماكينة
وعلى هذا فالقيم التي نحتاج لتمريرها إلى الدالة فيما هو آت كالآتي
PV_INT --> DB10.DBD10
Gain --> DB10.DBD20
TI --> DB10.DBD24
DISV --> DB10.DBD68 ( Adding line speed to correction )
LMN_FAC --> DB10.DBD56 ( Correction scaling )
أما القيمة المعالجة فسوف نأخذها على الخرج LMN --> DB10.DBD72
وما قلناه على DB10 ينطبق على DB20 تماما
وهكذا نكون قد استدعينا الدالة وأعددنا Data blocks وبقي لنا فقط أن نمرر البيانات من وإلى الدالة في البرنامج