دورة تدريبية في المبرمجات المنطقية طراز Siemens S7
منتدى التحكم الآلي والإلكترونيات :: منتديات التحكم الآلي والإلكترونيات :: منتدي التحكم الآلي والمبرمجات المنطقية
صفحة 2 من اصل 5•
صفحة 2 من اصل 5 •
1, 2, 3, 4, 5 
هل تشعر أنه يمكن أن نلحق بمن سبقنا في مجال التحكم الآلي ؟
مشكور يا مهندس حسن
بعد اطلاعي السريع على محتوى الدورة وجدت انها ممتازة ومفصلة ويبدو انها اخذت وقت منك , وهذا دلالة على الجدية لديك
كما اخبرتك سابقا انا كمهندس صيانة احتاج لمثل هذة المعلومات
و انا في انتظار تكملة الدورة
كما اخبرتك سابقا انا كمهندس صيانة احتاج لمثل هذة المعلومات
و انا في انتظار تكملة الدورة
الدرس رقم -10 Conversion Instructions
هذه العمليات تمكننا من تحويل الأرقام من صيغة إلى أخرى والصيغ الأهم التي تقوم عليها كل أنواع الحسابات هي :
- الأرقام الصحيحة 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
نكتفي بهذا القدر ونكمل باقي أوامر التحويل المرة القادمة إن شاء الله
- الأرقام الصحيحة 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
نكتفي بهذا القدر ونكمل باقي أوامر التحويل المرة القادمة إن شاء الله
الدرس رقم -11 استكمال Conversion Instructions
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
ونستكمل إن شاء الله في المرات التالية
وهذا الأمر يقوم بتبديل وضع ترتيب خانات 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
ونستكمل إن شاء الله في المرات التالية
الدرس رقم 12 - Comparison instructions
المقارنة 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
هذه الأوامر كلها تقارن محتويات 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
رد: دورة تدريبية في المبرمجات المنطقية طراز Siemens S7
السلام عليكم
يعطيك العافية يا مهندس حسن
انا حابب اشكرك اولا
ثانيا عندي لك سؤال - كيف الطريقة لتحميل برنامج من PLC الى الكمبيوتر عن طريق برنامج simatic manger ??
و السؤال مهم علشان اعمل Backup لجميع البرامج الموجودة عندي في المصنع , علما ان كل plc الموجودة في
المصنع هي S300
انتظر الاجابة و شكرا
يعطيك العافية يا مهندس حسن
انا حابب اشكرك اولا
ثانيا عندي لك سؤال - كيف الطريقة لتحميل برنامج من PLC الى الكمبيوتر عن طريق برنامج simatic manger ??
و السؤال مهم علشان اعمل Backup لجميع البرامج الموجودة عندي في المصنع , علما ان كل plc الموجودة في
المصنع هي S300
انتظر الاجابة و شكرا
رد: دورة تدريبية في المبرمجات المنطقية طراز Siemens S7
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
أرجو أن يفيد هذا وإذا وجدت أي صعوبة يمكنك فتح البرنامج في الوقت الذي يناسبك وأكون معك على الشات على هذا المنتدى حتى تتم العملية
مع التمنيات بالتوفيق
الدرس رقم -13 ( استكمال الدرس رقم -6 ) Bit logic operations
والآن قد آن الأوان لنستكمل ما كنا قد تركناه من عمليات منطقية في الدرس رقم-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
وهو لاكتشاف الحافة الموجبة ولكي نفهم الأداء الوظيفي مع التنفيذ المثال التالي على كيفية التنفيذ :

أولا : العمليات المتداخلة 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
وهو لاكتشاف الحافة الموجبة ولكي نفهم الأداء الوظيفي مع التنفيذ المثال التالي على كيفية التنفيذ :

رد: دورة تدريبية في المبرمجات المنطقية طراز Siemens S7
بارك الله فيك
نريد بعض الأمثلة العملية والتطبيقات حتى لا يلتبس علينا الأمر بكثرة الكلام النظري وجزاكم الله خيرا
نريد بعض الأمثلة العملية والتطبيقات حتى لا يلتبس علينا الأمر بكثرة الكلام النظري وجزاكم الله خيرا
رد: دورة تدريبية في المبرمجات المنطقية طراز Siemens S7
semsem كتب:بارك الله فيك
نريد بعض الأمثلة العملية والتطبيقات حتى لا يلتبس علينا الأمر بكثرة الكلام النظري وجزاكم الله خيرا
نحن دائما في انتظار مقترحاتكم ونرجو ألا تبخلوا بها علينا للمزيد من فعالية المنتدى وعموم الفائدة انتظرونا في أقرب فرصة بالتطبيقات المطلوبة
وجزاكم الله خيرا
المدير
سؤال على الماشي
سلام :
كيفك يا مهندس حسن و بشكرك على نشاطك الدائم
انا ما عملت تحميل البرنامج من plc لحد الآن ولكن لما ابدا عمل راح اتواصل معك ان شاء الله
بس حابب اتأكد هل في خطر على البرنامج الموجود على plc اذا سحبناه على الكمبيوتر ؟؟؟؟
عندي كمان سؤال صغير ... ما هي احسن انواع plc هل هي siemens ولا omron ولا غيرها ؟؟؟؟
وشكرا
كيفك يا مهندس حسن و بشكرك على نشاطك الدائم
انا ما عملت تحميل البرنامج من plc لحد الآن ولكن لما ابدا عمل راح اتواصل معك ان شاء الله
بس حابب اتأكد هل في خطر على البرنامج الموجود على plc اذا سحبناه على الكمبيوتر ؟؟؟؟
عندي كمان سؤال صغير ... ما هي احسن انواع plc هل هي siemens ولا omron ولا غيرها ؟؟؟؟
وشكرا
صفحة 2 من اصل 5 •
1, 2, 3, 4, 5 



من طرف anasabsi في الثلاثاء 22 أبريل 2008 - 10:49
