إنشاء مشروع باستخدام Simatic manager

2010-02-24, 10:56 AM #1
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
إنشاء مشروع باستخدام Simatic manager
السلام عليكم و رحمة الله و بركاته

موضوع الدورة

برمجة PLC طراز سيمنس Simatic S7-300/400 باستعمال طريقة LAD

( المرجع الرئيسي في الدورة هو كتاب سيمنس : Ladder Logic (LAD) for S7-300 and S7-400 Programming )



لمن هذه الدورة


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

لمن لديه معرفة باستخدام الحاسب الآلي

لمن لديه معرفة باللغة الانجليزية

لمن لديه معرفة بنظم الأرقام ( الثنائية – العشرية – السداسي عشر .... )

سوف نبدأ من أقل مستويات البرمجة فلا يشترط المعرفة السابقة بالبرمجة


متطلبات العمل خلال الدورة

جهاز حاسب آلي مثبت عليه برنامج SIMATIC MANAGER والذي يعمل تحت نظام ويندوز بالإضافة إلى وسيلة للاتصال بموقع الدورة على النت

برنامج الدورة


مقدمة عن برنامج Simatic manager

مقدمة عن نظام PLC simatic s7-300/400 في بناء البرنامج

مقدمة عن عناصر التحكم الآلي وربطها بمنظومة PLC

الموضوع الرئيسي وهو البرمجة باستخدام LAD

مهارات خاصة في البرمجة

كما سبق واشرنا فسوف نبدأ بمقدمة في Simatic manager لما يمكن أن نحتاجه لإتمام العمل
وأول ما نبدأ به هو كيفية إنشاء مشروع جديد

لنعلم أولا أن التعامل مع برنامج PLC ليس فقط مجرد برنامج وإنما هو بيئة عمل متكاملة تشمل البرنامج وضبط منظومة Hardware والاتصال مع الأجزاء الأخرى وبالتالي يتم التعامل على شكل مشروع Project

فعند فتح Simatic manager سوف يبدأ بالشكل الآتي :




ولإنشاء مشروع جديد استخدام الأمر New المنسدل من قائمة File





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









بعد الانتهاء من جميع البيانات يتم الضغط على OK لتأكيد سلامة البيانات وإتمام إنشاء المشروع الجديد

وهكذا يتم الحصول على مشروع جديد مثل الصورة التالية بعد تحديد الاسم newproj1



والآن سوف نستعرض الإجراء التالي لإنشاء مشروع وهو باستخدام الأمر
New Project Wizard

File  New Project Wizard


يمر المشروع هنا بمراحل كما في الصور التالية
اختيار نوع CPU المستخدمة
اختيار OB blocks والتي يتم استخدامها مع النظام وطريقة كتابة البرنامج LAD/STL/FBD
اختيار اسم المشروع ومكان تخزينه
وفي النهاية نحصل على المشروع كما في الشكل التالي حيث يكون فيه نوع CPU وطريقة البرمجة و OB Blocks التي سوف نستخدمها















بعد أن حصلنا على المشروع بشكل إجمالي ندخل إلى تفاصيل المشروع
حيث أن أول خطوة هي إدراج Station وهي إما وحدة PLC أو HMI أو أي منظومة متوافقة مع Simatic step7 وهنا سوف نبدأ بإدراج S7-300 station
ويتم ذلك عن طريق الأمر

Insert  Station  SIMATIC 300 Station






وبعد أن قمنا بإدراج SIMATIC 300 Station نقوم بتحديد مواصفات Hardware الذي سوف نستخدمه في المشروع عن طريق الضغط على Hardware configuration حيث يتم إدراج المكونات كما في الطبيعة تماما بنفس الترتيب الذي يتم به التثبيت وبنفس الأرقام Part numbers الخاصة بالأجزاء





نستخدم الأمر Insert في نافذة Hardware configuration لإدراج مكونات النظام
Insert  Insert Object


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

يظهر Rail كما في الصورة التالية قبل إدخال المكونات عليه



ويتم إدراج المكونات بنفس الأمر Insert  Insert Object
حيث يظهر مع كل مكان على Rail المكونات المسموح باستخدامها فقط مثل الشكل التالي والذي يبين إدراج Power supply كذلك فإنه عند الوقوف على أي جزء قبل إدراجه فسوف تظهر شاشة مساعدة صغيرة لبيان مواصفات هذا الجزء وكذلك Part number الخاص به



وهكذا يكون الشكل بعد إدراج المكونات مع ملاحظة Addresses الخاصة بالمكونات والتي يتم التعامل معها عند البرمجة وكذلك رقم الجزء Part number والذي يتم طلب التوريد به





لتحميل عرض باور بوينت اضغط هنا http://rapidshare.com/files/138320873/LAD2.ppt.html

والآن إخوتي الأعزاء بعد أن تعرفنا على كيفية إنشاء مشروع ما وعمل Hardware configuration لنتعرف معا عن كيفية ضبط الاتصال مع PLC

أولا لكى نقوم باختيار نوع الاتصال المطلوب بين جهاز البرمجة لدينا وبين PLC لنقل البرنامج من وإلى وحدة CPU فلابد من تعريف طريقة الاتصال والتي تكون في طريقتين :

الأولى MPI والثانية PROFIBUS

وتتم الطريقتين باستخدام وسائل الاتصال Communication tools الخاصة بشركة سيمنس وهي :

PC Adaptor
CP5611 , CP5612 PCI Plug & Play boards


ولنعلم أن Drivers الخاصة بهذه الكروت موجودة بالفعل مع البرنامج الرئيسي عند تحميله ويتم توريدها كذلك مع المكونات وما يشغلنا هنا هو كيفية اختيارها للعمل مع البرنامج ولأن PC Adaptor هو الأسهل والأيسر في التنقل والحمل فسوف نركز في التعامل عليه

من قائمة Options نختار Set PG/PC Interface كما في الشكل التالي :



سوف تظهر لنا صورة بها مجموعات الاتصال الموجودة بالفعل على الجهاز لنكتشف إن كان منها PC Adaptor أم لا كما في الشكل التالي



في حالة عدم وجود PC Adaptor أو نوع الاتصال المطلوب نختار Select مثل الصورة التالية



ثم نختار PC Adaptor من القائمة على الشمال والتي توضح أنواع الاتصال المتاحة ثم نضغط Install حيث يتم نسخ هذا النوع إلى أنواع الاتصال الموجودة بالفعل على الناحية اليمنى كما في الصورة التالية



فيظهر PC Adaptor على اليمين بعد ذلك كما في الصورة التالية



ثم نعود بعد ذلك بالضغط على close إلى الصفحة الأولى لاختيار النوع المناسب



ثم نختار من القائمة النوع المناسب من الآتي :

PC Adaptor Auto
PC Adaptor MPI
PC Adaptor PROFIBUS

حسب نوع الاتصال الموجود في CPU فإذا كان Communication port MPI نستخدم الثاني وإذا كان Communication port DP نستخدم الثالث ويمكن أن نستخدم الأول ليتم النتقال بشكل آلي حسب نوع Port في وحدة CPU

والآن أخوتي الأعزاء دعونا نتعرف على بعض الشاشات والعناصر التي سوف نحتاجها في برنامج Simatic manager ونلقي عليها الضوء سريعا قبل أن ندخل إلى البرمجة :

أول هذه العناصر هو Simatic manager أو الصفحة الرئيسية كما تظهر في الصورة التالية



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

ومن خلال القوائم الفرعية File , Edit , Insert , PLC , Wiew , Options , Windows , Help يمكن تنفيذ العديد من الوظائف الفرعية لكل قائمة

الشاشة الثانية وهي الشاشة الرئيسية كتابة البرنامج داخل Program blocks وتسمى LAD/SATL/FBD Editor وبها كل وظائف التعامل مع البرنامج بأي من طرق البرمجة الثلاث LAD أو STL أو FBD وتنقسم إلى أجزاء حيث في الأعلى توجد القوائم المنسدلة والتي تشمل كل الوظائف الممكنة من تحميل وتخزين وتعديل واتصال وغيرها

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

كما في الشكل التالي



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



ومن الشاشات المهمة أيضا لكتابة بيانات Data blocks وتوصيفها ومتابعتها نستخدم نفس LAD/STL/FBD ولكن في صورة Data block حسب الشكل التالي



كذلك لسهولة التحرك داخل البرنامج ومعرفة العناصر المستخدمة Inputs/Outputs/Memory/Counters/Timers/DataBlocks and others

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



كذلك فإنه عند استخدام الرموز للتعبير عن العناصر بدلا من استخدام العنوان المباشر يتم استخدام Symbole editor للتعامل مع الرموز وبه كل الإمكانيات اللازمة لذلك كما في الشكل التالي



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

نبدأ بالحديث عن وسيط التعامل وكتابة البرنامج باستخدام LAD والمسمى LAD/FBD/STL Editor



وطبقا للصورة أعلاه لدينا 6 مناطق رئيسية يتكون منها وسيط كتابة البرنامج هي :

1- مستعرض المشروع ومكوناته Project navigator

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

2- مسطرة الأوامر Menu bar

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

3- مسطرة ( شريط ) الأدوات Tool bar

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

4- جدول توصيف المتغيرات الداخلية Declaration table

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

5- منطقة العمل الرئيسية Working area

وهي المنطقة التي يتم فيها كتابة نص البرنامج الفعلي والذي يتم تنفيذه بشكل تسلسلي حيث ما يكتب أولا ينفذ أولا ما لم يحدث توجيه إجباري للبرنامج بشروط معينة Conditional and unconditional branching

6- زاوية مراقبة التفاصيل Detail view

وهي لإظهار التفاصيل لما يتم اختياره بشكل مختصر من الأوامر أعلاه أو الأيقونات


يمكن تكبير منطقة العمل الرئيسية Working area ومنطقة مراقبة التفاصيل Detail view عن طريق Menu bar

• View > Maximize working area e.g., when creating programs
or
• View > Maximized detail view e.g., monitoring global variables

كذلك يمكن زيادة وتقليص حجم عرض البيانات في المنطقة الرئيسية لإمكان رؤية الحجم الكامل للجزء من البرنامج عن طريق الأمر Zoom أيضا المتفرع من View أو استخدام الأمر Enlarge أو Reduce للوصول إلى نسبة العرض المطلوبة

كذلك يمكن إخفاء المناطق ( مستعرض المشروع - منطقة التوصيف - منطقة التفاصيل ) أو تكبيرها أو تصغيرها


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


وهذا نموذج لشريط أدوات من المستخدمة في البرنامج



كذلك لكل أمر من الأوامر ( معظمها ) يوجد أيضا وصول سريع بشكل آخر عن طريق تركيب من المفاتيح مثل Alt+Enter أو غير ذلك لعمل وظائف معينة لمن يتقن استخدام ذلك

كذلك عمليات Drag & Drop اسحب واترك تنطبق على عناصر منطقة مستعرض المشروع ومنطقة التوصيف وشريط الأدوات وهي تسهل إلى حد كبير عمليات كتابة البرنامج

هذا بالإضافة إلى عمليات التحكم في شكل Editor سواء بشكل الكتابة أو الألوان كل هذا أيضا يمكن التحكم به


إخوتي الأعزاء حتى لا أضيع وقتكم في وظائف يمكن تحصيلها مع الوقت أو عن طريق قراءة Help الخاصة بالبرنامج أو قراءة ملف متخصص في ذلك فليكم هذا الملف الذي يتحدث بتفصيل عن LAD/FBD وبتركيز على نموذج من النماذج المتخصصة في برمجة LAD/FBD وهو عن SMOTION ويمكن التعامل مع الملف ببساطة لمعرفة أساسيات التعامل للبرنامج على أن نواصل فعليا في عمليات البرمجة نفسها

الملف بعنوان LAD/FBD Programming

https://support.automation.siemens.c...edownload=true

من المهم جدا قبل الخوض في عمليات البرمجة أن نتعرف على بعض الأمور العامة عن البرمجة

أي أمر من أوامر البرمجة يتكون من جزئين رئيسيين :

الأول هو العملية أو أمر العملية أو ما يطلق عليه ( Operator ) مثل AND , OR , +I , *R وهكذا

الثاني هو البيانات التي تتم عليها العملية سواء كانت بيانات مباشرة أو عنوان لأماكن تخزين بيانات ويطلق عليه Operand

ولنعلم أنه أيضا يوجد أنواع عديدة من البيانات التي تتم عليها العمليات وهذا مهم جدا لكل أنواع البرمجة وهو يعتمد بالدرجة الأولى على حجم البيانات كالآتي :

- أقل حجم هو خانة واحدة bit وهذا النوع يتم عليه العمليات المنطقية Binary operations
- الحجم الأكبر من bit هو byte أو ما يوازي 8 خانات وهذا النوع يمكن أن تتم عليه عمليات منطقية أو عمليات حسابية
- الحجم التالي هو word أو 16 خانة أو 2-byte وكذلك يمكن أن تتم عليه العمليات المنطقية أو الحسابات أو عمليات التحويل أو العدادات أو التايمرات طبقا لنوع البيانات بهذا الحجم والتي يمكن أن تكون صحيحة integer أو BCD
- الحجم الأكبر من البيانات هو 32 خانة أو double word ويستخدم في العمليات الحسابية ذات الدقة الأعلى سواء الحقيقية أو الصحيحة ذات الدقة المضاعفة


أولا أنواع المتغيرات :

النوع الأول : الثنائي Binary type

وهو يأخذ القيمة 0 أو 1 فقط أو كهربيا ON - OFF فقط وعند التعامل مع هذا النوع يتم كتابة ذلك على النحو الآتي :

تمثيل رقم مكون من 16 خانة :

b#1001 0110 0011 0001


b هنا معناها أن الرقم ثنائي وعلامة # هي الفاصل بين الرقم والتميز أما مجموعة الأرقام فهي قيمة الرقم

النوع الثاني : الأرقام الصحيحة Integer numbers

وهي أرقام عشرية صحيحة وهي إما دقة 16 رقم أو 32 رقم ثنائي
الأرقام ذات الدقة 16 خانة تكتب كما تكتب في النظام العشري العادي دون علامة عشرية مثلا 120
وهي تتراوح مابين 32768- إلى 32767+ في حالة الأرقام ذات الإشارة signed integers
وتتراوح بين 0 و65535+ في حالة الأرقام الموجبة الصحيحة unsigned integers
أما الأرقام ذات الدقة 32 خانة الصحيحة double integers فعند كتابتها نكتبها بالشكل الآتي :

L#150


النوع الثالث : وهو الأرقام العشرية Real ( floating point ) numbers

وتكتب على الصيغة الآتية :

x.ye+/-z


حيث x الجزء الصحيح من الرقم العشري لخانة واحدة
y الجزء الكسري في الرقم العشري
e تعني أس الرقم 10
+/- وهي إشارة الأس
z تمثل الأس

بمعني 23000 مثلا تكتب كالآتي : 2.3e+4
0.0354 تكتب : 3.54e-2

وإذا كان الرقم ككل موجب لا تكتب أمامه إشارة وإذا كان سالبا تكتب أمامه إشارة -

النوع الرابع وهو : نوع متغير زمني للتايمر Timer type

ويكتب كالآتي :

s5t#100ms


هذا الرقم معناه زمن تايمر قيمته 100 مللي ثانية

النوع الخامس : متغير يدل عل التاريخ date

ويكتب كالآتي :

d#2008-04-08 كتاريخ 8 أبريل 2008


متغير وقت حقيقي time of day

ويكتب كالآتي :

tod#hh:mm:ss.ms مثلا tod#2324.500


متغير وقت مطلق time

ويكتب كالآتي :

t#Od_0h_0m_0s_0ms مثلا t#Od_10h_50m_28s_880ms


متغير وقت وتاريخ ويكتب كالآتي :

DT#2008-04-08-20:25:30.850


وهناك متغيرات حرفية String وتكتب بين علامات تنصيص 'xyz'

كذلك هناك للعدادات وتكتب على الشكل c#897

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

عونا نتعرف على أنواع Blocks التي يتعامل معها برنامج Simatic manager

أولا فإن برنامج PLC في نظام Simatic step-7 300 كما هو الحال في معظم أنواع PLC يتم كتابته في شكل Blocks حيث يحتوي كل Block على مجموعة من البيانات أو الأوامر

وهناك نوعان من Blocks عند التقسيم من حيث المحتوى :

الأول يسمى Logic blocks أو الدوال المنطقية وهي التي تحتوي على الأوامر والبيانات على حد سواء

والثاني ويسمى Data blocks وهي المخصصة فقط للبيانات

أما من حيث الاستخدام فهناك الأنواع الآتية :

الدوال التنظيمية Organization Blocks-OB's :

وهذه الدوال أو القوالب هي التي تصيغ العلاقة بين نظام التشغيل والبرنامج بحيث يستطيع نظام التشغيل فهم البرنامج ولا يتم تنفيذ أي شئ في البرنامج ما لم يكن متضمنا سواء بشكل مباشر أو بشكل غير مباشر داخل OB's

وأول هذه المجموعة هو OB1 وهو أقلها أولوية عند التنفيذ حيث أن درجة الأولوية له هي 1 وإذا تم استدعاء أي OB آخر في البرنامج يكون له أولوية أعلى من OB1 ما عدا OB90

ويتم تنفيذ الأوامر المحتواة في OB1 بشكل دوري بعد انتهاء دورة Start-up لوحدة CPU حيث يتم تنفيذ OB1 وبمجرد الانتهاء من تنفيذ محتوياته يتم العودة إلى أوله مرة أخرى للتنفيذ مرة أخرى وهكذا

وعلى هذا فإن هناك حالتين يتم فيهما البدء في تنفيذ محتويات OB1 وهما :

- بعد انتهاء Start-up لوحدة CPU
- بعد انتهاء دورة تنفيذ OB1

ويمكن أن يحتوي أي من أوامر البرمجة العادية أو أي استدعاء لأي من الدوال المختلفة المستخدمة داخل البرنامج كذلك بمكن أن يتم كتابته باستخدام STL/LAD/FBD

الدوال الوظيفية Function Blocks FB's :

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

وهذا النوع من الدوال FB يستخدم جزء مرتبط به من ذاكرة البرنامج يسمى Instance data block حيث يتم فيه تخزين البيانات المصاحبة

كذلك يمكن كتابة أي أمر من الأوامر داخله أو استدعاء الدوال الأخرى سواء من النوع FB / FC / SFB / SFC

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

الدوال الوظيفية Functions FC's :

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

وهذا النوع من الدوال FC لا يستخدم Instance data block

كذلك يمكن كتابة أي أمر من الأوامر داخله أو استدعاء الدوال الأخرى سواء من النوع FB / FC / SFB / SFC

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


دوال النظام الوظيفية System Function Block's SFB :

هذه الدوال هي من محتويات النظام وهي عبارة عن Function Block أي يصاحبها Instance data block ولكن هذه الدوال لا يمكن التغيير فيها وإنما يتم استدعاؤها للاستخدام في الوظائف المحددة لها في أي مكان وفي أي وقت من البرنامج


دوال النظام الوظيفية System Functions SFC :

هذه الدوال هي من محتويات النظام وهي عبارة عن Function ولا يصاحبها Instance data block ولكن هذه الدوال لا يمكن التغيير فيها وإنما يتم استدعاؤها للاستخدام في الوظائف المحددة لها في أي مكان وفي أي وقت من البرنامج


دوال البيانات Data Blocks DB's :

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

حيث حقول البيانات هي

Address / Symbolic name / Symbol / Initial value / Actual value / Comment

ويمكن كتابة أي نوع من الأنواع السابق شرحها من البيانات داخل Data block عند إنشائه

كذلك فإنه هناك نوعان من دوال البيانات DB's الأول وهو المصاحب للدوال الوظيفية Instance data blocks وهذا النوع يتم صياغته وإنشائه عن طريق النظام ولا يتم عمل أي تعديل عليه فقط يتم تمرير البيانات عن طريق الدالة الوظيفية منه وإليه

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


النوع الأخير وهو أنواع البيانات الموصفة عن طريق المبرمج User Data Type UDT :

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

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

حيث أن معظم العمليات تتم على متغيرات وهذه المتغيرات يكون لها عنوان حتى يتم التمييز بينها وسوف نتعرض الآن لهذا الأمر وهو Addressing

أولا المدخلات الرقمية Digital inputs :

وهي التي يتم قراءتها من Digital input modules وكما سبق وذكرنا عند عمل hardware configuration التنبه إلى خانة address وسوف نجد أنها تحتوى على رقم Byte or bytes المستخدمة فإذا كان الموديول 8 نقط فقط سوف نجد byte واحدة مثلا 4 وإذا كان 16 طرف سوف نجد عدد 2 bytes مثلا 4،5 وإذا كان 32 طرف سوف نجد 4 bytes مثل 4...7

ونلاحظ أن الصيغة العامة لعمل عنوان Address للمدخل الرقمي هي كما يلي :

I x.y


حيث أن الرمز I يشير إلى أنه مدخل رقمي والرمز x يشير إلى رقم byte والرمز y يشير إلى ترتيب خانة المدخل الرقمي وتكون من 0 وحتى 7

أمثلة :

I 10.0 , I 2.6 , I 5.3 , I 6.7


ما سبق يمثل كيفية Addressing في صورة خانة واحدة bit كذلك يمكن التعبير عنها في صورة Byte أي عدد 8 خانات وفي هذه الحالة تأخذ الصورة :

IB x حيث يشير I إلى أنه مدخل رقمي ويشير الرمز B إلى أنه 8 خانات ويشير الرمز x إلى رقم Byte حسب ترتيب الموديول

مثال ذلك : IB 3 , IB 5 , IB 12


كذلك يمكن التعبير عنها في صورة Word أي عدد 16 خانات وفي هذه الحالة تأخذ الصورة :

IW x حيث يشير I إلى أنه مدخل رقمي ويشير الرمز W إلى أنه 16 خانات ويشير الرمز x إلى رقم أول Byte حسب ترتيب الموديول

مثال ذلك : IW 0 , IW 4 , IW 12


كذلك يمكن التعبير عنها في صورة Double Word أي عدد 32 خانات وفي هذه الحالة تأخذ الصورة :

ID x حيث يشير I إلى أنه مدخل رقمي ويشير الرمز D إلى أنه 32 خانات ويشير الرمز x إلى رقم أول Byte حسب ترتيب الموديول


مثال ذلك : ID 0 , ID 4 , ID 12



المخرجات الرقمية Digital Outputs :

وهي ما يتم إخراجها على Digital output module وينطبق عليها نفس ما ينطبق على Digital inputs غير أن الصيغة العامة لها تختلف كالآتي :

Q x.y


حيث أن الرمز Q يشير إلى أنه مخرج رقمي والرمز x يشير إلى رقم byte والرمز y يشير إلى ترتيب خانة المخرج الرقمي وتكون من 0 وحتى 7

أمثلة :

Q 2.0 , Q 12.6 , Q 1.7 , Q 4.5


وهي كذلك يمكن التعبير عنها في صورة Byte , Word , Double word مثل Digital inputs تماما

أمثلة :

QB 10 , QB 3 , QW 2 , QW 12 , QD 20 , QD 124


الذاكرة الوسيطة Bit memory :

وهي أماكن في الذاكرة الداخلية لوحدة CPU يمكن استخدامها كذاكرة وسيطة Buffer للعمليات المختلفة ويمكن صياغتها بكل الأشكال وكذلك يتم عنونتها بكل الصور السابقة سواء Bit , Byte , Word , Double word

وبدلا من الرمز I , Q فإنها تأخذ الرمز M

M x.y


حيث أن الرمز M يشير إلى أنه موقع ذاكرة وسيط والرمز x يشير إلى رقم byte والرمز y يشير إلى ترتيب خانة الذاكرة الوسيطة وتكون من 0 وحتى 7

أمثلة :

M 0.1 , M10.4 , M100.7 , M 220.6


كذلك يمكن التعبير عنها في صورة Byte , Word , Double word بنفس الطريقة السابقة كالأمثلة الآتية

MB10 , MB100 , MW102 , MW16 , MD20 , MD28


ذاكرة البيانات Data :

وهي التي يتم تخزينها في Data Blocks وأيضا تكون لها نفس الصياغة سواء Bit , Byte , Word , Double word بحسب الصيغ الآتية :

في حالة Bit يتم استخدام الصيغة :

DBzDBXx.y


حيث يشير الرمز DB إلى أنه Data Block ويشير الرمز z إلى رقم Data Block ويشير الرمز x إلى رقم Byte ويشير الرمز y إلى رقم الخانة Bit ويشير الرمز DBX إلى أنها خانة Bit

أما في حالة Byte فيتم استخدام نفس الجزء الأول ولكن الجزء DBXx.y يصبح DBBx فقط حيث تشير DBB إلى أنه في صورة Byte وتشير x إلى رقم Byte

وفي حالة Word تكون DBWx حيث تشير DBW إلى أنه word وتشير x إلى رقم Word

وفي حالة Double Word تكون DBDx حيث تشير DBD إلى أنه Double word وتشير x إلى رقم أول Word

أمثلة :

DB10.DBX1.0 , DB2.DBX3.1 , DB20.DBB10 , DB15.DBB120 , DB25.DBW2 , DB30.DBW200 , DB0.DBD2 , DB70.DBD72


Timer and Counter Addressing

يتم عنونة المؤقتات والعدادات بكل بساطة للاستخدام في العمليات المنطقية برقم صحيح من 1 وحتى أقصى رقم يمكن استخدامه داخل CPU مسبوقا بحرف T في حالة المؤقتات ومسبوقا بحرف C في حالة العدادات مثل :

C1 , T1 , C5 , T20


عنونة المدخلات الطرفية التناظرية Peripheral inputs :

وهي ما يطلق عليه Analoge inputs or counter modules وتأخذ عددا من الخانات حسب دقة المدخلات سواء كانت Byte , Word , Double word حيث تأخذ الصور الآتية :

PIBx , PIWx , PIDx


حيث يشير الرمز PIB أنه مدخل طرفي في صورة Byte والرمز PIW إلى أنه مدخل طرفي في صورة Word والرمز PID إلى أنه مدخل طرفي في صورة Double word وفي كل الحالات الرمز x يعبر عن رقم المدخل الطرفي


عنونة المخرجات الطرفية التناظرية Peripheral outputs :

وهي ما يطلق عليه Analoge outputs or counter modules وتأخذ عددا من الخانات حسب دقة المخرجات سواء كانت Byte , Word , Double word حيث تأخذ الصور الآتية :

PQBx , PQWx , PQDx


حيث يشير الرمز PQB أنه مخرج طرفي في صورة Byte والرمز PQW إلى أنه مخرج طرفي في صورة Word والرمز PQD إلى أنه مخرج طرفي في صورة Double word وفي كل الحالات الرمز x يعبر عن رقم المخرج الطرفي

والآن بعد أن استعرضنا معا أنواع البيانات وعمل Addressing وأنواع البلوكات التي نتعامل معها ونكتب البرنامج داخلها آن لنا الأوان لنبدأ بكتابة البرنامج وأول ما نبدأ به هو التعرف على عناصر البرمجة أو ما يسمى تعليمات البرمجة Instructions


****** منقول للامانة******









من مواضيع sebaii_newlook :

2010-02-24, 11:02 AM #2
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
وأول نوع من أنواع التعليمات التي سنتعرض لها هو العمليات المنطقية Bit Logic Operations :

كما هو واضح من الإسم فإن هذا النوع من العمليات يتم على متغيرات من النوع BOOL أي ثنائية منطقية وهي كلها تخضع لحسابات الجبرالثنائي BOOLEAN ALGEBRA وهناك عمليات أساسية يمكن منها تركيب جميع العمليات الأخرى

وعند البرمجة بطريقة Ladder diagram - LAD فإن هناك عناصر لهذه التعليمات نستعرضها معا :

Normally Open Contact ( NO ) ---| |--- مثل الشكل التالي :



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

I , Q , M , L , D , C , T


أي أن Address المكتوب فوق Contact في البرنامج يمكن أن يكون Digital input , Digital output , Bit memory , Temporary local memory , Data block bit , Counter and Timer

وعند توصيلها توالي مع بعضها فهذا يمثل عملية AND وعند توصيلها توازي مع بعضها فهذا يمثل عملية OR



ولملاحظة تأثير NO Contact فإنها ترتبط بنتيجة RLO-Result of previous Logic Operation حيث يتم الربط معها حسب نوع التوصيل توالي أو توازي ثم تغيير حالة RLO طبقا للوضع الذي عليه البيانات

مثال على شكل التمثيل مع التوصيل توالي وتوازي :



النوع الثاني هو النقطة المغلقة Normall closed contact NC ---| / |--- مثل الشكل التالي :



وهذه تعبر عن نقطة مغلقة تفتح عند تحول حالة Address إلى القيمة " 1 " وأيضا يمكن أن يتم توصيلها توالي أو توازي واستخدام العمليات المنطقية AND , OR بنفس الطريقة

وهذا ينطبق على كل من الأنواع الآتية :

I , Q , M , L , D , C , T


ويتم ربط القيمة المخزنة في RLO مع قيمة Bit address وتخزين النتيجة في خانة RLO



وفي المثال التالي شكل التوصيل توالي وتوازي :



النوع الثالث من العناصر هو النفي ---| NOT |--- :



وهذا النوع يقوم بقلب النتيجة الموجودة في RLO فإن كانت نتيجة آخر عملية هي " 1 " يقوم بتحويلها إلى " 0 " وإن كانت نتيجة آخر عملية هي " 0 " يتم تحويلها إلى " 1 "

وهذا ينطبق على كل من الأنواع الآتية :

I , Q , M , L , D , C , T



وفي الشكل التالي مثال لاستعمال الأمر ---| NOT |---



النوع الرابع وهو ملف الخرج Coil output ---( )--- :

وهو يمثل ملف التشغيل لأي ريلاي أو كونتاكتور تماما

وهذا ينطبق على كل من الأنواع الآتية فقط :

I , Q , M , L , D



وكما قلنا فإن ما يقوم به هذا الأمر هو نقل قيمة RLO على Address المشار إليه فوق Coil



وهذا مثال لاستعمال Coil :



النوع الخامس : ملف الخرج المتوسط Middle output -----( # )------



وتستخدم لتخزين محتويات RLO داخل العنوان المخصص والذي يمكن أن يكون I , M , D , Q , L وهي تستعمل بالتوالي مع شروط أخرى بعدها لكتوين RLO جديدة ولا يمكن أن يبدأ بها السطر ولا ينتهي بها وإنما يجب أن يكون قبلها شرط آخر وبعدها أي شئ آخر حتى لو كان Output coil ( )------

وفيما يلي تأثير Middle output على خانات Status word



وهذا مثال على استخدام Middle output



النوع السادس هو : Reset Coil



وهنا يمكن أن يكون Address الذي تتم عليه العملية I , Q , M , D , L , C , T وهنا عندما تكون نتيجة RLO السابقة 1 فإنه يتم التنفيذ أي يتم تحويل حالة Address إلى 0 - أما إذا كانت حالة RLO صفرا فإن الأمر لا ينفذ وكما أشرنا بمكن تنفيذه على المدخلات والمخرجات والذاكرة وخانات بلوك البيانات والذاكرة المحلية وكذلك العدادات والمؤقتات حيث أنه في العدادات والمؤقتات بجانب إعادة الحالة المنطقية للصفر فإنه يعيد أيضا قيمة العداد وقيمة الوقت إلى الصفر

تأثير الأمر على Status word



وهذا مثال على استخدام الأمر Reset



النوع السابع : الأمر Set



وهذا الأمر في حالة تحقق RLO فإنه يقوم بتحويل حالة Address المصحوب إلى 1 وتظل هكذا ما لم يتم عمل Reset لها أو تحويل قيمتها إلى 0 عن طريق أمر آخر ويمكن أن يكون Address أي من المدخلات أو المخرجات أو خانات الذاكرة أو خانات بلوك البيانات أو الذاكرة المحلية وهي بالترتيب I , Q , M , D , L

وهذا هو تأثير الأمر Set على Status word



وهذا مثال على استعمال Set



النوع الثامن : الأمر Set قبل Reset



وهذا الأمر له مدخلان الأول S والثاني R وله مخرج واحد Q وفي حالة وجود الإشارة 1 على المدخل S ووجود الحالة 0 على المدخل R فإن حالة المخرج Q تكون 1 وتظل هكذا إلى يتم تحويلها بأمر آخر

وفي حالة وجود الحالة 1 على المدخل R ووجود الحالة 0 على المدخل S تصبح حالة Q صفر

وفي حالة وجود الحالة 0 على كل من S , R فإن حالة Q تصير صفرا

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

تأثير الأمر SR على Status word



وهذا مثال على استعمال الأمر SR



النوع التاسع : الأمر Reset قبل Set



وهذا الأمر كالأمر السابق له نفس المدخلان R , S وله مخرج واحد Q وهو مثل الأمر السابق في كل شئ عدا الحالة التي يكون فيها المدخلان 1

ففي هذه الحالة يكون آخر ما يتم تنفيذه في الأمر هو عمل Set وبالتالي تظل قيم Q -- 1 طوال تنفيذ دورة البرنامج وحتى العودة إلى نفس الموضع مرة أخرى حيث يتم عمل Reset لوقت قليل جدا ثم Set مرة أخرى وهذا يعني أنه تقريبا تظل قيمة Q =1 طوال تنفيذ البرنامج

تأثير الأمر RS على حالة Status word



وهذا مثال على استعمال الأمر RS






ولنكمل معا ما بدأناه إن شاء الله ونواصل Bit Logic Operations

العنصر التالي هو Positive RLO Egde Detection




وهذا الأمر يقوم باكتشاف التغيير في حالة RLO حيث أنه عند لحظة التغيير وعند الانتقال من الحالة صفر إلى الحالة 1 وهي اكتشاف الحافة الموجبة Positive edge transition فإنه يعطي Impulse ثم يعود إلى الصفر مرة أخرى حتى لو ظلت RLO على الحالة 1 حيث أن يكتشف لحظة الانتقال من الصفر إلى الواحد فقط ويقوم بتخزين حالة RLO قبل الأمر في Address الذي يتم كتابته فوق الأمر ( P )-----

وهذا هو تأثير الأمر على Status word



وهذا مثال يوضح استخدام الأمر



الأمر التالي وهو Negative Edge RLO Detection



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

تأثير الأمر على Status word



وهذا مثال على تطبيق الأمر



الأمر التالي وهو Address Positive Edge Detection


الأمر السابق كما علمنا كان يقوم باكتشاف الانتقال من الحالة صفر إلى الحالة 1 بالنسبة ل RLO أما لو أردنا ان نحدد متغير معين عنوانه <Address1> كأن يكون Digital input , memory bit ,... فيستخدم هذا الأمر حيث يحتوي العنوان <Address2> على القيمة السابقة وعند الانتقال من الصفر إلى 1 يتم إخراج Impulse مثل الأمر السابق تماما



تأثير الأمر على Status word



وهذا مثال على استخدام الأمر



الأمر التالي Address Negative Edge Detection


وهذا الأمر يقوم باكتشاف الانتقال من الحالة 1 إلى الحالة صفر بمعلومية العنوان <Address1> ويحتفظ بالحالة السابقة في العنوان <Address2> ويقوم عن تحقيق الشرط بإخراج Impulse ثم العودة مرة أخرى إلى الصفر حتى لو ظلت قيمة العنوان <Address1> صفرا أو تحولت إلى 1 فالعبرة فقط بالتحول من الحالة 1 إلى الحالة صفر



تأثير الأمر على Status word



وهذا مثال على استخدام الأمر



الأمر SAVE


هذا الأمر يقوم بتخزين قيمة RLO في خانة BR في Status word ويفضل استعمالها في نهاية البلوك وقبل الخروج منه مباشرة نظرا لأن حالة BR يمكن أن تتغير بأوامر أخرى حسب الأوامر نفسها



تأثير الأمر SAVE على Status word



وهذا مثال يوضح الاستخدام



الأمر XOR


من المعلوم أنه لا يوجد أمر XOR عند استخدام LAD ولكن يتم تكوين الأمر من عدد 4 كونتاكت مثل الشكل التالي





****** منقول للامانة*****

من مواضيع sebaii_newlook :

2010-02-24, 11:04 AM #3
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
والآن إخواني نبدأ معا في استعراض وظائف المؤقتات Timer operations

يوجد في Step-7/300,400 خمسة أنواع من المؤقتات بحسب الوظيفة المطلوبة منها وسوف نذكرها كأسماء أولا ثم نبدأ بعد ذلك باستعراضها تفصيليا

1- مؤقت تأخير بدء On-Delay Timer
2- مؤقت تأخير فصل Off-Delay Timer
3- مؤقت نبضي Pulse Timer
4- مؤقت نبضي ممتد Extended Pulse Timer
5- مؤقت تأخير بدء مخزن Stored On-Delay Timer

On-Delay Timer


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



فكما يوضح الشكل السابق فهناك شرطان لخروج النتيجة من Timer output وهما وجود شرط التشغيل والوقت ( أي لا يبدأ إلا بعد مرور وقت التأخير )

والشكل التالي يحتوي على وظيفة مؤقت تأخير بدء كاملة



فلدينا بحسب الشكل ثلاث مدخلات وهي :

- دخل االتشغيل أو البدء S وهو الشرط الأول للتشغيل فطالما هو موجود فخرج المؤقت ( التايمر ) مرتبط بالوقت الذي تم ضبطه وهو من النوع الثنائي
- دخل الإعادة إلى الصفر R - Reset وعند وجود إشارة 1 على هذا الدخل يتم تصفير الخرج وقيمة الوقت أيضا وهو من النوع الثنائي
- دخل قيمة الوقت TV - Time Value وهو من الصيغة S5T ويمكن أن يكون ثابت أو WORD حيث يتم اعتبار قيمتها من الصيغة S5T

أما المخرجات فهي ثلاثة :

- الخرج Q وهو يمثل حالة التايمر حيث تتحول قيمتها إلى 1 عن تحقق شروط التشغيل وفي حالة عدم تحقق شروط التشغيل تتحول إلى صفر وهو من النوع الثنائي
- الخرج BI وهو يمثل القيمة الحالية للتايمر ( قيمة الوقت ) في صورة رقم صحيح Integer
- الخرج BCD وهو يمثل القيمة الحالية للتايمر ( قيمة الوقت ) في صورة BCB - Binary coded decimal

مع ملاحظة أنه يتم كتابة رقم التايمر فوقه مسبوقا بحرف T مثل : T1 , T5 , T10 , .... , T88

ويمكن تنفيذ نفس الوظيفة باستعمال الأمر ( SD )--- مع الأمر ( R )---- كالصورة التالية :



ولكن هنا يلزم أمر للتشغيل وأمر للإعادة للصفر وأمر آخر لقراءة القيمة الحالية للوقت

وسوف تجد كل المدخلات بنفس الأسماء في جميع أنواع المؤقتات الأربعة الأخرى ولكن يختلف فقط توصيف ووظيفة التايمر

Off-Delay Timer


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

الشكل الحالي يمثل مخطط الوقت لتشغيل التايمر من النوع تأخير فصل



وهذا الصورة تمثل كيفية استدعاء التايمر وتشغيله



بقي لنا الآتي :

Pulse timer - Extended pulse timer - Stored On-delay timer

ونبدأ بالنوع الأول Pulse timer وكما هو واضح من اسمه فإن الخرج منه يكون على شكل Pulse يتم تحديدها عن طريق الوقت المدخل إلى التايمر على النقطة TV والتي تمثل هنا وقت تشغيل التايمر

ويشترط هنا لخروج الخرج على Q وجود شرطين هما الدخل S والوقت المحدد ب TV فإذا تحولت قيمة S من 1 إلى صفر فإن الخرج حتى ولو كان داخل الوقت يتحول أيضا إلى الصفر وإذا استمر وجود الشرط S وانتهى الوقت أيضا يتحول الخرج إلى صفر

والشكل التالي يبين تفاصيل الخرج مع شروط التشغيل الوقت و S



كذلك فإن الدخل R يحول قيمة الخرج Q إلى صفر وكذلك يعيد حالة BI , BCD والذان يمثلان القيمة الحالية للوقت إلى قيمة الوقت الأولى

والشكل التالي يوضح تفاصيل المدخلات والمخرجات من وإلى التايمر من النوع Pulse والمدخلات والمخرجات واحدة لكل الأنواع



وكما سبق وذكرنا في النوعين الأولين فإنه يمكن تمثيل التايمر إما مجمعا أو مفرقا أي الوظيفتين S,R معا أو مفترقين مثل الصورة التالية



أما النوع الثاني اليوم والرابع عامة من أنواع التايمرز فهو Extended pulse timer

وهذا النوع يشترط له شرطان أيضا الأول هو انتقال حالة S من الصفر إلى 1 وليس الاستمرار كما هو الحال في النوع Pulse وإنما فقط حالة الانتقال وبالتالي يعتمد بعد ذلك على وجود شرط الوقت فقط والذي بانتهائه يتحول الخرج من 1 إلى صفر والشكل التالي يمثل عملية ارتباط الخرج بشروط التشغيل



ويمكن أيضا أن يتم تنفيذه بشكل مجمع أو مفرق مثله مثل السابقين

وله نفس المدخلات والمخرجات التي سبق تفصيلها في النوع Pulse

غير أنه يأخذ الرمز SE بدلا من SP

النوع الخامس والأخير من أنواع التايمرز وهو Stored On-delay timer

وكما سبق وذكرنا عن On-delay timer فقد كان يشترط وجود الإشارة S وبعد مرور الوقت المحدد تتحول حالته من الصفر إلى 1 ثم عند زوال الإشارة S فإنه يعود إلى الصفر مرة أخرى أو عند وجود قيمة 1 على الدخل R

أما هنا فليس الأمر كذلك فالشرط الأول هو تحول قيمة S من الصفر إلى 1 وهذا التحول يقوم بتفعيل عداد الوقت وبعد مرور الوقت t تتحول قيمة Q من الصفر إلى 1 وتستمر حتى في حالة زوال S ولا تعود إلى الصفر إلا بوجود قيمة 1 على الدخل R

والشكل التالي يوضح هذا المعنى



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

وله نفس المدخلات والمخرجات تماما مثل الأنواع السابقة

والآن دعونا نتحدث عن عمليات المقارنة Comparison instructions

وعمليات المقارنة لها عندنا تصنيفان رئيسيان الأول هو حسب نوع العملية وهناك للعمليات 6 أنواع وهي :

- التساوي
- عدم التساوي
- أكبر من
- أقل من
- أكبر من أو يساوي
- أقل من أو يساوي

أما بناء على نوع البيانات التي يتم مقارنتها (( والتي يجب أن تكون من نفس النوع )) فهناك ثلاثة أنواع متاحة وهى :

- المتغيرات الصحيحة Integers
- المتغيرات الصحيحة ذات الدقة المضاعفة Double integers
- المتغيرات العشرية ( الكسرية ) Floating point : reals

وبالتالي يكون لدينا 18 عملية مقارنة متاحة سوف نجمع كل نوع من أنواع البيانات معا نتحدث عنه وانظر أولا إلى الشكل التالي :



وقد وضعت على هذا الشكل كل التفاصيل المطلوبة

فالشكل يحتوي على جميع عمليات مقارنة الأرقام الصحيحة الستة وهي :

- التساوي Equal : ==I

وفي الشكل الموضح لدينا مدخلان هما IN1,IN2 حيث يتم اختبار التساوي بينهما فإذا حدث التساوي فإن خرج البلوك والذي بناء عليه تتغير حالة RLO مع الربط وما قبلها فإن تحقق الشرط وكانت RLO قبلها 1 فإن النتيجة تكون 1 وإن لم يتحقق الشرط ( التساوي ) تكون النتيجة بعدها على النقطة A تساوي صفر

مع ملاحظة أن نوع البيانات على المدخلين IN1,IN2 يمكن أن يكون ثابت صحيح أو IW , QW , MW , LW , DBx.DBWy مثل الموضح بالشكل وقد تم استخدام الأصناف الستة في المقارنات كلها

- عدم التساوي Not Equal : <>I

وهنا ينطبق نفس الكلام عن التساوي والاختلاف الوحيد فقط في الشرط فالشرط هنا هو عدم التساوي بين IN1,IN2

- أكبر من Greater than >I if IN1 is greater than IN2

والشرط في هذه الحالة هو هل IN1 أكبر من IN2 فلو تحقق الشرط يكون الخرج على النقطة C=1 لو كان A,B=1 مع الوضع في الاعتبار كل الكلام السابق في مقارنة التساوي

- أقل من Less than : <I if IN1 is less than IN2

والشرط في هذه الحالة هل IN1 أقل من IN2

- أكبر من أو يساوي Greater than or Equal : >=I if IN1 is greater than or equal IN2

والشرط في هذه الحالة يشمل جزئين الأول هو هل IN1 أكبر من IN2 والثاني هو التساوي

- أقل من أو يساوي Less than or Equal : <=I if IN1 is less than or Equal to IN2

والشرط في هذه الحالة يشمل جزئين أيضا هما هل IN1 أقل من IN2 أو التساوي

والنوع الثاني من المقارنات هو مقارنة الأرقام الصحيحة ذات الدقة المضاعفة Double integers

وقد جمعت في الشكل التالي بنفس الطريقة كل الأنواع وبنفس الطريقة السابقة يتم فهم الأمور ولاحظ الفرق هو الحرف D بدلا من I



والنوع الثالث من المقارنات وهو مقارنة الأنواع العشرية Floating point numbers

وقد جمعته أيضا في الشكل التالي ولاحظ الفرق الوحيد هو في الحرف R والذي يعني Real

ولكن كل شئ كما في السابق ما عدا أن حجم ونوع البيانات أصبح 32-bit floating point



عمليات التحويل بين صيغ الأرقام المختلفة Conversion instructions


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

Binary coded decimal BCD
Integer numbers 16-bit
Double integers 32-bit
Floating point numbers-Real numbers


وسوف نحتاج لهذا بالتأكيد خلال مشوارنا معا وأثناء عملنا إن شاء الله

والعمليات بشكل إجمالي المتاحة لنا كالآتي :

- التحويل من BCD إلى Integers ورمزها BCD_I ( دقة 16 خانة )
- التحويل من Integers إلى BCD ورمزها I_BCD ( دقة 16 خانة )
- التحويل من Integers 16-bit إلى Double integers 32-bit ورمزها I_DI
- التحويل من BCD 32-bit إلى Double integers 32-bit ورمزها BCD_DI
- التحويل من Double integers 32-bit إلى BCD 32-bit ورمزها DI_BCD
- مكمل Integers 16-bit أي تحويل الأصفار إلى الحالة 1 والعكس ورمزها INV_I
- الضرب في -1 للأرقام الصحيحة Integers 16-bit ورمزها NEG_I
- مكمل Double integers 32-bit أي تحويل الأصفار إلى الحالة 1 والعكس ورمزها INV_DI
- الضرب في -1 للأرقام الصحيحة Double integers 32-bit ورمزها NEG_DI
- الضرب في -1 للأرقام العشرية Floating point numbers ورمزها NEG_R
- التحويل من رقم صحيح Double integers 32-bit إلى رقم عشري Real ورمزها DI_R
- التقريب وهو تحويل الرقم العشري Real إلى رقم صحيح Double integers 32-bit ورمزها ROUND
- التقريب بحذف الجزء العشري من Real إلى رقم صحيح Double integers 32-bit ورمزها TRUNC
- التقريب إلى أقل رقم صحيح أكبر من أو يساوي الجزء الصحيح من الرقم العشري من Real إلى رقم صحيح Double integers 32-bit ورمزها CEIL
- التقريب إلى أكبر رقم صحيح أقل من أو يساوي الجزء الصحيح من Real إلى رقم صحيح Double integers 32-bit ورمزها FLOOR


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

المجموعة الأولى



وفي الشكل كما يظهر لنا هناك خمسة أنواع من التحويلات الأول هو BCD_I :

وتم الإشارة إلى أن حجم البيانات في الدخل IN والخرج OUT هو 16 خانة وبالتالي فإن الدخل يمكن أن يكون Input word-IW أو Output word-QW أو Data word DW أو Global memory word-MW أو Local memory word-LD أو ثابت في صيغة BCD

كذلك فإن OUT يأخذ نفس الأشكال ما عدا الثابت

وهذا الأمر كما أسلفنا يقوم بتحويل الأرقام في صيغة BCD إلى أرقام صحيحة

وينطبق ما ذكرناه على الأمر التالي I_BCD مع اختلاف الوظيفة حيث يقوم بالتحويل من الصيغة الصحيحة إلى الصيغة BCD

أما الأمر الثالث وهو I_DI وهو يقوم بإضافة أصفار إلى يسار الرقم الصحيح ونقل خانة الإشارة من Bit-15 إلى Bit-31 للحفاظ على إشارة الرقم بعد تحويله من Integer 16-bit إلى Double integer 32-bit

الأمر الرابع والخامس لهما نفس وظيفة الأمرين الأول والثاني ولكن مع حجم بيانات 32 خانة data size 32-bits

المجموعة الثانية



وفيها خمس أوامر أيضا منها أمران لإيجاد المكمل Complement للرقم على IN وهنا يتم إيجاده بعكس قيم الخلايا Bits وذلك بتحويل الأصفار إلى القيمة 1 والعكس وهذا على مستوى Integers 16-bits وكذلك Double integers 32-bits

الأمران هما : INV_I , INV_DI

كذلك لدينا ثلاثة أوامر للضرب في -1 على مستوى Integers 16-bits و Double integers 32-bits والأرقام العشرية Real numbers

وهذه الأوامر هي NEG_I , NEG_DI , NEG_R

المجموعة الثالثة وهي خاصة بالتحويل من الأرقام Double integers 32-bits إلى Reals والعكس



وتحتوي هذه المجموعة على خمس أوامر الأول هو تحويل الأرقام Double integers 32-bits إلى أرقام عشرية Real numbers

أما الأربعة الأخرى فكلها للتقريب أو التحويل من رقم عشري إلى رقم صحيح ولكن تختلف طريقة التقريب

فلو كان المطلوب التقريب للقيمة الأقرب ( لو كان الكسر أكبر من النصف يتم تحويله إلى 1 ولو كان أقل من النصف يصبح صفر ) في هذه الحالة يتم استخدام الأمر ROUND مع ملاحظة أنه لو كان الكسر 0.5 أي نصف تماما يتم التقريب إلى أقرب رقم (( زوجي ))

أما لو كان المطلوب حذف الكسر حتى لو كان 0.99 فيتم ذلك باستخدام الأمر TRUNC

ولو كان التقريب للأقل دائما مثلا 4.9 تقرب إلى 4 وذلك -5.9 تقرب إلى -6 فيتم ذلك عن طريق الأمر FLOOR

ولو كان التقريب للأكبر دائما مثلا 4.1 تقرب إلى 5 و-6.9 تقرب إلى -6 فيتم ذلك باستخدام الأمر CEIL

Counter Instructions

بداية نتكلم عن العدادات بشكل عام ثم ندخل إلى كيفية التنفيذ داخل البرنامج

- لابد أن يتوفر في العداد وظائف أولية وهي :

العد لأعلى (( زيادة القيمة الحالية )) Count up
العد لأسفل (( نقصان القيمة الحالية )) Count down
تصفير قيمة العداد Counter reset
إمكانية ضبط قيمة أولية للعداد يبدأ العد منها Preset value
إمكانية قراءة القيمة الحالية للعداد Actual counter value
حالة العداد هل وصل إلى Preset value أم لا

والآن دعونا نستعرض معا هذه الصور بالشكل الذي تعودناه معا ونضيف بعض الملاحظات عليها لتوضح الاستخدامات المختلفة لعناصر العداد



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

وبالتالي فإن أول العناصر Count-up , Count-down متوفران ويمكن استخدامهما بشكل منفصل مثل الشكل السابق أو بشكل مجمع مثل الشكل التالي



ومدخلات العداد هي حسب الشكلين السابقين هي :

CU ويستخدم للعد لأعلى حيث أنه عند تغير حالة الدخل من الصفر إلى 1 يتم زيادة قيمة العداد بمقدار 1 ويلاحظ أنه إذا انتهت دورة التنفيذ قبل أن تتغير القيمة مرة أخرى أي لو ظلت محتفظة بالقيمة 1 يتم أيضا زيادة قيمة العداد (( لهذا يفضل لو كنت تستخدم عداد فعلي أن تستخدم بعد آخر نقطة وقبل CU مباشرة Positive edge detection ))

CD ويستخدم للعد لأسفل أي نقصان قيمة العداد 1 وينطبق عليه نفس الكلام على CU

R وهذا الدخل عند تحول حالته من الصفر إلى 1 يتم تصفير قيمة العداد الحالية فتصبح قيمته صفرا

PV وهو يمثل القيمة الأولية للعداد والتي يتم ضبط قيمة العداد عليها عندما تتحول حالة الدخل S من الصفر 1 وأقصى قيمة له 999 ويمكن أن يكون IW,QW,MW,LW,DBW أو ثابت

Q وهو خرج يمثل حالة العداد فلو لم يتم ضبط PV على قيمة وكانت قيمته صفر يكون Q صفرا إذا كانت قيمة العداد الحالية صفر وإذا كانت قيمة العداد غير الصفر تكون Q بالحالة 1

CV وهو يمثل قيمة العداد الحالية Count value في الصيغة السداسي عشر Hex.

CV_BCD وهو يمثل قيمة العداد الحالية في صورة Binary coded decimal

ويمكن لأن تتم وظائف العداد بشكل منفصل كالصورة التالية



وفي الصور التالية سوف تجد توضيحات تساعد أكثر في فهم العدادات




نستعرض الان معا أوامر التعامل المنطقي على مستوى Word , Double word أي على مستوى 16 خانة وعلى مستوى 32 خانة
Word Logic Instructions



هناك ثلاث عمليات تتم على مستوى Word وثلاثة تتم على مستوى Double word

القسم الأول Word Logic instructions

والشكل التالي يبين تفاصيل العمليات الثلاثة وهي AND ورمز العملية هو WAND_W

والعملية الثانية هي OR ورمز العملية هو WOR_W

والعملية الثالثة هي XOR ورمز العملية هو WXOR_W



والبلوك المخصص لكل عملية يكتب داخله رمز العملية مثل الشكل السابق ولها مدخلان رئيسيان هما IN1,IN2 وهما الذان تتم بينهما العملية ويتم تخزين النتيجة في المخرج OUT

أما المدخل EN فهو يمثل شرط تنفيذ العملية ففي حالة وجود الحالة 1 عليه يتم تنفيذ العملية والمخرج ENO يمثل تمام تنفيذ العملية

المدخلان IN1,IN2 يمكن أن يكونا في أحد الصور الآتية :

Input word from digital input module IW
Output word from digital output image table QW
Memory Address ( Global ) MW
Local memory address LW
Data word of data block DBW
Constant as W#2#1010_1000_0001_1101 or W#16#F10B

أما المخرج OUT فيمكن أن يكون أحد الأنواع الخمسة الأولى ولا يكون ثابت


الفسم الثاني وهو Double word logic instructions

وله أيضا ثلاثة أنواع وهي :

AND ورمز العملية داخل البلوك WAND_DW
OR ورمز العملية داخل البلوك WOR_DW
XOR ورمز العملية داخل البلوك WXOR_DW





والعمليات الثلاثة لها مدخلان هما IN1,IN2 واللذان يمكن أن يكونا بأحد الصيغ

Input double word from digital input module ID
Output double word from digital output image table QD
Memory Address ( Global ) MD
Local memory address LD
Data double word of data block DBD
Constant as W#2#1010_1000_0001_1101_1110_0001_1111_0000 or W#16#F10BA23D

أما الخرج فيمكن أن يكون أحد الأصناف الخمسة الأولى ولا يكون ثابتا

والان نتكلم عن عمليات Shift and Rotate instructions الإزاحة والدوران

وهي عمليات تتمثل في تغيير ترتيب البيانات داخل موقع الذاكرة المقصود

فعملية الإزاحة Shift سواء لليمين أو الشمال تعتمد على إزاحة الكونات لليمين أو الشمال بعدد معين من الخانات مع ملئ الخانات الخالية حسب حالة الإزاحة


وفي الشكل التالي ملخص للعمليات المتاحة وهي :

- الإزاحة لليمين لرقم صحيح 16 خانة Shift right 16-bits integer ورمزها SHR_I
- الإزاحة لليمين لرقم صحيح 32 خانة Shift right 32-bits integer ورمزها SHR_DI
- الإزاحة للشمال لمحتويات 16 خانة Shift left word ورمزها SHL_W
- الإزاحة لليمين لمحتويات 16 خانة Shift right word ورمزها SHR_W
- الإزاحة للشمال لمحتويات 32 خانة Shift left double word ورمزها SHL_DW
- الإزاحة لليمين لمحتويات 32 خانة Shift right double word ورمزها SHR_DW
- الدوران للشمال لمحتويات 32 خانة Rotate left double word ورمزها ROL_DW
- الدوران لليمين لمحتويات 32 خانة Rotate right double word ورمزها ROR_DW



العملية الأولى SHR_I وهي تمثل إزاحة محتويات المدخل IN والذي يمكن أن يكون IW,QW,MW,LW,DBW بعدد N من الخانات إلى اليمين مع ملاحظة أنه يتم ملئ الخانات التي يتم إخلاؤها من الشمال بمحتويات خانة الإشارة فلو كانت المحتويات أقل من الصفر يتم ملئ الخانات بالرقم 1 وفي حالة رقم أكبر من الصفر يتم ملئ الخانات المزاحة بالرقم صفر



ويمكن قول نفس الكلام تماما على العملية SHR_DI ولكن في هذه الحالة على مستوى 32 خانة

مع ملاحظة أن العدد N والذي يمثل عدد الخانات المزاحة لو زاد عن 16 في حالة الأرقام الصحيحة 16 خانة يتم اعتباره 16 ولو زاد عن 32 في حالة الأرقام الصحيحة المضاعفة الدقة 32 خانة يتم اعتباره 32

أما العمليات SHL_W , SHR_W والتي تتم على مستوى Word-16 bits فهنا لا يوجد أي اعتبار لخانة الإشارة حيث يتم ملئ الخانات المزاحة بأصفار سواء من اليمين أو الشمال والمدخل IN والمخرج OUT يمكن أن يكونا أحد الأنواع الخمسة IW,QW,MW,LW,DBW

ونفس الكلام عن N في كل الحالات ثابت لا يتغير

أما الأمران SHR_DW,SHL_DW فهما على مستوى Double word 32-bits بغض النظر عن خانة الإشارة حيث يتم ملئ الخانات المزاحة بأصفار

ويمكن أن يكون كل من المدخل IN والمخرج OUT أحد الأنواع الخمسة ID,QD,MD,LD,DBD

أما بالنسبة للأمران ROL_DW , ROR_DW فهو يمثل عملية تدوير البيانات كما في الشكل الآتي حسب الخانات المطلوبة بالرقم N



لنكمل معا إن شاء الله بعض الأوامر الخاصة بالانتقال Jump instructions وكذلك فتح Data block للتعامل معه

وقد قمت بتجميع ملاحظات عامة في هذا الصورة ثم نعلق بعد ذلك على محتواها



فالأمر الأول وهو فتح Open data block : OPN وهو يقوم بفتح بلوك بيانات للتعامل معه داخل البلوك الذي نحن بداخله سواء كان Function FC أو Function block FB أو OB

ونلاحظ أن بلوك البيانات يغلق بشيئين إما بفتح بلوك آخر أو الخروج من الدالة وانتهاء تنفيذها

والجزء الثاني من الأوامر وهو هام جدا وهو Jump instructions

ورغم أنه يوجد عدد كبير جدا من هذا النوع عند التعامل باستخدام STL إلا أننا هنا فقط لدينا ثلاثة أوامر وهي نوعين

الأول غير شرطي وبالتالي لا يعتمد على نتيجة آخر عملية منطقية مخزن نتيجتها في RLO ولكن يتم تنفيذه بشكل تلقائي وإهمال كل الأوامر بين JMP وبين LABEL وفي هذه الحالة لا يوجد أي كونتاكت سواء NO , NC قبل الأمر -----(JMP) وإنما السطر يحتوي فقط على الأمر JMP

النوع الثاني وهو الشرطي وهو بنفس الصيغة ولكن هناك شروط قبل الأمر في نفس السطر وهنا يعتمد تنفيذ الأمر على نتيجة RLO فإن كانت TRUE يتم التنفيذ وإن كانت FALSE لا يتم تنفيذ الأمر JMP

والأمر الثاني في هذا النوع الشرطي هو JUMP-NOT : JMPN وهو أيضا مرتبط بالشرط قبله ولكن هنا الوضع عكسي فلو كانت قيمة RLO = TRUE لا يتم الانتقال ولو كانت القيمة FALSE يتم الانتقال إلى المنطقة LABEL

ويجب هنا ملاحظة أن الأمر JMP والرمز LABEL يكونا في نفس البلوك ويمكن أن يكون الرمز LABEL قبل أو بعد الأمر داخل نفس البلوك

وهذه الأوامر تتشابه تماما مع الأوامر GOTO --- LABEL في لغات البرمجة العادية

من مواضيع sebaii_newlook :

2010-02-24, 11:19 AM #4
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
نبدأ الان معا إن شاء الله في الحسابات وأول شئ نبدأ به هو العمليات الحسابية على الأرقام الصحيحة Integer mathematics

وكما نعلم فإن للأرقام الصحيحة نوعين حسب دقة الرقم فهناك أرقام صحيحة مكونة من 16 خانة Integers وهناك أرقام صحيحة مكونة من 32 خانة Double integers ولكل منها حساباته الخاصة ولا يجب أن يحدث خلط في الحسابات بين الاثنين

ولنعلم معا بعض الملاحظات حول العمليات الحسابية في الأرقام الصحيحة حتى نستخدمها بشكل سليم فيما يناسبها

أولا : عمليات الجمع والطرح للأرقام الصحيحة 16 خانة ADD_I , SUB_I

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

كذلك فإن الدخل IN1,IN2 من نفس النوع Integers وكذلك النتيجة وهذا عام في جميع العمليات الحسابية

ثانيا : عمليات الضرب والقسمة للأرقام الصحيحة 16 خانة MUL_I , DIV_I

مراعاة عدم القسمة على صفر

مراعاة الحد الأقصى للنتيجة

مراعاة أيضا أن الخرج OUT والمدخلان IN1 , IN2 من نفس النوع Integers

وفي الصورة التالية شكل فعلي لاستخدام الدوال الأربعة مصحوبا ببعض الملاحظات عليها




يضاف هنا أن Status bits تتأثر تأثير مباشر بالنتيجة سواء كانت أكبر من الصفر أو تساوي صفر أو أقل من الصفر أو حدث Overflow للنتيجة أو كانت النتيجة غير محسوبة Unorder فكل هذا يؤثر على خانات Status word

فإذا كانت النتيجة صفر فإن كل من CC0,CC1 تساوي صفرا
وإن كانت النتيجة أقل من صفر وأكبر من الحد الأدني للقيمة السالبة -32768 فإن CC0=1 , CC1=0
وإن كانت النتيجة أكبر من صفر وأقل من الحد الأقصى للقيمة الموجبة 32767 فإن CC0=0, CC1=1

أما إن كانت النتيجة أقل من الحد الأدنى للقيمة السالبة فإن OV=OS=1 و CC0=1,CC1=0
وإن كانت النتيجة أكبر من الحد الأقصى للقيمة الموجبة فإن OV=OS=1 و CC0=0,CC1=1

وفي حالة القسمة على صفر فإن CC0=CC1=OV=OS=1

وهذا الكلام ينطبق في الحالتين Integers , Double integers كل حالة على مستوى دقتها


أما بالنسبة لحسابات الأرقام الصحيحة ذات الدقة المضاعفة Double integers 32-bits فلدينا خمس عمليات هي الجمع والطرح والضرب والقسمة وباقي القسمة ورموزها كالتالي :

الجمع ADD_DI
الطرح SUB_DI
الضرب MUL_DI
القسمة DIV_DI
باقي القسمة MOD_DI

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

والشكل التالي به العمليات الخمسة وبعض الملاحظات عليها


اسمحوا لي بأن ننتقل إلى نوع آخر من الحسابات وهي حسابات الأرقام العشرية Real numbers or Floating point numbers

وكما سبق وتعاملنا مع العمليات في الأرقام الصحيحة فسوف نستعرض العمليات تباعا مع ملاحظة هامة جدا أن هذه العمليات تتعامل مع النوع Real كما أشرنا في العنوان وهذا يعني أن حجم بيانات الإدخال والإخراج لها هو 32 خانة

والمدخلات والمخرجات يمكن أن تكون أي من الأنواع الستة ID - Double word from Digital input module

أو QD - Double word from Digital output module

أو MD - Global memory double word

أو LD - Local memory double word

أو DBx.DBDy أو DBDy وهو رقم Data double word in data block

أو PID - Peripheral input double word

وسوف تجدون في الصورة التالية نظرة شاملة على العمليات كلها :



مع ملاحظة أن جميع العمليات تؤثر على خانات CC0,CC1,OV,OS في Status word حسب حالة النتيجة

فالخانات CC0,CC1 تحدد إشارة الرقم هل هو موجب أم سالب أم صفر

والخانات OV,OS تحدد حالة تجاوز حدود الرقم

ومع CC0,CC1 يتم تحديد حالة Overflow أو Underflow

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

وأول العمليات التي سنتكلم عنها هي العمليات الحسابية الأربعة الأساسية والتي لها معاملان ونتيجة وهي الجمع والطرح والضرب والقسمة كما في الصورة التالية



ففي عملية الجميع يتم جمع قيمة المدخلين IN1,IN2 وإخراج النتيجة إلى العنوان OUT مع ملاحظة الأنواع الستة الممكنة للبيانات كما أشرنا سابقا وتأثير حالة النتيجة على Status word

وفي الطرح يتم طرح محتوى IN2 من IN1 ووضع النتيجة في العنوان OUT

وفي الضرب يتم ضرب الرقمين IN1,IN2 ووضع النتيجة في OUT

وفي القسمة يتم قسمة IN1 على IN2 ووضع النتيجة في OUT مع ملاحظة أن القسمة على الصفر تعطي خطأ في الحسابات يتم تحديده عن طريق Status word


وننتقل إلى جزء آخر من العمليات وهي العمليات الأحادية وهي قسمان أيضا من دوال غير مثلثية ودوال مثلثية نبدأ بالدوال الغير مثلثية وهي :




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

الجذر التربيعي SQRT ويجب أن يتم على قيمة موجبة وتكون النتيجة دائما موجبة وفي حالة النتيجة سالبة يكون هناك تغيير في Status word حيث يكون الرقم غير محدد

مربع الرقم ( حاصل ضرب الرقم في نفسه ) SQR وهو أيضا موجب دائما

اللوغاريتم الطبيعي LN للأساس e وهو القيمة 2.718 كما نعلم جميعا

القيمة الأسية للأساس e وهو الثابت الطبيعي كما أشرنا EXP


والجزء الأخير من الدوال وهو الدوال المثلثية كما في الشكل التالي :




وهي الدوال الثلاث الأساسية sin, cos ,tan جيب الزاوية وجيب التمام والظل مع ملاحظة أن قيمة الزوايا تكون بالتقدير الدائري وليس بالدرجات فيجب مراعاة ذلك

كذالك هناك الدوال العكسية بإيجاد الزوايا التي لها قيم الجيب sin أو جيب التمام cos أو الظل tan وذلك عن طريق الدوال العكسية وهي :

asin - acos - atan


وإليكم تغير حالات Status bits حسب حالة النتائج



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



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

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









ثم حساب قيمة المحدد والذي يحدد حالة الحل هل هو جذرين متطابقين أم حقيقيين مختلفين أم تخيلي غير حقيقي



حساب كيفية اتخاذ القرار في الحالات الثلاث



إيجاد الحل في الحالة الأولى x1=x2



ايجاد الحل في حالة جذرين مختلفين

الجذر الأول للمعادلة x1



الجذر الحقيقي الثاني للمعادلة x2



قد يسأل سائل كيف أدخل البيانات إلى الدالة السابقة وكل ما فعلته هو تعريف بعض المتغيرات مثل a,b,c,x1,x2,same,different,imagine

وأجيب في هذا الجزء حتى يكون المثال ذا فائدة

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

فالآن لدينا دالة لها مدخلات ومخرجات وكأي دالة حتى تتحقق الفائدة منها لابد من تحديد العناوين التي تأخذ منها المدخلات قيمتها وتحديد العناوين التي تخزن فيها الدالة قيمة المخرجات

والمدخلات التي لدينا هي الثوابت الثلاثة a,b,c وقد اخترت لها ثلاثة data double words من بلوك البيانات DB10 وهي :

a=DB10.DBD0
b=DB10.DBD4
c=DB10.DBD8

والمخرجات لدينا هما الجذران x1,x2

x1=DB10.DBD12
x2=DB10.DBD16

إلى جانب المخرجات المنطقية والتي تعبر عن نوع الحل same,different,imagine

same=DB10.DBD20.0
different=DB10.DBD20.1
imagine=DB10.DBD20.2

كما يبين الشكل التالي لاستدعاء الدالة وتمرير البيانات إليها باستخدام الأمر Call أو سحب الدالة drag من قائمة FC وتركها على خط درجة السلم Drop :


اما عن عملية نقل البيانات والأرقام الحسابية من موقع أو عنوان إلى آخر مثلا من Memory word إلى data block word أو إلى Output word وهكذا فسوف تجد أمرا واحد يقوم بالعملية مرة واحدة وهو الأمر Move






وهنا لن نشغل بالنا مطلقا بشأن محتويات Accumulators ولكن لابد أن نعلم شئ هام جدا هو أن الأمر move يقوم بنقل بيانات من نفس حجم البيانات وليس له علاقة بالنوع فمثلا ينقل Byte إلى Byte وينقل Word إلى Word وينقل Double word إلى Double word مهما كان شكل البيانات هو فقط يهتم بحجم البيانات مثلما كان الحال مع Load/Transfer

كذلك فإن الأمر ينقل من المدخل IN عليه إلى المخرج OUT

وكلاهما يمكن أن يكونا I/Q/M/DB/L/C/T مثل الشكل السابق وعلى الأحجام الثلاثة Byte/Word/DWord

أما الجزء الثاني اليوم والذي سوف نمهد به لما هو آت وهو الجزء الخاص بعمل Declaration أي توصيف لمتغيرات الدالة

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




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

وهذه المتغيرات هي التي سيتم تمريرها أو القراءة منها عند استدعاء الدالة مستقبلا إن شاء الله داخل البرنامج
والآن موعدنا مع Status bits والتعرف عليها

نشير إخواني الأعزاء أنه لدينا مجموعة من bits مخصصة لمراقبة نتائج العمليات لاستخدامها في التحكم في البرنامج ومنها ما يلي :

خانة OV-Overflow أو زيادة النتيجة عن الحدود المسموح بها سواء الموجبة أو السالبة فمثلا عند تجاوز نتيجة عملية حسابية لأرقام صحيحة القيمة 32768 فإن قيمة هذه الخانة تصبح 1 أو True وطالما قيمة الأرقام داخل الحدود المسموح بها فقيمتها صفرا أو False

خانة OS-Stored overflow وهي تسجل أي عملية تجاوز للحدود حدثت فتظل قيمتها صفرا إلى أن يحدث أول تجاوز للحدود فتصبح 1 طالما لم يحدث لها تصفير

خانة UO-Unorder وهي تعبر عن أن النتيجة غير محددة مثل القسمة على صفر أو الجذر التربيعي لرقم سالب وما شابه ذلك

خانة BR-Bit result وهذه الخانة يتم تخزين قيمة RLO داخلها عن الانتقال من عمليات Word وعمليات Bits

وهناك الخانتان CC0,CC1 وهما تمثلان عمليات المقارنة بين الأرقام وتحديد حالة النتيجة حسب أعمال المقارنة الستة المعروفة

فإن كانت CC0,CC1 كل منهما صفرا كانت النتيجة التساوي عند المقارنة بين قيمتين
وإن كانت CC0=1 , CC0=0 فهذا معناه أكبر من وإن كان العكس أي CC1=0,CC0=1 فهذا معناه أقل من

وإن كانت CC1=1,CC0=1 فهذا معناه أن الرقم غير طبيعي

وبناء على الكلام السابق فإنه يمكن تنفيذ العمليات التالية في الشكل التالي باستخدام bits هي ناتج للكلام الذي قلناه سابقا



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

من مواضيع sebaii_newlook :

2010-02-24, 11:23 AM #5
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
تغيير default address لكارت DI يكون عن طريق Hardware configuration للبرنامج يمكنك تعديل DI-Address كما في الصور التالية

1- فتح Hardware configuration




2- حالة الضبط قبل التغيير




3- كيفية التغيير




4- الحال بعد التغيير



من مواضيع sebaii_newlook :

2010-02-24, 11:42 AM #6
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
أقدم لكم إخواني الأعزاء هذا المثال العملي لأحد الماكينات الشهيرة في عالم صناعة الكابلات الكهربية ويمكن أن تنطبق على أي صناعة مثيله وهي :

ماكينة لف كابل أو سلك Winder machine ويمكن أن تكون حامل استقبال أو حامل تموين وإليكم شكل الماكينة وعليها التفصيلات الخاصة بعناصر التحكم





وقد سبق أن عرضنا هذا الموضوع في دورة STL ودعونا نكمل هنا في هذه الدورة بنفس المثال

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

- الهدف الرئيسي من الماكينة هو لف الكابل/السلك على البكرة Reel بطريقة منسقة في شكل لفات Coils متجاورة وبعد ذلك طبقات فوق بعضها Layers ومن أجل هذا الهدف يتم استخدام الموتور الرئيسي M1 في تدوير البكرة للقيام بلف السلك/الكابل على البكرة

يلاحظ أنه مع كل طبقة للكابل فإن السرعة الخطية للبكرة تزداد ويلزم خفضها لتتناسب مع السرعة الخطية للماكينة ككل ويتم ذلك باستخدام وحدة Dancer مع الماكينة مع PID لتنظيم هذه العملية

- وتتم عملية رص الكابل بشكل متجاور عن طريق موتور الرص Traversing motor M2 كما في الصورة التالية من اليمين إلى الشمال ومن الشمال لليمين



ولكي تتم تلك العملية لابد من تحميل البكرة وهي فارغة ثم تنزيلها بعد ملئها أو العكس وهي ما تسمى عملية التحميل/التفريغ أو Loading/Unloading

وتتم هذه الطريقة على مرحلتين حيث يتم فتح ما يسمى بالبنوز والرفع والخفض للحمل والنزول إلى الأرض

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

كذلك يتم إحكام الغلق على الفكرة عن طريق بنزين ( اثنين ) ويتم باستخدام موتور M5 لتباعد وتقارب الذراعين

ومع كل حركة يوجد حساسات نهاية للمشاوير Limit switches لوضع حد للحركات

وبالتالي فلدينا لوحة مفاتيح للوحدة عليها مفاتيح التشغيل الآتية :

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

إضافة إلى الآتي :

- موتور البكرة يعمل على درايف يلزمه إشارات ( تشغيل/إيقاف - إشارة تشغيل للسرعة من صفر وحتى 10 فولت مستمر ) ويتم ضبط التشغيل اليدوي الأمامي والخلفي عن طريق نفس الإشارتين عن طريق التحكم من برنامج PLC

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

- موتوري الرفع والنزول والفتح والغلق محركات ثلاثية تيار متردد تعمل على كونتاكتورات

إضافة إلى اتخاذ الحماية اللازمة لكل جزء في الماكينة

وسوف نتابع معا إن شاء الله تعالى خطوات التصميم من الألف إلى الياء

من مواضيع sebaii_newlook :

2010-02-24, 12:02 PM #7
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
دعونا إخواني الأعزاء نقوم بعمل حصر للمدخلات المطلوبة في الماكينة وكذلك المخرجات والبيانات التي نحتاج إليها على شاشة التشغيل :

أولا : المدخلات

- عناصر الحماية

1- أوفرلود لموتور الفتح/الغلق Open/Close Motor Overload
2- أوفرلود لموتور الرفع/الخفض الأيمن Right Arm Up/Down Motor Overload
3- أوفرلود لموتور الرفع/الخفض الأيسر Left Arm Up/Down Motor Overload
4- مفتاح التوقف المفاجئ Emergency Stop button
5- كونتاكت لتوصيل حماية القواطع الحرارية والفيوزات Circuit Breakers and Fused Protection
6- عطل في درايف البكرة Reel Motor Drive Fault
7- عطل في درايف الرصاص Traversing Motor Drive Fault

- مفاتيح التشغيل :

1- مفتاح فتح البنوز Open arms
2- مفتاح غلق البنوز Close arms
3- مفتاح رفع الذراع الأيمن Right arm up
4- مفتاح خفض الذراع الأيمن Right arm down
5- مفتاح رفع الذراع الأيسر Left arm up
6- مفتاح خفض الذراع الأيسر Left arm down
7- مفتاح رفع الذراعان معا Both arms up
8- مفتاح خفض الذراعان معا Both arms down
9- مفتاح حركة الرص يدويا لليمين Traversing to the right
10- مفتاح حركة الرص يدويا إلى الشمال Traversing to the left
11- مفتاح إيقاف الماكينة Machine stop
12- مفتاح تشغيل موتور البكرة يدويا للأمام Reel motor manual forward
13- مفتاح تشغيل موتور البكرة يدويا للخلف Reel motor manual backward
14- مفتاح تشغيل موتور البكرة آليا مع الخط والدانسر Reel motor auto run
15- مفتاح عمل Reset للماكينة لإلغاء العطل Fault reset

- مفاتيح حماية الحركة Limit switches

1- مفتاح نهاية الحركة لفتح البنوز Open arms limit switch
2- مفتاح نهاية الحركة لغلق البنوز Close arms limit switch
3- مفتاح نهاية الحركة للذراع الأيمن لأعلى Right arm up limit switch
4- مفتاح نهاية الحركة للذراع الأيمن لأسفل Right arm down limit switch
5- مفتاح نهاية الحركة للذراع الأيسر لأعلى Left arm up limit switch
6- مفتاح نهاية الحركة للذراع الأيسر لأسفل Left arm down limit switch
7- مفتاح نهاية الحركة للرصاص لليمين Traversing right limit switch
8- مفتاح نهاية الحركة للرصاص لليسار Traversing left limit switch


- أما المخرجات الرقمية فسوف نحتاجها كالآتي :


- حركات الموتورات


1- فتح البنوز Arms open
2- غلق البنوز Arms close
3- حركة الذراع الأيمن لأعلى Right arm up
4- حركة الذراع الأيمن لأسفل Right arm down
5- حركة الذراع الأيسر لأعلى Left arm up
6- حركة الذراع الأيسر لأسفل Left arm down
7- حركة الرصاص لليمين Traversing to the right
8- حركة الرصاص للشمال Traversing to the left
9- تشغيل موتور البكرة Reel motor run


- المدخلات التماثلية :

- إشارة سرعة الخط Line speed reference
- إشارة وضع الدانسر Dancer position reference

وكلاهما من صفر حتى 10 فولت DC



- المخرجات التماثلية :


- إشارة تشغيل موتور الرصاص Traversing motor drive reference
- إشارة تشغيل موتور البكرة Main motor drive reference

وكلاهما من صفر إلى 10 فولت DC


أما بيانات الشاشة فسوف تشمل الآتي :

- قطر البكرة ( ملليمتر)
- خطوة الرصاص ( ملليمتر )
- سرعة تشغيل البكرة يدويا
- نظام بيان الأعطال
- حالات التشغيل للماكينة ( مثل لمبات البيان )
- بيان سرعة دوران البكرة Rpm
- بيان وضع الدانسر بنسبة ( 0-100% )

من مواضيع sebaii_newlook :

2010-02-24, 12:03 PM #8
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
مما سبق إخواني الأعزاء نجد أننا نحتاج إلى مدخلات رقمية ( 7+15+8 ) أي 30 مدخل وبإضافة مدخلات إحتياطي للاستخدام المستقبلي للتعديلات بنسبة 1.3 تقريبا يصبح عدد المدخلات المطلوب 40 وتقريبها إلى أقرب عدد Bytes ممكن تصبح 48 أي موديول 32 + موديول 16 أو 3 موديول 16 دخل رقمي

أما المخرجات فسوف نحتاج إلى 9 مخرجات رقمية وتصبح 16 فعليا

أما المدخلات التماثلية فنحتاج فعليا إلى 3 أحدها للدانسر Dancer والآخر للسرعة العامة للخط والثالث للسرعة الفعلية للدوران وبالتالي فسوف نستخدم موديول تماثلي AI-4-Channels

أما المخرجات التماثلية فسوف نحتاج لمخرجين أحدهما لسرعة موتور البكرة والآخر لسرعة موتور الرصاص وبالتالي سوف نستخدم موديول AO-4-Channels

وسوف نستخدم وحدة CPU لها إمكانية اتصال باستخدام 2 قناة اتصال Two ports MPI/DP حيث سيتم استخدام إحداها للتوصيل مع الشاشة والآخر للبرمجة ومتابعة التشغيل مستقبلا عن طريق PG

وبالتالي فسوف نحتاج المكونات الآتية :

Power supply PS307-5A 6ES7 307-1EA00-0AA0
CPU 315-2DP 6ES7 315-2AF00-0AB0
Digital input module 16x24VDC 6ES7 321-1BH01-0AA0
Digital input module 16x24VDC 6ES7 321-1BH01-0AA0
Digital input module 16x24VDC 6ES7 321-1BH01-0AA0
Digital output module 16x24VDC/0.5A 6ES7 322-1BH00-0AA0
Analog input module 12Bitx2 channel 6ES7 331-7KB00-0AB0
Analog input module 12Bitx2 channel 6ES7 331-7KB00-0AB0
Analog output module 16Bitx4 channel 6ES7 332-7ND00-0AB0

وبالتالي يمكننا إنشاء المشروع مثلا تحت اسم Winder1 وإنشاء Hardware configuration من المكونات السابقة كما في الشكل التالي كأول خطوة في إنشاء المشروع



لاحظ من خلال Hardware configuration أن مدى استخدامنا للمدخلات والمخرجات أصبح كالآتي :

- المدخلات الرقمية Digital inputs

From Input I0.0 to Input I1.7
From Input I4.0 to Input I5.7
From Input I8.0 to Input I9.7

حيث تم استخدام System defaults بالنسبة للعناوين ولم يتم تغيير أي شئ فيها حيث يتم حجز Four bytes لكل موديول حتى لو استخدمنا 2 فقط

- المخرجات الرقمية Digital outputs

From Output Q12.0 to Q13.7


- المدخلات التماثلية Analog inputs

PIW320,PIW322
PIW336,PIW338

حيث يتم حجز عدد Words بالحد الأقصى لكل موديول وهو 8 رغم استخدامنا هنا 2 فقط وذلك نظرا لاستخدامنا System defaults مع العلم أنه يمكن تغييرها


- المخرجات التماثلية Analog outputs

PQW352,PQW354,PQW356,PQW358


وبالتالي أصبح لدينا الآن شكل عام لاحتياجنا من المكونات بما يتناسب مع احتياجاتنا للمشروع

وسوف نستخدم شاشة بسيطة تحتوي على قدر من الإمكانيات يتناسب مع احتياجاتنا ويمكن استخدام Touch screen 6 Inch مثلا TP-177A

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

من مواضيع sebaii_newlook :

2010-02-24, 12:30 PM #9
عضو

تاريخ التسجيل: Nov 2008
المشاركات: 19
Thumbs Up
Received: 1
Given: 0
بعد أن حددنا احتياجاتنا من المكونات وعمل ضبط لها Hardware configuration نأتي إلى تعيين المدخلات أي لكل دخل أو خرج وظيفة محددة ثم نقوم بإنشاء Symbol table أو جدول الرموز لهذه المدخلات والمخرجات حتى لا يحدث تشتيت لنا أثناء العمل ولتكون مرجع لنا عند الاستخدام وفيما يلي اقتراح بهذا التخصيص





ونبدأ إخواني الأعزاء بتحديد ما سنفعل بالمشروع حسب الوظائف الموجودة وهي حسب مشروعنا الحالي كالآتي :

عمليات منطقية Binary

- الحماية وجاهزية الماكينة للعمل
- عمليات التحميل والتفريغ ( الرفع/الخفض/الفتح/الغلق )
- تشغيل موتور البكرة ( يدويا/آليا )
- تشغيل الرصاص ( يدويا/آليا )


عمليات حسابية وتنظيم السرعة


- تنظيم حركة البكرة
- تنظيم حركة الرصاص


وسوف نقوم بإنشاء دالة FC لكل من هذه العمليات الستة وسوف يتضمن عملنا تنظيم PID في دالة تنظيم عمل البكرة

م تنفيذ الدالة رقم-1 الخاصة بالحماية FC1
والدالة رقم-2 الخاصة بالحماية FC2

في الدالة الأولى هناك 4 حمايات

- الأولى جاهزية الماكينة للتحميل / التفريغ حيث حمايات الموتورات الخاصة بالرفع والنزول والفتح والغلق

- الثانية جاهزية موتور الرصاص للعمل

- الثالثة جاهزية موتور البكرة للعمل

- الرابعة جاهزية الماكينة عموما للعمل الآلي


والدالة الثانية تم فيها تنفيذ اقتراح بعمليات التحميل حيث لدينا 4 عمليات

- فتح / غلق الذراعان

- رفع / خفض الذراع الأيمن

- رفع / خفض الذراع الأيسر


ويمكنك أن تجد الدالتان FC1,FC2 في الملف المرفق كخطوة أولى للمشروع مع قائمة المتغيرات التي قمنا بها سابقا مع إضافة المتغيرات الجديدة التي احتجنا إليها

http://www.mediafire.com/?iygjglmm0yf

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


ونحيط علم الزملاء إلى أنه قد تم استخدم FC3 في برنامج HMI باستخدام ProTool لتنظيم نقل البيانات الخاصة بمراقبة الأعطال Alarm system وسوف نستخدم FC4 لتشغيل موتور عمل البكرة Reel motor كتحكم منطقي وكذلك FC5 لتنظيم عمل الرصاص أيضا بشكل منطقي أيضا

على أن نستخدم دالتين أخرتين في تنظيم العمل Analog إن شاء الله

وسوف تجدون في الملف التالي آخر تحديث لبرنامج S7 تحت اسم Winder11 بعد إدراج عمل موتور البكرة وموتور الرصاص بشكل Logic فقط

http://www.4shared.com/file/18826902.../Winder11.html

http://www.multiupload.com/ECXNG15R36

http://www.megaupload.com/?d=F1ZDLKYM


تفضلوا برنامج ال WINDER تم أضافة شاشة توضح حالة المدخلات و شاشة اخري تتحكم
في المخرجات وإن كانت شاشة المخرجات لم تكتمل


http://www.multiupload.com/G6QY28XFSV



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


*** منقول للامانة***


,,,,,,,,

من مواضيع sebaii_newlook :