Académique Documents
Professionnel Documents
Culture Documents
الدرس ده من اهم الدروس لنه تمهيد و اساس لكل العمليات الحسابية و المقارنات و
التحويلت
: integer - double integer - Realها نشرح النواع التية
(floating points numbers) -BCD numbers
INT :و اختصارها integer numbers
تحتوى عالى قيمة 1او bit 0كل bitsو ده نوع من العاداد يتكون من 16
و قيمها يتم حساب قيمة الرقم bitsو حسب ترتيب
يمكن ان يمثل ارقام موجبة و ايضا ارقام سالبة و لكن يجب ان تكون integerالنوع
الرقام ارقام صحيحة فقط اى انه ل يقبل العلمة العشرية
يمكن ان يستوعاب ارقام من 32768 -الى integer data type +مبدئيا كدا
32767
لزام نكون عاارفين ان لو حملت رقم اكبر من 32767او اقل من 32768-نجد ان
faultاعاطى CPU
integerاول :تمثيل العدد الموجب بذاكرة نوعاها
S5 Countersشرح
Simatic Managerتوجد ثلثا انواع من العدادات داخل
CUو اختصاره counter up :
CDو اختصاره counter down :
CUDو اختصاره counter up down :
C2و C1و C0فنجد CPUتاخد العدادات ارقام من 0الى اقصى رقم يمكن ان يتحمله
الخ
wordبحجم BCDبالعد عالى ذاكرة نوعاها Countersتقوم
لذلك نجد ان اقصى قيمة للعداد هى ) 999من اهم مساوئ العدادات ( راجع درس شرح تمثيل
Siemens PLCالعاداد داخل
اذا وصل العداد الى القيمة 999فأنه يبقى عالى هذه القيمة و ل يتغير حتى بعد اعاطاء
عالى نقطة تشغيله pulses
Counter Upشرح
يستخدم فى العد التصاعادى فقط
Counter Downشرح
يستخدم فى العد التنازالى فقط
شرح كيفية عامل العداد التنازالى
حيثا قبل بدء العد التنازالى ,يجب ( preset value ( PVيجب استخدام قيمة عالى
preset valueضبط قيمة العداد عالى
تساوى : 1تتحول قيمة العداد الى القيمة المضبوطه I 0.0فى المثال السابق عاندما يكون
مباشرة PVعالى
M 0.1 =1اى عاندما تكون CDيقوم العداد بالعد تنازاليا بقيمة 1عاند تشغيل
يتم تصفير العداد R :اى عاند تشغيل I 2.1 = 1عاندما تكون
عاندما تكون قيمة العداد ل تساوى صفر Qيعمل الخرج
integerتستخدم فى تخزاين قيمة العداد عاند اى لحظة بصيغة CV :
BCDتستخدم فى تخزاين قيمة العداد عاند اى لحظة بصيغة CV_BCD :
اذا تم تفعيلها يتم ارجاع قيمة التايمر الى قيمته الصلية و ايضا ايقاف bitهى = R
الخرج
خرج التايمر Q :
integerقيمة التايمر عاند اى لحظة و تكون بصيغة BI :
BCDعاند اى لحظة بصيغة Timerقيمة BCD :
Pulse Timer
تصبح NOالنقطة ( يقوم التايمر بتحويل نقاطه مباشرة اى ان Sعاند اعاطاء اشارة عالى
و يقوم بالعد فى نفس Qو ايضا يتم تشغيل الخرج ) تصبح مفتوحة NCمغلقة و النقطة
اللحظة و عاند انتهاء الوقت المضبوط عاليه المؤقت الزامنى ,يقوم بأرجاع نقاطه الى
Qوضعها و يقوم بأيقاف الخرج
يقوم التايمر بارجاع R :فى اى لحظة او اعاطاء اشارة عالى Sاذا تم فصل الشارة عان
مباشرة فى نفس اللحظة Qنقاطه و ايقاف الخرج
و العلمة integerيدل عالى ان المقارنة من النوع Iحرف I< :نلحظ ان عانوان البلوك
> greater thanتعنى
يتكون من compare block :
يعنى لزام تكون compareو ده المسئول عان تشغيل عاملية compare enable :
) M 0.0 =0و I0.1 = 1فى هذا المثال لزام يكون ( قبله = RLO 1
بسبب انى WORDو ده مكان كتابة الرقم الول و هنا لزام يكون حجمه IN 1 :
integerمسىتخدم مقارنة من نوع
ايضا WORDو ده مكان كتابة الرقم الثانى و هنا لزام يكون حجمه IN 2 :
خرج المقارنة و يكون اما 1او 0
MW 16اكبر من MW 20يجب ان يكون Q 10.6اذا لكى يعمل الخرج
MWبدل من MD 20ماذا يحدثا لو استخدمت حجم بيانات خطا يعنى مثل استخدمت
20
downlaodاو saveو ل يمكن عامل ERRORالبرنامج ها يعطى
او symbolic nameحسب المطلوب و لو عاايزا اكتب data blockها اختار رقم
ديه data blockعان وظيفة commentاكتب
data blockو غيرها من المتغيرات زاى مثل اسم مبرمج
و تتراوح قيمتها من 32768-الى bits +و تحتوى عالى integer 16اى int :
32767
العادى مثل اكتب 98او decimalبالشكل data blockو يتم كتابة قيمتها داخل
اكتب 166-و هكذا
و تتراوح قيمتها من bits -و تحتوى عالى double integer 32اى Dint :
2147483648الى 2147483647+
العادى و كلن بالشكل decimalبالشكل data blockو يتم كتابة قيمتها داخل
L#899مثل لكتابة الرقم 899تكتب L#Value
التى يمكن ان تحتوى PLCو هى الداتا الوحيدة فى bitsو تحتوى عالى Real : 32
عالى قيمة عاشرية
بتحويلها تلقائيا Simatic managerمثل لكتابة القيمة 99.6يقوم برنامج
e+001الى 9.960000
Siemens PLCراجع درس شرح تمثيل العاداد داخل
IEC timersو هى صيغة كتابة الوقت ايضا و يتم استخدامها فى الساس مع Time :
bitsو تشغل مساحة 32
T#3d10h40mو نفس وقت مثل ) 3ايام و 10ساعاات و 40دقيقة ( يتم كتابة
كدا احنا شرحنا كل نوع عالى حدى و الحجم الذى يشغله و فيما يستخدم
اللى انشأناها Data Blockدلوقتى ها نقوم بأدراج كل العناصر السابقة عالى
:نجد ان هناك الخانات التية
testو فيه يتم ادراج اسم القيمة حسب اختيارى مثل انا كتبت name :
اللى تم شرحه بالتفصيل dataو ده نوع type
downloadها يدرجها عاند عامل PLCو ديه القيمة البتدائية اللى initial value :
للداتا بلوك
و القيمة ديه البرنامج يضعها تلقائيا بصفر و لكن ممكن اغير فيها حسب المطلوب
تتغير قيمة الداتا حسب البرنامج اللى downloadو بمجرد ان يعمل البرنامج بعد عامل
انا كاتبه
و ده لو انا عاايزا اكتب كومنت يذكرنى بأستخدام الداتا ديه مثل Comment :
بحجزا ذاكرة لكل عانصر انا بدرجه Simatic managerنلحظ التى :يقوم برنامج
كامله byteيقوم البرنامج بحجزا ذاكرة bool 1مع ملحظة ان عاند استخدام داتا بذاكرة
لها
كامله لها wordيقوم البرنامج بحجزا ذاكرة byte 1و عاند استخدام داتا بذاكرة
functionشرح كل
الجمع و الطرح و الضرب و القسمة جميعها نفس الطريقة
Subtract realشرح عاملية الطرح
MD 20 - 50.78هنا سيتم طرح
DB10.DBD30و حفظ الناتج عالى
statement listالمثال السابق بلغة
doubleو integerنلحظ وجود عامليات جمع و طرح و ضرب و قسمة لكل النوعاين
integer
IN 1فى double wordبحجم Data Block 4هنا تم استخدام قيمة متغير من
( L#20و يجب كتابته عالى الصيغة IN 2تم استخدام عادد صحيح يساوى 20داخل
) double wordليضاح ان الرقم بذاكرة
MD 40عالى 20و حفظ الناتج عالى DB4.DBD20و تم قسمة الرقم المخزان عالى
فى حالة القسمة يجب التأكد ان الخرج سيكون رقم صحيح ايضا مثله مثل الدخل
errorرسالة خطا CPUلنه اذا كان الخرج عادد غير صحيح سيعطى
لذلك انا كان هناك اى شك ان الخرج سيصبح رقم غير صحيح او ان الدخل سيتم تخزاين
floating pointرقم غير صحيح عاليه ,,يجب استخدام عامليات حسابية من النوع
كما سنرى functions
DB6.DBD8عالى 6و يتم حفظ المتبقى من القسمة عالى MD 4هنا يتم قسمة
مثل :اذا تم قسمة 10عالى 3تكون الناتج ) 1و هو المتبقى من 10بعد قسمة 9عالى 3
(
شرحComplex Data Block و ده تكملة للدرس السابق شرحData Block فى
Siemens PLC
معنىComplex data block :
double wordعاناصر مركبه من اكثر من عانصر و تشمل اكثر من ذاكرة
:تحتوى عالى التى
Date and Time - String - Array - Struct - UDT
:نلحظ التى
تساوى اقل قيمة ممكنة initial valueاعاطى قيمة Simatic Managerان برنامج
date and timeللداتا
و اصبح bytesيساوى bytes 8عادد من date and timeان البرنامج اعاطى
DBD8المتاح بعدها من اول
Data Block:فى Stringشرح
plcيستخدم فى كتابة اى كلمات داخل
لكتابة الحروف و bytes 2مقسمين الى bytes 254و هو يحتوى عالى عادد 256
يستخدمهم البرنامج فى ترتيب الحروف Bytes
byteو من المعروف ان كل حرف يكتب فى 1
واحد Stringاذا يمكن كتابة عادد 254حرف فى
Simaticيقوم Data Blockداخل stringاذا عاند ادراج داتا من النوع
له bytesبحجزا Manager 254
مثل ,من غير Siemensو لكن لو انا محتاج كتابة كلمة تتكون من 7حروف مثل كلمة
لكتابة 7حروف فقط bytesالمفضل حجزا 254
كما سنرى stringلذلك يتم تحديد عادد الحروف المطلوبة بجانب امر
single quotation marksبين اثنين stringايضا يجب كتابة اى كلمة داخل
Data Blockداخل Stringمثال لدراج
نقوم بكتابة اسم لها و ده اى اسم انا عاايزا اكتبه مثل زاى Arrayبعد عامل ادراج
product_counters
و بداية و نهاية ترقيم العناصر Arrayو اختار عادد عاناصر
اى العنصر الول رقمه 1و الخير رقمه 24اذا هنا [ARRAY[1..24فهنا انا اخترت
لدى عادد 24عانصر
integerو هنا اخترت Arrayكمان لزام اختار نوع عاناصر
اللى عاملتها Arrayلصالح bytesنلحظ هنا ان البرنامج حجزا 48
اذا ) bytesاى integer ( 2لنى ادرجت عادد 24عانصر و كل عانصر نوعاه
bytesالمجموع 48
اى مصفوفة فى اتجاه واحد one dimension arrayالمصفوفة السابقة تعتبر
او اكثر dimensionsاو dimensions 3تحتوى عالى Array 2و ممكن اعامل
حسب اللى محتاجه
dimensionsتتكون من array 3مثال لعمل
نلحظ التالى
يتكون من العناصر 2الى ) 5اى 4عاناصر ( dimension 1 :
يتكون من العناصر 1الى ) 8اى 8عاناصر ( dimension 1 :
يتكون من العناصر 3الى ) 7اى 5عاناصر ( dimension 1 :
السابقة = 160 = 5*8*4عانصر arrayاذا حجم
تخيل الصعوبة و الوقت ( realاى بكتابة السطر السابق تم ادراج 160عانصر من النوع
) و ادراج 160عانصر كل عانصر فى سطر وحده arrayالضائع فى عادم استخدام
و عادد عاناصرها real 160بما ان المصفوفة من النوع
bytesاذا البرنامج قد حجزا للمصفوفة عادد 640 = 160 * 4
byteرقم 48و ينتهى ب byteيبدا من arrayلحظ من الصورة ان اول عانصر من
رقم 688
) حجم المصفوفة ( 688-48=640
المرافق للعنصر الذى تم ادراجه data block addressنجد ان البرنامج قام بكتابة
او elementaryان كان arrayملحوظة :يمكن استخدام اى نوع عانصر داخل
complex data type
داخلها ) و لكن هذا arrayعالى arrayاو ان تحتوى stringفمثل يمكن استخدام
يمكن ان يكون معقدا و ل يفضل استخدامه (
:الدرس القادم
بالتفصل Scan Cycleشرح