الأحد، 26 مايو 2013

المتحكم المنطقى المبرمج PLC




ما هو فى المتحكم المنطقى المبرمج PLC ؟

PLC تعنى "المتحكم المنطقى المبرمج" Programmable Logic Controller وهو جهاز أخترع ليحل محل دوائر الريلايات التى تقوم بتنفيذ عمليات متتابعة (متسلسلة حدث تلو الآخر) sequential بغرض التحكم فى الآلات .
يعمل المتحكم PLC من خلال النظر إلى مدخلاته وتبعا لحالاتها يقوم بتشغيل أو تبطيل on/offمخارجه . يقوم المستخدم بإدخال برنامج عادة عن طريق البرمجيات software والذى يعطى النتائج المرجوة (المطلوبة) .
يستخدم المتحكم PLC فى العديد من التطبيقات العملية الحقيقية . فلا تخلو صناعة من وجود PLC حيث يدخل فى : تصنيع الآلات وعمليات التغليف وتداول (مناولة) الخامات والتجميع الآلى وغيرها من الصناعات التى لا تعد ولا تحصى وربما كنت بالفعل من مستخدميه وإن لم تكن فإنك قد تضيع المال والوقت . غالبا فإن أى تطبيق يحتاج إلى نوع ما من التحكم الكهربائى يحتاج لاستخدام المتحكم PLC .

على سبيل المثال :
دعونا نفترض أنه عند تشغيل مفتاح نريد تشغيل ملف solenoid لمدة 5 ثوانى ثم فصله بغض النظر عن فترة بقاء المفتاح فى وضع التشغيل .
يمكننا أن نفعل ذلك بمؤقت خارجى بسيط .
ولكن ماذا لو اشتملت العملية على 10 مفاتيح و10 ملفات ؟
سوف نحتاج إلى 10 مؤقتات خارجية .
وماذا إذا احتاجت العملية أيضا حساب (عد) عدد مرات تشغيل المفاتيح كل على حدة ؟
سوف نحتاج إلى العديد من العدادات الخارجية .
يمكنك أن ترى أنه كلما كبرت العملية كلما زادت الحاجة للمتحكم المنطقى المبرمج PLC .
يمكننا ببساطة برمجة PLC لعد مدخلاته وتشغيل الملفات لمدة محددة .


نظرية العمل Theory of Operation

المتحكم المنطقى المبرمج من الداخل :


يتكون المتحكم PLC أساسا من :
وحدة معالجة مركزية CPU و حيز (مساحة) من الذاكرة memory والدوائر المناسبة للتعامل مع البيانات المستقبلة (من المداخل ) والمرسلة (إلى المخارج ) .
يمكننا فعليا أن نعتبر المتحكم PLC كصندوق ملىء بمئات بل بالآلاف من الريلايات المنفصلة والعدادات والمؤقتات وأماكن حفظ (تخزين) البيانات .

هل تلك العدادات والمؤقتات وخلافه موجودة فعليا ؟
كلا غير موجودة فى الطبيعة بل تقلد (تحاكى) ويمكن إعتبارها عدادات ومؤقتات برمجية Software . الريلايات الداخلية تقلد من خلال مواقع خانات فى السجلات الداخلية .




وظيفة كل جزء :

ريلايات الدخل (التلامسات) INPUT RELAYS :
وهى الموصلة للعالم الخارجى . فهى موجودة فى الطبيعة وتستقبل الإشارات من المفاتيح والحساسات (المستشعرات – الكواشف) وخلافه . فعليا هى ليست ريلايات ولكنها أشباه موصلات .

ريلايات المنفعة الداخلية (تلامسات) INTERNAL UTILITY RELAYS :
وهى لا تستقبل إشارات من العالم الخارجى كما أنه لا وجود لها فى الطبيعة .وهى رلايات مقلدة وهى تمكن المتحكم PLC من الإستغناء عن الريلايات الخارجية . كما يوجد أيضا ريلايات خاصة والتى تصمم لأداء مهمة واحدة . بعضها يكون موصل on دائما بينما البعض الآخر مفصول off دائما . والبعض يكون موصل on فقط بمجرد توصيل القدرة ويستخدم لتهيئة البيانات المحفوظة (المخزنة) .


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

المؤقتات TIMERS :
وهذه أيضا غير موجودة فى الطبيعة . ولها أصناف متعددة . النوع الشائع الاستخدام هو مؤقت "تأخير التوصيل" on-delay . كما يوجد مؤقت "تأخير الفصل" off-delay وكل من المؤقت المتذكر retentive والغير متذكر non-retentive . التزايد Increment فى الفترات الزمنية يتغير من 1ms ألى 1s .

ريلايات الخرج (الملفات) OUTPUT RELAYS :
وهذه توصل إلى العالم الخارجى . وهى موجودة فى الطبيعة وترسل إشارات توصيل وفصل on/off إلى ملفات ومصابيح و...ألخ . ويمكن أن تكون ترانزستور أو ريلاى أو ترياك حسب النموذج المختار .

مخزن البيانات DATA STORAGE :
وهى سجلات مخصصة لتخزين البيانات . وهى عادة تستخدم للتخزين المؤقت للعمليات الرياضية أو لمعالجة البيانات . كما يمكن أن تستخدم فى تخزين البيانات عند إزالة القدرة عن المتحكم PLC . عند عودة القدرة سوف تظل محتوياتها كما هى قبل إزالة القدرة .





طريقة عمل المتحكم المنطقى المبرمج : PLC Operation


يعمل المتحكم PLC عن طريق المسح scanning المستمر للبرنامج دورة تلو الدورة . يمكننا التفكير فى دورة المسح على أنها مكونة من 3 خطوات هامة . فعليا يوجد أكثر من 3 خطوات ولكن يمكننا التركيز على الأجزاء المهمة ولا نقلق من الباقى . الخطوات الأخرى هى اختبار النظام وتحديث قيم العدادات والمؤقتات الداخلية .




الخطوة رقم 1 : فحص (اختبار) حالة المدخل CHECK INPUT STATUS
أولا يقوم المتحكم PLC بأخذ نظرة على كل مدخل لتحديد حالته : هل هو موصل on أم مفصول off ؟ . وبعبارة أخرى هل الحساس الموصل إلى المدخل الأول موصل on ؟ وماذا حول المدخل الثانى ؟ وكيف حال الثالث ؟ ..... ويقوم بتسجيل هذه البيانات فى ذاكرته لكى يستخدمها فى الخطوة التالية .

الخطوة رقم 2 : تنفيذ البرنامج EXECUTE PROGRAM
ثانيا يقوم المتحكم PLC بعد ذلك بتنفيذ برنامجك : تعليمة تلو تعليمة ( تعليمة واحدة فى كل مرة ) على التتابع . قد يقول (يخبر) برنامجك : إذا كان المدخل الأول فى حالة توصيل on عندئذ يجب تشغيل المخرج الأول أى جعله فى حالة توصيل on . حيث أنه بالفعل يعرف من الخطوة السابقة أى المداخل فى حالة توصيل on وأيها فى حالة فصل off فيكون قادرا على إتخاذ القرار عما إذا كان يجب توصيل المخرج الأول بناء على حالة المدخل الأول . بعد ذلك يقوم بحفظ (تخزين) نتائج التنفيذ لكى يستخدمها بعد ذلك خلال الخطوة التالية .

الخطوة رقم 3 : تحديث حالة المخرج UPDATE OUTPUT STATUS
وأخيرا يقوم المتحكم PLC بتحديث حالة المخارج : يقوم بتحديث المخارج بناء على أى من المداخل موصل on خلال الخطوة الأولى ونتائج تنفيذ برنامجك خلال الخطوة الثانية . بناء على المثال المذكور فى الخطوة الثانية يجب أن يقوم الآن بتوصيل المخرج الأول لأن المدخل الأول كان موصلا وبرنامجك ينص على " توصيل المخرج الأول عندما عندما يتحقق هذا الشرط " condition is true .
بعد الخطوة التالثة يعود المتحكم PLC مرة أخرى ويكرر الخطوات باستمرار .
زمن دورة المسح scan time :
يعرف على أنه الزمن المأخوذ فى تنفيذ الخطوات الثلاثة المذكورة سابقا .



زمن الاستجابة : Response Time

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

لاحظ أنه فى هذا المثال كان لدينا استجابة لثلاثة أشياء :

الدخل INPUT :
استغرق الأمر بعض الوقت لكى يلاحظ المخ إشارة الدخل من العين.

التنفيذ EXECUTION :
واستغرق الامر بعض الوقت لمعالجة المعلومات الواردة من العين.
نعتبر البرنامج هو : إذا رأت العين صور قبيحة عندئذ يتم إخراج الكلمات المناسبة للفم .
الخرج OUTPUT :
يتلقى الفم إشارة من المخ وفي النهاية يخرج العبارة : "هذه صورة قبيحة حقا "




مخاوف ( مخاطر ) زمن الاستجابة Response Time Concerns
الآن وقد عرفنا زمن الاستجابة ، فماذا يعنى ذلك للتطبيق ؟ .
المتحكم PLC أثناء مسحه لا يمكنه إلا رؤية المدخل وهو فى حالة التوصيل أو فى حالة الفصل . وبعبارة أخرى : إنه ينظر إلى مداخله فقط خلال خطوة فحص (اختبار) حالة المدخل من فترة المسح .



في الرسم التخطيطي :

أ‌- حالة المدخل تتغير خلال دورة المسح الأولى (نسميه المدخل رقم 1)
المدخل رقم 1 لا يرى حتى تحين دورة المسح الثانية scan 2 . وذلك لأنه عند توصيل on المدخل تكون دورة المسح الأولى قد انتهت بالفعل من النظر إلى المداخل .

ب‌- حالة المدخل تتغير خلال دورة المسح الثانية (نسميه المدخل رقم 2)
المدخل رقم 2 لا يرى حتى تحين دورة المسح الثالثة scan 3 . وذلك أيضا لأنه عند توصيل on المدخل تكون دورة المسح الثانية scan 2 إنتهت بالفعل من النظر إلى المداخل .

ت‌- حالة المدخل تتغير خلال دورة المسح الثالثة (نسميه المدخل رقم 3)
المدخل رقم 3 لا يرى أبدا . وذلك لأنه عندما تنظر الدورة الثالثة إلى المداخل فإن إشارة المدخل رقم 3 لم يتم توصيلها on بعد . ويتم فصلها قبل أن تنظر دورة المسح الرابعة إلى المداخل . لذلك لا يرى المتحكم PLC إشارة المدخل رقم 3 على الأطلاق .


لتجنب ذلك نقول : إن المدخل يجب أن يظل موصلا on لفترة زمنية لا تقل عن : زمن تأخير المدخل + زمن دورة مسح 1 input delay time + one scan time .
ولكن ماذا لو لم يكن من المستطاع بقاء الدخل موصلا لهذه الفترة ؟ النتيجة أن المتحكم PLC لن يرى المدخل أثناء التوصيل . ولذلك لا تصبح النتائج صحيحة , بالطبع يجب أن يكون هناك طريقة للإلتفاف حول هذا الوضع . فى الواقع هناك طريقتين :

1- دالة (وظيفة) مط (مد ) النبضة Pulse stretch function
هذه الدالة تمط طول إشارة الدخل حتى ينظر المتحكم PLC إلى المداخل خلال دورة المسح التالية ( أى يمد فترة بقاء النبضة ) .



2- دالة (وظيفة) المقاطعة Interrupt function :
هذه الدالة تقاطع Interrupt المسح لمعالجة برنامج فرعى ( يسمى روتين routine ) تقوم بكتابته . أى بمجرد ما يتم توصيل on المدخل وبغض النظر عن مكان المسح فى هذه اللحظة يقوم المتحكم PLC فورا بإيقاف ما يقوم بفعله ويقوم بتنفيذ روتين المقاطعة ( الروتين هو برنامج فرعى صغير خارج البرنامج الرئيسى) . وبعد تنفيذ المقاطعة يعود إلى النقطة التى توقف عندها ويستمر فى عملية المسح العادى .



الآن لنرى أطول فترة توصيل فعلى on للخرج :
نفترض أنه عندما يتم توصيل المفتاح نحتاج لتوصيل حمل موصل بخرج المتحكم PLC .
المخطط التالى يبين أطول تأخير (أسوأ الحالات لأن الدخل لا يرى حتى الدورة الثانية من المسح ) لتوصيل الخرج بعد توصيل الدخل .
لذلك يكون أقصى تأخير يساوى( دورتين مسح - زمن تأخير الدخل )



هل الموضوع صعبا ؟ لنرى التفاصيل .

الريلايات Relays
 
أهم العناصر المكونة للبرنامج هو الريلاى , فكيف يعمل الريلاى فى الحقيقة ؟
يمكننا أن نفكر فى الريلاى كمفتاح كهرومغناطيسى (كهربى – مغناطيسى ) وهو مكون من ملف coil وتلامسات contacts . عند توصيل جهد إلى الملف يمر به تيار كهربائى فيتولد مجال مغناطيسى , يقوم بجذب (بتحريك) تلامسات الريلاى مسببا توصيل (أو فصل) دائرتها . هذه التلامسات يمكن إعتبارها كمفتاح , فهى تسمح بمرور (أو قطع) التيار بين نقطتين ومن ثم غلق (أو فتح) الدائرة .


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



لاحظ من الشكل أن لدينا دائرتين منفصلتين .
· دائرة المفتاح السفلية باللون الأزرق حيث يمر تيار مستمر .
· ودائرة الجرس العلوية حيث يمر تيار متردد .
أى استخدمنا ريلاى تيار مستمر للتحكم فى دائرة تيار متردد .

مخطط تمثيل مكونات دائرة الريلاى بتعليمات برمجية (يسمى مخطط منطق السلم ) :

الخطوة الأولى :

يهتم البرنامج فقط بالمدخلات Inputs والمخرجات Outputs ويتم التمثيل أو الاستبدال كما يلى :

1- أولا تمثيل ( استبدال ) البطارية برمز :
هذا الرمز مشترك لجميع المخططات , فنرسم ما يسمى القضيبان bars وهما رأسيان, قضيب فى كل جانب من المخطط , ونتخيل القضيب الأيسر على أنه الطرف الموجب للبطارية والقضيب الأيمن على أنه الطرف السالب للبطارية أو الأرضى , ونتخيل مرور التيار (يسمى التيار المنطقى) من اليسار إلى اليمين

2- ثانيا تمثيل ( استبدال ) المداخل رمز :
فى هذا المثال لدينا مدخل حقيقى واحد وهو المفتاح , رمز المدخل يستخدم كتلامس ريلاى ويكون بالشكل الآتى :



3- ثالثا تمثيل ( استبدال ) المخارج برمز :
فى هذا المثال نستخدم مخرج حقيقى واحد هو الجرس , رمز المخرج يستخدم كملف ريلاى ويكون بالشكل الآتى :


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

الخطوة الثانية :
أعطاء جميع أجهزة المداخل وجميع أجهزة المخارج اسم محدد يعرف به ( يعرف بالعنوان) والذى يحدد أين يوصل المفتاح أو الجرس على الطبيعة .

الخطوة النهائية :
تحويل المخطط إلى تتايع (تسلسل) منطقى للأحداث وهو سهل جدا , حيث ترتيب البرنامج يخبر بتسلسل وقوع الأحداث . ففى مثالنا الحدث الأول غلق المفتاح ونتيجته تكون الحدث الثانى وهو تشغيل الجرس .




التعليمات الأساسية Basic Instructions

الآن ندرس بعض التعليمات الأساسية بمزيد من التفصيل لمعرفة المزيد حول ما تفعله كل واحدة .

1- تعليمات الدخل : التلامسات Contacts



إثنين من مهام (وظائف) البرمجة والأكثر شيوعا هما : التلامس المفتوح فى الوضع العادى NO والتلامس المغلق فى الوضع العادى NC (الوضع العادى هو وضع عدم التغذية أى عدم التشغيل ) .
يمر التيار خلال تلك التلامسات عندما تكون مغلقة . التلامس المفتوح فى الوضع العادى يكون فى الحالة المسماة true "صواب – صحيح - صادق" عندما يتحول إلى حالة الغلق أى عندما تكون خانة حالته (سواء أكان دخل أو خرج) والتى تتحكم فى التلامس فى الحالة المرتفعة أو الحالة المنطقية 1 .
التلامس المغلق فى الحالة العادية NC يكون فى الحالة true أى مغلق عندما تكون خانة حالته (سواء أكانت دخل أو خرج ) والتى تتحكم فى التلامس فى الحالة المنطقية المنخفضة أى 0 .

أ‌- تعليمة الدخل الرقمى المفتوح فى الوضع العادى : Normally Open ( NO )



· تمثل هذه التعليمة بتلامس مفتوح فى الوضع العادى normally open.
· وهى تعنى " إختبر الدخل لمعرفة هل تم توصيله (تشغيله) on فى الطبيعة "التشغيل هنا يعنى التحول من الحالة العادية المفتوحة إلى حالة التشغيل المغلقة .

· رمز التعليمة كما يلى :



تستخدم هذه التعليمة عند الحاجة لوجود إشارة دخل تشغيلها يسبب توصيل الدائرة .
عندما يكون الدخل الطبيعى فى وضع توصيل on يمكننا القول بأن التعليمة حقيقية (تحققت – صحيحة) True .
يتم اختبار إشارة الدخل لحالة التوصيل . إذا كان الدخل فعليا فى حالة التوصيل on عندئذ يكون الرمز أيضا فى حالة توصيل on ( تحول عن الحالة العادية). وتعرف حالة التوصيل أيضا بحالة المنطق 1 logic 1 state .
هذا الرمز يستخدم للمداخل الداخلية والمداخل الخارجية وتلامسات المخارج الخارجية
تذكر أن الريلايات الداخلية لا توجد فى الطبيعة . هى ريلايات مقلدة برمجيا .


ب‌- تعليمة الدخل الرقمى المغلق فى الوضع العادى : Normally Closed ( NC )
تمثل هذه التعليمة بتلامس مغلق فى الوضع العادى normally close .
· وهى تعنى " " إختبر الدخل لمعرفة هل تم توصيله (تشغيله)on فى الطبيعة " والتشغيل هنا يعنى التحول من الحالة العادية المغلقة إلى حالة التشغيل المفتوحة .

رمز هذه التعليمة هو :


تستخدم هذه التعليمة عند الحاجة لوجود إشارة دخل تشغيلها يسبب فصل الدائرة .
عندما يكون الدخل الطبيعى فى وضع فصل 0ff يمكننا القول بأن التعليمة حقيقية (تحققت – صحيحة) True (لأنها مغلقة فى الوضع العادى وتسمح بمرور التيار ) يتم اختبار إشارة الدخل لحالة الفصل . إذا كان الدخل فعليا فى حالة فصل off عندئذ يكون الرمز فى حالة توصيل on (الوضع العادى) . وتعرف حالة الفصل أيضا بحالة المنطق 0 logic 0 state .
هذا الرمز يستخدم للمداخل الداخلية والمداخل الخارجية وتلامسات المخارج الخارجية
تذكر أن الريلايات الداخلية لا توجد فى الطبيعة . هى ريلايات مقلدة برمجيا .
هذه التعليمة عكس تعليمة التحميل تماما .
 

ملحوظة :
فى معظم أنواع المتحكمات PLCs هذه التعليمات يجب أن يكون رمزها هو أول رمز جهة اليسار بمخطط السلم .

2- تعليمات الخرج

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

أ‌- تعليمة الخرج المفصول فى الوضع العادى
تسمى تعليمة "تشغيل الخرج" وهى تشبه ملف الريلاى ورمزها هو :

عندما تكون التعليمات التى تسبقها فى سطر من مخطط السلم فى حالة True (أى مغلقة وتسمح بمرور التيار ) تكون هى أيضا فى حالة True .
تكون التعليمات فى الحالة True عندما تكون فى حالة توصيل ON .
هذه التعليمة تعتبر كخرج مفتوح فى الوضع العادى .
يمكن استخدام هذه التعليمة للملفات الداخلية والمخارج الخارجية .
 

ب‌- تعليمة الخرج الموصل فى الوضع العادى
هذه التعليمة تعتبر كخرج مغلق فى الوضع العادى ورمزها هو :

عندما تكون التعليمات التى تسبقها فى سطر من مخطط السلم فى حالة False (أى مفصولة ولا تسمح بمرور التيار ) تكون هى فى حالة True .
تكون التعليمات فى الحالة True عندما تكون فى حالة توصيل ON .
يمكن استخدام هذه التعليمة للملفات الداخلية والمخارج الخارجية .
هذه التعليمة عكس تعليمة الخرج Out تماما .
مثال بسيط A Simple Example

لنقارن الآن بين مخطط سلم بسيط وتوصيلات دائرة الريلاى فى العالم الحقيقى لنرى الاختلافات .


فى الشكل العلوى :
· يتم إثارة (تشغيل) الملف عندما توجد دائرة مغلقة بين الطرف الموجب + والطرف السالب – للبطارية .
· يمكننا تقليد نفس الدائرة بمخطط سلم
· يتكون مخطط السلم من درجات rungs مستقلة تشبه درجات السلم الحقيقى .
· كل درجة يجب أن تحتوى على دخل واحد أو أكثر وخرج واحد أو أكثر .
· أول تعليمة فى الدرجة يجب أن تكون دائما تعليمة دخل وآخر تعليمة فى الدرجة يجب أن تكون دائما خرج أو ما يعادلها .

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


سجلات المتحكم PLC PLC Registers
سنأخذ الآن المثال السابق ونغير المفتاح (SW2) بآخر مغلق فى الوضع العادى .
فى الوضع الابتدائى (العادى) يكون المفتاح الأول SW1 فى الطبيعة فى وضعه العادى أى الفصل OFF والمفتاح SW2 يكون فى الطبيعة فى وضعه العادى أى التوصيل ON .

فيكون مخطط السلم بالشكل التالى :


لاحظ أيضا أننا الآن أعطينا كل رمز (أو تعليمة) عنوان . هذا العنوان يحدد (يخصص – يحجز ) منطقة تخزين معينة في ملفات (سجلات) بيانات المتحكم PLC بحيث يمكن حفظ (تخزين) حالة التعليمة (أى صواب / خطأ true/false مفتوح / مغلق ) .
تستخدم العديد من متحكمات PLC ملفات أو سجلات ذات 16 فتحة slot أو موقع تخزين "خانة" bit .
في المثال أعلاه استخدمنا اثنين من مواقع التخزين أو السجلات المختلفة .


من الجداول أعلاه يمكننا أن نرى أن :

فى السجل الذى موقعه أو عنوانه فى ذاكرة التخزين هو 00 أى register 00 :
الخانة 00 bit 00 في السجل 00 register 00 ، (أي المدخل 0000 input 0000) كانت فى حالة المنطق 0 logic 0 .
وأن الخانة 01 bit 01 (أى المدخل 0001 input 0001) كانت فى حالة المنطق 1. logic 1 .

وفى السجل الذى موقعه أو عنوانه فى ذاكرة فى ذاكرة التخزين هو 05 أى register 05 :
أن الخانة 00 bit 00 ( أى المخرج 0500 output 0500) كانت عند المنطق 0 logic 0 .

المنطق 0 أو 1 يشير إلى ما إذا كانت التعليمة غير صحيحة False أو صحيحة True.
ورغم أن معظم خانات جداول السجلات أعلاه فارغة، ينبغي أن تحتوي على كل 0. وقد تركت فارغة لتأكيد ملؤها بمواقع قد نعمل بها .


حالة تشغيل (تفعيل –إثارة) الخرج أى الحالة TRUE :

بالنظر إلى الجدول أعلاه نرى أنه في المثال السابق :
المفتاح SW1 يجب أن يكون فى حالة المنطق 1 (يتحول من الوضع المفتوح إلى الوضع المغلق )
والمفتاح SW2 يجب أن يكون فى حالة المنطق 0 (يبقى على حالته المغلقة) .
عندئذ وعندئذ فقط سوف يكون الملف (الخرج) فى حالة تشغيل true (أي فى حالة تنشيط).
إذا كان أي من التعليمات التى تسبق المخرج (الملف) والموجودة فى نفس الدرجة فى حالة false فإن المخرج (الملف) سوف يكون فى الحالة false (حالة عدم تنشيط).

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


لاحظ من المخطط أنه كلما غيرت المداخل من حالتها بمرو الزمن يتغير الخرج .
الخرج يكون true (نشيط) فقط عندما تكون جميع التعليمات السابقة فى الدرجة فى حالةtrue.

التحكم فى إرتفاع مستوى سائل داخل خزان Level Application




تطبيق :
التحكم فى إرتفاع مستوى سائل داخل خزان Level Application
والآن بعد أن رأينا كيف تعمل السجلات لنعالج برنامج مثل ما يقوم به المتحكم PLC لتعزيز فهمنا لكيف يتم مسح البرنامج .

لننظر في التطبيق التالي :
الغرض من البرنامج هو التحكم فى إرتفاع مستوى زيت تزييت lubricating oil موجود فى خزان tank بغرض تعويض المستهلك منه والحفاظ على الزيت بالخزان فى حدود معينة .
يتم ذلك عن طريق استخدام اثنين من أجهزة الاستشعار (الحساسات) من النوع المغلق فى الوضع العادى NC . يوضع واحد بالقرب من القاع bottom والآخر بالقرب من القمة top ، كما هو مبين في الشكل ادناه.


نريد تعبئة خزان زيت التزييت بواسطة مضخة تعمل بمحرك حتى الوصول إلى مستوى الحساس العلوى وتحوله .
عند هذه النقطة نريد إيقاف المحرك حتى هبوط المستوى إلى ما دون مستوى الحساس المنخفض . عندئذ ينبغي تشغيل المحرك لإعادة هذه العملية .
نحتاج هنا إلى 3 مداخل / مخارج : مدخلين (الحساسين) ومخرج ( محرك طلبمة الملء ) .
المدخلين من نوع "التلامسات المغلقة فى الوضع العادى NC " . عندما تكون غير مغمورة فى الزيت NOT immersed تكون موصلة ON (الوضع الطبيعى ) وعندما تغمر بالسائل تتحول إلى وضع الفصل OFF (تغيير الوضع الطبيعى) .

سوف نعطى كل جهاز دخل وكل جهاز خرج عنوان . وهذا يتيح للمتحكم التعرف على مكان توصيلها الفعلى . العناوين كما هى فى الجدول التالى :

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


ينبغي أن نتذكر دائما أن السبب الأكثر شيوعا لاستخدام المتحكم PLC في تطبيقاتنا هو استبدال
ريلايات العالم الحقيقى . الريلايات الداخلية تجعل هذا العمل ممكنا. من المستحيل أن نتبين كم عدد الريلايات الداخلية ضمن كل نوع من أنواع المتحكمات PLC , حيث يشمل البعض المئات بينما البعض الآخر يشمل إلوف في حين أن البعض الآخر يتضمن عشرات الإلوف . عمليا حجم المتحكم PLC (ليس الحجم المادي بل حجم مواقع تخزين المداخل / المخارج ) هي العامل الحاسم.
إذا كنا نستخدم متحكم صغير micro-plc بعدد قليم من المداخل / المخارج فإننا لا نحتاج إلى عدد كبير من الريلايات الداخلية . ولكن إذا كنا نستخدم متحكم PLC كبير بعدد مئات أو إلوف المداخل / المخارج فسوف نحتاج بالتأكيد لعدد كبير من الريلايات الداخلية .



مسح البرنامج The Program Scan

دعنا نشاهد (نلاحظ - نراقب ) ما الذى يحدث فى هذا البرنامج خلال دورة مسح تلو الأخرى


في البداية الخزان فارغ.
لذلك الدخل 0000 فى الحالة input 0000 is TRUE أى موصل ( حساس المستوى المنخفض غير مغمور فى السائل وهو مغلق فى الوضع العادى ) .
والدخل 0001 أيضا فى الحالة input 0001 is also TRUE ( حساس المستوى المرتفع أيضا غير مغمور فى السائل وهو مغلق فى الوضع العادى ).





تدريجيا يمتلء الخزان لأن 0500 ( محرك الملء يكون موصل ON )
بعد 100 دورة مسح يرتفع مستوى الزيت فوق حساس المستوى المنخفض ويتحول إلى حالة الفصل أو الفتح (أى يكون غير صواب FALSE )


لاحظ أنه حتى عندما يكون حساس المستوى المنخفض فى حالة غير صواب ما زال يوجد هناك ممر لمنطق الصواب true logic من اليسار إلى اليمين . وهذا هو سبب استخدام ريلاى داخلى . الريلاى 1000 يقوم بمسك أو بالحفاظ على الخرج 0500 فى حالة توصيل ON . وسوف يظل على هذه الحالة حتى حتى لا يتواجد ممر لمنطق الصواب من اليسار إلى اليمين (أى عندما يصبح 0001 فى الحالة الغير صواب )
بعد 1000 دورة مسح يرتفع مستوى الزيت إلى ما فوق حساس المستوى المرتفع والذى يتحول عندئذ إلى حالة الفصل أى يصبح مفتوح (أى غير صواب )





وحيث أنه لم يعد يوجد ممرات منطق الصواب يتحول الخرج 0500 إلى حالة الفصل ويؤدى إلى إيقاف المحرك .
بعد 1050 دورة مسح يهبط مستوى الزيت إلى ما دون حساس المستوى العلوى والذى يعود مرة أخرى إلى حالة الصواب (وضعه الطبيعى NC)


لاحظ أنه على الرغم من تحول حساس المستوى المرتفع إلى حالة الصواب NC لكن يظل عدم وجود ممر صواب مستمر ومن ثم يظل الملف 1000 فى الحالة الغير صواب false .
بعد 200 دورة مسح يهبط مستوى الزيت إلى ما دون حساس المستوى المنخفض والذى يتحول إلى حالة الصواب مرة أخرى (يعود إلى حالتة الطبيعية NC ) .
عند هذه النقطة يظهر المنطق كما كان فى دورة المسح الأولى ويتكرر المنطق كما سبق .

















تعليمات التعشيق (المزلاج –القفل) Latching Instructions وفك التعشيق Unlatching



الآن فهمنا كيف تتم معالجة المدخلات والمخرجات من قبل المتحكم PLC , لننظر في شكل آخر للخرج مختلف عن الشكل العادى . ملفات الخرج العادية هي بالطبع جزءا أساسيا من برامجنا ولكن علينا ان نتذكر انها تكون فعالة (حقيقية) True فقط عندما تكون جميع التعليمات التى قبلها فى الدرجة (السطر) أيضا فى الحالة True .ماذا يحدث إذا لم تكن كذلك ؟ بطبيعة الحال سوف يصبح الخرج غير فعال False (فى حالة فصل أو إيقاف off) .

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

تعليمة latching ( تعشيق – مزلاج – تثبيت – الغلق ) تسمح لنا باستخدام المفاتيح الضاغطة اللحظية وبرمجة المتحكم PLC بحيث أنه عند الضغط عليه يتم تشغيل الخرج وعند تحريره يظل الخرج على حالته من التشغيل (لذلك تسمى عملية تعشيق) ويمكن عند الضغطة الثانية فصل الخرج .


للتوضيح لنرى مثال فى عالم الحقيقة :
جهاز الريموت الخاص بالتليفزيون به مفتاح عند الضغط عليه يتم تشغيل التليفزيون وبه مفتاح (قديكون نفس المفتاح) عند الضغط عليه يتم فصل التليفزيون ولست مضطرا أن تظل ضاغطا على مفتاح التشغيل للحفاظ على التليفزيون فى حالة تشغيل . هذه هى وظيغة تعليمة latching .
تعليمة latch غالبا ما تسمى عملية set أى أن set = output latch.
تعليمة فك التعشيق unlatch غالبا تسمى reset أى أن reset = output unlatch .
الشكل التالى يبين كيفية استخدام هذه التعليمات فى البرنامج :

نستخدم هنا عدد 2 مفتاح زر ضاغط لحظى push button .
يتصل أحدهما فى الطبيعة بالدخل 0000 بينما يتصل الآخر فى الطبيعة بالدخل 0001
عندما يقوم المشغل بالضغط (دفع) على المفتاح الأول 0000 تصبح التعليمة"set 0500" فى الحالة الفعالة true وتكون النتيجة أن الخرج 0500 يتحول فى الطبيعة إلى حالة التشغيل on . حتى بعد توقف المشغل عن دفع المفتاح سيكون الخرج 0500 محافظا على حالة التشغيل . وتسمى هذه الحالة بحالة المسك أو التعشيق أو latch .
الطريقة الوحيدة لإيقاف الخرج 0500 هى توصيل (تشغيل) الدخل الثانى 0001 .
يؤدى ذلك جعل التعليمة "res 0500" فى الحالة true ومن ثم فك التعشيق أو عمل reset للخرج 0500 .


ماذا يحدث إذا تم توصيل كل من الدخلين 000 و 0001 فى نفس اللحظة ؟
ما هى حالة الخرج 0500 هل latched أم unlatched ؟
للإجابة على هذا السؤال يتعين علينا أن نفكر في تسلسل المسح.
يتم دائما مسح مخطط السلم من أعلى إلى أسفل ومن اليسار إلى اليمين.
أول شيء في المسح هو النظر إلى المداخل الفعلية . كلا المداخلين 0000 و 0001 فى حالة توصيل فى الطبيعة .
الخطوة التالية يقوم المتحكم PLC بتنفيذ البرنامج . مبتدئا من أعلى اليسار حيث المدخل 0000 فى حالة توصيل true فيجب عليه جعل الخرج 0500 فى حالة تعشيق set .
بعد ذلك يذهب إلى السطر الثانى حيث المدخل الثانى فى حالة توصيل true فيجب عليه فك تعشيق reset الخرج 0500 .
ثم فى آخر جزء من المسح عندما يقوم بتحديث المخارج سوف يحافظ على المخرج 0500 فى حالة فصل أى حالة reset .
أشكال توضيحية :

















العدادات Counters
العداد هو جهاز بسيط مخصص للقيام بشيء واحد بسيط هو "العد" count.
إستخدام العداد يكون فى بعض الأحيان تحديا لأن كل صانع متحكم PLC (ولأي سبب كان) يبدو أنه يستخدمه بطريقة مختلفة. إطمئن أن المعلومات التالية سوف تتيح لك ببساطة وسهولة برمجة عدادات أى منهم .

ما هي أنواع من العدادات الموجودة ؟

أنواع العدادات هى :

1- العدادات التصاعدية up-counters :
وهى تعد فقط 1,2,3... . وتسمى هذه العدادات إختصارا CTU , (count up) أو CNT أو C أو CTR .

2- العدادات التنازلية down counters
وهى تعد فقط 9,8,7,... . وتسمى هذه العدادات اختصارا CTD (count down) .

3- العدادات التصاعدية التنازلية up-down counters
وهى تعد تصاعديا و أو تنازليا 1,2,3,4,3,2,3,4,5,... . وتسمى اختصارا
UDC(up-down counter

العديد من الشركات المصنعة لديها نوع واحد فقط أو نوعين من العدادات ولكن يمكن استخدامها للعد التصاعدى والتنازلى أو كليهما . ربما يحدث خلط (إرتباك) ؟ ويمكنك أن تقول "لا توحيد"؟ لا تقلق ، فإن نظرية جميع العدادات واحدة بغض النظر عما يسميه المصنعين . فالعداد ما هو إلا عداد .
ومما يزيد هذا الموضوع إرباكا إن معظم الشركات المصنعة تضم أيضا عددا محدودا من العدادات عالية السرعة. وتسمى عادة HSC (high-speed counter) أو CTH (CounTer High-speed?) أو أيا كان.عادة ما تكون العدادات عالية السرعة عبارة عن أجهزة "hardware" .
العدادات العادية المذكورة أعلاه عادة ما تكون عدادات برمجية "software" . وبعبارة أخرى غير موجودة فعليا في الطبيعة فى المتحكم PLC بل هى مقلدة بالبرمجيات. عدادات الأجهزة موجودة في المتحكم PLC وهى لا تعتمد على زمن المسح .


لاستخدام العدادات يجب معرفة 3 أشياء :
1- من أين تأتى النبضات المراد عدها .عادة ما تكون من أحد المداخل (جهاز استشعار متصل بالمدخل 0000 على سبيل المثال).
2- كم عدد النبضات التى نريد عدها قبل التفاعل (رد الفعل) . على سبيل المثال عد عدد 5 من الحاجيات (البضائع) قبل تعبئتها أو تغليفها .
3- متى وكيف يتم تصفير reset العداد بحيث يقوم بالعد مرة أخرى . على سبيل المثال : بعد عد 5 من الحاجيات يتم تصفير العداد .
عندما يعمل run البرنامج فى المتحكم PLC عادة ما يعرض لنا القيمة الحالية أو القيمة الكلية (التراكمية ) بحيث يمكننا رؤية قيمة العد الحالى .
العدادات النموذجية يمكنها العد من 0 إلى 9999 أو من -32,768 إلى +32,767 أو من 0 إلى 65535 .
. لماذا هذه الأرقام الغريبة ؟ لأن معظم المتحكمات PLC لها عدادات ذات خانة 16 16-bit counters . فالعداد الى يقوم بالعد 0-9999 هو عداد 16 خانة نوع "ثنائى مكود عشرة " BCD والعداد الذى يقوم بالعد
-32,768 to 32767 والعد 0 to 65535 هو عداد 16 خانة ثنائى .

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


فى هذا العداد نحتاج لمدخلين :
المدخل الأول :
هو خط التصفير reset . عندما يكون هذا المدخل فى حالة on فإن قيمة العداد الحالية (المتراكمة) تعود إلى الصفر .

المدخل الثانى :
هو خط النبضات وهو العنوان من حيث تأتى النبضات التى نقوم بعدها .

مثال :
إذا كنا نعد عدد الحاجيات (البضائع) التى تمر أمام حساس موصل فى الطبيعة بالمدخل 0001 عندئذ نضع تلامس مفتوح فى الوضع العادى NO بالعنوان 0001 أمام خط النبضات .
اسم العداد هو Cxxx . إذا أردنا تسميته العداد صفر أى 000 عنئذ نضع هنا "C000" .
عدد النبضات المراد عدها قبل فعل شىء هو yyyyy . فإذا أردنا عد 5 حاجيات قبل تشغيل مخرج فى الطبيعة يقوم بتغليفهم عندئذ نضع هنا 5 . وإذا كان عدد الحاجيات 100 عندئذ نضع هنا 100 ...ألخ .
عند إنتهاء العداد (إى الوصول للعدد yyyy ) فإنه يقوم بتوصيل مجموعة منفصلة من التلامسات والتى نسميها أيضا Cxxx .
لاحظ أن قيمة العداد التراكمية تتغير فقط عن تحول (إنتقال) حالة نبضة المدخل من الحالة off إلى الحالة on .

هنا يبين الرمز فى مخطط السلم كيفية إعداد العداد ( سوف نسميه counter 000 ) لعد 100 قطعة من الحاجيات (البضائع) من المدخل 0001 قبل أن يقوم بتوصيل on المخرج 500 .
الحساس 0002 يقوم بعمل تصفير reset للعداد .

المحاكاة التفاعلية :





في المثال أعلاه، في كل مرة يدفع المشغل الزر الضاغط 0001 تزداد القيمة المتراكمة للعداد بواحد . لاحظ أنه يزداد فقط عند الانتقال من حالة off إلى حالة on . عندما تساوى القيمة المتراكمة القيمة المحددة مسبقا (أي 5) تتحول تلامسات العداد المسماة C000 إلى حالة التوصيل (التشغيل) ويصبح المخرج 0500 فى حالة تشغيل . عندما يدفع المشغل زر الإعادة أو reset التصفير (0002) تعود القيمة المتراكمة مرة أخرى إلى الصفر 0000 .

فيما يلى أحد الرموز لعداد تصاعدى تنازلى والتى ربما تواجهنا .
وسوف نستخدم الاختصار الذى ذكرناه وعندئذ يكون لدينا UDCxxx و yyyyy


فى هذا العداد التصاعدى التنازلى نحتاج لتخصيص 3 مداخل :
مدخل التصفير وله نفس الوظيفة كما سبق ذكره .
وبدلا من مدخل نبضات واحد يكون لدينا مدخلين . مدخل للعد التصاعدى والآخر للعد التنازلى .
فى هذا المثال سوف نسمى العداد UDC000 ونعطيه قيمة إعداد مسبقا هى 1000 ( سوف نقوم بعد 1000 نبضة أجمالية ) .
فى المداخل :
سوف نستخدم حساس والذى يقوم بتوصيل on المدخل 0001 عندما يرى هدف (نبضة) والحساس الآخر بالمدخل 0003 وأيضا يقوم بتوصيل on المدخل 0003 عندما يرى هدف (نبضة) .
عندما يكون المدخل 0001 فى حالة توصيل on يتم العد تصاعديا وعندما يكون المدخل 0003 فى حالة توصيل on يتم العد تنازليا .
عندما يصل العد إلى 1000 نبضة سوف يتم توصيل (تشغيل) المخرج 500 .
مرة أخرى لاحظ أن القيمة التراكمية للعداد تتغير عن تحول نبضة الدخل من الحالة off إلى الحالة on .

مخطط السلم موضح كما يلى :






المؤقتات Timers
ما هو المؤقت ؟ وكيف يعمل ؟
هو تماما كما تنص عليه الكلمة "مؤقت"
المؤقت ببساطة هو تعليمة تنتظر waits فترة زمنية محددة قبل فعل شىء ما .

أنواع المؤقتات :

1- مؤقت "تأخير التوصيل" On-Delay timer
هذا المؤقت ببساطة يؤخر التوصيل أو التشغيل on . بعبارة أخرى بعد أن يتم تحول الحساس (المدخل) إلى وضع التوصيل ننتظر x-seconds قبل أن يتم تفعيل (توصيل – تشغيل ) الملف (المخرج) . هذا النوع من المؤقتات هو الشائع ويسم إختصارا TON (timer on-delay) أو TIM (timer) أو TMR (timer) .

2- مؤقت تأخير الفصل Off-Delay timer
هذا المؤقت عكس مؤقت تأخير التوصيل المذكور عاليه . هذا المؤقت ببساطة "يؤخر الفصل أو الإيقاف off " فعندما يرى الحساس (المدخل) هدف يتم توصيل on الملف (المخرج) . وعندما يتم إزالة الهدف من أمام الحساس (المدخل) يتحول إلى حالة الفصل , نحافظ على الملف فى حالة التوصيل (التشغيل) لفترة x-seconds قبل أن يتحول إلى وضع الفصل . يسمى هذا المؤقت إختصارا TOF (timer off-delay) وهو أقل شيوعا من مؤقت تأخير التوصيل .


3- المؤقت التراكمى (المتذكر) Retentive or Accumulating timer
يحتاج هذا المؤقت لمدخلين . المدخل الأول يبدأ حدث التوقيت ( أى بداية دقات أو تكتكات الساعة ) والدخل الآخر لعمل تصفير reset للمؤقت .
مؤقتات تأخير التوصيل أو الفصل يتم تصفيرها إذا لم يوجد تحول بين التوصيل والفصل on/off طوال فترة المؤقت الكاملة .
هذا المؤقت يحفظ (يتذكر) الوقت المنقضى عند تحول الحساس إلى وضع الفصل .

على سبيل المثال :
نريد معرفة طول فترة بقاء الحساس فى حالة التوصيل خلال فترة زمنية قدرها ساعة .
أذا استخدما أحد المؤقتات السابقة فسوف يتم تصفيرها عند تحول الحساس من حالة التوصيل إلى حالة الفصل on/off .
هذا المؤقت يعطينا الزمن الكلى أو الزمن التراكمى . ويسمى إختصارا RTO (retentive timer)
أو TMRA (accumulating timer) .

طريقة الاستخدام :
نحتاج إلى شيئين :


1- الشىء الذى سوف يقوم بتمكين التوقيت enable . وهو أحد المدخلين (الحساس المتصل بالمدخل 0000 على سبيل المثال ).

2- طول فترة التأخير قبل القيام بالفعل (رد الفعل ) . على سبيل المثال : لننتظر 5 seconds قبل توصيل الملف .
عندما تكون التعليمات الموجودة قبل رمز المؤقت فى حالة توصيل true يبدأ المؤقت فى الحساب (الدق –التكتكة ) "ticking" .
عندما ينقضى الزمن elapses يقوم المؤقت تلقائيا بغلق تلامساته .
عندما يعمل البرنامج فى المتحكم PLC يظهر لنا البرنامج الزمن المنقضى أو الزمن التراكمى لكى نرى القيمة الحالية .
يمكن للمؤقت العد أو الدق أو التكتكة من 0 إلى 9999 أو من 0 إلى 65535 مرة .
لماذا هذه الأرقام ؟ مرة أخرى : معظم المتحكمات PLC لها مؤقتات من نوع 16-bit timers . العد من 0 إلى 9999 يقابل الكود الثنائى المكود عشريا BCD (binary coded decimal) والعد من 0 إلى 65535 يقابل الكود الثنائى . كل عدة أو دقة أو تكة للساعة تساوى x-seconds .

فيما يلى شكل رموز تعليمات المؤقتات التى سوف نقابلها ( حسب الصانع الذى نختاره) وكيفية استخدامه .

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

الشكل التالى يبين مؤقت نوع "تأخير التوصيل" on-delay .
أسم المؤقت T000 .
عندما يكون دخل التمكين فى حالة توصيل on يبدأ المؤقت فى العمل (العد أو التكتكة ).
عندما تصل عدد التكات إلى yyyyy ticks (القيمة المحددة سلفا) يقوم بتوصيل on تلامساته والتى سوف نستخدمها فى البرنامج فيما بعد .
تذكر أن الفترة الزمنية لكل تكة (التزايد) تتغير تبعا لخصائص المؤقت المستخدم فقد يكون مؤقت أساس عمله 1ms أو second أو ....


الشكل التالى يبين الرموز فى مخطط السلم :



فى هذا المخطط:
يتم الانتظار حتى يتحول المدخل 0001 إلى حالة التوصيل on .
عندئذ يبدأ المؤقت T000 فى العمل ( التكتكة ) (أساس تزايده 100ms ) . سوف يقوم بعمل 100 تكة (مرة تزايد) . كل تكة (تزايد) تأخذ فترة زمنية قدرها 100ms (تسمى الأساس الزمنى time base ) أى أن زمن المؤقت يكون 10000ms (i.e. 10 second) .

100 ticks X 100ms = 10,000ms.


بعد مضى 10 ثوانى تتحول تلامسات المؤقت T000 إلى حالة التوصيل وتؤدى إلى تحول الخرج 0500 إلى حالة التوصيل on .
عندما يتحول الدخل إلى حالة الفصل off=false يتم تصفير reset المؤقت T000 ليصبح فى وضع الصفر ويؤدى إلى فصل تلامساته (تصبح false) ومن ثم يتم فصل الخرج 500 مرة أخرى .

المحاكاة التفاعلية :



الشكل التالى يبين المؤقت التراكمى :


أسم المؤقت T000 .
عندما يكون دخل التمكين فى حالة توصيل on يبدأ المؤقت فى العمل (العد أو التكتكة ).
عندما تصل عدد التكات إلى yyyyy ticks (القيمة المحددة سلفا) يقوم بتوصيل on تلامساته والتى سوف نستخدمها فى البرنامج فيما بعد .
تذكر أن الفترة الزمنية لكل تكة (التزايد) تتغير تبعا لخصائص المؤقت المستخدم فقد يكون مؤقت أساس عمله 1ms أو second أو ....

إذا تم فصل مدخل التمكين قبل إن يكمل المؤقت الزمن المحدد يتم حفظ القيمة الحالية فى الذاكرة (لذلك يسمى مؤقت التذكر ) .
عندما يعود دخل التمكين مرة أخرى إلى حالة التوصيل يستمر المؤقت من حيث انتهى
الطريقة الوحيدة لإجبار المؤقت للعودة لحالته الابتدائية من جديد هى توصيل on مدخل التصفير reset .
الشكل التالى يبين الرمز فى مخطط السلم :



فى هذا الشكل :
ننتظر حتى يتم توصيل on مدخل التمكين 0002 .
عندئذ يبدأ المؤقت T000 فى التكتكة (بتزايد زمنى بقيمة 10ms فى كل مرة ) .
عندما تصل عدد التكات (التزايدات) إلى 100 مرة وكل تكة (مرة تزايد) تناظر 10ms لذلك يكون زمن المؤقت هو 1000ms (i.e. 1 second) .
100 ticks X 10ms = 1,000ms
بعد مضى 1 ثانية يتم غلق تلامسات المؤقت T000 والتى تؤدى إلى توصيل on الخرج 0500 .
إذا إنفصل دخل التمكين 0002 يتم تذكر القيمة الحالية وعند عودته إلى حالة التوصيل يستمر من حيث انتهى .
عندما يتم توصيل on=true مدخل التصفير 0001 يتم تصفير المؤقت T000 مرة أخرى لوضع الصفر ويؤدى ذلك إلى فصل تلامساته false ومن ثم فصل الخرج 0500 مرة أخرى .

المحاكاة التفاعلية :


 

تعليمة One-shots "طلقة واحدة" "مؤقت نبضى " أى نبضة واحدة ذات عرض صغير جدا .

تعليمة one-shot أداة برمجية قيمة وجديرة بالاهتمام . للوهلة الأولى قد يكون من الصعب معرفة الحاجة إلى مثل هذه التعليمة . ولكن بعد أن نفهم عمل هذه التعليمة وكيفية استخدامها ، فسوف تتضح الأمور .

تستخدم تعليمة one-shot فى جعل شيئا ما يحدث لفترة دورة مسح واحدة ONLY 1 SCAN . معظم الشركات المصنعة لها تعليمة one-shots والتي تستجيب لحالة الانتقال من off إلى on (الحافة الصاعدة) كما يوجد نوع آخر يستجيب عن الانتقال من on إلى off (الحافة الهابطة) .
يطلق على هذه التعليمة بعض الاسماء مثل difu/difd (differentiate up/down) ( تفاصل الحافة الصاعدة وتفاضل الحافة الهابطة ) و sotu/sotd (single output up/down)
و osr (one-shot rising) وأسماء أخرى . جميعها فى نهاية المطاف تعطى نفس النتيجة بغض النظر عن الاسم .

رمز تعليمة one-shot :


الرمز يمثل تعليمة difu (one-shot) . فى تعليمة difd يكتب داخل الرمز "difd"

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

إنشاء دائرة قلاب (فليب فلوب) flip/flop .
بعبارات بسيطة الفليب فلوب يقوم بتحويل شىء عند حدوث فعل .
نستخدم هنا مفتاح ضاغط push button واحد.
عندما يدفع (يضغط) المشغل المفتاح الضاغط أول ضغطة يؤدى إلى توصيل الخرج .
يظل الخرج فى حالة توصيل حتى بعد تحرير المفتاح الضاغط أى يكون فى حالة إمساك "latched"
عندما يدفع (يضغط) المشغل المفتاح ثانى ضغطة يؤدى إلى فصل الخرج .

الشكل التالى يبين مخطط السلم :


شرح المخطط خطوة بخطوة :
درجة السلم (السطر) رقم 1 Rung 1
عندما يصبح الدخل 0000 المفتوح فى الوضع العادى NO فى حالة توصيل on=true تتحول التعليمة DIFU 1000 إلى حالة التوصيل on=true .


درجة السلم (السطر) رقم 2 Rung 2
فيها : تلامس الدخل المفتوح فى الوضع الطبيعى NO 1000 يصبح فى الحالة true (مظلل) , و التلامس المفتوح فى الوضع العادى NO 1001 يظل فى الحالة false , و التلامس المغلق فى الوضع العادى NC 1001 يظل فى الحالة true و التلامس المغلق فى الوضع العادى 1000 NC أصبح فى الحالة false . وحيث أن لدينا مسار true مكون من (NO 1000 & NC 1001) يصبح الخرج 1001 موصل أى فى الحالة true (ريلاى داخلى مساعد كمرحلة إنتقالية ) .


درجة السلم (السطر) رقم 3 Rung 3
التلامس المفتوح فى الوضع العادى NO 1001 أصبح فى الحالة true فيؤدى إلى توصيل الخرج 0500 أى يصبح فى الحالة true .

دورة المسح التالية :
درجة السلم (السطر) رقم 1 Rung 1
التلامس المفتوح فى الوضع العادى NO 0000 يظل فى الحالة true .
التعليمة DIFU 1000 الآن تصبح فى الحالة false . وذلك لأن التعليمة DIFU تكون فى الحالة true فقط لفترة دورة مسح واحدة (حيث تعمل بالحافة المرتفعة لنبضة الدخل ) .



درجة السلم (السطر) رقم 2 Rung 2
التلامس المفتوح فى الوضع العادى NO 1000 يكون فى الحالة false والتلامس المفتوح فى الوضع العادى NO 1001 يظل فى الحالة true والتلامس المغلق فى الوضع العادى NC 1001 يكون فى الحالة false والتلامس المغلق فى الوضع العادى NC 1000 يتحول إلى الحالة true .
وحيث أنه مازال لدينا مسار true مكون من (NO 1001 & NC 1000) يظل الخرج OUT 1001 فى الحالة true .


درجة السلم (السطر) رقم 3 Rung 3
التلامس المفتوح فى الوضع العادى NO 1001 يكون فى الحالة true لذلك يظل الخرج OUT 0500 فى الحالة true .


بعد 100 دورة مسح :

يتحول التلامس المفتوح فى الوضع العادى NO 0000 إلى حالة الفصل أى يصبح false . وتظل باقى الحالات كما هى كما فى دورة المسح الثانية .

فى دورة المسح رقم 101:
يعود التلامس المفتوح فى الوضع العادى NO 0000 مرة أخرى إلى حالة التوصيل أى يصبح true .

درجة السلم (السطر) رقم 1 Rung 1
عندما يكون الدخل المفتوح فى الوضع العادى NO 0000 فى حالة true يتحول DIFU 1000 ليصبح true .

درجة السلم (السطر) رقم 2 Rung 2
التلامس المفتوح فى الوضع العادى NO 1000 يكون فى الحالة true والتلامس المفتوح فى الوضع العادى NO 1001 يظل فى الحالة true والتلامس المغلق فى الوضع العادى NC 1001 يصبح فى الحالة false والتلامس المغلق فى الوضع العادى NC 1000 يصبح أيضا فى الحالة false .
وحيث أنه لم يعد لدينا مسار true فإن الخرج OUT 1001 يصبح فى حالة false أى إيقاف .



درجة السلم (السطر) رقم 3 Rung 3
التلامس المفتوح فى الوضع العادى NO 1001 يكون فى الحالة false ومن ثم يصبح الخرج OUT 0500 فى الحالة false أى إيقاف .



المحاكاة التفاعلية :























تعليمات التحكم الرئيسية "ماستر" Master Controls

ننظر الآن فى ما يسمى تعليمات التحكم .
يمكن اعتبار تعليمات التحكم الرئيسية مثل "مفاتيح الإيقاف فى حالات الطوارئ أى
"emergency stop switches" .
مفتاح الأيقاف فى حالة الطوارىء عادة هو زر أحمر كبير مرتبط بالجهازوالذي يقةم بإيقاف الجهاز في حالات الطوارئ.

ملحوظة هامة :
هذا لا يعنى أن هذه التعليمات هي بديلا عن تلك المفاتيح بل مجرد وسيلة سهلة للوصول لفهمها.

تعليمات التحكم الرئيسية عادة ما تستخدم في شكل أزواج مع تعليمة تصفير reset التحكم الرئيسى .ولكن هذا يختلف حسب الشركة المصنعة. تسمى هذه التعليمات اختصارا :
MC/MCR (master control/master control reset)
أو:
MCS/MCR (master control set/master control reset)
أو ببساطة فقط :
MCR (master control reset).

الشكل التالى يبين مثال لكل من رمز تعليمة التحكم الرئيسى MC ورمز لتعليمة تصفير التحكم الرئيسى MCR


دعونا نلقي الآن نظرة على كيفية استخدام هذه التعليمات فى مخطط السلم :


طريقة تشغيل هذا البرنامج بالمتحكم PLC تختلف من شركة لأخرى لكن الطريقة الشائعة هى كما يلى :

فى هذا المثال الدرجة (السطر) 2 والدرجة (السطر) 3 يتم تنفيذها فقط عندما يكون المدخل 0000 فى حالة true .
إذا لم يكن المدخل 0000 فى حالة true فإن المتحكم PLC يتظاهر بأن الخطوات المنطقية بين التعليمة MC والتعليمة MCR غير موجودة ". ومن ثم يمرر bypass هذه المجموعة block من التعليمات ويذهب فورا مباشرة إلى السطر الذى يلى التعليمة MCR .
وبالعكس ، إذا كان المدخل 0000 فى الحالة true فإن المتحكم PLC يجب عليه تنفيذ الدرجات 2 و 3 و تحديث حالة المخارج 0500 و 0501 وفقا لذلك.
فإذا كان المدخل 0000 فى الحالة true يقوم البرنامج بتنفيذ الدرجة رقم 2 .
وإذا كان المدخل 0001 فى الحالة true فسوف يكون المخرج 0500 فى الحالة true ومن ثم سوف يتحول إلى حالة التشغيل on عندما يقوم المتحكم PLC بتحديث المخارج .
إذا كان المدخل 0002 فى الحالة true (أى على الطبيعة فى حالة فصل off ) فسوف يكون المخرج 0501 فى الحالة true وسوف يتحول إلى حالة التوصيل on عندما يقوم المتحكم PLC بتحديث المخارج .
التعليمة MCR فقط تخبر المتحكم PLC " بأن مجموعة تعليمات MC / MCR قد إنتهت" .

المحاكاة التفاعلية :

















تعليمة سجلات الإزاحة Shift Registers
في العديد من التطبيقات يكون من الضروري تخزين (حفظ) store حالة حدث وقع سابقا.
ماذا نفعل إذا أردنا تخزين العديد من الأحداث السابقة والعمل عليها في وقت لاحق.
الجواب : استخدام تعليمة سجل الإزاحة .
نستخدم سجل أو مجموعة من السجلات لتشكيل قطار من الخانات (البتات) bits لتخزين حالات on/off السابقة .كل تغيير جديد فى الحالة يتم تخزينه فى الخانة الأولى والخانات الباقية يتم إزاحتها فى قطار الخانات .

تعليم سجل الإزاحة تعرف بأسماء عدة واشائع منها هو :
SFT (ShiFT)
و BSL (Bit Shift Left)
و BSR (Bit Shift Right)


رمز تعليمة سجل الإزاحة كما يلى (على سبيل المثال )

تلاحظ أن الرمز يحتاج إلى 3 مداخل كما توجد بعض البيانات داخل الرمز .
الغرض من كل مدخل هو ما يلى :

مدخل البيانات Data
يقوم مدخل البيانات بتجميع حالات true / false ( 1-0) والتى سوف يتم إزاحتها بقطار الخانات .
عند يكون مدخل البيانات فى الحالة true فإن أول خانة (تشبه العربة) فى السجل (يشبه القطار ) سوف تكون 1 . هذه البيانات تدخل فقط في السجل (قطار) عند الحافة الصاعدة لمدخل نبضات الساعة clock .

نبضات الساعة Clock :
مدخل نبضات الساعة يخبر سجل الإزاحة " بالقيام بعمله " . عند الحافة الصاعدة لنبضات هذا المدخل يقوم سجل الإزاحة بإزاحة البيانات مكان واحد داخل السجل ويدخل حالة مدخل البيانات فى الخانة الأولى . وتتكرر العملية عند كل حافة صاعدة لنبضات الساعة على هذا المدخل .

التصفير Reset

مدخل التصفير يعمل ما يعنيه أى مسح clearجميع الخانات داخل سجل الإزاحة لتصبح كلها أصفار .

الرقم 1000 الموجود داخل رمز تعليمة سجل الإزاحة هو موقع أول خانة فى سجل الإزاحة الذى نتعامل معه .
إذا فكرنا في سجل الإزاحة كقطار عندئذ تكون هذه الخانة هى القاطرة.
الرقم 1003 الموجود داخل رمز تعليمة سجل الإزاحة هو آخر خانة فى سجل الإزاحة الذى نتعامل معه .وهو يمثل البوفيه (المطبخ) فى القطار .
لذلك يمكننا القول الأرقام 1001 و 1002 تمثل العربات الموجودة بين القاطرة والبوفيه . وهى الخانات البينية او المتوسطة. لذلك فإن سجل الإزاحة هذا به 4 خانات 4 bits (i.e. 1000,1001,1002,1003) .

لنأخد تطبيق يبين لماذا وكيف نستخدم سجل الإزاحة :
تخيل ماكينة صنع مخروط الآيس كريم.
لدينا 4 خطوات.
علينا أولا التحقق من عدم إصابة المخروط بكسر .
الخطوة التالية وضع الآيس كريم داخل المخروط (توصيل on المخرج 0500 ).
والخطوة التالية إضافة الفول السوداني (توصيل on المخرج 0501) .
وأخيرا نضيف الكسوة sprinkles (رشاشات) (توصيل on المخرج 0502 ) .

فإذا كان المخروط مكسورة فمن الواضح اننا لا نريد إضافة الآيس كريم وغيره من المواد .
لذلك علينا تتبع المخروط السيىء فى خط عمليتنا بحيث يمكننا أن نخبر الماكينة أن لا تضيف باقى المكونات.
نستخدم جهاز استشعار (حساس) للنظر في الجزء السفلي من مخروط (الدخل 0000 ) فإن كان فى حالة توصيل on فهذا يعنى أن المخروط سليم أما إن كان فى حالة الفصل off فهذا يعنى أن المخروط مكسور .
يقوم جهاز المشفر encoder بتتبع مسار المخروط أثناء وضعه على السير الناقل conveyor (المدخل 0001) .
يوجد زر ضاغط على الماكينة لمسح clear السجل ( المدخل 0002) .

الشكل التالى يبين مخطط السلم :


المحاكاة التفاعلية :










دعونا الآن نتتبع سجل الإزاحة أثناء تنفيذ العملية .
الشكل التالى يبين الوضع الابتدائى لسجل الإزاحة المستخدم 1000 .

يأتى المخروط الجيد أمام جهاز الاستشعار (الحساس) (المدخل 0000- مدخل البيانات ) .
تتحول بيانات الدخل للحساس إلى حالة التوصيل on .لن يتحول سجل الإزاحة 1000 إلى حالة التوصيل on إلا بعد وصول الحافة الصاعدة لنبضات المشفر (المدخل 0001 – نبضات الساعة ).
وأخيرا يقوم المشفر بتوليد نبضة تؤدى إلى إنتقال حالة مدخل البيانات ( حساس المخروط – المدخل 0000) إلى الخانة 10000 لسجل الإزاحة (الخانة الأولى فى سجل الإزاحة) .

الآن يظهر سجل الإزاحة على النحو التالى :


كلما تحرك نظام السير الناقل يأتي مخروط آخر أمام الحساس .
فى هذه المرة المخروط مكسورة فيظل الحساس فى حالة الفصل off .
الآن يقوم المشفر بتوليد نبضة أخرى .يتم نقل الحالة القديمة للخانة 1000 إلى الخامة 1001 . والحالة القديمة للخانة 1001 تزحزح إلى الخانة 1002 .والحالة القديمة للخانة 1002 ترحزح إلى الخانة 1003 . ويتم نقل الحالة الجديدة لمدخل البيانات (حساس المخروط) إلى الخانة 1000 .


الآن يظهر سجل الإزاحة على النحو التالى :

وحيث أن السجل يبين أن الخانة 1001 الآن فى حالة توصيل on فإن مخطط السلم يقول أن المخرج 0500 سوف يتحول إلى حالة التوصيل on ويبدأ وضع الآيس كريم في المخروط.

ويستمر نظام السير الناقل فى التحرك قدما .
ويأتي مخروظ آخر أمام الحساس .
هذه المرة المخروط جيد ويتحول الحساس إلى حالة التوصيل on .
الآن يولد المشفر نبضة أخرى .
يتم نقل الحالة القديمة للخانة 1000 إلى الخانة 1001 .
ويتم زحزحة الحالة القديمة للخانة 1001 إلى الخانة 1002 .
ويتم زحزحة الحالة القديمة للخانة 1002 إلى الخانة 1003 .

ويتم زحزحة الحالة الجديدة لخانة مدخل البيانات (حساس المخروط) إلى الخانة 1000

الآن يظهر سجل الإزاحة على النحو التالى :

وحيث أن السجل يبين أن الخانة 1002 الآن فى حالة توصيل on فإن مخطط السلم يقول أن الخرج 0501 سوف يكون فى حالة توصيل ويبدأ وضع الفول السوداني على المخروط.
وحيث أن الخانة 1001 حافظت على حالة المخروط المكسور يظل المخرج 0500 فى حالة الفصل off كما فى مخطط السلم أعلاه ، ولا يتم إدراج أي آيس كريم في هذا المخروط.
ويستمر نظام السير الناقل فى التحرك قدما .
ويأتي مخروظ آخر أمام الحساس .
هذه المرة المخروط جيد ويتحول الحساس إلى حالة التوصيل on .
الآن يولد المشفر نبضة أخرى .
يتم نقل الحالة القديمة للخانة 1000 إلى الخانة 1001 .
ويتم زحزحة الحالة القديمة للخانة 1001 إلى الخانة 1002 .
ويتم زحزحة الحالة القديمة للخانة 1002 إلى الخانة 1003 .

ويتم زحزحة الحالة الجديدة لخانة مدخل البيانات (حساس المخروط) إلى الخانة 1000


الآن يظهر سجل الإزاحة على النحو التالى :

وحيث أن السجل يبين أن الخانة 1003 الآن فى حالة توصيل on فإن مخطط السلم يقول أن الخرج 0502 سوف يكون فى حالة توصيل ويبدأ وضع المرشوشات sprinkles على المخروط .
وحيث أن الخانة 1002 حافظت على حالة المخروط المكسور فإن الخرج 0501 يظل فى حالة الفصل off كما هو موضح بمخطط السلم أعلاه , ولا يتم وضع أي فول سوداني على هذا المخروط.
وحيث أن السجل يبين أن الخانة 1001 الآن فى حالة توصيل فإن مخطط السلم يقول أن المخرج 0500 سوف يتحول إلى حالة التوصيل on ويتم وضع الآيس كريم في هذا المخروط.

ويستمر نظام السير الناقل فى التحرك قدما .
ويأتي مخروظ آخر أمام الحساس .
هذه المرة المخروط مكسور ويتحول الحساس إلى حالة الفصل off .
الآن يولد المشفر نبضة أخرى .
يتم نقل الحالة القديمة للخانة 1000 إلى الخانة 1001 .
ويتم زحزحة الحالة القديمة للخانة 1001 إلى الخانة 1002 .
ويتم زحزحة الحالة القديمة للخانة 1002 إلى الخانة 1003 .

ويتم زحزحة الحالة الجديدة لخانة مدخل البيانات (حساس المخروط) إلى الخانة 1000

الآن يظهر سجل الإزاحة على النحو التالى :

لاحظ أن حالة أول مخروط قد اختفت . في الحقيقة هى تقبع فى الموقع 1004 ولكنه عديم الفائدة بالنسبة لنا لرسم التطبيق مع 16 عملية هنا. ويكفي القول أنه بعد إزاحة الخانة إلى اليسار فإنها تختفي ولن نراها مرة أخرى . وبعبارة أخرى، فقد أزيحت أو أزيلت من السحل ومسحت (محيت) من الذاكرة . على الرغم من عدم وجودها بالرسم ، فإن العملية المذكورة أعلاه يمكن أن تستمر بإزاحة كل خانة عند الحافة الصاعدة لإشارة المشفر (الساعة) .

مرة أخرى المحاكاة التفاعلية :
























الحصول على ونقل البيانات Getting and Moving Data:
دعنا الآن نبدأ بالعمل مع بعض البيانات.
وهذا هو ما يمكن اعتباره مدخل للوظائف "المتقدمة" للمتحكم PLC

لماذا نريد الحصول على get أو إكتساب البيانات acquire data ؟

الجواب بسيط.
دعونا نقول أننا نستخدم وحدات modules اختيارية لأحد المصنعين.
قد تكون وحدة تحويل من تناظرى إلى رقمى A/D .
هذه الوحدة تكتسب(تحصل على) acquires الإشارات التناظرية من العالم الخارجي (كجهد أو تيار تناظرى يتغير ) وتحويل هذه الإشارات إلى شيء يمكن أن يفهمه المتحكم PLC (أي إشارة رقمية أى آحاد وأصفار ) يقوم المصنعون تلقائيا بتخزين هذه البيانات فى مواقع الذاكرة . ومع ذلك نضطر إلى الحصول على البيانات من هناك ونقلها في مكان آخر وإلا فإن العينة التماثلية المقبلة ستحل محل البيانات التى تم أخذها أو نقلها . وبعبارة أخرى "إما نقلها وإما فقدها " .

شيء آخر قد نرغب في القيام به وهو تخزين ثابت (أى كلمة وهمية لعدد) ، أوالحصول على بعض البيانات الثنائية من أطراف الدخل (على سبيل المثال : قد يكون متصل بمفتاح متعدد الأوضاع thumbwheel )، أوالقيام ببعض العمليات الرياضية وتخزين النتيجة في موقع مختلف، الخ...

شكل التعليمات يختلف من مصنع لآخر وسوف نأخد الطريقة الشائعة وهى استخدام تعليمة واحدة .

تعليمة نقل البيانات تسمى إختصارا MOV (move) . واحيانا توجد تعليمة MOVN (move not) . ولها نفس وظيفة MOV ولكن يتم نقل البيانات في شكل معكوس inverted (أي إذا كانت الخانة 1، يتم تخزين / نقل 0 أو إذا كانت الخانة 0 يتم نقل / تخزين 1 ).

الشكل التالى يبين شكل رمز تعليمة MOV :

تعليمة MOV تحتاج منا التعرف على شيئين :
المصدر Source (xxxx)
هذا هو المكان الذي يقع به البيانات التى نريد نقلها .
يمكن أن نكتب هنا ثابت (2222 على سبيل المثال). وهذا يعني أن مصدر بياناتنا هو رقم 2222 . ويمكننا أيضا كتابة موقع location أو عنوان address حيث تقع البيانات التي نريد نقلها. إذا كتبنا DM100 فهذا من شأنه نقل البيانات الموجود في ذاكرة البيانات 100.
الهدف أو الوجهة (المقصود) Destination (yyyy)
هذا هو الموقع الذى سيتم نقل البيانات إليه .
نكتب هنا عنوان . على سبيل المثال إذا كتبنا DM201 سيتم نقل البيانات إلى ذاكرة البيانات 201 . يمكن أن نكتب أيضا 0500 . وهذا يعني أن نقل البيانات سوف يتم إلى المخارج الطبيعية .المخرج 0500 يجب أن يكون الخانة الأقل أهمية والخانة التى تليها هى 0501 وهكذا حتى 0515 والتى تكون الخانة الأكثر أهمية (أقصى اليسار) .وهو مفيد إذا كان لدينا وحدة عرض ثنائية متصلة بالمخارج وأردنا عرض القيمة داخل عداد لمشغل آلة في جميع الأوقات على سبيل المثال) .

الشكل يبين مخطط السلم الذى يوضح ذلك :

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

مخطط السلم يبين أنه في كل مرة يصبح المدخل 0000 فى الحالة true تصبع التعليمة DIFU فى الحالة true لزمن دورة مسح واحدة فقط . فى هذا الزمن سوف يكون المدخل 1000 فى الحالة true ويقوم المتحكم PLC بنقل البيانات من ذاكرة البيانات 200 ووضعها في ذاكرة البيانات 201 .
تعليمة بسيطة لكنها فعالة.

إذا كتبنا 2222 بدلا من DM200 فى الرمز عندئذ ننقل (نكتب) العدد (الثابت) 2222 إلى الذاكرة DM201.

المحاكاة التفاعلية :

 










التعليمات الرياضية Math Instructions

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

مثال :
دعونا نقول إننا سنقوم بتصنيع حاجيات . نحن لا نريد عرض العدد الإجمالي الذى قمنا به اليوم، بل نريد عرض المتبقى الذى نحن بحاجة اليه لتلبية طلبية اليوم .

دعونا نقول أن طلبية هذا اليوم هى 1000 قطعة. سوف نقول أن X هى إنتاجنا الحالى . لذا يكون باقى الطلبية 1000-X .
لتنفيذ هذه الصيغة من الواضح أننا نحتاج لبعض القدرة على الرياضيات.
عامة يحتوى المتحكم PLC على الوظائف الرياضية التالية :

عملية الجمع أو الإضافة Addition : وتعنى القدرة على إضافة (جمع) قطعة (جزء) من البيانات إلى قطعة بيانات أخرى وتسمى إختصارا ADD .
عملية الطرح Subtraction : وتعنى القدرة على طرح قطعة (جزء) من البيانات من قطعة بيانات أخرى وتسمى إختصارا SUB .
عملية الضرب Multiplication : وتعنى القدرة على ضرب قطعة (جزء) من البيانات فى قطعة بيانات أخرى وتسمى إختصارا MUL .
عملية القسمة Division : وتعنى القدرة على قسمة قطعة (جزء) من البيانات على قطعة بيانات أخرى وتسمى إختصارا DIV .

هذه التعليمات تتطاب منا معرفة :


مصدر البيانات الأول Source A :
وهو عنوان أول قطعة بيانات سوف نستخدمها فى الصيغة الرياضية . وبعبارة أخرى هى موقع فى الذاكرة يحتوى على العدد الأول الذى سوف نستخدمه فى الصيغة الرياضية .

مصدر البيانات الثانى Source B :
وهو عنوان ثانى قطعة بيانات سوف نستخدمها فى الصيغة الرياضية . وبعبارة أخرى هى موقع فى الذاكرة يحتوى على العدد الثانى الذى سوف نستخدمه فى الصيغة الرياضية .

ملحوظة :
يمكننا العمل فقط بقطعتين من البيانات فى نفس الوقت . بعبارة أخرى لا يمكننا العمل مباشرة مع صيغة مثل 1+2+3 . يمكننا تجزئتها إلى قطع مثل 1+2=X ثم X+3= result

الهدف أو المقصود Destination :
وهو العنوان الذى سوف يوضع به نتيجة الصيغة الرياضية .


الشكل التالى يبين رمز تعليمة الجمع :

بطبيعة الحال كلمة ADD تستبدل بكلمة SUB أو MUL أو DIV فى رموز التعليمات الأخرى .
في هذا الرمز المصدر الأول هو DM100، والمصدر الثانى هو DM101 والهدف أو المقصود أو الوجهة هى DM102.
لذلك ، فإن الصيغة هي ببساطة : القيمة الموجودة فى موقع الذاكرة DM100 + القيمة الموجودة فى موقع الذاكرة في DM101. ويتم تلقائيا تخزين النتيجة فى موقع الذاكرة DM102.

الشكل التالى يبين استخدام الوظائف الرياضية فى مخطط السلم .


يرجى ملاحظة :
مرة أخرى استخدمنا تعليمة النبضة DIFU . كما رأينا من قبل، لأنه إذا لم نستخدمها فسوف يتم تنفيذ الصيغة الرياضية فى كل دورة مسح .ونريد فقط تنفيذ الوظيفة مرة واحدة عندما يصبح المدخل 0000 فى الحالة true
إذا كنا قد وضعت من قبل العدد 100 فى موقع الذاكرة DM100 ووضعنا العدد 200 فى موقع الذاكرة DM101، فسوف يتم تخزين العدد 300 فى موقع الذاكرة DM102 (أي 100 +200 = 300 ).

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

عادة مواقع الذاكرة هي مواقع ذات 16 بت 16-bit. بعبارة واضحة هذا يعني أنه إذا كان العدد أكبر من 65535 (2 ^ 16 = 65536) يكون كبير جدا لاحتوائه فى موقع ذاكرة . ويحدث ما يسمى تجاوز (طفحان) overflow . عادة ما يقوم المتحكم PLC بتوصيل on ريلاى داخلى والذى يخبرنا على حدوث تجاوز. اعتمادا على المتحكم PLC سيكون لدينا بيانات مختلفة في الموقع الهدف (DM102 فى المثال) معظم الشركات تضع الباقى remainder فى هذا الموقع .

بعض الشركات تستخدم عمليات الرياضية ذات 32 بت 32-bit والتى تحل هذه المشكلة .



التعليمات المنطقية logic أو الرياضيات البولية Boolean Math

دعونا نلقي الآن نظرة على بعض "الرياضيات المنطقية أو البولية " البسيطة.
تتيح لنا الرياضيات المنطقية القيام ببعض الوظائف المختلفة الأساسية بالخانات الموجودة بالسجلات . هذه الوظائف الأساسية عادة تشمل وظائف AND, OR , XOR والتى سوف نتناولها فيما يلى .

تعليمة وظيفة المنطق AND :
هذه الوظيفة تتيح لنا استخدام جدول الحقيقة المبين أدناه.حيث يمكننا أن نرى أن وظيفة AND مرتبطة إرتباطا وثيقا بعملية الضرب . لأن النتيجة تكون true (أى 1 ) فقط عندما يكون كلا من المعاملين

A AND B فى الحالة true (أى 1 ) .

التعليمة AND مفيدة عندما لا يملك المتحكم PLC وظيفة الاخفاء masking . وظيفة الاخفاء masking تمكن خانة فى سجل بأن تترك مفردة "left alone" عند العمل على مستوى الخانة . وهذا ببساطة لأن أي خانة يتم إجراء عملية AND مع نفسها ستحافظ على قيمتها الحالية .

على سبيل المثال :
إذا كنت تريد مسح (جعلها أصفار ) 12 خانة من سجل به 16 خانة فيمكن إجراء عملية AND بين السجل وأصفار ما عدا الأربع خانات التى تريد الحفاظ على حالتها (وهو ما يعرف بعمل قناع أو تخبئة لتلك الخانات ) .

راجع جدول الحقيقة التالى لتعرف ما نعنيه (1 AND 1 = 1, 0 AND 0= 0) .


تعليمة وظيفة المنطق OR :
أساس هذه الوظيفة موضح بجدول الحقيقة المبين أدناه .
يمكننا أن نرى أن وظيفة OR مرتبطة إرتباطا وثيقا بعملية الجمع (الإضافة ) .لأن النتيجة تكون true أى 1 فقط عندما يكون : المعامل A أو المعامل B فى الحالة true أى 1 أى أن A OR B is true (i.e. 1) .
من الواضح ، عندما يكون كلاهما فى الحالة true تكون النتيجة true .



تعليمة وظيفة المنطق EXOR :
أساس هذه الوظيفة موضح بجدول الحقيقة المبين أدناه .
يمكننا أن نرى أن وظيفة EXOR (XOR) لا علاقة لها بأى شيء يمكن أن نفكر فيه الطريقة السهلة لنتذكر نتائج هذه الوظيفة هي التفكير فى أن المعامل A والمعامل B يجب أن يكون أحدهما فى حالة منطقية والآخر فى الحالة المنطقية الثانية , بعبارة أخرى يجب أن تكون مضادة لبعضها البعض. عندما يكون لها نفس الحالة (i.e. A=B) تكون النتيجة false (i.e. 0) .
هذه التعليمة مفيدة في بعض الأحيان عندما تريد مقارنة خانات سجلين وتسليط الضوء على أى الخانات يوجد بها اختلاف . كما نحتاجها عند قيامنا بحساب اختبار checksums . اختبار checksums شائع الاستخدام فى تدقيق الأخطاء في بعض بروتوكولات الاتصالات.


هذه التعليمات المنطقية تحتاج المعرفة بالآتى :


المصدر الأول Source A
وهو عنوان أول جزء نستخدمه من البيانات . بعبارة أخرى هو موقع بالذاكرة حيث يوجد المعامل A .

المصدر الثانى Source B :
وهو عنوان ثانى جزء نستخدمه من البيانات . بعبارة أخرى هو موقع بالذاكرة حيث يوجد المعامل B .

الهدف أو الوجهة Destination :
وهو العنوان الذى سوف يتم وضع النتيجة فيه .

على سبيل المثال إذا كان A AND B = 0 أى النتيجة 0 ويتم حفظها تلقائيا فى موقع ذاكرة الهدف .

الشكل التالى يبين رمز تعليمة AND


فى الشكل :
المصدر A هو موقع الذاكرة DM100 والمصدر B هو موقع الذاكرة DM101 والهدف هو موقع الذاكرة DM102 .
لذلك يمكننا ببساطة إنشاء المعادلة DM100 AND DM101 = DM102 . النتيجة تحفظ تلقائيا فى موقع الذاكرة D102 .

الشكل التالى يبين استخدام الوظائف المنطقية فى مخطط السلم :

يرجى مرة أخرى ملاحظة أننا استخدمنا تعليمة النبضة one-shot وهى DIFU . وأن لم نستخدمها فسوف يتم تنفيذ التعليمة فى كل دورة مسح ولكننا نريد فقط تنفيذ هذه الوظيفة مرة واحدة عندما يصبح المدخل 0000 فى الحالة true . 



وحدات العرض 7 segment والإنتخاب من متعدد multiplexing والبرمجة بلغة منطق السلم


1- الدايودات المشعة للضوء LED DIODES

ربما كنت تعرف كل ما تحتاج لمعرفته حول الدايودات المشعة للضوء LEDs ولكن يجب علينا أيضا أن نذكر بها .
هل تعرف كيف يتم تدمير الدايود المشع للضوء ؟
حسنا... هذا أمر بسيط جدا.


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

الحرق البطىء Slow burning
لكل دايود مشع للضوء قيمة اسمية nominal للتيار أى الحد الأقصى للتيار المصمم عليه والذى لا ينبغى تجاوزه . إذا حدث ذلك، فإن مزيدا من الضوء سوف ينبعث من الدايود ، ولكن ليس لوقت طويل!

تذكر:
على غرار المثال السابق، كل ما عليك القيام به هو تجاهل المقاومة R (عدم وضعها ) التى تحدد التيار والمبينة بالشكل التالى . إعتمادا على جهد مصدر القدرة قد يكون التأثير دراماتيكى !


2- وحدات العرض المكونة من الدايودات المشعة للضوء(ليد) LED DISPLAY

في الأساس وحدات العرض المكونة من الدايودات المشعة للضوء ليست أكثر من عدة ليدات فى غلاف من البلاستيك المصبوب . يوجد أنواع عديدة من وحدات العرض والتى قد تتألف من عشرات الليدات والتي يمكن أن تعرض الرموز المختلفة . النوع الأكثر شيوعا هو ما يسمى 7-segment display "وحدة العرض ذات القطع أو الشرائح السبعة " . وهى تتألف من 8 ليدات , 7 شرائح مرتبة على شكل مستطيل لعرض الرمز ويوجد شريحة إضافية لعرض الفاصلة (العلامة) العشرية. ولتبسيط التوصيلات يتم توصيل جميع الأنودات أو جميع الكاثودات معا لتشكل طرف مشترك بحيث يكون لدينا وحدة عرض ذات أنود مشترك
common anode أو وحدة عرض ذات كاثود مشترك common cathode. يتم تمييز الشرائح بالحروف من a إلى g بالإضافة إلى الفاصلة العشرية dp كما هو مبين في الشكل أدناه. عند التوصيل يتم التعامل مع كل ليد على حدة ، وهذا يعني أنه يجب أن يكون لكل ليد المقاومة الخاصة به .


عند شراء الليدات يجب الاهتمام بالأشياء الآتية :
اعتمادا على الطرف المشترك يوجد وحدة عرض ذات أنود مشترك وأخرى ذات كاثود مشترك ولا يوجد فرق بينهما فى الطبيعة لذلك من المستحسن التحقق بعناية من النوع المطلوب قبل التركيب والتوصيل .
هناك قيد للحد الأقصى للتيار الذى يمكن أن يأخذه أو يعطيه كل طرف من أطراف الميكروكونترولر. ولهذا السبب إذا تم توصيل عدد من وحدات العرض إلى الميكروكونترولر فينصح باستخدام الليدات التى تعمل بالتيار المنخفض والتى تستخدم 2ma فقط للعمل .

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

3- عملية النتخاب من متعدد MULTIPLEXING

عادة ما تحتل وحدات العرض المتصلة بالميكروكونترولر عدد كبير من أطراف المداخل / المخارج I/O pins المتاحة وهو ما يمكن أن يكون مشكلة كبيرة خصوصا عندما يكون هناك حاجة لعرض أعداد ذات أرقام متعددة. والمشكلة تكون أكثر وضوحا إذا كان (على سبيل المثال) هناك حاجة لعرض عددين يتمةن كل منهما من 6 أرقام (عملية حسابية بسيطة تبين أن هناك حاجة لعدد 96 طرف مخرج في هذه الحالة)! هذه مشكلة لها حل يسمى عملية "الانتخاب من متعدد " MULTIPLEXING .

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

وفيما يلي شرحا للشكل الموضح أعلاه.

أولا يتم توصيل البايت byte الذى يمثل رقم خانة الآحاد إلى منفذ الميكروكونترولر وفى نفس الوقت يكون الترانزستور T1 فى حالة التوصيل ON (فعال – نشط ) . بعد برهة يتحول الترانزستور T1 إلى حالة الفصل OFF , عندئذ يتم توصيل البايت الذى يمثل رقم خانة العشرات إلى منفذ الميكروكونترولر وفى نفس الوقت يتحول الترانزستور T2 إلى حالة التوصيل ON . هذه العملية تتكرر دوريا بسرعة عالية لجميع الأرقام والترانزستورات المقابلة.

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

لذلك يجب أن يمر كل رقم نريد عرضه بالخطوات التالية :

بادئ ذي بدء يتم تقسيم العدد المتعدد الأرقام إلى آحاد و عشرات و مئات و... وذلك فى برنامج فرعى subroutine خاص . بعد ذلك يجب تخزين كل بيانات خانة فى بايت خاص بها . يتم جعل الأرقام فى شكل قابل للحصول والتعرف عليها بإجراء عملية تسمى "إخفاء" "عمل قناع" "masking". أوبعبارة أخرى، يتم استبدال الشكل الثنائي لكل رقم بمجموعة مختلفة من الخانات باستخدام برنامج فرعى بسيط. على سبيل المثال الرقم 8 (0000 1000) يتم استبداله بالرقم الثنائي 0111 1111 من أجل تفعيل جميع ليدات عرض الرقم 8 الليد الوحيد الذى يكون غير فعال فى هذه الحالة محجوز للفاصلة العشرية .
إذا كان منفذ الميكروكونترولر متصل بوحدة العرض بطريقة بحيث أن الخانة bit0 تنشط الشريحة a والخانة bit1 تنشط الشريحة b والخانة bit2 تنشط الشريحة c وهكذا , عندئذ فإن الجدول التالى يبين قناع mask كل رقم :




بالإضافة إلى الأرقام من 0 إلى 9 يوجد الحروف A, C, E, J, F, U, H, L, b, c, d, o, r, t والتى يمكن أيضا عرضها عن طريق عمل القناع المناسب .
فى حالة استخدام وحدة عرض نوع الآنود المشترك فإن جميع 1 فى الجدول السابق يجب استبدالها بأصفار 0 والعكس بالعكس . بالإضافة إلى تغير نوع الترانزستور إلى PNP .


البرمجة بلغة منطق السلم :

إضاءة أحد شرائح وحدة العرض :
مثال إضاءة الشريحة a :


1- هذه الشريحة تضاء عند اختيار عرض الرقم : 0 OR 2 OR 3 OR 5 OR 6 OR 7 OR 8 OR 9
2- ولا تضاء عند اختيار عرض الرقم : 1 AND 4
نتيجة لذلك يمكن التعبير عن أضاءة هذه الشريحة بالعمليات المنطقية بطريقتين :

الطريقة الأولى هى استخدام العملية المنطقية OR كما فى البند 1 والشكل التالى يبين مخطط السلم لهذه الطريقة :



حيث Ya0 هو المخرج المتصل بالشريحة a و digit0 هو السجل الذى يتم تخزين بيانات خانة الآحاد به على سبيل المثال .

الطريقة الثانية هى استخدام العملية المنطقية AND كما فى البند 2 والشكل التالى يبين مخطط السلم لهذه الطريقة :


حيث Yseg_a هو المخرج المتصل بالشريحة a و digit هو السجل الذى يتم تخزين بيانات خانة الآحاد به على سبيل المثال .
النتيجة واحدة وأى الطريقتين نستخدم يعتمد على عدد التعليمات والتى سوف تتضح بعد عرض باقى الشرائح

بالمثل الشريحة b :

والشريحة c :


والشريحة d :


والشريحة e :

لاحظ هنا أن عدد التعليمات المستخدمة متساوى

الشريحة f :


الشريحة g :

فإذا استخدمنا طريقة AND يكون جزء البرنامج الخاص ببرمجة وحدة عرض 7-Segment (الآحاد على سبيل المثال وتتكرر لوحدة العشرات والمئات و ...) كما يلى :



تطبيق رقم 1 :
إظهار الارقام من 0 إلى 9 والتكرار دوريا :

الدائرة الكهربية :


شرح البرنامج :
1- نظرا لوجود تتابع للأحداث (عرض الأرقام فى تتابع معين) فسوف نحتاج إلى عداد من النوع الدائرى ليحقق تكرار الأحداث . العداد يحتاج إلى نبضات دخل ليقوم بالعد , لذلك نحتاج إلى مولد نبضات أى مذبذب .
فى السطر الأول : يتم إنشاء مولد نبضات باستخدام ريلاى داخلى Rosc ومؤقت تأخير التوصيل TON (يسمى Tosc1) ومؤقت تأخير الفصل TOF (يسمى Tosc2) وكل منهما بزمن 250 ملى ثانية فينتج نبضات بفترة توصيل وفترة فصل 250 ملى ثانية وهى كافية لتمييز الرقم عند عرضه .
فى السطر الثانى : عداد دائرى CTC (يسمى Ccount ) يقوم بالعد من 0 إلى 9 عند عندما تكون حالة التعليمات التى قبله true ( أى الحافة الصاعدة لنبضة الدخل من المذبذب عن طريق تلامسات المذبذب Rosc ) .


2- البرنامج الفرعى الذى يحدد إضاءة الشرائح السبعة أى الذى يقوم بتحويل الرقم العشرى إلى كود الشرائح السبعة والذى تم توضيحه بالتفصيل سابقا .


3- البرنامج الفعلى : وينص على :
عندما يساوى محتوى العداد الدائرى العدد 0 (يتحول خرجه إلى الحالة true) Ccount ==0 يتم وضع أو نقل MOV الرقم 0 بالسجل digit والذى يمثل حالة الشرائح السبعة كما فى البند 2 .
تكرار الخطوة السابقة لباقى حالات العداد


النتيجة :
 




التطبيق رقم 2 : بيان رقم عند الضغط على مفتاح أو تشغيل حساس مثل بيان غرفة مريض لطلب مساعدة – بيان دور فى مصعد و....

الدائرة الكهربية :




شرح البرنامج :


1- البرنامج الفرعى لتحويل الرقم العشرى إلى كود إضاءة الشرائح السبعة (سبق شرحه)



2- البرنامج الفعلى :

عند تحول المدخل رقم 1 مثلا (يسمى Xinput1) إلى الحالة المرتفعة تتولد نبضة نتيجة وجود تعليمة OSR (نبضة عند الحافة الصاعدة ) هذه النبضة تؤدى إلى تفعيل تعليمة النقل MOV والتى تسبب نقل الرقم 1 والمناظر للمفتاح الأول إلى السجل digit والذى بدوره يعمل على إضاءة وعرض الرقم 1 المناطر كما سبق .









التطبيق رقم 3 : قياس درجة الحرارة كمثال لدخل تماثلى وعرضها على 3 وحدات 7-Segment بدون Multiplexing :
1- الدائرة الكهربية :


2- تخصيص الأطراف الخارجية والخانات والسجلات الداخلية بواسطة البرنامج تلقائيا



3- البرنامج :
قراءة الدخل التماثلى من الحساس LM45 بطريقة مباشرة باستخدام الأمر READ ADC وحفظ النتيجة فى السجل الخاص به والذى سميناه Ainput .
تهيئة مدى القياس ليتناسب مع العرض حيث أن جهد دخل قيمته 0V يناظره 0 قسم ADC وجهد قيمته 5V يناظره 1023 قسم ADC ( نستخدم محول ADC ذو 10 خانات ) أى كل 1 فولت يناظر 1023/5= 205 قسم ADC تقريبا .
الحساس LM35 يعطى جهد خرج قيمته 0V عند صفر درجة مئوية ويعطى جهد خرج قيمته 1.5V عند 150 درجة مئوية أى يعطى 1.5 * 205 = 307 قسم ADC ولكى تظهر هذه الاقسام كدرجات مئوية يتم الضرب (يالتعليمة MUL) و / أو القسمة ( التعليمة DIV) فى معاملات بحيث فى النهاية نضمن ظهور قراءة تدل على درجة الحرارة .
التقريب السهل فى حالتنا هو القسمة على 2 فنحصل على 153 قسم ADC تناظر 150 درجة مئوية تقريبا ويحفظ الناتج فى سجل سميناه actual


نبدأ بالقيمة actual حيث تقسم إلى مئات و عشرات و آحاد :بالقسمة على 100 لنحصل على عدد المئات الصحيحة والذى يحفظ فى السجل HUND , ثم نضرب عدد المئات الصحيحة فى 100 فنحصل على إجمالى المئات والذى يحفظ فى السجل hund بعد ذلك نطرح هذه القيمة من قيمة actual لنحصل على القيمة التى يجب ترحيلها إلى خانة العشرات والتى تخزن فى السجل rest10 وهكذا .
أى : actual / 100 = HUND ثم HUND*100=hund ثم actual-hund=rest10


البرنامج الفرعى لوحدة عرض الآحاد :


البرنامج الفرعى لوحدة عرض العشرات :


البرنامج الفرعى لوحدة عرض المئات :


أخيرا يتم تحميل أو نقل محتويات سجل الآحاد ONE إلى سجل وحدة عرض الآحاد digit1 ومحتويات سجل العشرات TEN إلى سجل وحدة عرض العشرات digit2 ومحتويات سجل المئات HUND إلى سجل وحدة عرض المئات digit100


النتيجة :













التطبيق رقم 4 :
قياس درجة الحرارة كمثال لدخل تماثلى وعرضها على 3 وحدات 7-Segment بانتخاب وحدة العرض Multiplexing :

الدائرة الكهربية :

تخصيص الأطراف الخارجية للدخل والخرج والخانات والسجلات الداخلية


إنشاء مذبذب بريلاى داخلى Rdosc بدورة مسح واحدة يغذى عداد دائرى Cdigit يعمل فى المدى 0-1-2 أى ثلاثة حالات حالة لكل وحدة عرض (آحاد – عشرات - مئات)

قراءة المدخل التماثلى وحفظة فى السجل Ainput ثم عمل مقياس حسب القيمة الفعلية المطلوب عرضها وحفظ الناتج فى السجل actual

تقسيم القيمة الفعلية إلى خانات : مئات وعشرات و آحاد

عملية انتخاب وحدات العرض حيث يتم انتخاب الوحدة بتوصيل مخرج المهبط المشترك( (Tcom_dogit0 وفى نفس الوقت تحميل بيانات الخانة المناظرة (الآحاد) لعمل تزامن بينهما .

البرنامج الفرعى للتحويل من رقم عشرى إلى إضاءة لشرائح 7 segment

نقل النتائج فى سجلات لعرضها


النتيجة








التطبيق رقم 5:

قياس درجة الحرارة كمثال لدخل تماثلى وعرضها على 4 وحدات 7-Segment بانتخاب وحدة العرض Multiplexing :

نفس الخطوات السابقة


















































 -----------------------------------------------------------------------------------------------------

0 التعليقات:

إرسال تعليق