| دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 | |
|
+177محمد ألبحار دريد كمال Mourad Fakir حسني إمام osamarady فراس يحيى التقني المتخصص marocautomatique hiderznkna حامد هادي nacer ENG_ELDABLY خليل خليل ابراهيم azzouz Adam Hr سبها الحاج احمد عبد الخالق khmo AHMAD SAEED عماد جواد عبيد imad70 ابراهيم عبد الجيد radouan baskateur31 MOKHTAR nour.abderrahman احمد جمال محروس حورس plctxp1 bouridir mjalil80 محمد رياض ياسين Sallam ATHEER mohamed abdalla khaledmosa download master isam yemna mohamed antar fechlay ramy tech k30 Hassan Ahmed Hassan enhassan abdelouahab007 eng_mo7amed_3ly 0-1 إيمان محمد عيسى الحالم yahiaadam ahmed ag tamzargot79 rinom23 وائل عبد العال tamer sobhy ENG.SAMER SALAH التوأمان سعد عوني Hesham alshak وليد محمد على توفبق mohanad aljanaby abbas h a j ttmsm ammine ميدو ايهاب رمضان مهندس محمد رفعت حاتم حسيني سيداحمد2010 الفقير لله mohamedali247 ehab_abdelaleem kasimalbasry ehabmansi eng/walaa abdelaty hyan.rh pizomx hamadaaskar diaaeldin plctxp mr/slc500 neoala gamalgold boy abdo ابوهبه electric1500 magsod salah00 ahmed fahmy ramiou مهندس عباس sharkfish77 احمد سالم lotfy esaed ETEC awny alaa ali Mohamed Emara مقداد العاني محمد مليطان adder kingmohamed eng_nassar msaa60 kimo_6277 أحمدعبدالحي eng_zaiani amr ezzat elwan سيد زايد messaoud855 أحمد فاروق abo hozifa محمداحمدسعد محمد الزوكاني يوسف توفيق hany_omar SHERIEF MANDOR abdu72 hamada saied farouk bachair المنوفي man3660 alak21a zitamov محمد شعبان بدرى سعد السامرائي امجد adnan hashim marrro HOCINECOM norhan2001 noralale abo gamel ابو هبة said63 engmohallam هشام طه محمد أبو خالد مصطفى mhmd 4ever walidg شرشابيل nod22 الحادي Fahd Gumaan Al-Mansori mohsaid1111 حمزة81 nascom Alaa.Alzoby محمد عبدالقوي m_elshatr denger741 metwally.mustafa zeribi mm fahmy-mansour علىى sharif74 magdy99 moutaz ebenazzouz احمد حموده yousif_gc3 bassel almouie mone1 walidpcd youssefhobna GALALSAIF boualem_gh ابو علاء RAMA ahmed_h semsem anasabsi aliali PLCMan 181 مشترك |
|
هل تشعر أنه يمكن أن نلحق بمن سبقنا في مجال التحكم الآلي ؟ | نعم بالتأكيد | | 75% | [ 886 ] | ربما يوما ما | | 16% | [ 186 ] | لا أظن الأمر بهذه البساطة | | 8% | [ 97 ] | لا يمكن | | 1% | [ 8 ] |
| مجموع عدد الأصوات : 1177 | | |
|
كاتب الموضوع | رسالة |
---|
anasabsi جندي
عدد الرسائل : 4 العمر : 40 تاريخ التسجيل : 20/04/2008
| موضوع: مشكور يا مهندس حسن الثلاثاء 22 أبريل 2008 - 2:49 | |
| بعد اطلاعي السريع على محتوى الدورة وجدت انها ممتازة ومفصلة ويبدو انها اخذت وقت منك , وهذا دلالة على الجدية لديك
كما اخبرتك سابقا انا كمهندس صيانة احتاج لمثل هذة المعلومات
و انا في انتظار تكملة الدورة | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم -10 Conversion Instructions الأربعاء 23 أبريل 2008 - 15:54 | |
| هذه العمليات تمكننا من تحويل الأرقام من صيغة إلى أخرى والصيغ الأهم التي تقوم عليها كل أنواع الحسابات هي : - الأرقام الصحيحة Integer numbers 16 bits - الأرقام الصحيحة المضاعفة الدقة Double integers 32 bits - الأرقام العشرية Real numbers - الأرقام المعبر عنها بكود Binary coded decimal BCD BTI BCD to Integerوهذا الأمر يقوم بتحويل محتويات Accumulator-1 من صيغة BCD مكون من 3 أرقام تتراوح بين 000 , 999 إلى رقم صحيح مثلا : الرقم 689 يكون كالآتي في نظام BCD كل رقم يمثل بأربع خانات : 1001 - 1000 - 0110 - 0000 وعند التحويل إلى الصيغة Integer يكون كالآتي : 0001 - 1011 - 0010 - 0000 مثال : L MW10 //Load the BCD number into ACCU 1-L. BTI //Convert from BCD to integer; store result in ACCU 1-L. T MW20 //Transfer result (integer number) to MW20 ITB Integer (16-Bit) to BCDوهذا الأمر يقوم بالعملية العكسية حيث يحول الرقم من الصورة الصحيحة إلى الصورة BCD مثال : L MW10 //Load the integer number into ACCU 1-L. ITB //Convert from integer to BCD (16-bit); store result in ACCU 1-L. T MW20 //Transfer result (BCD number) to MW20 BTD BCD to Integer-32 bitsهذا الأمر يقوم بتحويل رقم 32 خانة من صيغة BCD إلى الصيغة Double integer وتكون القيمة القصوى للرقم BCD هي : 9,999,999 موجبة أو سالبة كالآتي : الرقم 235648- يكون : 1000-0100-0110-0101-0011-0010-0000-1111 وعند تحويله إلى صحيح : 0000-1000-1000-1001-0011-0000-0000-1000 مثال : L MD10 //Load the BCD number into ACCU 1. BTD //Convert from BCD to integer; store result in ACCU 1. T MD20 //Transfer result (double integer number) to MD20
ITD Integer - 16 Bit to Double Integer - 32-Bitوهو يقوم بتحويل محتويات Accumulator-1 من صورة الصحيح 16 خانة إلى 32 خانة وذلك بإضافة أصفار 0000000000000000 إلى الخانات من 16 وحتى 31 في Accumulator-1 ونقل خانة الإشارة من الخانة 16 إلى الخانة 32 مثال : L MW12 //Load the integer number into ACCU 1. ITD //Convert from integer (16-bit) to double integer (32-bit); store result in ACCU 1. T MD20 //Transfer result (double integer) to MD20 DTB Double Integer (32-Bit) to BCDوهو يقوم بتحويل الأرقام من صحيحة ذات دقة مضاعفة 32 خانة إلى الصورة BCD مثال : L MD10 //Load the 32-bit integer into ACCU 1. DTB //Convert from integer (32-bit) to BCD, store result in ACCU 1. T MD20 //Transfer result (BCD number) to MD20
DTR Double Integer - 32-Bit to Floating-Point - 32-Bit IEEE-FPوهو يقوم بتحويل محتويات Accumulator-1 من الصيغة الصحيحة دقة مضاعفة إلى الصورة العشرية بالشكل الآتي : x.ye+/-z+/- حيث +/- قبل x هي الإشارة العامة للرقم أما x فهو الجزء الصحيح من الرقم و y الجزء العشري و +/- الثانية هي إشارة الأس و z هي أس الرقم 10 بعد اختصار الرقم مثلا : 10245.5- تمثل كالآتي : 1.02455e+4- مثال : L MD10 //Load the 32-bit integer into ACCU 1. DTR //Convert from double integer to floating point (32-bit IEEE FP); store result in ACCU 1. T MD20 //Transfer result (BCD number) to MD20 INVI Ones Complement Integer -16-Bitهذا الأمر يقوم بتحويل محتويات Accumulator-1 إلى المعكوس الأحادي للمحتويات وتخزين النتيجة في Accumulator-1 والمعكوس الأحادي بكل بساطة هو قلب كل 0 إلى 1 وكل 1 إلى 0 مثلا : الرقم : 1010-0011-1100-0100 يكون : 0101-1100-0011-1011 مثال : L IW8 //Load value into ACCU 1-L. INVI //Form ones complement 16-bit. T MW10 //Transfer result to MW10
INVD Ones Complement Double Integer -32-Bitوهو مثل الأمر السابق تماما ولكن على مستوى 32 خانة Double integer مثال : L ID8 //Load value into ACCU 1. INVD //Form ones complement (32-bit). T MD10 //Transfer result to MD10
NEGI Twos Complement Integer -16-Bitوهو يقوم بتحويل محتويات Accumulator-1 إلى المعكوس الثنائي للرقم وتخزين المحتويات في Accumulator-1 والمعكوس الثنائي بكل بساطة هو المعكوس الأحادي + 1 مثلا الرقم : 1011-1001-0001-1010 الأحادي : 0100-0110-1110-0101 الثنائي : 0101-0110-1110-0101 مثال : L IW8 //Load value into ACCU 1-L. NEGI //Form twos complement 16-bit. T MW10 //Transfer result to MW10
NEGD Twos Complement Double Integer -32-Bitوهو نفس الأمر السابق ولكن على مستوي 32 خانة رقم صحيح دقة مضاعفة NEGR Negate Floating-Point Number -32-Bit, IEEE-FPفي هذا الأمر يقوم بعكس إشارة الرقم العشري ( ذو العلامة العشرية ) إذا كانت + تكون - والعكس مثال : L ID8 //Load value into ACCU 1 example: ID 8 = 1.5E+02 NEGR //Negate floating-point number (32-bit, IEEE-FP); stores the result in ACCU 1. T MD10 //Transfer result to MD10 example: result = -1.5E+02
نكتفي بهذا القدر ونكمل باقي أوامر التحويل المرة القادمة إن شاء الله | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم -11 استكمال Conversion Instructions السبت 26 أبريل 2008 - 8:35 | |
| CAW Change Byte Sequence in ACCU 1-L 16-Bitوهذا الأمر يقوم بتبديل وضع ترتيب خانات Accumulator-1 الكلمة الأولى حيث أن Accumulator-1 يتكون من عدد كلمتين عليا وسفلى ( High and Low ) وكل كلمة بها مجموعتين Bytes عليا وسفلى وإذا نظرنا إلى Accumulator-1 بهذا المفهوم فهو يتكون من 4 Bytes يكون ترتيبها كالآتي : ACCU1-H-H , ACCU1-H-L , ACCU1-L-H , ACCU1-L-L كل مجموعة تتكون من 8 خانات bits وهذا الأمر يقوم بتبديل ACCU1-L-H , ACCU1-L-L مع الإبقاء على ACCU1-H-H , ACCU1-H-L كما هي مثلا : 1101-0010-0000-1010 بعد اسصتعمال CAW تكون : 1101-0010-1010-0000 مثال : L MW10 //Load the value of MW10 into ACCU 1. CAW //Reverse the sequence of bytes in ACCU 1-L. T MW20 //Transfer the result to MW20 CAD Change Byte Sequence in ACCU 1 32-Bitوهذا الأمر يقوم يتبديل ترتيب Accumulator-1 على مستوى Words , Bytes كالآتي : إذا كان الترتيب الأصلي : ACCU1-H-H , ACCU1-H-L , ACCU1-L-H , ACCU1-L-L يكون الترتيب بعد CAD ACCU1-L-L , ACCU1-L-H , ACCU1-H-L , ACCU1-H-H مثلا إذا كانت محتويات Accumulator-1 : 0010-1111-1011-0001 تكون بعد استعمال CAD كالآتي : 0001-1011-1111-0010 مثال : L MD10 //Load the value of MD10 into ACCU 1. CAD //Reverse the sequence of bytes in ACCU 1. T MD20 //Transfer the results to MD20 RND Roundهذا الأمر يعتبر محتويات Accumulator-1 رقم عشري ويقوم بتحويل محتوياته إلى أقرب رقم صحيح وإذا كان الكسر في نصف المسافة بين رقمين فردي وزوجي فإن التقريب يكون للرقم الزوجي مثلا الرقم : 100.5 يتم تقريبه إلى 100 والرقم 100.5- يتم تقريبه إلى 100- مثال : L MD10 //Load the floating-point number into ACCU 1-L. RND //Convert the floating-point number (32-bit, IEEE-FP) into an integer (32-bit) and round off the result. T MD20 //Transfer result (double integer number) to MD20 TRUNC Truncateوهذا الأمر يقوم بتحويل الأرقام العشرية دقة 32 خانة إلى رقم صحيح دقة مضاعفة 32 خانة وذلك بحذف الكسر تماما مثلا الرقم 100.7 يصبح 100 والرقم 150.9- يصبح 150- مثال : L MD10 //Load the floating-point number into ACCU 1-L. TRUNC //Convert the floating-point number (32-bit, IEEE-FP) to an integer (32-bit) and round result. Store the result in ACCU 1. T MD20 //Transfer result (double integer number) to MD20 RND+ Round to Upper Double Integerوهذا الأمر يعتبر محتويات Accumulator-1 رقم عشري ويقوم بتقريب المحتويات إلى أصغر رقم صحيح أكبر من أو يساوي الرقم العشري وتخزين تلك المحتويات في Accumulator-1 مثلا : الرقم 140.5 يكون 141 والرقم 141.7- يكون 141- مثال : L MD10 //Load the floating-point number (32-bit, IEEE-FP) into ACCU 1-L. RND+ //Convert the floating-point number (32-bit, IEEE-FP) to an integer (32-bit) and round result. Store output in ACCU 1. T MD20 //Transfer result (double integer number) to MD20 RND- Round to Lower Double Integerوهذا الأمر أيضا يعتبر محتويات Accumulator-1 رقم عشري ويقوم بتحويلها إلى أكبر رقم صحيح أصغر من أو يساوي الرقم العشري وتخزين الناتج في Accumulator-1 مثلا الرقم 120.4 يكون 120 والرقم 140.3- يكون 141- مثال : L MD10 //Load the floating-point number into ACCU 1-L. RND- //Convert the floating-point number (32-bit, IEEE-FP) to an integer (32-bit) and round result. Store result in ACCU 1. T MD20 //Transfer result (double integer number) to MD20
ونستكمل إن شاء الله في المرات التالية | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم 12 - Comparison instructions الخميس 1 مايو 2008 - 12:13 | |
| المقارنة Comparison instructionsهذه الأوامر كلها تقارن محتويات ACCU1 , ACCU2 وتغيير RLO بما يتناسب مع النتيجة كما يلي في الشرح التالي : يتم استعمال العلامات الآتية للمقارنة كالآتي : علامات المقارنة Comparison signs == ACCU1 is equal to ACCU2 <> ACCU1 is not equal to ACCU2 > ACCU1 is greater than ACCU2 < ACCU1 is less than ACCU2 >= ACCU1 is greater than or equal to ACCU2 <= ACCU1 is less than or equal to ACCU2
كذلك يتم تحديد نوع المقارنة من حيث دقة الرقم عن طريق حرف يكتب بعد علامة المقارنة I , D , R كالآتي : I Compare Integer 16-Bit D Compare Double Integer 32-Bit R Compare Floating-Point Number 32-Bit
مقارنة الأرقام الصحيحة ذات الدقة 16 خانة Compare Integer 16-Bit - ? I
ٍFormat ==I, <>I, >I, <I, >=I, <=I
وهنا تتم مقارنة محتويات ACCU1 , ACCU2 في صورة رقم صحيح 16 خانة وتغيير RLO طبقا للنتيجة مثال : L MW10 //Load contents of MW10 (16-bit integer). L IW24 //Load contents of IW24 (16-bit integer). >I //Compare if ACCU 2-L (MW10) is greater (>) than ACCU 1- L (IW24). = M 2.0 //RLO = 1 if MW10 > IW24
مع ملاحظة أن محتويات RLO تتغير كالآتي : إذا تحقق الشرط المطلوب تكون محتويات RLO هي - 1 إذا لم يتحقق الشرط تكون محتويات RLO هي - 0 أيا كانت العلاقة والشرط مقارنة الأرقام الصحيحة ذات الدقة المضاعفة 32 خانة Compare Double Integer 32-Bit Format ==D, <>D, >D, <D, >=D, <=D
وهنا تتم مقارنة محتويات ACCU1 , ACCU2 في صورة رقم صحيح ذو دقة مضاعفة 32 خانة وتغيير RLO طبقا للنتيجة مثال : L MD10 //Load contents of MD10 (double integer, 32 bits). L ID24 //Load contents of ID24 (double integer, 32 bits). >D //Compare if ACCU 2 (MD10) is greater (>) than ACCU 1 (ID24). = M 2.0 //RLO = 1 if MD10 > ID24
مقارنة الأرقام العشرية ذات الدقة 32 خانة Compare Floating-Point Number 32-Bit Format ==R, <>R, >R, <R, >=R, <=R
وهنا تتم مقارنة محتويات ACCU1 , ACCU2 في صورة رقم عشري ذو دقة 32 خانة وتغيير RLO طبقا للنتيجة مثال : L MD10 //Load contents of MD10 (floating-point number). L 1.359E+02 //Load the constant 1.359E+02. >R //Compare if ACCU 2 (MD10) is greater (>) than ACCU 1 (1.359-E+02). = M 2.0 //RLO = 1 if MD10 > 1.359E+02
| |
|
| |
anasabsi جندي
عدد الرسائل : 4 العمر : 40 تاريخ التسجيل : 20/04/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الإثنين 5 مايو 2008 - 0:16 | |
| السلام عليكم
يعطيك العافية يا مهندس حسن
انا حابب اشكرك اولا
ثانيا عندي لك سؤال - كيف الطريقة لتحميل برنامج من PLC الى الكمبيوتر عن طريق برنامج simatic manger ?? و السؤال مهم علشان اعمل Backup لجميع البرامج الموجودة عندي في المصنع , علما ان كل plc الموجودة في المصنع هي S300
انتظر الاجابة و شكرا | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الإثنين 5 مايو 2008 - 4:14 | |
| - anasabsi كتب:
- السلام عليكم
يعطيك العافية يا مهندس حسن
انا حابب اشكرك اولا
ثانيا عندي لك سؤال - كيف الطريقة لتحميل برنامج من PLC الى الكمبيوتر عن طريق برنامج simatic manger ?? و السؤال مهم علشان اعمل Backup لجميع البرامج الموجودة عندي في المصنع , علما ان كل plc الموجودة في المصنع هي S300
انتظر الاجابة و شكرا الأخ anasabsi شكرا على حسن المتابعة وإليك أخي كيفية تحميل البرامج من PLC إلى الكمبيوتر Uploading أولا افتح Simatic manager ثم أغلق أي Projrct مفتوح ليكون مثل الصورة التالية : بعد ذلك قم بإنشاء مشروع جديد new project مثل الصورة التالية : بعد ذلك قم بكتابة اسم المشروع وليكن machine1 في المكان name وتحديد مكان التخزين مثل الصورة التالية سوف يتم إنشاء مشروع خالي باسم machine1 كما بالصورة التالية : بعد ذلك من قائمة PLC اختر Upload station to PG كما في الصورة التالية : سوف يظهر مربع حوار به أنواع الاتصالات مع CPU مثل الصورة الآتية , اختر نوع الاتصال سواء كان MPI أو PROFIBUS ثم اضغط VIEW سوف تظهر قائمة بأنواع CPU الموجودة Online ( في حالة CPU واخدة فقط ليست على شبكة سوف تظهر هي فقط ) اضغط على الوحدة المطلوب تحميل محتوياتها ثم Upload سوف تبدأ عمليات التحميل بعد ذلك راقب الرسائل التي تظهر وأجب عليها بالشكل المناسب حتى تنتهي عملية التحميل ويظهر لك المشروع بالشكل الآتي : وهكذا يكون قد تم تحميل البرنامج وتخزينه بالاسم الذي اخترته سابقا في مثالنا هذا machine1 أرجو أن يفيد هذا وإذا وجدت أي صعوبة يمكنك فتح البرنامج في الوقت الذي يناسبك وأكون معك على الشات على هذا المنتدى حتى تتم العملية مع التمنيات بالتوفيق | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم -13 ( استكمال الدرس رقم -6 ) Bit logic operations الخميس 8 مايو 2008 - 14:11 | |
| والآن قد آن الأوان لنستكمل ما كنا قد تركناه من عمليات منطقية في الدرس رقم-6 والتي أشار إليها أحد الزملاء وقتها
أولا : العمليات المتداخلة Nested operations
فليست كل العمليات توصيل توالي مطلق أو توصيل توازي مطلق وإنما في معظم الأحيان هناك تداخل بين العمليات يستدعي الخلط بين هذا وذاك مثل المثال التالي :
ففي المثال السابق هناك عملية AND بين عمليتي OR أساسيتين ونبدأ بسرد العمليات
O And before Or
والصيغة العامة لها هي : O في هذه يتم عمل ORing على نتائج عمليات ANDing سابقة ويتضح هذا من المثالى التالي :
A( And with Nesting Open
والصيغة العامة لها : A(
وهذا الأمر يقوم بعمل ANDing لنتائج عمليات ORing سابقة مثل المثال التالي :
AN( And Not with Nesting Open
ولهذا الأمر نفس التفصيلات الخاصة ب A( تماما ومثله ما يلي
O( Or with Nesting Open
ON( Or Not with Nesting Open
X( Exclusive Or with Nesting Open
XN( Exclusive Or Not with Nesting Open
ويتم في النهاية غلق أي تداخل فيه قوس مفتوح مثل أي لغة برمجة بغلق هذا القوس بالأمر التالي :
) Nesting Closed
ويجب ملاحظة أن أقصى عدد من تداخل الأقواس هو 7 ولابد أن يكون عدد مرات الفتحي ) مساويا لعدد مرات الغلق ( وإلا فسوف يعطي البرنامج خطأ في التنفيذ
والآن إلى أوامر اكتشاف حافة إشارة ولنفهم الأمر ننظر أولا إلى الصورة لنعرف ما المقصود بحافة الإشارة :
فهنا عندنا الحافة الأولى وهي عند الانتقال من 0 إلى 1 وتسمى Positive edge أو الحافة الموجبة والثانية عند الانتقال من 1 إلى 0 وتسمى Negative egde الحافة السالبة وهناك أمر لاكتشاف هذا التغير كالآتي :
FN Edge Negative
وهو لاكتشاف الحافة السالبة ولكي نفهم الأداء الوظيفي مع التنفيذ المثال التالي على كيفية التنفيذ :
ومن ملاحظة هذا المثال فإن الخرج يكون موجود لدورة تنفيذ للبرنامج فقط وبهذا يكون تقريبا في شكل Impulse أو حسب طول دورة تنفيذ البرنامج
FP Edge Positive
وهو لاكتشاف الحافة الموجبة ولكي نفهم الأداء الوظيفي مع التنفيذ المثال التالي على كيفية التنفيذ :
_________________ أبـوروان
عدل سابقا من قبل PLCMan في السبت 27 فبراير 2010 - 13:13 عدل 1 مرات | |
|
| |
semsem رائد
عدد الرسائل : 249 العمر : 45 تاريخ التسجيل : 05/04/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الخميس 15 مايو 2008 - 15:25 | |
| بارك الله فيك نريد بعض الأمثلة العملية والتطبيقات حتى لا يلتبس علينا الأمر بكثرة الكلام النظري وجزاكم الله خيرا | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الخميس 15 مايو 2008 - 17:31 | |
| - semsem كتب:
- بارك الله فيك
نريد بعض الأمثلة العملية والتطبيقات حتى لا يلتبس علينا الأمر بكثرة الكلام النظري وجزاكم الله خيرا نحن دائما في انتظار مقترحاتكم ونرجو ألا تبخلوا بها علينا للمزيد من فعالية المنتدى وعموم الفائدة انتظرونا في أقرب فرصة بالتطبيقات المطلوبة وجزاكم الله خيرا المدير | |
|
| |
anasabsi جندي
عدد الرسائل : 4 العمر : 40 تاريخ التسجيل : 20/04/2008
| موضوع: سؤال على الماشي السبت 17 مايو 2008 - 22:38 | |
| سلام : كيفك يا مهندس حسن و بشكرك على نشاطك الدائم انا ما عملت تحميل البرنامج من plc لحد الآن ولكن لما ابدا عمل راح اتواصل معك ان شاء الله
بس حابب اتأكد هل في خطر على البرنامج الموجود على plc اذا سحبناه على الكمبيوتر ؟؟؟؟
عندي كمان سؤال صغير ... ما هي احسن انواع plc هل هي siemens ولا omron ولا غيرها ؟؟؟؟
وشكرا | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الأحد 18 مايو 2008 - 5:49 | |
| - anasabsi كتب:
- سلام :
كيفك يا مهندس حسن و بشكرك على نشاطك الدائم انا ما عملت تحميل البرنامج من plc لحد الآن ولكن لما ابدا عمل راح اتواصل معك ان شاء الله
بس حابب اتأكد هل في خطر على البرنامج الموجود على plc اذا سحبناه على الكمبيوتر ؟؟؟؟
عندي كمان سؤال صغير ... ما هي احسن انواع plc هل هي siemens ولا omron ولا غيرها ؟؟؟؟
وشكرا أخي العزيز لا يوجد أي خطورة مطلقا على البرنامج إذا اتبعت التعليمات السابقة واعلم أخي العزيز أن برنامج Simatic manager دائما يطلب التأكيد عند الكتابة على PLC وأطلب منك في المرحلة الأولى قراءة الرسائل التي يعطيها لك البرنامج جيدا قبل المضي في التنفيذ أما عن أفضل أنواع PLC فهذا يعتمد بالدرجة الأولى على التطبيق فكلما كان حجم التطبيق أكبر واحتاج الأمر لعمليات حسابية معقدة وكثيرة وأنظمة تحكم زادت الحاجة إلى PLC أكبر وأكثر دقة وأكثر إمكانيات ومرونة في عمليات البرمجة وربما تكون أصغر PLC في السوق هي الأنسب لعملية معينة فطبقا للتطبيق نختار نوع PLC أما لماذا اخترت سيمنس للبدء في هذا المنتدى فهذا لأسباب : منها الانتشار سواء الأنواع القديمة S5 أو الحديثة S7 ومنها الإمكانيات العالية التي سوف تلقي الضوء على ما قد نجده أولا نجده في الأنواع الأخرى ومنها أنني أتكلم حاليا عن ما أعلم أكثر لكي يكون الأمر أكثر فائدة فبالنسبة لي فأنا والحمد لله عملت بأنواع كثيرة ولكن النوع المفضل عندي هو سيمنس وهذا ليس عيب في الآخرين ولكن كما قلت لك حسب التطبيق وقد نفذت خطوط إنتاج بالكامل ب LG وكذلك بميتسوبيشي وغيرها ولكن S7 بالنسبة لي تعتبر هي المقدمة مع احترامي الشديد للآخرين ومازال العيب الرئيسي عند سيمنس هو ارتفاع الأسعار ولو تم علاج هذا لكان للأمر وضع آخر كذلك من الأسباب استقرار النظام وقلة المشاكل في PLC نفسها وفي هذا OMRON , ALLEN BRADELY عموما دراسة أي مشروع هي التي تحدد ما سوف نحتاجه تماما أرجو أن أكون قد أوضحت وبارك الله فيك وأنار طريقك بالعلم النافع دائما | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم 14 : تعليمات العدادات Counter instructions السبت 24 مايو 2008 - 11:39 | |
| والآن لنتعرف معا كيف نتعامل مع Counters أو العدادات وبنظرة سريعة فإن العمليات التي تتم على العدادت هي إما العد لأعلى أو العد لأسفل أو تحميل القيمة التي وصل إليها العداد إما في شكل BCD أو Binary أو ضبط قيمة العداد على قيمة معينة أو تصفير العداد وسوف نستعرض ذلك بالتفصيل في الأسطر القليلة التالية : FR Enable Counterوهو يعني البدء في تشغيل العداد عند تحقق الشرط الذي يسبقه وليس المقصود هنا هو بدء العد وإنما يكون العداد جاهز لأي من العمليات التي تتم عليه مثال : A I 2.0 //Check signal state at input I 2.0 FR C3 //Enable counter C3 when RLO transitions from 0 to 1 L Load Current Counter Value into ACCU 1أي تحميل محتويات العداد الحالية داخل ACCU1-L بعد أن يتم نقل محتويات ACCU1 بالكامل إلى ACCU2 مثال : L C3 //Load ACCU 1-L with the count value of counter C3 in binary format
الشكل التالي يوضح كيفية نقل البيانات من العداد إلى ACCU1 LC Load Current Counter Value into ACCU 1 as BCDوهو يقوم بنفس عمل الأمر السابق ولكن ينقل البيانات من العداد المشار إليه إلى ACCU1 في شكل BCD مثال : LC C3 //Load ACCU 1-L with the count value of counter C3 in binary coded decimal format
والشكل التالي يوضح كيفية نقل البيانات من العداد C3 إلى ACCU1 في شكل BCD R Reset Counterوهو يقوم بتحميل " 0 " داخل العداد المشار إليه عند تحقق الشرط المطلوب مثال : A I 2.3 //Check signal state at input I 2.3 R C3 //Reset counter C3 to a value of 0 if RLO transitions from 0 to 1
S Set Counter Preset Valueيقوم بتحميل العداد بقيمة للعد من ACCU1-L بحيث تكون في صورة BCD عند تحقق الشرط المطلوب A I 2.3 //Check signal state at input I 2.3 L C#3 //Load count value 3 into ACCU 1-L S C1 //Set counter C1 to count value if RLO transitions from 0 to 1
CU Counter Upأي زيادة قيمة العداد " 1 " عند تحقق الشرط طالما أن قيمة العداد أقل من " 999 " وعند الوصول إلى الرقم " 999 " في العداد لا يوجد أي تأثير لهذا الإجراء ويتوقف العداد عن العد لأعلى مع خروج " 1" على خانة OV - Overflow على خانات مراقبة نتائج العمليات Status bit register مثال : A I 2.1 //If there is a positive edge change at input I 2.1 CU C3 //Counter C3 is incremented by 1 when RL0 transitions from 0 to 1 CD Counter Downوهو يقوم بإنقاص محتويات العداد " 1 " عند تحقق الشرط المطلوب وطالما قيمة العداد أكبر من " 0 " فإذا وصلت قيمة العداد إلى الصفر فإن العداد يتوقف عن النقصان ولا يعد أبدا قيم سالبة مثال : L C#14 //Counter preset value A I 0.1 //Preset counter after detection of rising edge of I 0.1 S C1 //Load counter 1 preset if enabled A I 0.0 //One count down per rising edge of I 0.0 CD C1 //Decrement counter C1 by 1 when RL0 transitions from 0 to 1 depending on input I 0.0 AN C1 //Zero detection using the C1 bit Q 0.0 //Q 0.0 = 1 if counter 1 value is zero=
| |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم 15 : تعليمات التحكم المنطقي Logic Control Instructions الخميس 29 مايو 2008 - 12:19 | |
| كما اتفقنا سابقا فإن ترتيب تنفيذ البرنامج يكون بالتتابع طبقا للكتابة أي بالترتيب ما لم يكن هناك توجيه مشروط للبرنامج لينفذ شئ معين وهو ما نتحدث عنه هنا حيث يحدث قطع للتسلسل الطبيعي للبرنامج بناء على نتيجة شرط معين ليتم توجيه التنفيذ إلى مكان آخر يتم تحديده عن طريق عنوان لهذا المكان الجديد الذي يذهب إليه وهنا لدينا عمليتان هما Jump و Loop وفي الحلتين يتم استخدام العنوان الذي يتم الذهاب إليه عن طريق Label مكون من مجموعة من الحروف والأرقام عددها أربعة على أن تبدأ بحرف ويعتمد الأمران على نتيجة العملية المنطقية السابقة للتنفيذ RLO وفيما يلي التفاصيل JU Jump Unconditional
Format JU jump label jump label : Symbolic name of jump destination
في هذه العملية يتم قطع التسلسل الطبيعي لتنفيذ البرنامج والانتقال إلى مكان label دون النظر إلى نتيجة أي عملية منطقية مع ملاحظة ضرورة وجود الأمر JU و label في نفس block مثال : A I 1.0 A I 1.2 JC DELE //Jump if RLO=1 to jump label DELEL MB10 INC 1 T MB10 JU FORW //Jump unconditionally to jump label FORW DELE: L 0 T MB10 FORW: A I 2.1 //Program scan resumes here after jump to jump label FORW
JL Jump to Labels
Format JL jump label jump label Symbolic name of jump destination. وهو ما يطلق عليه الوثب المتعدد multiple jump حيث يتم تحديد قيمة رقم بين 0 و 256 وهو الذي يحدد نتيجة عملية الوثب حيث أنه بناء على محتويات ACCU1-L-L Byte يتم تحديد وجهة الوثب وعند كتابة هذا الأمر فإنه يتم كتابته على عدة سطور السطر الأول يكون JL متبوعا بلرمز label للمكان الذي يتم الانتقال إليه ويكون السطر التالي JU متبوعا برمز المكان الذي يتم الانتقال إليه في حالة محتويات ACCU1-L-L بصفر والثالث JU متبوعا برمز المكان الذي يراد الانتقال إليه إذا كانت المجتويات 1 وهكذا حتى يكون السطر الأخير أقل من الحد الأقصى للمحتويات الافتراضية ب 1 وسوف يوضح المثال التالي أكثر : L MB0 //Load jump destination number into ACCU 1-L-L JL LSTX //Jump destination if ACCU 1-L-L > 3 JU SEG0 //Jump destination if ACCU 1-L-L = 0 JU SEG1 //Jump destination if ACCU 1-L-L = 1 JU COMM //Jump destination if ACCU 1-L-L = 2 JU SEG3 //Jump destination if ACCU 1-L-L = 3 LSTX: JU COMM SEG0: * //Permitted instruction * JU COMM SEG1: * //Permitted instruction * JU COMM SEG3: * //Permitted instruction * JU COMM COMM: * //Permitted instruction
* JC Jump if RLO = 1 Format JC jump label jump label Symbolic name of jump destination
وفي هذا الأمر بناء على نتيجة RLO فإذا كانت 1 يتم الانتقال إلى المكان المحدد ب label ويجوز أن يكون الانتقال إلى مكان سابق أو مكان تالي بشرط ان يكون الانتقال داخل نفس block مثال : A I 1.0 A I 1.2 JC JOVR //Jump if RLO=1 to jump label JOVR L IW8 //Program scan continues here if jump is not executed T MW22 JOVR: A I 2.1 //Program scan resumes here after jump to jump label JOVR
JCN Jump if RLO = 0
Format JCN jump label jump label Symbolic name of jump destination وفي هذا الأمر يتم الانتقال في حالة نتيجة RLO بصفر وليس 1 وله نفس مواصفات الأمر السابق مثال : A I 1.0 A I 1.2 JCN JOVR //Jump if RLO = 0 to jump label JOVR L IW8 //Program scan continues here if jump is not executed T MW22 JOVR: A I 2.1 //Program scan resumes here after jump to jump label JOVR
JCB Jump if RLO = 1 with BR Format JCB jump label jump label Symbolic name of jump destination
في هذه الحالة الأمر مثل أمر JC تماما مع ضبط BRbit بقيمة RLO سواء صفر أو 1 مثال : A I 1.0 A I 1.2 JCB JOVR //Jump if RLO = 1 to jump label JOVR. Copy the contents of the RLO bit into the BR bit L IW8 //Program scan continues here if jump is not executed T MW22 JOVR: A I 2.1 //Program scan resumes here after jump to jump label JOVR
JNB Jump if RLO = 0 with BR
Format JNB jump label jump label Symbolic name of jump destination
مثال : A I 1.0 A I 1.2 JNB JOVR //Jump if RLO = 0 to jump label JOVR. Copy RLO bit contents into the BR bit L IW8 //Program scan continues here if jump is not executed T MW22 JOVR: A I 2.1 //Program scan resumes here after jump to jump label JOVR
نكتفي بهذا القدر اليوم وسوف يتم الاستكمال لاحقا
| |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم -16 استكمال تعليمات التحكم المنطقي Logic Control Instructions الإثنين 2 يونيو 2008 - 13:09 | |
| JBI Jump if BR = 1
Format JBI jump label
jump label Symbolic name of jump destination وهذا الأمر للانتقال إلى مكان معين في البرنامج محدد بالرمز label بناء على تغير قيمة BR في Status register word إلى 1 JNBI Jump if BR = 0
Format JNBI jump label
jump label Symbolic name of jump destination Description وهو للانتقال إلى مكان في البرنامج محدد بالرمز label في حالة تغير خانة BR إلى 0 JO Jump if OV = 1
Format JO jump label
jump label Symbolic name of jump destination وهو للانتقال إلى مكان في البرنامج محدد بالرمز label في حالة تغير خانة OV ( أي Overflow ) إلى 1 مثال : L MW10 L 3 *I //Multiply contents of MW10 by "3" JO OVER //Jump if result exceeds maximum range OV=1 T MW10 //Program scan continues here if jump is not executed A M 4.0 R M 4.0 JU NEXT OVER: AN M 4.0 //Program scan resumes here after jump to jump label OVER S M 4.0 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
JOS Jump if OS = 1 Format JOS jump label
jump label Symbolic name of jump destination
وهو الانتقال إلى المكان المحدد بالرمز label في حالة الخانة OS إلى 1 مثال : L IW10 L MW12 *I L DBW25 +I L MW14 -I JOS OVER //Jump if overflow in one of the three instructions during calculation OS=1 See Note T MW16 //Program scan continues here if jump is not executed A M 4.0 R M 4.0 JU NEXT OVER: AN M 4.0 //Program scan resumes here after jump to jump label OVER S M 4.0 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
Note In this case do not use the JO instruction. The JO instruction would only check the previous -I instruction if an overflow occurred
| |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: الدرس رقم -17 استكمال تعليمات التحكم المنطقي Logic Control Instructions الثلاثاء 10 يونيو 2008 - 15:45 | |
| JZ Jump if Zero Format JZ jump label jump label : Symbolic name of jump destination
في حالة CC 1 = 0 و CC 0 = 0 يتم الانتقال إلى الموضع المحدد بالرمز label مثال : L MW10 SRW 1 JZ ZERO //Jump to jump label ZERO if bit that has been shifted out = 0 L MW2 //Program scan continues here if jump is not executed INC 1 T MW2 JU NEXT ZERO: L MW4 //Program scan resumes here after jump to jump label ZERO INC 1 T MW4 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
JN Jump if Not Zero
Format JN jump label jump label : Symbolic name of jump destination إذا تحقق الشرط التالي يتم الانتقال إلى المكان المحدد بالرمز label (CC 1=0/CC 0=1 or CC 1=1/CC 0=0) مثال : L IW8 L MW12 XOW JN NOZE //Jump if the contents of ACCU 1-L are not equal to zero AN M 4.0 //Program scan continues here if jump is not executed S M 4.0 JU NEXT NOZE: AN M 4.1 //Program scan resumes here after jump to jump label NOZE S M 4.1 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
JP Jump if Plus Format JP jump label jump label : Symbolic name of jump destination
في حالة نتيجة آخر عملية أكبر من الصفر أي CC 1 = 1 and CC 0 = 0 يتم الانتقال إلى المكان المحدد بالرمز label مثال : L IW8 L MW12 -I //Subtract contents of MW12 from contents of IW8 JP POS //Jump if result >0 that is, ACCU 1 > 0 AN M 4.0 //Program scan continues here if jump is not executed S M 4.0 JU NEXT POS: AN M 4.1 //Program scan resumes here after jump to jump label POS S M 4.1 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
JM Jump if Minus Format JM jump label jump label : Symbolic name of jump destination
في حالة نتيجة آخر عملية أقل من الصفر أي CC 1 = 0 and CC 0 = 1 يتم الانتقال إلى المكان المحدد بالرمز label مثال : L IW8 L MW12 -I //Subtract contents of MW12 from contents of IW8 JM NEG //Jump if result < 0 that is, contents of ACCU 1 < 0 AN M 4.0 //Program scan continues here if jump is not executed S M 4.0 JU NEXT NEG: AN M 4.1 //Program scan resumes here after jump to jump label NEG S M 4.1 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
JPZ Jump if Plus or Zero
Format JPZ jump label jump label : Symbolic name of jump destination في حالة نتيجة آخر عملية أكبر من أو تساوي الصفر أي (CC 1=0/CC 0=0 or CC 1=1/CC 0=0) يتم الانتقال إلى المكان المحدد بالرمز label مثال : L IW8 L MW12 -I //Subtract contents of MW12 from contents of IW8 JPZ REG0 //Jump if result >=0 that is, contents of ACCU 1 >= 0 AN M 4.0 //Program scan continues here if jump is not executed S M 4.0 JU NEXT REG0: AN M 4.1 //Program scan resumes here after jump to jump label REG0 S M 4.1 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
JMZ Jump if Minus or Zero Format JMZ jump label jump label : Symbolic name of jump destination
في حالة النتيجة أقل من أو يساوي الصفر أي CC 1=0/CC 0=0 or CC 1=0/CC 0=1 يتم الانتقال إلى المكان المحدد بالرمز label مثال : L IW8 L MW12 -I //Subtract contents of MW12 from contents of IW8 JMZ RGE0 //Jump if result <=0 that is, contents of ACCU 1 <= 0 AN M 4.0 //Program scan continues here if jump is not executed S M 4.0 JU NEXT RGE0: AN M 4.1 //Program scan resumes here after jump to jump label RGE0 S M 4.1 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
JUO Jump if Unordered Format JUO jump label jump label : Symbolic name of jump destination
في حالة النتيجة غير محددة أي CC 1 = 1 and CC 0 = 1 وهذا يتحقق في أي من الحالات الآتية : - عند القسمة على صفر - عند استعمال أمر بشكل خاطئ ( للتعامل مع الحسابات ) - عند مقارنة الأرقام العشرية في حالة وجود خطأ في التنسيق Format وعندها يتم الانتقال إلى المكان المحدد بالرمز label L MD10 L ID2 /D //Divide contents of MD10 by contents of ID2 JUO ERRO //Jump if division by zero that is, ID2 = 0 T MD14 //Program scan continues here if jump is not executed A M 4.0 R M 4.0 JU NEXT ERRO: AN M 4.0 //Program scan resumes here after jump to jump label ERRO S M 4.0 NEXT: NOP 0 //Program scan resumes here after jump to jump label NEXT
LOOP Loop
Format LOOP jump label jump label : Symbolic name of jump destination يتم الانتقال إلى المكان المحدد بالرمز label طالما محتويات ACCU1-L أكبر من الصفر وفي كل مرة يتم تقليل محتويات ACCU1-L بمقدار 1 مثال : Example for calculating the factor of 5
L L#1 //Load the integer constant (32 bit) into ACCU 1 T MD20 //Transfer the contents from ACCU 1 into MD20 :initialization L 5 //Load number of loop cycles into ACCU 1-L NEXT: T MW10 //Jump label = loop start / transfer ACCU 1-L to loop counter L MD20 * D //Multiply current contents of MD20 by the current contents of MB10T MD20 //Transfer the multiplication result to MD20 L MW10 //Load contents of loop counter into ACCU 1 LOOP NEXT //Decrement the contents of ACCU 1 and jump to the NEXT jump label if ACCU 1-L > 0 L MW24 //Program scan resumes here after loop is finished L 200 >I
| |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: تعليمات التحكم في البرنامج Program control instructions الثلاثاء 17 يونيو 2008 - 14:40 | |
| هذه التعليمات التي سوف نتعرض لها تتعلق غالبا باستدعاء وظائف معينة أو إنهاء جزء معين من البرنامج وسوف نعرض لها بالتفصيل أمرا أمرا BE Block End
وهذا الأمر يأخذ الصيغة BE في الكتابة وهو ببساطة يقوم بإنهاء Block قيد التنفيذ سواء كان OB أو FC أو FB أو أي نوع وينتقل مباشرة إلى الأمر التالي في ترتيب تشغيل البرنامج ولو كان هذا مثلا في OB1 فإن هذا يعني بدء التنفيذ من أول Block مرة أخرى وعدم استكمال التنفيذ بشكل تسلسلي مثال : A I 1.0 JC NEXT //Jump to NEXT jump label if RLO = 1 , I 1.0 = 1 L IW4 //Continue here if no jump is executed T IW10 A I 6.0 A I 6.1 S M 12.0 BE //Block end NEXT: NOP 0 //Continue here if jump is executed
BEC Block End Conditional
وهذا الأمر مثل السابق تماما عدا أنه لا يتم تنفيذه إلا إذا تحقق الشرط السابق له أي تكون RLO=1 أما في حالة عدم تحقق الشرط RLO=0 عند مرور البرنامج على الأمر BEC فإنه لا يتم التنفيذ مثال : A I 1.0 //Update RLO BEC //End block if RLO = 1 L IW4 //Continue here if BEC is not executed, RLO = 0 T MW10
BEU Block End Unconditional
لا أجد فرق بينه وبين BE حيث يقوم بإنهاء Block دون الاعتماد على شرط أو نتيجة RLO CALL Block Call
Format CALL : logic block identifier
حيث أن logic block identifier يمكن أن يكون : FC : Function --> CALL FCn SFC : System function --> CALL SFCn FB : Function block --> CALL FBn1,DBn2 SFB : System function block --> CALL SFBn1,DBn2
وهذا الأمر يستخدم لاستدعاء FC,FB,SFC,SFB سواء برقمها أو باسمها الرمزي مع الوضع في الاعتبار وجوب إدراج رقم Data Block DB المصاحب لكل من FB , SFB كما هو واضح في طريقة كتابة الأمر في الأسطر السابقة وهو يقوم بنقل تنفيذ البرنامج إلى FC,FB,SFC,SFB المطلوب دون أي اعتبار لمحتوياته وبعد انتها التنفيذ يعود البرنامج إلى السطر الذي يلي أمر Call في التسلسل الطبيعي للبرنامج كذلك يجب الوضع في الاعتبار أن هذا الأمر يستعمل لاستدعاء دوال موجودة بالفعل أي يتم إنشاؤها أو إدراجها قبل الاستدعاء حتى لا تعطي CPU خطأ في تنفيذ االبرنامج ومن الأمور الهامة جدا عند استدعاء أي دالة وظيفية من الأنواع الأربعة عملية تمرير المتغيرات إلى الدالة الوظيفية في حالة وجودها Passing parameters وسوف يتضح ذلك من الأمثلة الآتية : Example : Assigning parameters to the FC6 call
CALL FC6 Formal parameter Actual parameter NO OF TOOL := MW100 TIME OUT := MW110 FOUND := Q 0.1 ERROR := Q 100.0
حيث أن المتغيرات باللون الأحمر هي ما يتم تسميته داخل FB أما اللون الأزرق فهي إما القيم المحددة للمتغيرات أو العنوان الذي يحتوي على تلك القيم المطلوبة للتنفيذ Example : Calling FB99 with instance data block DB1
CALL FB99,DB1 Formal parameter Actual parameter MAX_RPM := #RPM1_MAX MIN_RPM := #RPM1 MAX_POWER := #POWER1 MAX_TEMP := #TEMP1
على وعد بلقاء لاستكمال باقي التعليمات الخاصة بالموضوع إن شاء الله | |
|
| |
ahmed_h عقيد
عدد الرسائل : 521 العمر : 49 تاريخ التسجيل : 13/06/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الجمعة 20 يونيو 2008 - 11:17 | |
| | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: تابع تعليمات التحكم في البرنامج Program control instructions السبت 21 يونيو 2008 - 12:06 | |
| والآن سوف نستكمل ما سبق من تعليمات التحكم في البرنامج Call FB
Format CALL FB n1, DB n1
هذا الأمر يستخدم لاستدعاء الدوال الوظيفية FB التي تم عملها عن طريق صانع البرنامج ويتم الاستدعاء كعنوان address فقط دون النظر لنتيجة RLO لمحتوياتها ويجب هنا تحديد Data block DB المصاحب لها ويكون تنفيذ الدالة الوظيفية بنفس الشكل التسلسلي حيث يمر ابرنامج بعد تنفيذها إلى ما بعدها في تسلسل البرنامج الطبيعي ويمكن استدعاء الدالة باسمها أو برمزها إذا تم إعطاؤها رمز Symbol تمرير البيانات إلى الدالة الوظيفية Passing parametersوحيث أن لكل دالة متغيرات فيجب عند استدعاء الدالة أن يتم تحديد مصادر المدخلات لها ووجهة المخرجات منها مثل المثال الآتي : CALL FB99,DB1 Formal parameter Actual parameter MAX_RPM := #RPM1_MAX MIN_RPM := #RPM1 MAX_POWER := #POWER1 MAX_TEMP := #TEMP1
مثال آخر : CALL FB99,DB2 Formal parameter Actual parameter MAX_RPM := #RPM2_MAX MIN_RPM := #RPM2 MAX_POWER := #POWER2 MAX_TEMP := #TEMP2
Call FC
Format CALL FC n هذا الأمر يستخدم لاستدعاء دالة وظيفية من النوع FC دون النظر إلى محتوياتها أو نتيجة RLO وبعد تنفيذها يتم استكمال تنفيذ البرنامج بشكل التسلسل الطبيعي كذلك يمكن استدعاؤها باسمها أو برمزها تمرير البيانات إلى الدالة الوظيفية Passing parametersوحيث أن لكل دالة متغيرات فيجب عند استدعاء الدالة أن يتم تحديد مصادر المدخلات لها ووجهة المخرجات منها مثل المثال الآتي : CALL FC6 Formal parameter Actual parameter NO OF TOOL := MW100 TIME OUT := MW110 FOUND := Q0.1 ERROR := Q100.0
Call SFB
Format CALL SFB n1, DB n2
وهذا الأمر يستخدم لاستدعاء الدوال الوظيفية الخاصة من سيمنس standard function blocks (SFBs) supplied by Siemens ويجب أيضا تحديد Data block المصاحب للدالة وينطبق عليها ما ينطبق على التعليمات السابقة وكذلك تمرير البيانات مثال : CALL SFB4,DB4 Formal parameter Actual parameter IN: I0.1 PT: T#20s Q: M0.0 ET: MW10
Call SFC
Format CALL SFC n
هذا الأمر لاستدعاء دالة وظيفية من إنتاج سيمنس من النوع standard functions (SFCs) supplied by Siemens دون النظر لمحتواها أو نتيجة RLO لما ينتج عنها وينطبق عليها ما سبق قوله بالنسبة للأنواع الأخرى من الدوال الوظيفية وكذلك تمرير البيانات مثال : CALL SFC43 //Call SFC43 to re-trigger watchdog timer - no parameters
| |
|
| |
RAMA رائد
عدد الرسائل : 276 العمر : 54 الموقع : almadinah almnora العمل/الترفيه : PLC PROGRAMMER تاريخ التسجيل : 25/06/2008
| موضوع: كورس رائع الأربعاء 25 يونيو 2008 - 15:22 | |
| دوره ممتازه والى الامام م حسن الشحات | |
|
| |
RAMA رائد
عدد الرسائل : 276 العمر : 54 الموقع : almadinah almnora العمل/الترفيه : PLC PROGRAMMER تاريخ التسجيل : 25/06/2008
| موضوع: الوقت والتاريخ الأربعاء 25 يونيو 2008 - 15:27 | |
| ارجو ايضاح كيفيه ضبط الوقت والتريخ وكذلك كيفيه عمل تزامن بين وقت وتاريخ PLC وقت وتاريخ HMI | |
|
| |
RAMA رائد
عدد الرسائل : 276 العمر : 54 الموقع : almadinah almnora العمل/الترفيه : PLC PROGRAMMER تاريخ التسجيل : 25/06/2008
| موضوع: ENCODER الأربعاء 25 يونيو 2008 - 15:35 | |
| ارجو ايضاح كيفيه عمل 8 بت او 10 بت انكودر حسب معرفتي الانكودر يتعامل مع GRAY CODE كيف يمكن تحويل هذا الكود الى BINARY | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الأربعاء 25 يونيو 2008 - 15:50 | |
| - RAMA كتب:
- ارجو ايضاح كيفيه ضبط الوقت والتريخ
وكذلك كيفيه عمل تزامن بين وقت وتاريخ PLC وقت وتاريخ HMI الأخ العزيز مرحبا بك في المنتدى أرجو التوصيف أكثر عن المقصود بالتزامن ؟ هل هو أن يكون الوقت في PLC هو نفسه في HMI ؟ أم أن المقصود شئ آخر ؟ عموما كما سبق في الدرس رقم -5 في الدورة فإنه يوجد أنواع للبيانات خاصة بالوقت الحقيقي والتاريخ وكذلك هناك طرق للتحويل من الصيغ الأخرى للوقت فهذا يعتمد على نوع HMI المستخدم فهل يعطي دعم لصيغ سيمنس في التعامل مع البيانات كلها ومنها الوقت أم لا فإن كان من النوع الذي يتعامل مع الأرقام فقط فهنا يتم نقل الوقت من HMI إلى PLC في الشكل المتاح ثم يتم التحويل بعد ذلك داخل برنامج PLC ثم بعد ذلك يتم عمل Set للوقت بنفس الوقت الذي تم نقله من HMI أو أن يتم العكس بأن يتم قراءة الوقت من PLC وضبط وقت HMI بنفس قيمة وقت PLC ولكن هذا يعتمد على إمكانيات ونوع HMI المستخدم أتمنى أن يكون الخط الأساسي للبحث عن الحل قد وضح وإن كان هناك المزيد من الاستفسارات برجاء عدم التردد وسوف نبحث معا عن أفضل الحلول لأي مشكلة إن شاء الله | |
|
| |
ابو علاء رائد
عدد الرسائل : 244 العمر : 52 تاريخ التسجيل : 03/03/2008
| موضوع: اين نقاط التعويض الأربعاء 25 يونيو 2008 - 16:24 | |
| لدى استفسار بسيط لم الاحظ وجود نقات التعويض داخل LADDER Diagram ارجو الافادة فهذة اول مرة لى فى التعامل مع LADDER Diagram من خلال Working with STEP 7 كما ارجو توضيح تعليمة التيمر داخل plc s5t#5n6s مع شرح هذا المثال وجذاكم اللة خيرا وما من كاتبٍ إلا سـيفنى ويُبقي الدهـر ما كتبت يداه فلا تكتبْ بكفكَ غير شيءٍ يَسـركَ في القيامة أنْ تراهُ العبد الغلبان ابو علاء | |
|
| |
PLCMan Admin
عدد الرسائل : 12366 العمر : 55 العمل/الترفيه : Maintenance manager تاريخ التسجيل : 02/03/2008
| موضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 الأربعاء 25 يونيو 2008 - 16:41 | |
| - RAMA كتب:
- ارجو ايضاح كيفيه عمل 8 بت او 10 بت انكودر
حسب معرفتي الانكودر يتعامل مع GRAY CODE كيف يمكن تحويل هذا الكود الى BINARY أخي العزيز تحية طيبة مازلنا حتى الآن لم نصل إلى هذا الجزء من التعامل مع الوظائف الخاصة وهو من البرمجة المتقدمة والتي تتطلب عمل الكثير من الضبط على مستوى Hardware configuration ولكن سوف أجيب إجابة مبسطة حتى لا يحدث تشتت للزملاء الذين بدأوا معنا الدورة بالنسبة للتعامل مع الانكودر فإنه يوجد FM 350-1 or FM 350-2 وتلك Modules لها طرقة معينة للضبط ولها أيضا Package يتم توريدها على اسطوانة مع Module حيث يتم فيها تحديد نوع الانكودر ودقته وعنوان التعامل داخل PLC والوظيفة المطلوبة هل هي عداد أم قياس تردد وهكذا ويمكنك أن تجد التفاصيل بالكامل لكلا النوعين بتحميل الملفين الآتيين لشرح التعامل مع FM350-1 and FM350-2 Counter modules FM 350-2 Function module اضغط ماوس يمين ثم Save as أو Save target as FM 350-1 Function module اضغط ماوس يمين ثم Save as أو Save target as | |
|
| |
RAMA رائد
عدد الرسائل : 276 العمر : 54 الموقع : almadinah almnora العمل/الترفيه : PLC PROGRAMMER تاريخ التسجيل : 25/06/2008
| موضوع: تزمن وقت وتاريخplc مع HMI الخميس 26 يونيو 2008 - 11:17 | |
| م.حسن الشحات اشكرك جدا على سرعه الرد اقصد بالتزامن هو توحيد الوقت والتاريخ بين plc s7 314 و op17 على سبيل الميثال وكيفيه استحدام sfc0 sfc1 | |
|
| |
| دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7 | |
|