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

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

شاطر | 
 

 دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
انتقل الى الصفحة : الصفحة السابقة  1, 2, 3, 4 ... 12 ... 21  الصفحة التالية

هل تشعر أنه يمكن أن نلحق بمن سبقنا في مجال التحكم الآلي ؟
نعم بالتأكيد
75%
 75% [ 851 ]
ربما يوما ما
16%
 16% [ 179 ]
لا أظن الأمر بهذه البساطة
8%
 8% [ 95 ]
لا يمكن
1%
 1% [ 8 ]
مجموع عدد الأصوات : 1133
 

كاتب الموضوعرسالة
PLCMan
Admin
avatar

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

مُساهمةموضوع: Floating-Point Math Instructions   الإثنين 7 يوليو 2008 - 12:25

العمليات الحسابية على الأرقام ذات العلامة العشرية ( الحقيقية )
Floating-Point Math Instructions


نبدأ أولا بعرض جدول حدود البيانات وتغير حالة Status word طبقا لنتيجة العملية الحسابية



فالجزء الأول يشمل الحدود المقبولة والتي لا تمثل أي خطأ خاص بأقصى وأقل قيمة مسموح بها
أما الجزء الثاني فيمثل تصرف Status word طبقا لحالة التجاوز الحادثة في النتيجة

والآن لنبدأ بعرض العمليات الأساسية الأربعة والتي تتم على معاملين يتم تحميل أحدهما في ACCU1 ويتم تحميل الآخر في ACCU2 ثم يتم تخزين نتيجة العملية في ACCU1 بعد انتهاء العملية مع ملاحظة أن العمليات هنا تتم على مستوى 32 خانة وهي دقة الأرقام العشرية والتي سبق أن أوضحناها من قبل في موضوع أنواع البيانات

Add ACCU 1 and ACCU 2 as a Floating-Point Number 32-Bit IEEE-FP : +R


يقوم هذا الأمر وصيغته العامة R+ بإضافة محتويات ACCU1 إلى محتويات ACCU2 ووضع النتيجة في ACCU1 دون التأثير على RLO مع تغيير حالة Status word حسب النتجة طبقا للجدول السابق

مثال :

OPN DB10
L ID10

//Load the value of ID10 into ACCU1//
L MD14
//Load the value of ACCU 1 into ACCU2//
//Load the value of MD14 into ACCU1//
R +
//Add ACCU2 and ACCU1; store the result in ACCU1//
T DBD25
//The content of ACCU1 (result) is transferred to DBD25 in DB10//


Subtract ACCU1 from ACCU2 as a Floating-Point Number 32Bit IEEE-FP : - R


هذا الأمر صيغته العامة R - ويقوم بطرح محتويات ACCU1 من محتويات ACCU2 ووضع النتيجة في ACCU1 مع عدم التأثير على RLO وتغيير حالة Status word حسب النتيجة وطبقا للجدول السابق

مثال :

OPN DB10
L ID10

//Load the value of ID10 into ACCU1//
L MD14
//Load the value of ACCU 1 into ACCU2//
//Load the value of MD14 into ACCU1//
R -
//Subtract ACCU1 from ACCU2; store the result in ACCU1//
T DBD25
//The content of ACCU1 (result) is transferred to DBD25 in DB10//


Multiply ACCU1 and ACCU2 as Floating-Point Numbers 32-Bit IEEE-FP : * R


هذا الأمر صيغته العامة R * ويقوم بضرب محتويات ACCU1 في محتويات ACCU2 ووضع النتيجة في ACCU1 دون التأثير على RLO مع تغيير حالة Status word حسب النتيجة وطبقا للجدول السابق

مثال :

OPN DB10
L ID10

//Load the value of ID10 into ACCU1//
L MD14
//Load the value of ACCU1 into ACCU2//
//Load the value of MD14 into ACCU1//
R *
//Multiply ACCU2 and ACCU1; store the result in ACCU1//
T DBD25
//The content of ACCU1 (result) is transferred to DBD25 in DB10//


Divide ACCU2 by ACCU1 as a Floating-Point Number 32-Bit IEEE-FP : / R


الصيغة العامة لهذا الأمر هي R / حيث يقوم بقسمة محتويات ACCU2 على محتويات ACCU1 ووضع النتيجة في ACCU1 دون التأثير على RLO مع تغيير حالة Status word حسب النتيجة وطبقا للجدول السابق

مثال :

OPN DB10
L ID10

//Load the value of ID10 into ACCU1//
L MD14
//Load the contents of ACCU1 into ACCU2//
//Load the value of MD14 into ACCU1//
R /
//Divide ACCU2 by ACCU1; store the result in ACCU1//
T DBD20
//The content of ACCU1 (result) is transferred to DBD20 in DB10//


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

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

مُساهمةموضوع: تابع Floating point math instructions   الثلاثاء 8 يوليو 2008 - 13:33

والآن نستكمل العمليات الحسابية على الأرقام الحقيقية Real numbers والتي تعتمد على قيمة واحدة يتم تحميلها من ACCU1 ويتم بعد ذلك تسجيل النتيجة في ACCU1

Absolute Value of a Floating-Point Number 32-Bit IEEE-FP : ABS


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

فمثلا الرقم 1.43- يكون 1.43 والرقم 1.56+ يكون 1.56

مثال :

L ID8
//Load value into ACCU1 - example: ID8 = -1.5E+02//
ABS
//Form the absolute value; store the result in ACCU1//
T MD10
//Transfer result to MD10 - example: result = 1.5E+02//


Generate the Square of a Floating-Point Number 32-Bit : SQR


يقوم هذا الأمر بحساب مربع ( حاصل ضرب الرقم × نفسه ) محتويات ACCU1 وتخزين النتيجة في ACCU2 دون التأثير على RLO مع تغيير حالة Status word حسب النتيجة وطبقا للجدول السابق الخاص بحدود الأرقام

مثال :

OPN DB17
//Open data block DB17//
L DBD0
//The value from data double word DBD0 is loaded into ACCU1//
//This value must be in the floating-point format//
SQR
//Calculate the square of the floating-point number 32-bit, IEEE-FP in ACCU1//
//Store the result in ACCU1//
AN OV
//Scan the OV bit in the status word for - 0//
JC OK
//If no error occurred during the SQR instruction, jump to the OK jump label//
BEU
//Block end unconditional, if an error occurred during the SQR instruction//
OK: T DBD4
//Transfer the result from ACCU 1 to data double word DBD4//


Generate the Square Root of a Floating-Point Number 32-Bit : SQRT


يقوم هذا الأمر بحساب الجذر التربيعي لمحتويات ACCU1 بشرط أن تكون أكبر من أو تساوي الصفر وتخزين النتيجة في ACCU1 مع عدم التأثير على RLO وتغيير حالة Status word حسب النتيجة وطبقا للجدول السابق في المشاركة السابقة

مثال :

L MD10
//The value from memory double word MD10 is loaded into ACCU1//
//This value must be in the floating-point format//
SQRT
//Calculate the square root of the floating-point number 32-bit IEEE-FP//
//in ACCU1 Store the result in ACCU1//
AN OV
//Scan the OV bit in the status word for - 0//
JC OK
//If no error occurred during the SQRT instruction, jump to the OK jump label//
BEU
//Block end unconditional, if an error occurred during the SQRT instruction//
OK: T MD20
//Transfer the result from ACCU1 to memory double word MD20//

Generate the Exponential Value of a Floating-Point Number 32-Bit : EXP


هذا الأمر يقوم بحساب Exponential value للرقم الموجود في ACCU1 ثم وضع النتيجة في ACCU1 دون التأثير على RLO مع تغيير حالة Status word حسب النتيجة وطبقا للجدول السابق المشار إليه

Exponential value كما هو معروف هي الثابت الطبيعي e أو الرقم 2.718728718 مرفوعا إلى الأس الموجود بمعنى Exp(x) تعني الرقم - e - مرفوعا إلى الأس - x -

مثال :

L MD10
//The value from memory double word MD10 is loaded into ACCU1//
//This value must be in the floating-point format//
EXP
//Calculate the exponential value of the floating-point number 32-bit, IEEE-FP//
//in ACCU1 at base e. Store the result in ACCU1//
AN OV
//Scan the OV bit in the status word for - 0//
JC OK
//If no error occurred during the EXP instruction, jump to the OK jump label//
BEU
//Block end unconditional, if an error occurred during the EXP instruction//
OK: T MD20
//Transfer the result from ACCU 1 to memory double word MD20//


Generate the Natural Logarithm of a Floating-Point Number 32-Bit : LN


هذا الأمر يقوم بحساب اللوغاريتم الطبيعي ( للأساس -e- ) لمحتويات ACCU1 وتخزين النتيجة في ACCU1 مع عدم التأثير على حالة RLO مع تغيير حالة Status word حسب النتيجة وطبقا للجدول السابق الخاص بحدود الأرقام بشرط أن يكون الرقم الذي يتم عليه العملية أكبر من الصفر

مثال :

L MD10
//The value from memory double word MD10 is loaded into ACCU1//
//This value must be in the floating-point format//
LN
//Calculate the natural logarithm of the floating-point number 32-bit, IEEE-FP//
//in ACCU1, Store the result in ACCU1//
AN OV
//Scan the OV bit in the status word for - 0//
JC OK
//If no error occurred during the instruction, jump to the OK jump label//
BEU
//Block end unconditional, if an error occurred during the instruction//
OK: T MD20
//Transfer the result from ACCU 1 to memory double word MD20//


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


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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الثلاثاء 8 يوليو 2008 - 16:08

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

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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الثلاثاء 8 يوليو 2008 - 16:41

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

وجزاكم الله خيرا على حسن المتابعة

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


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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الخميس 10 يوليو 2008 - 12:17

الاخ plcMan
انا استخدم في عملي في برمجه s7300
PC MPI ADAPTER AND PCMCI CP5512 ADAPTER
لم اقم قبل الان في برمجه S7200
هل استطيع برمجه S7200 بااستخدام الوصلات المذكوره
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
boualem_gh
رقيب
رقيب
avatar

عدد الرسائل : 29
تاريخ التسجيل : 30/06/2008

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الخميس 10 يوليو 2008 - 12:46

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

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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الخميس 10 يوليو 2008 - 12:48

برجاء أخي كتابة Part number الخاص بالجزء الموجود عندك للمساعدة في دقة الرد

وإليك أخي الكتالوج الكامل ل PC-Adaptor USB

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


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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الخميس 10 يوليو 2008 - 17:27

الاخ plcMan
بعد الاطلاع على الملف mpi pc adapter
فانه يمكن استخدامه مع MPI and PPI
اي انه يمكن استخدامه مع s7200
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

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

مُساهمةموضوع: تابع العمليات على الأرقام الحقيقية   الجمعة 11 يوليو 2008 - 13:55

Generate the Sine of Angles as Floating-Point Numbers 32-Bit : SIN


هذا الأمر يقوم بحساب جيب الزاوية لمحتويات ACCU1 ( على اعتبار أنه رقم حقيقي يعبر عن زاوية بالنظام الدائري وليس بالدرجات ) ووضع النتيجة بعد ذلك في ACCU1 مع عد التأثير على RLO وتغيير حالة Status word بحسب النتيجة وطبقا للجدول السابق ذكره الخاص بحدود الأرقام

مثال :

L MD10
//The value from memory double word MD10 is loaded into ACCU1//
//This value must be in the floating-point format//
SIN
//Calculate the sine of the floating-point number 32-bit, IEEE-FP//
//in ACCU1 Store the result in ACCU1//
T MD20
//Transfer the result from ACCU1 to the memory double word MD20//


Generate the Cosine of Angles as Floating-Point Numbers 32-Bit : COS


يقوم هذا الأمر بحساب جيب تمام الزاوية لمحتويات ACCU1 ( باعتبار أنه رقم حقيقي يعبر عن زاوية بالنظام الدائري وليس الدرجات ) ووضع النتيجة في ACCU1 مع عدم التأثير في RLO وتغيير حالة Status word بحسب النتيجة وطبقا للجدول السابق ذكره والخاص بالحدود

مثال :

L MD10
//The value from memory double word MD10 is loaded into ACCU1//
//This value must be in the floating-point format//
COS
//Calculate the cosine of the floating-point number 32-bit, IEEE-FP//
//in ACCU1 Store the result in ACCU1//
T MD20
//Transfer the result from ACCU 1 to memory double word MD20//


Generate the Tangent of Angles as Floating-Point Numbers 32-Bit : TAN


هذا الأمر يقوم بحساب ظل الزاوية لمحتويات ACCU1 ( باعتبار أن محتويات ACCU1 رقم حقيقي يعبر عن زاوية بالنظام الدائري ) ووضع النتيجة في ACCU1 مع عدم التأثير في RLO وتغيير حالة Status word بحسب النتيجة وطبقا لجدول الحدود السابق ذكره

مثال :

L MD10
//The value from memory double word MD10 is loaded into ACCU1//
//This value must be in the floating-point format//
TAN
//Calculate the tangent of the floating-point number 32-bit, IEEE-FP//
//in ACCU1 Store the result in ACCU1//
AN OV
//Scan the OV bit in the status word for -0//
JC OK
//If no error occurred during the TAN instruction, jump to the OK jump label//
BEU
//Block end unconditional, if an error occurred during the TAN instruction//
OK: T MD20
//Transfer the result from ACCU 1 to memory double word MD20//


Generate the Arc Sine of a Floating-Point Number 32-Bit : ASIN


هذا الأمر يقوم بحساب قيمة الزاوية التي جيبها محتويات ACCU1 بالتقدير الدائري مع الوضع في الاعتبار أن هذا الرقم يكون أكبر من أو يساوي 1- وأقل من أو يساوي 1+ ووضع النتيجة في ACCU1 دون التأثير على RLO مع تغيير حالة Status word طبقا للجدول السابق ذكره والخاص بحدود الأرقام وتكون النتيجة محصورة بين pi/2- و pi/2+ حيث pi=3.14159

مثال :

L MD10
//The value from memory double word MD10 is loaded into ACCU1//
//This value must be in the floating-point format//
ASIN
//Calculate the arc sine of the floating-point number 32-bit,IEEE-FP//
//in ACCU1 Store the result in ACCU1//
AN OV
//Scan the OV bit in the status word for -0//
JC OK
//If no error occurred during the ASIN instruction, jump to the OK jump label//
BEU
//Block end unconditional, if an error occurred during the ASIN instruction//
OK: T MD20
//Transfer the result from ACCU 1 to the memory double word MD20//

نفس الكلام ينطبق على ACOS لحساب الزاوية التي جيب تمامها محتويات ACCU1
و ATAN لحساب الزاوية التي ظلها محتويات ACCU1

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


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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الأحد 13 يوليو 2008 - 11:09

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

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

مُساهمةموضوع: مثال عملي تطبيقي على الحسابات باستعمال PLC   الإثنين 14 يوليو 2008 - 12:32

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

المطلوب :

عمل دالة وظيفية Function لحساب وزن سلك معزول بالورنيش ولديك المعطيات الآتية :
- قطر السلك بدون عزل معلوم - d1 ( مللي متر )
- سمك طبقة العزل الأولى معلوم ( ثلثي السمك الكلي للعزل )
- سمك الطبقة الثانية ( الخارجية ) معلوم ( ثلث السمك الكلي للعزل )
- السمك الكلي للعزل معلوم ( مللي متر )
- طول السلك معلوم ( محسوب مسبقا عن طريق عداد طول في صورة أمتار ) صورة عشرية حقيقية
- كثافة الموصل معلومة D1 ( كجم / سم مكعب )
- كثافة طبقة العزل الأولى معلوم D2 ( كجم / سم مكعب )
- كثافة طبقة العزل الثانية ( الخارجية ) معلوم D3 ( كجم / سم مكعب )
- النسبة التقريبية PI=3.14159

راقب جيدا الوحدات


الصورة التالية تعطي تصور عن الشكل العام لمقطع السلك المراد حساب وزن وحدة الطول منه ( متر )



في انتظار مشاركاتكم


عدل سابقا من قبل PLCMan في الإثنين 21 يوليو 2008 - 15:21 عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
RAMA
رائد
رائد


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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الثلاثاء 15 يوليو 2008 - 15:30

الاستاذ plcMan
في السابق وجهت لك سؤال مافائده real number
الاجابه تكمن في الرد على هذا السؤال
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
GALALSAIF
عريف
عريف
avatar

عدد الرسائل : 14
تاريخ التسجيل : 30/06/2008

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الأربعاء 16 يوليو 2008 - 0:31

الأخ العزيز المهندس / حسن
جزاكم الله خيرا على المجهود المقدر و لكن لى ملاحظة على طريقة العرض و أولوياته . أرجو أن يكون عندك من رحابة الصدر ما يجعلك تتحملنى خاصة و أن المادة المعروضة تحمل قيمة .
* بداية الموضوع كانت بدون تمهيد و لو بسيط .
* الإنتقال من نقطة إلى أخرى كان مبنى على قاعدة أن المتلقى عنده حد أدنى من المعلومات عن بنية البرنامج و تنظيمه و إرتباط أجزاؤه ببعض و أولويات التنفيذ .

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

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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الأربعاء 16 يوليو 2008 - 8:01

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

وقد حرصت من البداية أن تكون مواضيع العرض بنفس الشكل المتبع عند تدريس أي لغة من لغات البرمجة وكان منهجنا من البداية كالآتي :
- تم وضع حد أدني لمن تناسبه هذه الدورة وكان ذلك في أول موضوع
- تم التعرض لكيفية التعامل مع Simatic manager بشكل مبسط وليس كاملا حيث أن هدف الدورة هو البرمجة وليس التعامل مع Simatic manager
- تم التعرض لبناء البرنامج بداية من Hardware configuration مرورا بالدوال المستخدمة وشرح مبسط عن استخداماتها
- تم بعد ذلك التعرض لأنواع البيانات كأدوات أساسية قبل العمليات وهو النظام المتبع عند تدريس البرمجة بأي لغة
- تم البدء بالبرمجة بشكل تدريجي حيث إذا توقفت عند أي مرحلة فإن ما حصلت عليه يمكن أن تعمل به ولكن كلما تطور بك الأمر وحصلت على المزيد زادت إمكانياتك بالتأكيد وتعاملت مع الأمور باحترافية أكثر

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

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

- تم تأجيل الأمثلة العملية الكبيرة إلى نهاية الدورة حتى تصبح شاملة ويمكن عملها بأكثر من طريفة ولإعطاء الفرصة للزملاء للإبداع

- كان هناك توقفات على فترات في عرض الدورة انتظارا لردود الزملاء وتعاملاتهم فالنظام التبادلي هو الأفضل عند عرض ( وليس تدريس ) أي مادة علمية

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

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

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

مُساهمةموضوع: والآن لنطبق ما تعلمناه في المثال   الخميس 17 يوليو 2008 - 11:17



أولا سوف نقوم بإنشاء دالة Function أيا كان رقمها FC1 مثلا
ثم نقوم بفتح الدالة ونبدأ في تحديد عناصر Declaration الخاصة بتمرير البيانات من وإلى الدالة وسوف تجدها في أعلى قسم من الدالة حيث ستجد
Inputs , InOut , Outputs , Temp , Return وهكذا حيث سوف نستخدم الآتي :

Inputs

diameter1 Real diameter of conductor
diameter2 Real diameter of insulated wire
density1 Real Density of conductor
density2 Real Density of First layer
density3 Real Density of Second layer
length Real Length of wire

Temp

diameter3 Real diameter of wire with first layer
section1 Real Conductor cross section area
section2 Real First layer cross section area
section3 Real Second layer cross section area
thickness1 Real Thickness of first layer
thickness2 Real Thickness of second layer
weight1 Real Conductor weight
weight2 Real First layer weight
weight3 Real Second layer weight
pi Real pi Constant 3.14159
buffer1 Real Buffer for calculations
buffer2 Real Buffer for calculations
buffer3 Real Buffer for calculations
buffer4 Real Buffer for calculations
buffer5 Real Buffer for calculations

Outputs

totalW Real Total weight of wire


والآن بعد أن حددنا المتغيرات التي سوف نستعملها وأنواعها سوف نقوم بعمل الحسابات الخاصة بالبرنامج المطلوب :

// Calculations of Conductor Cross section area in square cm //



L 3.14159
T #pi

L #diameter1
SQR
T #buffer1

L #buffer1
L #pi
* R
T #buffer2

L #buffer2
L 4.0
/ R
T #buffer3

L #buffer3
L 1000.0
/ R
T #section1



// Then multiply by density to get weight of 1 cm //

L #section1
L #density
* R
T #buffer1


// To get weight of 1 m of conductor multiply by 100 //

L #buffer1
L 100.0
* R
T #buffer2

L #buffer2
L #length
* R
T #weight1






//Now calculation of first layer cross section area//


L #diameter3
L #diameter1
- R
T #buffer1

L #buffer1
L #3.0
/ R
T #thickness2

L #thickness2
L 2.0
* R
T #thickness1

L #thickness1
L #diameter1
+ R
T #diameter3

L #diameter3
SQR
T #buffer1

L #diameter1
SQR
T #buffer2

L #buffer1
L #buffer2
- R
T #buffer3

L #buffer3
L #pi
* R
T #buffer4

L #buffer4
L 4.0
/ R
T #buffer5

L #buffer5
L 1000.0
/ R
T # section2



//Then multiply by density then by 100 then by length//

L #section2
L #density2
* R
T #buffer1

L #buffer1
L 100.0
* R
T #buffer2

L #buffer2
L #length
* R
T #weight2



// Calculation of cross section of layer2 //

L #diameter2
SQR
T #buffer1

L #diameter3
SQR
T #buffer2

L #buffer1
L #buffer2
- R
T #buffer3

L #buffer3
L #pi
* R
T #buffer4

L #buffer4
L 4.0
/ R
T #buffer5

L #buffer5
L 1000.0
/ R
T #section3

L #section3
L #density
* R
T #buffer1

L #buffer1
L 100.0
* R
T #buffer2

L #buffer2
L #length
* R
T #weight3

// calculation of total weight //

L #weight1
L #weight2
+ R
T #buffer1

L #buffer1
L #weight3
+ R
T #totalW


عدل سابقا من قبل PLCMan في الإثنين 21 يوليو 2008 - 15:17 عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
RAMA
رائد
رائد


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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الجمعة 18 يوليو 2008 - 15:13

statement list programming language
used by professional programmers
most programmers of s7300 in the company I work in it
write in STL
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
PLCMan
Admin
avatar

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

مُساهمةموضوع: Shift and Rotate Instructions   السبت 19 يوليو 2008 - 13:30

مقدمة


You can use the Shift instructions to move the contents of the low word of
accumulator 1 or the contents of the whole accumulator bit by bit to the left or the
right (see also CPU Registers).

يمكنك استخدام عمليات الإزاحة Shift instructions لإزاحة محتويات ACCU1-L أو ACCU1 خانة خانة إلى اليمين أو إلى اليسار

Shifting by n bits to the left multiplies the contents of the accumulator by ”2 n ”;

الإزاحة بعدد خانات n إلى الشمال تعني ضرب محتويات ACCU1 في العدد 2n

shifting by n bits to the right divides the contents of the accumulator by ”2 n ”.

الإزاحة بعدد خانات n إلى اليمين تعني قسمة محتويات ACCU1 على العدد 2n

For example, if you shift the binary equivalent of the decimal value 3 to the left by 3 bits, you end up with the binary equivalent of the decimal value 24 in the accumulator.

مثلا عند إزاحة الرقم 3 عدد 3 خانات للشمال فإن القيمة تكون 3*8=24

If you shift the binary equivalent of the decimal value 16 to the right by 2 bits, you end up with the binary equivalent of the decimal value 4 in the accumulator.

وعند إزاحة الرقم 16 خانتين إلى اليمين فإن القيمة تكون 16/4=4

The number that follows the shift instruction or a value in the low byte of the low word of accumulator 2 indicates the number of bits by which to shift.

الرقم الذي يلي shift instruction أو محتويات ACCU2-L تمثل عدد خانات الإزاحة

The bit places that are vacated by the shift instruction are either filled with zeros or with the signal state of the sign bit (a 0 stands for positive and a 1 stands for negative).

الخانات التي يتم تفريغها عن طريق shift instructions يتم ملؤها إما بأصفار أو بمحتويات خانة الإشارة صفر للموجب وواحد للسالب

The bit that is shifted last is loaded into the CC 1 bit of the status word. The CC 0 and OV bits of the status word are reset to 0.

يتم تخزين آخر خانة تم إزاحتها في CC1 في حين يتم تصفير كل من CC0 , OV

You can use jump instructions to evaluate the CC 1 bit.

يمكن استخدام Jump instructions بالاستناد إلى محتويات CC1

The shift operations are unconditional, that is, their execution does not depend on any special conditions.

عمليات الإزاحة لا تعتمد بأي حال على نتيجة RLO

They do not affect the result of logic operation

ولا تؤثر عمليات الإزاحة على RLO

The following Shift instructions are available:
• SSI Shift Sign Integer (16-Bit)
• SSD Shift Sign Double Integer (32-Bit)
• SLW Shift Left Word (16-Bit)
• SRW Shift Right Word (16-Bit)
• SLD Shift Left Double Word (32-Bit)
• SRD Shift Right Double Word (32-Bit)
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
youssefhobna
جندي
جندي


عدد الرسائل : 1
تاريخ التسجيل : 05/07/2008

مُساهمةموضوع: analog signal   الثلاثاء 22 يوليو 2008 - 8:54

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

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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الثلاثاء 22 يوليو 2008 - 11:05

youssefhobna كتب:
الاخ الكريم plcman
جزاكم الله خيرا اود من سيادتكم شرح مفصل للتعامل مع ال analog signal و تعريفها كدخول و عمل scaling لها

أخي العزيز شكرا على حسن المتابعة وبعد

فإن التعامل مع الإشارات التناظرية Analogue سواء كان دخول أو خروج له قسمان رئيسيان

الأول يختص بالتعامل الخارجي في الصورة الكهربية سواء كان فولت ( 10- إلى 10+ ) أو ( 0 إلى 10+)
أو كان مللي أمبير ( 0 إلى 20 مللي أمبير ) أو كان مللي فولت أو كان في صورة إشارة ثرموكبل أو RTD فكل هذه الأنواع لها Modules خاصة للتعامل معها في كافة أنواع PLC

وفي سيمنس مثلا سوف تجد الأنواع SM331 خاصة بالدخول التناظري Analogue inputs بمختلف أنواعه ولكل نوع من أنواع الإشارات يوجد نوع مختلف من Modules

أما داخل PLC فكل أنواع Analogue inputs يتم التعامل معها في صورة أرقام صحيحة

ويكون عنوان التعامل بالصورة الآتية :

المدخلات PIW
المخرجات PQW

وتأخذ رقما مسلسلا يتم إعطاؤه حسب Hardware configuration

فمثلا عند إدراج Analoge input module 4 channels أي يحتوي على عدد 4 إشارات دخول فإنه يتم إعطاء Addresses لوحدات الدخول بداية من أول Byte يتم تخصيصها وبامتداد عدد 8 بايت حيث يكون لكل دخل عدد 2 بايت

ويمكن تغيير Addresses بحسب رغبة المبرمج بشرط أن لا يحدث تداخل ويتم هذا عن طريق Properties في Hardware configuration

كذلك يوجد في البرنامج الأصلي من سيمنس دوال Functions للتعامل مع الدخول والخروج للإشارات التناطرية حيث يتم فيها عمل Scaling بالشكل المطلوب

وهي مثلا FC106 لقراءة المدخلات وعمل Scaling في نفس الوقت

كذلك يمكن قراءتها مباشرة عن طريق الأمر L ( تحميل ) على أن يتم عمل كل الحسابات بالاعتماد على المبرمج تماما في كل شئ

ويمكن معرفة أقصى قيم للأرقام عن طريق Properties الخاصة ب Module طبقا للدخل مثلا صفر يماثل صفر فولت والرقم 27648 يماثل 10 فولت وهكذا

كذلك يمكن نقل القيمة إلى خرج Analogue عن طريق الأمر T إلى PQW مباشرة

نفترض المثال الآتي للتقريب :

هناك مقاومة متغيرة موصلة إلى PIW 324 تتغير من صفر إلى 10 فولت وهناك مفتاح لتحديد اتجاه موتور والمطلوب عكس اتجاه الموتور عن طريق Reference أي تتغير إشارة الاخرج من PLC طبقا للاتجاه ويكون خروج PLC على الخرج PQW 334

بافتراض أن المفتاح الخاص بالاتجاه على Input I0.1 فإذا كان 1 فإن الخرج يكون موجب وإذا كان غير موجود فإن الخرج يكون سالب

AN I 0.1
JC m001
L PIW 324
T PQW 334
JU m002
m001 : L PIW 324
L -1
* I
T PQW 334
m002 : BEU
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
PLCMan
Admin
avatar

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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الثلاثاء 22 يوليو 2008 - 11:06

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


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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الثلاثاء 22 يوليو 2008 - 11:19

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

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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الخميس 24 يوليو 2008 - 12:06

أشكرك أخي العزيز RAMA على حسن المتابعة وحسن الظن وأعتذر عن هذا الانقطاع الغير مقصود لظروف خارجة عن إرادتي ونواصل اليوم إن شاء الله عمليات Shift and Rotate

Shift Sign Integer (16-Bit) : SSI


وهذا الأمر يأخذ صورتين إما أن يكون SSI فقط أو أن يكون بعده رقم صحيح

وهو يقوم بعمل إزاحة لليمين لمحتويات ACCU1-L بعدد من الخانات يساوي الرقم الذي يأتي بعد الأمر أو بمحتويات ACCU2-L-L مع الوضع في الاعتبار خانة الإشارة فإذا كان الرقم سالب ( أقل من الصفر ) أي أن خان الإشارة تحتوي ( 1 ) فيتم وضع الرقم ( 1 ) في كل الخانات التي تم إزاحتها من الشمال وإذا كان الرقم موجب ( أكبر من الصفر ) فيتم وضع ( 0 ) في الخانات التي تم إزاحتها على اليسار مع وضع آخر خانة Bit تم إزاحتها في CC1 من خانات Status word

وبالتالي فإن إزاحة رقم 16 خانة يعطي ( 0000#16 ) إذا كان الرقم موجب ويعطي ( FFFF#16 ) إذا كان الرقم سالب دون النظر لمحتويات الرقم

والشكل التالي يوضح شكل عملية Shifting التي تتم باستعمال SSI



مثال :

L MW4
//Load value into ACCU1//
SSI 6
//Shift bits with sign in ACCU1 six places to the right//
T MW8
//Transfer result to MW8//


مثال-2

L +3
//Load value +3 into ACCU1//
L MW20
//Load contents of ACCU 1 into ACCU 2. Load value of MW20 into ACCU1//
SSI
//Shift number is value of ACCU2-L-L => Shift bits with sign in ACCU1-L//
//three places to the right; fill free places with state of sign bit//
JP NEXT
//Jump to NEXT jump label if the bit shifted out last (CC 1) = 1//


Shift Sign Double Integer (32-Bit) : SSD


ولهذا الأمر نفس مواصفات الأمر السابق تماما ولكن على مستوى 32 خانة حيث يتم إزاحة محتويات ACCU1 بالكامل بعدد خانات يساوي الرقم الذي يلي الأمر أو بقيمة محتويات ACCU2-L-L في حالة استخدام الأمر بالصيغة SSD فقط دون ذكر رقم بعده مع الوضع في الاعتبار خانة الإشارة فإذا كان الرقم سالب أقل من الصفر يتم وضع الرقم ( 1 ) في الخانات التي تفريغها عل شمال الرقم الأصلي ويتم وضع الرقم ( 0 ) في حالة الرقم موجب أكبر من الصفر مع وضع قيمة آخر خانة تم إزاحتها في CC1

وبالتالي فإن إزاحة الرقم بعدد 32 خانة ينتج عنه إما ( 00000000 ) إذا كان موجبا أو ( FFFFFFFF ) إذا كان سالبا

والشكل التالي يمثل ما يتم عند عمل Shift باستخدام SSD



L MD4
//Load value into ACCU 1//
SSD 7
//Shift bits in ACCU 1 seven places to the right, according to the sign//
T MD8
//Transfer result to MD8//


مثال -2

L +3
//Load value +3 into ACCU 1//
L MD20
//Load contents of ACCU1 into ACCU2 Load value of MD20 into ACCU1//
SSD
//Shift number is value of ACCU2-L-L => Shift bits with sign in ACCU1 three//
//places to the right, fill free places with state of sign bit//
JP NEXT
//Jump to NEXT jump label if the bit shifted out last ( CC 1) = 1//


Shift Left Word (16-Bit) : SLW


يقوم هذا الأمر بإزاحة محتويات ACCU1-L إلى الشمال بعدد خانات يساوي الرقم الذي يلي الأمر أو بمحتويات ACCU2-L-L إذا جاء الأمر منفردا ويتم وضع ( 0 ) في الخانات التي يتم تفريغها مع ملاحظة أن التعامل هنا يكون بغض النظر عن الإشارة ( Unsigned integer ) ويتم وضع قيمة آخر خانة تم إزاحتها في CC1 في خانات Status word

وهذا يعني أنه إذا تم إزاحة الرقم 16 خانة فإنه يتم وضع ( 0000 ) كقيمة لمحتويات ACCU1-L وإذا كان الرقم بعد SLW , SSI , SSD صفرا ( 0 ) فإنه يتم التعامل مع الأمر على أنه NOP أي no-operation

الشكل التالي يوضح أثر عملية SLW على محتويات ACCU1



مثال -1
[left]
L MW4
//Load value into ACCU1//
SLW 5
//Shift the bits in ACCU1 five places to the left//
T MW8
//Transfer result to MW8//


مثال -2

L +3
//Load value +3 into ACCU1//
L MW20
//Load contents of ACCU1 into ACCU2. Load value of MW20 into ACCU1//
SLW
//Shift number is value of ACCU2-L-L => Shift bits in ACCU1-L three places//
//to the left//
JP NEXT
//Jump to NEXT jump label if the bit shifted out last (CC 1) = 1//


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

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

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   السبت 26 يوليو 2008 - 12:51

Shift Right Word (16-Bit) : SRW


في هذا الأمر يتم إزاحة محتويات ACCU1-L إلى اليمين بعدد خانات مساوي للرقم بعد الأمر SRW أو بعدد يساوي محتويات ACCU2-L-L مع ملء الخانات التي يتم تفريغها بأصفار حيث هنا يتم التعامل مع الرقم على أنه بدون إشارة Unsigned integer ويتم وضع قيمة آخر خانة تم إزاحتها في CC1

مع ملاحظة أنه إذا تم إزاحة الرقم الموجود في ACCU1-L بمقدار 16 خانة فإن محتويات ACCU1-L تصبح ( 0000 ) كذلك فإن CC0=0 , CC1=0 , OV=0

الصورة التالية توضح تأثير SRW على محتويات ACCU1-L



L MW4
//Load value into ACCU1//
SRW 6
//Shift bits in ACCU1-L six places to the right//
T MW8
//Transfer result to MW8//

مثال -2

L +3
//Load value +3 into ACCU1//
L MW20
//Load contents of ACCU1 into ACCU2. Load value of MW20 into ACCU1//
SRW
//Shift number is value of ACCU2-L-L => Shift bits in ACCU1-L three places//
//to the right//
SPP NEXT
//Jump to NEXT jump label if the bit shifted out last (CC 1)=1//


Shift Left Double Word (32-Bit) : SLD


يقوم هذا الأمر بإزاحة محتويات ACCU1 إلى الشمال بعدد خانات مساوي لقيمة العدد الذي يلي الأمر أو مساوي لقيمة محتويات ACCU2-L-L إذا جاء الأمر منفردا مع وضع أصفار مكان الخانات المزاحة ووضع قيمة آخر خانة تم إزاحتها في CC1

وإذا تم إزاحة رقم 32 خانة إلى الشمال باستعمال SLD فإن قيمة محتويات ACCU1 تصبح صفرا وكذلك CC1=0 , CC0=0 , OV=0

وإذا كان عدد خانات الإزاحة صفر يتم التعامل مع الأمر على أنه NOP أي لاشئ

ولمعرفة تأثير SLD على محتويات ACCU1 الصورة التالية



أمثلة :

Example 1


L MD4
//Load value into ACCU1//
SLD 5
//Shift bits in ACCU 1 five places to the left//
T MD8
//Transfer result to MD8//

Example 2

L +3
//Load value +3 into ACCU1//
L MD20
//Load the contents of ACCU1 into ACCU2//
//Load value of MD20 into ACCU1//
SLD
//Shift number is value of ACCU2-L-L => Shift bits in ACCU1 three places//
//to the left//
JP NEXT
//Jump to NEXT jump label if the bit shifted out last CC1=0//


Shift Right Double Word (32-Bit) : SRD

يقوم هذا الأمر بإزاحة محتويات ACCU1 بالكامل إلى اليمين بعدد خانات مساوي للرقم الذي يلي الأمر أو بقيمة محتويات ACCU2-L-L إذا جاء منفردا مع وضع أصفار مكان الخانات المزاحة ووضع قيمة آخر خانة تم إزاحتها في CC1

مع ملاحظة أنه إذا تم إزاحة محتويات ACCU1 بعدد 32 خانة تصبح محتويات ACCU1 صفرا وكذلك CC1 , CC0 , OV

الصورة التالية توضح تأثير SRD على محتويات ACCU1



أمثلة :

Example 1

L MD4
//Load value into ACCU1//
SRD 7
//Shift bits in ACCU1 seven places to the right//
T MD8
//Transfer result to MD8//

Example 2

L +3
//Load value +3 into ACCU1//
L MD20
//Load contents of ACCU 1 into ACCU 2. Load value of MD20 into ACCU1//
SRD
//Shift number is value of ACCU2-L-L => Shift bits in ACCU1 three places//
//to the right//
JP NEXT
//Jump to NEXT jump label if the bit shifted out last (CC 1)=1//
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
PLCMan
Admin
avatar

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

مُساهمةموضوع: Rotate Instructions   الثلاثاء 29 يوليو 2008 - 14:45

يمكن استخدام هذه الأوامر لتدوير محتويات ACCU1 للشمال أو لليمين وهي مماثلة لعمليات الإزاحة Shift غير أن الخانات التي يتم تفريغها تملأ بالخانات التي يتم إزاحتها

ومثل عمليات الإزاحة فإن عمليات التدوير تتم بعدد خانات مساوي للرقم الذي يلي الأمر أما إذا أتى الأمر بدون رقم بعده فإن عملية التدوير تتم بعدد خانات مساوي لمحتويات ACCU2-L-L

كذلك فإن عمليات التدوير تتم بالاستعانة بخانة CC1 في Status word مثل عمليات Shift أيضا

الأوامر المتوفرة لعمليات التدوير



RLD Rotate Left Double Word 32-Bit
RRD Rotate Right Double Word 32-Bit
RLDA Rotate ACCU 1 Left via CC 1 32-Bit
RRDA Rotate ACCU 1 Right via CC 1 32-Bit


ونبدأ بعرض تفاصيل استخدامات الأوامر

Rotate Left Double Word (32-Bit) : RLD


يستعمل هذا الأمر لتدوير محتويات ACCU1 ناحية الشمال بعدد خانات مساوي للرقم الذي يليه إذا أتى على الشكل الآتي :

RLD <number> , <number> : number of rotatr bits


إما إذا أتى منفردا بالشكل RLD فتتم عملية التدوير بعدد خانات مساوي لمحتويات ACCU2-L-L ويتم تخزين آخر خانة تم تدويرها في CC1 ويتم ملء الخانات التي يتم تفريغها من ناحية اليمين بقيم الخانات الت تم إزاحتها من ناحية الشمال

أقصى قيمة للرقم <number> هي 32 وإذا كان الرقم يساوي " 0 " فإن الأمر يعامل كأنه NOP وإذا كان الرقم 32 فإن الرقم النهائي يساوي القيمة الأصلية

الشكل التالي يوضح عمليات RLD



أمثلة :

Example 1

L MD2
//Load value into ACCU1//
RLD 4
//Rotate bits in ACCU 1 four places to the left//
T MD8
//Transfer result to MD8//

Example 2

L +3
//Load value +3 into ACCU1//
L MD20
//Load contents of ACCU1 into ACCU2. Load value of MD20 into ACCU1//
RLD
//Rotation number is value of ACCU2-L-L => Rotate bits in ACCU1//
//three places to the left//
JP NEXT
//Jump to NEXT jump label if the bit rotated out last (CC1) = 1//


Rotate Right Double Word (32-Bit) : RRD


يقوم هذا الأمر بتدوير محتويات ACCU1 ناحية اليمين بعدد خانات مساوي للرقم الذي يلي الأمر RRD أما إذا أتى الأمر منفردا فيتم التدوير بعدد خانات مساوي لمحتويات ACCU2-L-L مع استخدام CC1 حي تحتوي على قيمة آخر خانة تم إزاحتها ويتم ملء الخانات التي يتم تفريغها ناحية الشمال بقيمة الخانات التي يتم إزاحتها ناحية اليمين

أيضا إذا كان الرقم بعد الامر RRD صفرا فإن الأمر يعامل على أنه NOP وإذا كان الرقم 32 فلا تحدث تغيرات في قيمة محتويات ACCU1

الشكل التالي سوف يوضح تأثير RRD على ACCU1



أمثلة :

Example 1

L MD2
//Load value into ACCU1//
RRD 4
//Rotate bits in ACCU1 four places to the right//
T MD8
//Transfer result to MD8//

Example 2

L +3
//Load value +3 into ACCU1//
L MD20
//Load contents of ACCU1 into ACCU2. Load value of MD20 into ACCU1//
RRD
//Rotation number is value of ACCU2-L-L => Rotate bits in ACCU1 three places//
//to the right//
JP NEXT
//Jump to NEXT jump label if the bit rotated out last (CC1) = 1//


Rotate ACCU 1 Left via CC 1 (32-Bit) : RLDA


يقوم هذا الأمر بتدوير محتويات ACCU1 مع CC1 خانة واحدة إلى الشمال وتصفير كل من CC0,OV

الشكل التالي يوضح شكل التنفيذ



مثال :

L MD2
//Load value of MD2 into ACCU1//
RLDA
//Rotate bits in ACCU1 one place to the left via CC1//
JP NEXT
//Jump to NEXT jump label if the bit rotated out last (CC1) = 1//


Rotate ACCU 1 Right via CC 1 (32-Bit) : RRDA


يقوم هذا الأمر بتدوير محتويات ACCU1 مع CC1 ناحية اليمين خانة واحدة مع تصفير CC0 , OV

الشكل التالي يبين تأثير الأمر على محتويات ACCU1 و CC1



مثال :

L MD2
//Load value of MD2 into ACCU1//
RRDA
//Rotate bits in ACCU1 one place to the right via CC1//
JP NEXT
//Jump to NEXT jump label if the bit rotated out last (CC 1) = 1//
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://hassanheha.forumn.org
walidpcd
رقيب
رقيب


عدد الرسائل : 26
تاريخ التسجيل : 09/07/2008

مُساهمةموضوع: رد: دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7   الجمعة 1 أغسطس 2008 - 14:17

دورة أكثر من رائعة وجزاكم الله خيرا
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
 
دورة تدريبية في الحاكمات المنطقية قابلة للبرمجة طراز Siemens S7
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 3 من اصل 21انتقل الى الصفحة : الصفحة السابقة  1, 2, 3, 4 ... 12 ... 21  الصفحة التالية

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