منتدى التحكم الآلي والإلكترونيات
مرحبا بك عزيزي الزائر يشرفنا أن تقوم بالدخول إذا كنت من الأعضاء أو التسجيل إذا كنت زائرا ويمكنك إنشاء حسابك ببساطة ويمكنك التفعيل عن طريق البريد أو الانتظار قليلا حتى تقوم الإدارة بالتفعيل
منتدى التحكم الآلي والإلكترونيات

Automatic control , PLC , Electronics , HMI , Machine technology development , Arabic & Islamic topics , Management studies and more
 
الرئيسيةالبوابة*مكتبة الصوراليوميةس .و .جبحـثالتسجيلالأعضاءالمجموعاتدخول

شاطر | 
 

 دورة متقدمة في البرمجة S7

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
انتقل الى الصفحة : الصفحة السابقة  1, 2, 3, 4 ... 10 ... 18  الصفحة التالية
كاتب الموضوعرسالة
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الثلاثاء 31 مارس 2009 - 12:47

الأخوة الأعزاء كما سبق وذكرنا أنه يتم استدعاء الدالة PID بحيث يجب أن تعمل في الوقت الحقيقي REAL TIME لضمان ثبات الأداء وتعبيره عن الواقع لعدم ضمان ثبات دورة التنفيذ للبرنامج

لهذا يتم استدعاء الدالة في أحد دوال قطع الروتين الطبيعي للتنفيذ والمسماة Cyclic interrupts وفي معظم موديلات CPU 31x سوف تجد هناك بلوك واحد فقط هو OB35 وعند استدعاء PID يتم ذلك داخل OB35 مثل الصورة التالية



وكما هو واضح في الصورة أعلى رقم OB35 والذي تم استدعاء الدالة داخله

ثانيا بلوك البيانات المصاحب للدالة والمخصص لها Instant data block ويمكن استخدام أي بلوك من بلوكات البيانات معنا بشرط أن يكون مخصص لها مع العلم بأن عملية إنشاء وتوصيف البيانات للبلوك تتم عن طريق النظام كل ما عليك هو أن تذكر رقم البلوك فوق الدالة مثل المشار له بالصورة حيث تم تخصيص بلوك البيانات DB60 حيث سوف يشير النظام إلى أنه غير موجود ويلزم إنشاؤه فتجاوب مع النظام حتى يتم الإنشاء وكما ذكرنا لا يشترط أن يكون رقم 60 وإنما يمكن أن يكون أي بلوك ولكن بشرط أن يخصص للدالة

والآن كيف يتم تخصيص بيانات Data block للبيانات المناظرة لها FB41 ?

ننظر إلى الصورة التالية ثم نتكلم بعدها :



كما هو واضح من الصورة فإن كل عنصر من عناصر الدالة يتم تخصيص جزء من البيانات له مثل الصورة تماما أي أن :

COM_RESTART --> DB60.DBX0.0
MAN_ON --> DB60.DBX0.1

.
.
.

وهكذا مثل ما هو موضح في الملاحظات على الصورة

لنفترض مثلا أنه نريد تغيير SP_INT إلى القيمة 50.0 فإننا نقوم بالآتي في أي مكان في البرنامج :

L 50.0 //Load the value 50.0 into ACCUM1
T DB60.DBD6 //Transfer contents of ACCUM1 into Data D.Word


لنفترض أنه كما سبق وذكرنا نريد تشغيل أشياء معينة في بداية تنفيذ البرنامج ( عند بداية تشغيل PLC فقط ) وتظل هكذا طوال البرنامج ما لم نقم نحن بتغييرها داخل البرنامج :

يتم ذلك باستخدام OB100 مثلا الوظائف الآتية :
- عمل Complete restart ، فصل MAN_ON ، تصفير القيمة الحالية للخرج LMN

SET //SET RLO
S DB60.DBX0.0 //Set COM_RESTART
R DB60.DBX0.1 //Reset MAN_ON
L 0.0 //Load value 0.0
T DB60.DBD72


أما بخصوص المتغير Cycle والذي سبق وتكلمنا أنه من المهم جدا أن يكون هناك توافق بينه وبين وقت استدعاء OB35 فمثلا الوقت الافتراضي للبلوك OB35 هو 100 مللي ثانية فلابد أن يكون الوقت Cycle من مضاعفات هذا الوقت مثلا 1 ثانية أو 500 مللي ثانية أو أي رقم من مضاعفات 100 وأكثر من 100 حتى يحدث توافق بين حسابات PID وزمن قراءة البيانات داخل OB35


_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
denger741
نقيب
نقيب
avatar

عدد الرسائل : 198
تاريخ التسجيل : 02/09/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الثلاثاء 31 مارس 2009 - 13:48

يعطيك العافيه اخي ابوروان....
وفقك الله في الدنيا والاخرى
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
m_elshatr
رقيب أول
رقيب أول
avatar

عدد الرسائل : 34
العمل/الترفيه : Electrical power and Automation Engineer
تاريخ التسجيل : 26/10/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الأربعاء 1 أبريل 2009 - 16:08

بصراحة يا بشمهندس حسن وجبة كنترولية دسمة جدا جدا جدا
جزاك الله كل خير واعانك على المجهود الرائع والممتاز والشرح الوافى ده
ويارب يبارك لك وفيك وفى كل ما تعرفه يا ابو روان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الخميس 2 أبريل 2009 - 13:58

والآن إخواني الأعزاء جاء دور التطبيق

وكعادتنا معا سوف أضع مثالا وأتركه لكم لتفكروا فيه حتى نفهم العملية ثم بعد ذلك نبدأ في تنفيذ الحل معا إن شاء الله

مثالنا اليوم عملي واقعي ومنتشر في مصانع الكابلات والأسلاك وربما في مصانع الخيط والنسيج والورق والطباعة ولكن سوف نأخذ مثالا عمليا من مصانع الكابلات

ماكينة مراجعة سلك/كابل حيث يمكن تطبيق ما درسناه من موضوع PID وسوف نركز فقط على الجزء الخاص بتنظيم السرعة

وكما هو واضح في الشكل التالي :




ونخص بالذكر من الماكينة أن لدينا ثلاثة مواتير رئيسية هي :

1- الشداد أو كما يسمى في عالم الكابلات ( كاتربلر / كابستان ) وهو القائد حيث يتم فقط ضبط القيمة المطلوب التشغيل عليها وإخراجها إلى الدرايف المسئول عن ذلك في شكل analoge output من صفر وحتى 10 فولت وتتم عملية Ramp-up , Ramp-down أي زيادة ونقصان السرعة بشكل تدريجي خطي عن طريق الدرايف فالمطلوب هو إدخال قيمة من مقاومة متغيرة تمثل السرعة المطلوبة وإخراج هذه القيمة للدرايف الرئيسي مرة أخرى

2- التموين وما يهمنا هنا هو إخراج القيمة المماثلة للسرعة المطلوبة فقط ونلاحظ هنا أننا نتحكم بالسرعة الدورانية للموتور ويجب أن نلاحظ أنه كلما تم فك الكابل من على البكرة فإننا نحتاج أن نزيد سرعة البكرة ويتم ترجمة هذا بالدانسر إذ أنه كلما قل حجم البكرة تقل السرعة الخطية أو المحيطية للبكرة ويرتفع الدانسر فتتغير قيمة الجهد الكهربي على المقاومة فيلزم زيادة السرعة وهنا نحتاج PID حتى يكون التغيير متوازن وإلا فسوف يتأرجح الدانسر أو يقطع السلك لو لم يتحمل الشد

3- الاستقبال وينطبق عليه ما ينطبق على التموين غير أنه مع الوقت يزداد حجم البكرة ومن المفروض أن تقل سرعتها


في انتظار تعليقاتكم أو استفساراتكم عن العملية نفسها ووضوحها قبل أن نشرع في الحل إن شاء الله

_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
RAMA
رائد
رائد


عدد الرسائل : 276
العمر : 47
الموقع : almadinah almnora
العمل/الترفيه : PLC PROGRAMMER
تاريخ التسجيل : 25/06/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الجمعة 3 أبريل 2009 - 3:42

الاخ ابو روان المحترم
من وجهت نظري لقد بدات بسرد ميثال غير سهل
ارجو البدء بميثال اسهل لاني شخصيا ليس
لدي اي خبره في مصانع الكوابل
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
RAMA
رائد
رائد


عدد الرسائل : 276
العمر : 47
الموقع : almadinah almnora
العمل/الترفيه : PLC PROGRAMMER
تاريخ التسجيل : 25/06/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الجمعة 3 أبريل 2009 - 4:05

الاخ ابو روان المحترم
ارجو المساعده في عمليه التحكم في ضغط الماء
حيث ان لدي
PLC S7312,ANALOGUE INPUT AND OUTPUT MODULE
AC FREQUENCY DRIVE
CENTRIFUGAL WATER PUMP
ANALOGUE PRESSURE SENSOR
المطلوب ضبط ضغط الماء في الخط على 2.3BAR
وشكرا
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الجمعة 3 أبريل 2009 - 5:36

وإليكم إخواني الأعزاء شكل Block Diagram لمعالجة العمليات المطلوبة والتي منها يمكن أن نصل ببساطة للمطلوب وإن شاء الله نبدأ فور الانتهاء من هذا المثال في التطبيق الذي عرضه زميلنا العزيز RAMA إن شاء الله


_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
RAMA
رائد
رائد


عدد الرسائل : 276
العمر : 47
الموقع : almadinah almnora
العمل/الترفيه : PLC PROGRAMMER
تاريخ التسجيل : 25/06/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الأربعاء 8 أبريل 2009 - 5:43

نحن معاك
ارجو المتابعه
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
denger741
نقيب
نقيب
avatar

عدد الرسائل : 198
تاريخ التسجيل : 02/09/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الخميس 9 أبريل 2009 - 11:47

یعطیک العافیه اخی ابوروان
....انا الان فی شهر العسل ومتابع معکم هذا الشرح الرائع
وهذا المنتدی الشیق
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
denger741
نقيب
نقيب
avatar

عدد الرسائل : 198
تاريخ التسجيل : 02/09/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الخميس 9 أبريل 2009 - 12:21

اخی ابوروان ....
ممکن تعطی مثال عن PID
التحکم فی سرعه موتور
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الخميس 9 أبريل 2009 - 13:56

denger741 كتب:
یعطیک العافیه اخی ابوروان
....انا الان فی شهر العسل ومتابع معکم هذا الشرح الرائع
وهذا المنتدی الشیق

مبارك الزواج أخي العزيز وبارك الله لكما وبارك عليكما وجمع بينكما في خير

أما بخصوص الأمثلة فأرجو من الأخوة الزملاء النظر للأمور بنظرة أشمل كما سبق وأشرنا من قبل فما يقال عن الحرارة هو نفسه ما يقال عن سرعة الموتور هو نفسه ما يقال عن الدانسر هو نفسه ما يقال عن التحكم في الضغط

فأهم شئ هو تحديد المتغيرات التي تعمل عليها المنظومة :

فمثلا في المثال الذي ننتظر التعليقات عليه (( ولكن للأسف لا أحد يعلق بأي اقتراح )) الوضع كالآتي :

- قيمة الضبط التي نريد الوصول إليها رقم ثابت وهو وضع الدانسر على 50.0% كما تم التوضيح في Block diagram
- والقيمة الفعلية من مقاومة متغيرة مثبتة محوريا مع الدانسر بحيث عند دورانه تتغير المقاومة وبالتالي يتغير الجهد الكهربي المأخوذ منها (( من صفر إلى 10 فولت مستمر ))

- ويتم استخدام القيمة DISV=>Disturbance value لتمرير قيمة السرعة الخطية إليها

مع ضبط بقية بيانات PID كما سبق وشرحنا من قبل

وإذا طبقنا هذا على سرعة موتور :

- قيمة الضبط تكون هي السرعة المطلوب التشغيل عليها سواء من مقاومة أو من Data word داخل البرنامج
- قيمة السرعة الفعلية تكون إما من مولد تاكو Tacho-generator أو إنكودر Encoder أو باستخدام أي متغير يدل على السرعة ويتم إدخال هذا عن طريق مدخل طرفي

ثم يتم ضبط PID بنفس الطريقة

كذلك في منظومة التحكم في الضغط أو السريان أو أي منظومة :

- يتم تحديد القيمة المطلوب التشغيل عليها وكيفية إدخالها إلى PLC وبالتالي إلى PID
- تحديد القيمة الفعلية وهي من حساس الضغط أو من حساس السريان ولن تخرج عن الأصناف التي تحدثنا عنها في الجزء الأول من الدورة ثم قراءة قيمتها داخل PLC وبالتالي تمريرها إلى PID

ثم ضبط باقي البيانات كما سبق

أما منظومة الحرارة فهي تحتاج منا إلى خطوة زيادة وهي تحويل خرج PID إلى تردد Pulse حيث يعمل الخرج فترة ويفصل فترة وهذه الفترات للتوصيل والفصل تتناسب مباشرة مع خرج PID الرئيسي وهذا هو الجزء التالي من الدورة إن شاء الله

ثم ضبط باقي قيم PID كما سبق


إذا مما سبق فالأمر أبدا من داخل PLC لا يوجد فرق بين الدانسر ولا السرعة ولا الضغط ولا السريان ولا الوضع ولا ....

وإنما يعتمد على وجود عاملين هامين جدا في البداية هما :

- قيمة الضبط وكيف تدخلها للبرنامج
- القيمة الفعلية وكيف تدخلها للبرنامج

ثم يأتي بعد ذلك اختيار المنظومة سواء كانت P أو PI أو PD أو PID

ثم بعد ذلك عملية توليف PID لتعطي العمل الصحيح وهذه لابد أن تطبق عمليا على ماكينة وإنما توضع أولا قيم استرشادية للمنظومة ويمكن عمل توليف آلي للمنظومة Autotune بعد التركيب والتشغيل للوصول إلى القيم المثلى ثم بعد ذلك المراجعة وقد تحتاج المنظومة إلى توليف دقيق للوصول إلى الوضع الأمثل

_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
denger741
نقيب
نقيب
avatar

عدد الرسائل : 198
تاريخ التسجيل : 02/09/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الخميس 9 أبريل 2009 - 21:55

اخی ابوروان ..
سالمت یداک
هل تقصد باالمقاومه المتغیره Encoder
وهل نستطیع التحکم فی السرعه الموتور عن طریق Encoder
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
mm
ملازم أول
ملازم أول


عدد الرسائل : 106
العمر : 28
تاريخ التسجيل : 25/09/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الجمعة 10 أبريل 2009 - 1:41

السلام عليكم
بل نسبه الى AI وكذلك AO لو اخذنا على سبيل المثال analog input type AI8*12bit على اى اساس انا بقوم اختيار هذا الموديول مابين هذه الانواع AI8*14bit , AI8*16bit وماهو المقصود بهذا الرقم 12, 16 , 14 من حيث الاستخدام

والله المستعان
MAHER
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الجمعة 10 أبريل 2009 - 2:47

denger741 كتب:
اخی ابوروان ..
سالمت یداک
هل تقصد باالمقاومه المتغیره Encoder
وهل نستطیع التحکم فی السرعه الموتور عن طریق Encoder

الأخ العزيزdenger741

هناك فرق كبير بين المقاومة المتغيرة Potentiometer وبين الانكودر Encoder والذي نقصده هنا والمستخدم في عالم الصناعة هو Pulse encoder



فالمقاومة المتغيرة ما هي - عند توصيل جهد كهربي على أطرافها - إلا مقسم جهد Voltage divider ويكون الخرج حسب وضع المقاومة

أما الانكودر النبضي فهو مولد نبضات ويتم تمييزه بعدد النبضات للفة (( وليس في الثانية حتى لا يختلط مع هرتز ))

أما استخدام الانكودر في التحكم في سرعة موتور فهذا ممكن وعادي جدا ولكن بشروط :

- أن يكون الدرايف ( مغير السرعة = مشغل الموتور ) مجهز لقراءة إشارة تردد Frequency سواء لقيمة ضبط التشغيل Set value أو للقيمة الفعلية لو أردنا استخدام Feedback

أو أن تكون هناك وسيلة أخرى لتحويل التردد إلى فولت Frequency to voltage converter وبالتالي يدخل التردد من الانكودر إلى دائرة التحويل ثم إلى الدرايف

وعلى هذا فطالما هناك منتج صناعي موجود فتأكد أخي العزيز أن وجوده للاستخدام وأنه متوافق مع أنظمة الكنترول الموجودة بالسوق

أما كيف تتم مثل هذه الأمور تفصيليا فيمكنك عرض الموضوع في منتدى التطبيقات حتى لا نخرج هنا عن موضوع الدورة وإن شاء الله إما أن أجد وقتا لهذا أو يمكن لأحد الزملاء أن يتناول هذا الأمر وأظن أنه لابد من تحديد موديلات معينة للكلام عنها عند التطبيق فربما نتكلم عن شئ ويكون لديك شئ آخر فلا تلتقي أفكارنا أبدا لهذا لابد من الاتفاق على المكونات أولا مع عرض الموضوع وفي انتظارك إن شاء الله على منتدى التطبيقات مع تفاصيل أكثر عن التطبيق

_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الجمعة 10 أبريل 2009 - 2:56

maher كتب:
السلام عليكم
بل نسبه الى AI وكذلك AO لو اخذنا على سبيل المثال analog input type AI8*12bit على اى اساس انا بقوم اختيار هذا الموديول مابين هذه الانواع AI8*14bit , AI8*16bit وماهو المقصود بهذا الرقم 12, 16 , 14 من حيث الاستخدام

والله المستعان
MAHER

الأخ العزيز MAHER

لقد أخذنا وقتا طويلا جدا وعرضنا جميع الجداول الخاصة بجميع أنواع Analoge modules من شركة سيمنس في بداية هذه الدورة وذكرنا أن هذا الرقم يعبر عن الدقة في القراءة مثله تماما لو قلنا أن لديك جهازين يقيسان حتى 1000 فولت ولكن أحدهما يقرأ حتى دقة 0.1 والثاني حتى دقة 0.5

فالأول تكون قراءاته هكذا : 0.1 - 0.2 - 0.3 - ................999.8 - 999.9 - 1000.0

أما الثاني فتكون هكذا : 0.0 - 0.5 - 1.0 - 1.5 - ................ - 998.5 - 999.0 - 999.5 - 1000.0

وبالتالي فالرقم 16 أعلى دقة من 14 والذي هو أدق من 12 وهكذا

ولك أن تختار أنت ما تشاء بناء على الدقة التي تريدها

_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
RAMA
رائد
رائد


عدد الرسائل : 276
العمر : 47
الموقع : almadinah almnora
العمل/الترفيه : PLC PROGRAMMER
تاريخ التسجيل : 25/06/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الجمعة 10 أبريل 2009 - 6:33

یعطیک العافیه اخی ابوروان
ياحبذا لو تقوم بارفاق ميثال حتى نقوم بعمل محاكاه له عن طريق plcsim
ومعرفه كيف ادخال وتعديل التغيرات على fb41
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   السبت 11 أبريل 2009 - 12:48

الأخوة الأعزاء
السلام عليكم ورحمة الله وبركاته

أظن أن الوقت قد طال بنا جدا وانتظرت بعض الملاحظات عن المثال الذي معنا تستفسر عنه ولكني وجدت استفسارات (( هروبية )) لأمثلة أو أشياء أخرى قد تبعدنا عن الموضوع (( عموما مفيش مشكلة )) وإن شاء الله (( رغم إحباطي قليلا )) إلا أنني سوف أكمل إن شاء الله طمعا في الأجر يوم اللقاء من ملك السماوات والأرض



فكما توضح الصورة لدينا فهناك ثلاثة عناصر مطلوبة وهي :

- سرعة الموتور الرئيسي (( الشداد )) وهو Master أي أنه هو المتغير المستقل والباقي تابع له وقد رمزنا له في الصورة بالرمز B وهو يأتي مباشرة بعلاقة طردية مع المدخل الرئيسي للسرعة

- سرعة موتور Pay-off أو حامل بكرة الإمداد بالكابل وهذا له جزءان الأول يعتمد على سرعة الخط فهو تابع لموتور الشداد وتزاد سرعته وتقل تبعا للشداد والثاني تصحيحي حيث أنه مع العمل يقل حجم البكرة وبالتالي فإن السرعة المحيطية للبكرة والتي تمثل حركة الكابل = السرعة الخطية تقل وتحتاج أن نزيدها حتى تتوافق مع سرعة الخط وهذا يتم عن طريق الدانسر Dancer والذي قلنا أنه ذراع مثل رافعة النوع الأول يوضع ثقل عليه من ناحية ويرفعه الكابل من الناحية الأخرى ويكون الثقل حسب الشد المطلوب على الكابل ويتم ترجمة حركة الدانسر كهربيا عن طريق توصيل مقاومة متغيرة مع محوره فحينما يدور الدانسر حول محوره تدور المقاومة وتتغير قيمتها فإذا وضعنا جهدا كهربيا بين طرفي المقاومة الخارجية (( من صفر إلى 10 فولت )) فإن حركة الدانسر لأعلى وأسفل سوف تعطي تغييرا في الجهد الكهربي يتراوح بين صفر و10 فولت وهو ما يمكن أن ندخله على PLC Analoge input للاعتماد عليه في قياس وضع الدانسر



- سرعة موتور الاستقبال Take-up ومثلها مثل حامل الإمداد تماما مع اختلاف وحيد أنه كلما زاد حجم البكرة مع الوقت زادت سرعتها (( عكس الإمداد )) وكلما قل حجمهما قلت سرعتها وبالتالي فالتصحيح هنا عكس الإمداد

والمتغير هنا الذي سوف نركز على معالجته باستخدام PID هو حركة الدانسر فهذه القيمة من المتوقع لو لم نعالجها عن طريق PID أن تزداد السرعة ثم تق وتتأرجح حول منطقة العمل للدانسر

هذه هي الخطوط العامة للمشكلة ولدينا الآن (( كما تعودنا أن نقوم بحصر المدخلات والمخرجات لتحديد المكونات اللازمة )) لدينا المدخلات الآتية :

- مدخل تماثلي Analoge input للآتي : السرعة الرئيسية Set speed و مستوى الدانسر رقم-1 الخاص بالإمداد Dancer-1 position و مستوى الدانسر رقم-2 الخاص بالاستقبال Dancer-2 position

- مخرج تماثلي لسرعة الموتور الرئيسي Cater-pillar speed set
- مخرج تماثلي لسرعة موتور حامل الإمداد Pay-off speed set
- مخرج تماثلي لسرعة موتور حامل الاستقبال Take-up speed set

وإذا قمنا بإنشاء نظام بالمكونات الآتية كما في الصورة والتي تشمل :
- وحدة مصدر جهد
- وحدة CPU 315-2DP
- موديول دخل رقمي 32 من النوع 24 فولت DC
- موديول دخل رقمي 32 من النوع 24 فولت DC
- موديول خرج رقمي 32 من النوع 24 فولت DC
- موديول دخل تماثلي Analoge input عدد 8 قنوات - 14 bit
- موديول خرج تماثلي Analoge output عدد 4 قنوات - 12 bit



وهذا سوف يسمح لنا باستخدام الآتي :

PIW 304 --> Line speed set value
PIW 306 --> Dancer-1 position
PIW 308 --> Dancer-2 position

PQW 320 --> Main motor ( Cater-pillar ) speed set point
PQW 322 --> Pay-off speed set value
PQW 324 --> Take-up speed set value


كما أن Digital inputs سوف تكون متاحة بعدد 64 دخل تشمل الآتي :

I 0.0 --> I 0.7
I 1.0 --> I 1.7
I 2.0 --> I 2.7
I 3.0 --> I 3.7
-
-
-
I 7.0 --> I 7.7


ثم Digital outputs :

Q 8.0 --> Q 8.7
Q 9.0 --> Q 9.7
-
-
Q 11.0 --> Q 11.7


هذا أولا ما أردت الإشارة إليه كاستعمالات طرفية للمدخلات والمخرجات

وفي الشكل الآتي الاختيارات المناسبة في ضبط AI module & AO Module






_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
denger741
نقيب
نقيب
avatar

عدد الرسائل : 198
تاريخ التسجيل : 02/09/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   السبت 11 أبريل 2009 - 22:33

یعطیک العافیه اخی ابوروان
اعذرني اخي العزیزبعدم التفکیر فی هذا المثال لانی کنت مشغول فی شهر العسل ان شاء الله باذن الله هذ آخر سبوع لی.....
طبعا انشغالی لم یمنعنی عن قراءت شرحک الشیق المثیر
یعطیک الف عافیه
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
RAMA
رائد
رائد


عدد الرسائل : 276
العمر : 47
الموقع : almadinah almnora
العمل/الترفيه : PLC PROGRAMMER
تاريخ التسجيل : 25/06/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الإثنين 13 أبريل 2009 - 0:24

انتظرت بعض الملاحظات عن المثال الذي معنا تستفسر عنه ولكني وجدت استفسارات (( هروبية )) لأمثلة أو أشياء أخرى قد تبعدنا عن الموضوع (( عموما مفيش مشكلة )) وإن شاء الله (( رغم إحباطي قليلا )) إلا أنني سوف أكمل إن شاء الله طمعا في الأجر يوم اللقاء من ملك السماوات والأرض

اخي العزیز والاستاذ الفاضل ابوروان
منذ ان قمت بشرح pid cotroll كنت في قمة السعاده لانه لاتوجد لدي اي معرفه عن الموضوع وانا شخصيا معك خطوه بخطوه في الشرح وجزاك الله خير عليه
وعند انتهاءك من شرح الميثال المذكور سوف احاول انشاء الله على الاجابه على السؤال الذي طرحته وهو التحكم في ضغط الماء في الشبكه على 2.2bar ورفع البرنامج الى احدى مواقع الرفع او الى بريدك الالكتروني
وجزاك الله خير على ما تقدمه واطلب منك الصبر وعدم الاحباط
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
metwally.mustafa
فريق أول
فريق أول
avatar

عدد الرسائل : 4221
العمر : 31
الموقع : Egypt
العمل/الترفيه : automation engineer
تاريخ التسجيل : 12/01/2009

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الإثنين 13 أبريل 2009 - 9:52

لقد شاهدت تطبيق هذا الانسر كثيرا لدينا فى العمل ولكننا لا نستخدم الplc
حيث توجد لدينا ماكينه تسمى ب coaster
هذه الماكينه تستخدم فى عمليات الغسيل للمنسوجات والتبييض
حيث انها تحتوى على عدد من العصارات
والتى لابد ان يكون شدد النسيج فيها متساوى عند كل العصارات
لاو ذا نستخدم ما يسمى بالميزان(الدانسر) والذى يتصل به مقاومه متغيره 10 خطوات حيث ان كل ميزان يتصل بمقاومه متغيره
وجميع المقاومات موصله بدائره تحديد reference voltage
حتى يتم تشغيل الانفرترات وشكرا
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
semsem
رائد
رائد
avatar

عدد الرسائل : 249
العمر : 38
تاريخ التسجيل : 05/04/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الإثنين 13 أبريل 2009 - 10:56

metwally.mustafa كتب:
لقد شاهدت تطبيق هذا الانسر كثيرا لدينا فى العمل ولكننا لا نستخدم الplc
حيث توجد لدينا ماكينه تسمى ب coaster
هذه الماكينه تستخدم فى عمليات الغسيل للمنسوجات والتبييض
حيث انها تحتوى على عدد من العصارات
والتى لابد ان يكون شدد النسيج فيها متساوى عند كل العصارات
لاو ذا نستخدم ما يسمى بالميزان(الدانسر) والذى يتصل به مقاومه متغيره 10 خطوات حيث ان كل ميزان يتصل بمقاومه متغيره
وجميع المقاومات موصله بدائره تحديد reference voltage
حتى يتم تشغيل الانفرترات وشكرا

الأخ العزيز

لا أظن أن الدائرة الموصل عليها الدانسر دائرة توحيد وإنما أظن أنها كارت PID ولكن إلكتروني كما ذكر أستاذنا PLCMan في البداية ولابد أنها ثلاث فرعات متوازية أحدها P والآخر I والثالث D ولابد من وجود Op-Amp على الكارت بأي شكل من أشكاله سواء 324 أو 148 أو 248 أو 348 أو 139 وغيرها كذلك لابد من وجود مقاومات متغيرة للضبط أو يتم الضبط عند بداية اختبار الماكينة ويتم تثبيت القيم بعد ذلك

وقد كان هذا التطبيق هو الشائع قبل استخدام Real time PID باستخدام PLC وميزة الموجودة داخل PLC طبعا هو إمكانية استخدام عدد كبير لا أعرف كم بالضبط لكن بدلا من استعمال كارت لكل خيط أو موتور يمكن استخدام وحدة CPU واحدة للعديد وبالتالي توفير في المكان وسهولة في الضبط فبدلا من ضبط Potentiometers كثيرة يكون هنا الضبط باستخدام أرقام والعملية هنا كما يوضحها أستاذنا أبسط بكثير وأكثر مرونة سواء في المعالجة أو التوظيف أو حتى التوليف التلقائي في بعض الحالات Autotuning

مع خالص التمنيات بالتوفيق وأرجو من أستاذنا الخروج من حالة الإحباط التي تحث عنها فنحن متابعون ونتعلم الكثير والكثير وإلى الأمام دائما وجزاكم الله خيرا
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الثلاثاء 14 أبريل 2009 - 13:34

بالفعل أخي العزيز فإن معظم أنظمة الدانسر المرتبط ب 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 وبقي لنا فقط أن نمرر البيانات من وإلى الدالة في البرنامج

_________________


أبـوروان


عدل سابقا من قبل PLCMan في الأربعاء 15 أبريل 2009 - 14:41 عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
4ever
رقيب أول
رقيب أول


عدد الرسائل : 32
العمر : 40
تاريخ التسجيل : 06/04/2009

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الثلاثاء 14 أبريل 2009 - 13:57

اسال الله العلى القدير ان يجازيك خير الجزاء على ما تقدم من علم نافع بكل اخلاص
و لك منا كل احترام و تقدير
و فى انتظار المزيد
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
mm
ملازم أول
ملازم أول


عدد الرسائل : 106
العمر : 28
تاريخ التسجيل : 25/09/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الأربعاء 15 أبريل 2009 - 14:00

السلام عليكم
عندما نستخدم fb41 لابد ان نستخدمه فى الوقت الحقيقى كما اشرت لنا وهذا يتم عن طريق داله ob53
ماهو المقصود بالوقت الحقيقى؟

__وهل انا ياقوم باستدعاء ob35 داخل ob1 مثل اى fb او fc ام لا ؟
__هل بنكتب هذا الامر فى ob1 ولا ob35
L 50.0
T DB60.DBD6
ونفس الكلام فى حاله استخدام ob100
SET //SET RLO
S DB60.DBX0.0 //Set COM_RESTART
R DB60.DBX0.1 //Reset MAN_ON
L 0.0 //Load value 0.0
T DB60.DBD72

2- هل المقصود ب complete restart هو عند فصل التيار عن ال plc واعاده التوصيل مره اخره بيتم تنفيذ هذه الاوامر مره واحده فقط ام لا ؟ ؟ ؟؟


maher
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

عدد الرسائل : 12315
العمر : 48
العمل/الترفيه : Maintenance manager
تاريخ التسجيل : 02/03/2008

مُساهمةموضوع: رد: دورة متقدمة في البرمجة S7   الأربعاء 15 أبريل 2009 - 14:40

maher كتب:
السلام عليكم
عندما نستخدم fb41 لابد ان نستخدمه فى الوقت الحقيقى كما اشرت لنا وهذا يتم عن طريق داله ob53
ماهو المقصود بالوقت الحقيقى؟

__وهل انا ياقوم باستدعاء ob35 داخل ob1 مثل اى fb او fc ام لا ؟
__هل بنكتب هذا الامر فى ob1 ولا ob35
L 50.0
T DB60.DBD6
ونفس الكلام فى حاله استخدام ob100
SET //SET RLO
S DB60.DBX0.0 //Set COM_RESTART
R DB60.DBX0.1 //Reset MAN_ON
L 0.0 //Load value 0.0
T DB60.DBD72

2- هل المقصود ب complete restart هو عند فصل التيار عن ال plc واعاده التوصيل مره اخره بيتم تنفيذ هذه الاوامر مره واحده فقط ام لا ؟ ؟ ؟؟


maher

الأخ العزيز maher

الوقت الحقيقي يقصد به أن تكون التغييرات بناء على قياسات متزامنة معها مثلا إذا كنت أستخدم جهاز تبريد على ثرموستات فالثرموستات يقيس درجة الحرارة الآن وبناء على هذا القياس يتم التبريد ولو كان هناك فرق بين وقت القياس ووقت اتخاذ القرار بالتبريد أو التسخين فإن نظام التحكم لن يكون ذا فائدة لهذا فالتزامن هذا هام جدا

ولكي يتم هذا باستخدام PLC فإنه لابد من وجود دورة قياس منتظمة لا تعتمد على عمليات البرمجة الأخري فلابد أن يتم ذلك عن طريق Interrupt وهو قطع للتسلسل الطبيعي للبرنامج في أوقات ثابتة

ويتم هذا كما أشرنا عن طريق أحد بلوكات Cyclic interrupts وهي بين OB30,...,OB40 ومعظم CPU's لها بلوك واحد فقط وقد درج الجميع على استخدام OB35

والوقت الدوري له التلقائي هو 100 مللي ثانية أي أنه يتم تنفيذ محتوياته كل 100 مللي ثانية بغض النظر عن عمل البرنامج الأصلي والذي يحتويه OB1 سواء بشكل مباشر أو بشكل ضمني

وهذا البلوك يتم فقط إنشاؤه في البرنامج من Insert --> S7 Block --> Organization block ثم اختيار الاسم OB35 ثم عمل داونلود له على CPU وأي OB مهما كان رقمه (( بغض النظر عن محتوياته )) بمجرد عمل توليد له وداونلود إلى CPU فهو يتم تنفيذه حتى لو كان فارغا ولا يتم استدعاؤه داخل أي دالة أخرى فهو يتم تنفيذه تلقائيا ولكن يمكننا تغييرمحتوياته

أما المقصود ب COM_RST فهو لمنظومة PID حيث يتم تصفير كل من LMN , LMN_P , LMN_I , LMN_D , LMN_LLM,LMN_HLM
وبدء المنظومة ((((( فقط ))))) ولا علاقة بأي شئ آخر بذلك وهذا يمكن أن يتم بشكل عادي جدا أثناء تنفيذ البرنامج ولكن هذا في منتهى الخطورة فتخيل مثلا أنك تتعامل مع منظومة ضغط وكان الضغط عالي جدا وكان تصرف المنظومة هو خفض سرعة الضاغط لتقليل الضغط وقمت أنت بعمل COM_RST فإن الضاغط سوف يعمل بالوضع الأولي وقد يحدث ((( انفجار )))

أما داخل OB1 , OB35 ,OB100 فيمكنك كتابة ما تريد بالشكل الذي تريده وقد ذكرنا هذا في الدورات الاساسية في أنواع البلوكات وليس المجال هنا لذلك

أرجو أن أكون قد أوضحت وجزاكم الله خيرا على حسن المتابعة وعلى حرصكم على ((( جودة ))) التحصيل

_________________


أبـوروان
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
 
دورة متقدمة في البرمجة S7
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 3 من اصل 18انتقل الى الصفحة : الصفحة السابقة  1, 2, 3, 4 ... 10 ... 18  الصفحة التالية

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى التحكم الآلي والإلكترونيات :: منتديات الحاكمات المنطقية PLC :: منتدى الدورات التدريبية PLC-
انتقل الى: