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

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

 

 شرح بسيط ل indirect addressing

اذهب الى الأسفل 
2 مشترك
كاتب الموضوعرسالة
marocautomatique
عريف
عريف



عدد الرسائل : 16
العمر : 35
تاريخ التسجيل : 07/07/2014

شرح بسيط ل indirect addressing Empty
مُساهمةموضوع: شرح بسيط ل indirect addressing   شرح بسيط ل indirect addressing Emptyالإثنين 11 مايو 2015 - 8:33

الطريقة اﻷكثر شيوعا للعنونة في step7 هي بدون الشك العنونة المباشرة و العنونة بالرموز symbolic addressing, في هذه الحالة تكون الذاكرة المراد استعمالها معروفة مسبقا و هذه أمثلة للعنونة المباشرة :

INPUT : I0.0; IB10; IW20; ID40

OUTPUT : Q0.0; QB30; QW50; QD60

MARKERS : M124.0; MB132; MW200; MD300

TIMERS: T2; T54

COUNTERS : C30

LOCAL : L0.1; LB52; LW300; LD30

DATA BLOCK : DB5.DBX4.0; DB6.DBB2; DB20.DBW6; DB60.DBD4

لكن قد يقتضي الامر استعمال العنونة غير المباشرة و ذلك لعدة اسباب نذكر منها على سبيل المثال لا الحصر :

تقليص عدد التعليمات في برنامج ما و بالتالي تقليص حجم البرنامج

تمرير البيانات الغير معروفة حتى وقت التشغيل

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

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

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

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


مميزات العنونة غير المباشرة كثيرة فهي تقلص عدد التعليمات بشكل ملحوظ و تستعمل ايضا في بعض الدوال المبرمجة مسبقا و التي توجد في step7 library كالدالة بلوك موڤ (BLOCK MOVE) التي تعمل على نقل و ارسال مساحات كبيرة من الذاكرة.

قبل ان نخوض في التفاصيل يجب ان نفهم اولا عنصرا مهما في البرمجة و اود من كل من له دراية بهذا الامر ان يدلي بدلوه حتى نصل الى شرح ممل لهذا الجزء الذي هو المؤشر the pointer

THE POINTER

هذا العنصر المهم الذي لا يتجزء عن البرمجة و هو يستعمل لتشكيل عدد يستعمل في شكل عنوان عوضا عن قيمة، هذا يعني ان العدد او القيمة المخزنة في المؤشر هي عنوان لمكان ما في الذاكرة و ليست قيمة محضة و يكتب المؤشر مسبوقا ب #P

اذن فالمؤشر يحوي عنوان لذاكرة ما قد تكون مدخل، مخرج، ميركر، داتا بلوك، جزء من داتا بلوك، عداد، تايمر الخ و تنقسم المؤشرات في step7 الى 3 انواع :

شرح بسيط ل indirect addressing Rhlpg8


1-Memory Indirect Addressing

اول طريقة لاستخدام العنونة غير المباشرة هي memory indirect addressing حيث انها تسمح لذاكرة ما ان تحدد او ان تؤشر لعنوان ذاكرة اخرى و تستعمل بهذا الشكل :
[operation identifier [memory مثلا              [L     T  [MW2  

و هذا يعني : حمل قيمة التايمر اللذي رقمه متواجد في MW2 فلو كانت القيمة المخزنة في MW2 تساوي 4 مثلا فسوف يحمل قيمة الزمن المتواجدة في T4.

عند استعمال هذه الطريقة يجب مراعاة نوع البيانات التي نتعامل معها ف مثلا عند التعامل مع  T, C, DB, DI, FB and FC يجب ان يكون حجم الذاكرة المستخدمة للإشارة الى العناوين السابق ذكرها 16 بت اي WORD لذلك فقد استخدمت MW2 و لم استخدم MB2.

هذه بعض الامثلة:

                  L 5
             T MW2  
        [L T [MW2

حمل القيمة 5 في ACCU1

ارسل محتوى ACUU1  الى MW2

حمل قيمة التايمر المحدد بواسطة MW2 اي T5



[OPN DB [#DB_Temp

إفتح الداتا بلوك اللذي رقمه موجود في المتغير DB_Temp#


[CALL FC[MW6

نادي على الدالة المشار اليها بالرقم المتواجد في MW6


هذا في ما يخص T, C, DB, DI, FB and FC. اما بالنسبة لI, Q, M, L, DB فينطبق عليهم ما ينطبق على ما سبق باستثناء استعمال ذاكرة بحجم 32-bits بدلا من 16-bits

و هذه بعض الامثلة :

L P#0.5
T MD4
[A I[MD4
[Q[MD4=

حمل ACUU1 بالمؤشر P#0.5

ارسل محتوى ACUU1 الى MD4

إستجوب المدخل المشار إليه بواسطة MD4 في هذه الحالة I0.5

ارسل حالة المدخل I0.5 الى المخرج Q0.5


OPN DB   3

L P#4.0

T #TempPointer

[L DBW [#TempPointer

L 0

D<

افتح الداتا بلوك DB3

حمل المؤشر P#4.0  في ACUU1

ارسل المؤشر الى الذاكرة المؤقته TempPointer#

حمل WORD اللذي رقمه موجود داخل الذاكرة المؤقته TempPointer#

العمليات على المؤشرات :

يمكن تطبيق الجمع على المؤشرات بإستخدام التعليمة D+ و المثال التالي يوضح ذلك :

L P#3.0

L P#4.0

D+

T MD 6            //الآن تحتوي MD6 على  P#7.0


عدل سابقا من قبل marocautomatique في الإثنين 11 مايو 2015 - 9:35 عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
RAMA
رائد
رائد



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

شرح بسيط ل indirect addressing Empty
مُساهمةموضوع: رد: شرح بسيط ل indirect addressing   شرح بسيط ل indirect addressing Emptyالجمعة 15 مايو 2015 - 4:17

السلام عليكم
اكمل الموضوع ان امكن
واذا يوجد امثلة اخرى عملية اذكرها
شكرا لمجهودك
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
شرح بسيط ل indirect addressing
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
»  Siemens S7-1200 PLC ثلاث مضخات تعمل بالتوالي
» Indirect Addressing in PLC
» نزل كامل مكتبة سيمنس من manuals بلنك واحد
» الرجاء عمل شرح للـ indirect addressing
» الرجاء عمل شرح للـ indirect addressing

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