الإزاحة والتدوير
التعامل مع البتات
قم بتحسين معالجة السجلات الخاصة بك. من الحسابات الرياضية فائقة السرعة إلى إدارة بروتوكولات الاتصال المعقدة، أتقن حركة البتات.
لماذا نقوم بإزاحة أو تدوير البتات؟
تسمح عمليات الإزاحة (Shift) والتدوير (Rotate) بنقل البتات في الكلمة إلى اليسار أو اليمين. في الصناعة، تُستخدم لاستخراج معلومات دقيقة من برقيات الاتصال، أو إنشاء سجلات إزاحة لتتبع القطع على السيور الناقلة، أو إجراء عمليات الضرب/القسمة على قوى العدد 2 بأداء عالٍ جداً.
يكمن الفرق الرئيسي في التعامل مع البتات 'الخارجة': فبينما تقوم الإزاحة (Shift) بالتخلص منها واستبدالها بالأصفار، تقوم عملية التدوير (Rotate) بإعادة إدخالها من الجانب الآخر للكلمة، مما يخلق حلقة دائرية مستمرة.
الإزاحة (Shift)
حركة خطية مع فقدان البتات
SHL / SHR — الإزاحة يساراً/يميناً
SHLماذا تفعل
تنقل البتات إلى اليسار (SHL) أو اليمين (SHR) بعدد من المواضع المحددة في المدخل N. البتات التي تخرج من السجل تُفقد، والبتات الجديدة الداخلة تُضبط على 0.
متى تستخدمها
الضرب السريع في 2 (SHL)، القسمة على 2 (SHR)، أو عزل بايت معين في كلمة 32 بت.
نصائح الخبراء
إزاحة عدد صحيح بمقدار بت واحد لليسار تعادل ضربه في 2 دون استخدام وحدة الحساب الرياضي.
بالنسبة للأنواع الموقعة (Int, DInt)، غالباً ما تحتفظ SHR ببت الإشارة (الإزاحة الحسابية).
إذا كانت N أكبر من حجم الكلمة (مثل N=20 لـ WORD)، فستكون النتيجة 0.
التدوير (Rotate)
حركة دائرية دون فقدان
ROL / ROR — التدوير يساراً/يميناً
ROLماذا تفعل
تقوم بتدوير البتات بشكل دائري. البت الذي يخرج من جانب (مثل اليسار في ROL) يدخل فوراً من الجانب الآخر (اليمين). لا يتم فقدان أي بيانات.
متى تستخدمها
إنشاء أنماط إضاءة دوارة، تشفير بسيط للبيانات أو إدارة المخازن المؤقتة الدائرية (FIFO).
نصائح الخبراء
مثالي لتبديل الأولويات في مجموعة من المضخات أو المحركات.
على عكس الإزاحة، فإن التدوير الكامل (مثل 16 بت لـ WORD) يعيد القيمة الأصلية.
استخدم ROL/ROR لإعادة ترتيب ترتيب البايتات (Endianness) في تبادل البيانات.
الإزاحة مقابل التدوير: المقارنة
فهم التأثير على بياناتك
| الخاصية | الإزاحة (SHL/SHR) | التدوير (ROL/ROR) |
|---|---|---|
| الهيكل | خطي | دائري |
| البتات الخارجة | تُحذف (تُفقد) | تُعاد من الطرف المقابل |
| البتات الداخلة | دائماً 0 | بتات خارجة معاد تدويرها |
| الاستخدام الرياضي | الضرب / القسمة | تبديل البتات |
| مثال واقعي | تتبع القطع (سير ناقل) | إضاءة دوارة / متسلسل |
| المخاطر | إفراغ السجل | لا يوجد (البيانات محفوظة) |
الأسئلة الشائعة
لماذا نستخدم SHL بدلاً من الضرب في 2؟
يتم تنفيذ تعليمة SHL بسرعة أكبر بكثير بواسطة معالج الـ PLC من عملية الضرب MUL، لأنها تعمل مباشرة على السجل دون المرور بوحدة الحساب والمنطق المعقدة.
كيف ننشئ سجل إزاحة لسير ناقل؟
استخدم SHR مع كل نبضة من المشفر. إذا تم اكتشاف قطعة عند المدخل، اجعل البت 0 هو 1. بإزاحة الكلمة، تتبع موضع القطعة بت بت.
ما هو تأثير نوع البيانات (Byte, Word, DWord)؟
تتكيف التعليمة مع الحجم. التدوير ROR على بايت (Byte) سيعيد البت 7 إلى الموضع 0 بعد إزاحة واحدة. على كلمة (Word)، سيعود البت 15 إلى 0.
هل يمكن إزاحة المتغيرات في SCL؟
نعم، عبر دوال SHL(IN:=var, N:=n) أو باستخدام معاملات البت القياسية إذا كانت نسخة TIA Portal لديك تسمح بذلك.