من فضلك ادعم الموقع على جوجل بالضغط على علامة g+1

الجمعة، 13 أكتوبر 2017

شرح طرق تمثيل الاعداد داخل Siemens PLC

الكاتب elec engineer   بتاريخ   2:29 ص   PLC

النهارده ها نشرح الدرس السادس من كورس شرح Siemens PLC S7 300 , S7 400
ها نشرح انواع  طرق تمثيل الاعداد Data Formats داخل PLC

الدرس ده من اهم الدروس لانه تمهيد و اساس لكل العمليات الحسابية و المقارنات و التحويلات
ها نشرح الانواع الاتية : integer - double integer - Real (floating points numbers) -BCD numbers

integer numbers و اختصارها INT :

و ده نوع من الاعداد يتكون من 16 bits كل bit تحتوى على قيمة 1 او 0
و حسب ترتيب bits و قيمها يتم حساب قيمة الرقم

النوع integer يمكن ان يمثل ارقام موجبة و ايضا ارقام سالبة و لكن يجب ان تكون الارقام ارقام صحيحة فقط اى انه لا يقبل العلامة العشرية
مبدئيا كدا integer data type يمكن ان يستوعب ارقام من - 32768 الى +32767
لازم نكون عارفين ان لو حملت رقم اكبر من 32767 او اقل من -32768 نجد ان CPU اعطى fault

اولا : تمثيل العدد الموجب بذاكرة نوعها integer

يمكن تمثيل الارقام integer بثلاث طرق :
طريقة decimal و هى التمثيل العادى للرقم مثل +662
طريقة binary او ( bin ) اى نجد 16 خانة كل خانة تحتوى فقط على 0 او 1
طريقة Hexa-decimal و تحتوى هنا على 4 خانات فقط

التمثيل من النوع BIN
عشان اوضح لل PLC ان طريقة قراءة الرقم هى binary لازم اكتبها بالصيغة الاتية :  #2 ثم نكتب الرقم
نجد ان الخانة رقم 15 ( اخر خانه ) هى خانة تحديد الاشاره بحيث عندما تكون 0 هذا يعنى ان الرقم موجب و عندما تكون 1 يعنى ان الرقم سالب
كيفية قراءة قيمة الرقم اى التحويل من الصيغة binary الى الصيغة العددية decimal :
نقوم بضرب قيمة كل خانة فى 2 ^رقم الخانة اى ان
 الخانة الاولى قيمتها 0*2^0
الخانة الثانية قيمتها 1*2^1
و هكذا فنجد ان قيمة الرقم = 0*2^0 +  1*2^1 + 1*2^2 +  0*2^3 + 1*2^4 +  0*2^5 + 0*2^6 +  1*2^7 +  0*2^8 +  1*2^9 +  0*2^10 +  0*2^11 + 0*2^12 +  0*2^13 + 0*2^14 +  0*2^15 = +662

تمثيل الرقم بطريقة Hexadecimal
عشان اوضح لل PLC ان طريقة قراءة الرقم هى hexadecimal لازم اكتبها بالصيغة الاتية : (W#16#(value
معنى W ان قيمة العدد من النوع word اى تحتوى على 16 bits
معنى 16 اى ان نوع طريقة قراءة الرقم من النوع hexa-decimal
الرقم نفسه يتكون من 4 خانات فقط
ممكن كل خانة تحتوى على ارقام من 0 الى 9 و حروف A-B-C-D-E-F
اى ان A = 10 و B =11 و C = 12 و D = 13 و E = 14 و F = 15
التحويل من binary الى hexadecimal format
بقوم بأخذ كل 4 خانات و احسب قيمة رقمها و ذلك من اليمين لليسار
بمعنى ان :
0110 : عند حسابها بالطريقة العادية نجد انها تساوى : 6
1001 = 9
0110 =2
0000 = 0
اذا الرقم يساوى : W#16#0296


كيفية حساب قيمة الرقم الممثل بطريقة hexadecimal :
W#16#0296
لو انا عايز احسب قيمة الرقم العددى :
نفس طريقة حساب binary و لكن الاساس 16 بدلا من 2
اذا الرقم بالصيغة العددية = 6*16^0 +  9*16^1 + 2*16^2 +  0*16^3 = 662


ثانيا : تمثيل العدد السالب بذاكرة نوعها integer

نجد ان اخر خانة ( رقم 15 ) تحتوى على 1 اى ان العدد سالب
كيفية التحويل من binary الى decimal
قيمة الرقم = 0*2^0 +  1*2^1 + 0*2^2 +  1*2^3 + 0*2^4 + 1*2^5 + 1*2^6 +  0*2^7 +  1*2^8 +  0*2^9 +  1*2^10 +  1*2^11 + 1*2^12 +  1*2^13 + 1*2^14 - 1*2^15 = - 662


الصيغة hexa decimal :
هنا من الخطا استخدام الصيغة hexa decimal فى تمثيل الرقم integer السالب لان hexa decimal format لا تعرف الاشارة السالبة
بمعنى لو انا حولت من binary الى hexa decimal بالطريقة المعتادة ( كل 4 خانات برقم )
0101 = 10 = A
0110 = 6
1101 =13 = D
1111 = 15 = F
اذا الرقم يساوى : W#16#FD6A ( الرقم ده خطا و لا يساوى -662 باى شكل من الاشكال )
لاثبات ذلك , لو حسبنا القيمة السابقة بالتحويل من hexa decimal الى decimal
قيمة الرقم  بالصيغة العددية = 10*16^0 +  6*16^1 + 13*16^2 +  15*16^3 = 64874
و ده رقم مختلف تماما عن - 662
نفهم من كدا ان لا يجوز انى استخدم الصيغة hexa decimal مع رقم integer سالب


الاعداد بصيغة Double integer و اختصارها DINT :

نفس طرق integer بالضبط و لكن الفارق هنا ان الرقم يحتوى على 32 bits
و هنا الرقم double integer يمكن ان يستوعب ارقام من - 2147483648 الى +2147483647 و ايضا يجب ان تكون الارقام ارقاما صحيحة فقط
يمكن تمثيل الارقام double integer  بثلاث طرق :
طريقة decimal و هى التمثيل العادى للرقم مثل +100787#L   و لاحظ انى كتبت #L عشان اعرف PLC ان ده رقم double integer
طريقة binary او ( bin ) اى نجد 32 خانة كل خانة تحتوى فقط على 0 او 1
طريقة Hexa-decimal و تحتوى هنا على 8 خانات 

طريقة تمثيل الرقم double integer الموجب

الصيغة decimal : نكتب 540809+#L
الصيغة binary : نجد 32 bit و تكون bit الاخيره تحتوى على 0 اى ان الرقم موجب
و لحساب الرقم فى حالة تمثيله بصيغة binary format
قيمة الرقم العددى = 1*2^0 +  0*2^1 + 0*2^2 +  1*2^3 + 0*2^4 +  0*2^5 + 0*2^6 +  1*2^7 +  0*2^8 +  0*2^9 +  0*2^10 +  0*2^11 + 0*2^12 +  0*2^13 + 1*2^14 +  0*2^15 + 0*2^16 +  0*2^17 + 0*2^18 +  1*2^19 + 0*2^20 +  0*2^21 + 0*2^22 +  0*2^23 +  0*2^24 +  0*2^25 +  0*2^26 +  0*2^27 + 0*2^28 +  0*2^29 + 0*2^30 +  0*2^31 = +540809


االصيغة hexa decimal :
للتحويل من binary الى hexa decimal نأخذ كل 4 ارقام و نحسبها بالطريقة العادية
1001 = 9
1000 = 8
0000 =0
0100 = 4
1000 = 8
0000 = 0
0000 =0
0000 = 0
اذا الرقم بالصيغة DW#16#00084089 = hexa decimal  ( لاحظ انى كتبت DW مش W عشان اوضح ان ده double integer )
للتحويل من hexa decimal الى القيمة العددية decimal
9*16^0 +  8*16^1 + 0*16^2 +  4*16^3 + 8*16^4 +  0*16^5 + 0*16^6 +  0*16^7 = +540809


طريقة تمثيل الرقم double integer السالب




الصيغة decimal : نكتب 540809- #L
الصيغة binary : نجد 32 bit و تكون bit الاخيره تحتوى على 1 اى ان الرقم سالب
و يمكن التحويل بنفس الطريقة من binary format الى decimal
الصيغة hexadecimal :
كما الحال فى integar data السالبة يكون لل double integer السالبة
اى انه من الخطا تمثيل القيمة double integer السالبة بالصيغة hexadecimal لان hexadecimal format لا تعرف الاشارة السالبة


 الارقام العشرية real و يطلق عليها ارقام floating point :

و هى الطريقة الوحيدة التى يقبلها PLC لتمثيل رقم عشرى
و يمكن ان يستوعب ارقام موجبة او سالبة
يحتوى الرقم floating point على 32 bits
طريقة تمثيل الرقم العشرى :
((Sign) • (1.f) • (2^(e-127)
بمعنى لو ان الاشارة موجبة
و F= 5
و e=126
اذا الرقم = 0.75

لاحظ ان : انا غير مطالب بكتابة الرقم عن طريق format السابق كل اللى بكتبه مثلا 200.76 و PLC يقوم بالتحويل الى الصيغة السابقة اوتوماتيكيا
كيفية توزيع الرقم على 32 bits

انظر الرسم الموضح :



الخانات من 0 الى 22 : تحتوى على قيمة المعامل f
الخانات من 23 الى 30 : تحتوى على قيمة المعامل e
الخانة الاخيرة : خانة الاشارة بحيث ان ( 0 = موجب , 1 = سالب )
الموجود بالرسم هو تمثيل الرقم 0.75


الاعداد بصيغة BCD : 

اختصار BCD يعنى Binary Coded Decimal 
توجد منه نوعان word و يحتوى على 16 bits و يستوعب ارقاما من -999 الى +999
 و double word الذى يحتوى على 32 bits و يستوعب ارقاما من -9999999 الى +9999999
اختصارا للوقت نستطيع ان نقول مجازا ان BCD هو التمثيل بصيغة hexadecimal مع امكانية تحديد الاشارة اى يحدد اذا كان موجب او سالب
بحيث ان اخر Bit تحتوى على الاشارة ( 0 تعنى موجب و 1 تعنى سالب )
انظر كيفية تمثيل العدد 296

نجد انه للتحويل من binary الى BCD
تم اخذ كل 4 bits و حساب قيمتهم بالضبط عند التحويل الى hexadecimal
و ايضا فى حالة BCD double word التى تتكون من 32 bits تم اخذ كل 4 خانات و حساب قيمتهم و تم حساب قيمة 8 ارقام بدلا من 4
من اشهر تطبيقات BCD format هى العدادات Counters و حسابات الوقت و التاريخ ( سيتم شرحهم فى درس اخر )

انتهى الشرح شكرا للمتابعة
هذا الشرح حصرى لموقع electrical engineering-eg نرجو عدم النقل


معلومات كاتب الموضوع

مهندس كهرباء مصرى متخصص فى مجال التحكم الالى
شاهد جميع موضوعاتي: مهندس مصرى

navright

متابعى الموقع

Back to top ↑
كن على تواصل واتصال معنا

Flag Counter

احذر.. الموقع محمى بحقوق الملكية الفكرية

© 2013 موقع الهندسة الكهربية . WP Mythemeshop Converted by Bloggertheme9
Blogger templates . Proudly Powered by Blogger .