أكاديمية أون لاين للتدريب

 

 

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

السلام عليكم و رحمة الله و بركاته موضوع الدورة برمجة PLC طراز سيمنس Simatic S7-300/400 باستعمال طريقة LAD ( المرجع

صفحة 1 من 4 1234 الأخيرةالأخيرة
النتائج 1 إلى 10 من 34
  1. [1]

    تاريخ التسجيل: Nov 2008
    المشاركات: 19
    Thumbs Up
    Received: 1
    Given: 0

    Lightbulb إنشاء مشروع باستخدام 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


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










    0 Not allowed!




    › شاهد أكثر: إنشاء مشروع باستخدام Simatic manager


  2. [2]
    عضو


    تاريخ التسجيل: Nov 2008
    المشاركات: 19
    Thumbs Up
    Received: 1
    Given: 0

    Exclamation استكمال الموضوع

    وأول نوع من أنواع التعليمات التي سنتعرض لها هو العمليات المنطقية 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 كونتاكت مثل الشكل التالي





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

    0 Not allowed!



  3. [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 في لغات البرمجة العادية

    0 Not allowed!



  4. [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

    0 Not allowed!



  5. [5]
    عضو


    تاريخ التسجيل: Nov 2008
    المشاركات: 19
    Thumbs Up
    Received: 1
    Given: 0

    Exclamation تغيير default address لكارت DI

    تغيير default address لكارت DI يكون عن طريق Hardware configuration للبرنامج يمكنك تعديل DI-Address كما في الصور التالية

    1- فتح Hardware configuration




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




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




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




    0 Not allowed!



  6. [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

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

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

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

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

    0 Not allowed!



  7. [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% )

    0 Not allowed!



  8. [8]
    عضو


    تاريخ التسجيل: Nov 2008
    المشاركات: 19
    Thumbs Up
    Received: 1
    Given: 0

    Exclamation

    مما سبق إخواني الأعزاء نجد أننا نحتاج إلى مدخلات رقمية ( 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

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

    0 Not allowed!



  9. [9]
    عضو


    تاريخ التسجيل: Nov 2008
    المشاركات: 19
    Thumbs Up
    Received: 1
    Given: 0

    Exclamation

    بعد أن حددنا احتياجاتنا من المكونات وعمل ضبط لها 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



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


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


    ,,,,,,,,

    0 Not allowed!



  10. [10]
    عضو متميز
    الصورة الرمزية omar abdelsadek


    تاريخ التسجيل: Mar 2009
    المشاركات: 553
    Thumbs Up
    Received: 2
    Given: 0
    الحمد لله

    0 Not allowed!



  
صفحة 1 من 4 1234 الأخيرةالأخيرة
الكلمات الدلالية لهذا الموضوع

عرض سحابة الكلمة الدلالية

RSS RSS 2.0 XML MAP HTML

Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.