في أي سنة - عد ، في أي أرض - خمن ، طرح الأسئلة. ما مدى سرعة ARM من AVR؟ أي بروتوكول Modbus "أسرع"؟ ASCII أو RTU؟
نقصد بكلمة "السرعة" ، في هذه الحالة ، عدد دورات آلة المعالج المطلوبة لتنفيذ جميع إجراءات البروتوكول.
سيتم إجراء دراسة الأداء في مكتبة ModBus Slave RTU / ASCII ، المعروفة على نطاق واسع في الدوائر الضيقة ، والتي يتم نقلها إلى متحكمات ATMega48 و STM32L052. سنخرج المعلومات عبر بروتوكول Modbus إلى محاكي لوحة Weintek. سيتم إجراء الاختبار على مثال تجريبي . بالإضافة إلى نتائج الاختبار ، تعرض اللوحة حالات سجلات Modbus: مدخلات منفصلة ، ومخرجات منفصلة ، وسجلات للقراءة ، وسجلات للقراءة / الكتابة. تحسب اللوحة أيضًا عدد الأخطاء في تبادل البيانات باستخدام وحدة التحكم الدقيقة. تظهر نافذة الاختبار في الشكل.
سنقوم بتقييم الأداء من خلال قياس وقت تنفيذ وظيفة معالجة رسائل البروتوكول. سنقيس وقت التنفيذ باستخدام طريقة العمال والفلاحين. قبل بدء الوظيفة ، نقوم بإعادة ضبط مؤقت الأجهزة ، حيث يكون تردد العد مساويًا لتردد ساعة وحدة التحكم الدقيقة ، بعد تنفيذ الوظيفة ، نقرأ قيم المؤقت ونعالج نتائج القياس. نحسب الحد الأدنى والحد الأقصى والمتوسط لقيمة وقت تنفيذ وظيفة معالجة رسائل بروتوكول Modbus.
while(1)
{
TIM6->CNT=0;
ModBusRTU();
//ModBusASCII();
tcurent=TIM6->CNT;
if(tcurent<tmin)tmin=tcurent;
if(tcurent>tmax)tmax=tcurent;
avg32=avg32-(avg32>>16)+tcurent;
tavg=avg32>>alfa;
...
تم تلخيص نتائج البحث في الجدول. تم إجراء البحث بخيارات مكتبة متنوعة:
- ModBusUseTableCRC - استخدام حساب جدول CRC ؛
- ModBusUseErrMes - استخدام رسائل حول أخطاء البروتوكول المنطقي ؛
وكذلك مع استراتيجيات تحسين المترجم المختلفة.
تدعم مكتبة ModBus Slave RTU / ASCII ، في بعض الحالات ، وظيفة مهمة - وقفة بين تلقي طلب من Modbus Master واستجابة Modbus Slave. تم إجراء البحث بقيم إيقاف مؤقت تبلغ 2 مللي ثانية و 0 (أي بدون توقف) ، وتتم الإشارة إلى هذه القيم في عمود الجدول "Pause P / P". يشير عمود "الحجم" إلى حجم الوحدة ، والتي تتضمن كلا الوظيفتين لمعالجة رسائل Modbus (ModBusRTU () ، ModBusASCII ()).
في رأي المؤلف ، من الأنسب تقييم الأداء وفقًا لأسوأ الحالات ، أي وفقًا لأقصى وقت تنفيذ للوظيفة.
بعد التفكير بعمق في نتائج البحث ، يمكن استخلاص الاستنتاجات التالية:
- AVR ليس بطيئا !!! في المتوسط ، يكون أبطأ مرة ونصف من ARM بنفس سرعة الساعة. وفي حالة التحسين في الحجم (على سبيل المثال ، المتغيرات 13 و 15) ، فإنها تقترب عمليًا من ARM.
- بروتوكول ASCII ، بالمقارنة مع RTU ، ليس فقط أبطأ في سرعة الإرسال ، ولكنه أيضًا يستهلك الكثير من موارد وحدة التحكم الدقيقة.
- لا يؤثر استخدام الرسائل حول أخطاء البروتوكول المنطقية على الأداء بأي شكل من الأشكال.
- تتيح لك الطريقة الجدولية لحساب CRC تقليل استخدام موارد الحوسبة الخاصة بالمتحكم الدقيق بأكثر من مرة ونصف.
- إن استخدام التوقف المؤقت بين تلقي طلب وإرسال استجابة لا يسمح فقط بتجنب التعارضات في ناقل RS-485 ، ولكن أيضًا لتقليل وظيفة الحظر لمعالجة رسائل بروتوكول Modbus.
ما هي الاستنتاجات الأخرى التي يمكن استخلاصها؟