پاسخ : مدباس RT-U
بله PDU و عدد 5 و 7 در برنامه + مابقی توضیحات دقیقا همونی هست که فرمودید.
اگر تعداد دیتا بیشتر بشه ، باید بجای عدد 5 یه متغیر تعریف بشه و بسته به دیتاها مقدار دهی بشه.
احتمالا توی طول فریم پاسخ مشکلی وجود داره ، برای CRC در هر حالت باید دو بایت اختصاص بدید / برای دیتا ها و ... باید بایت به بایت ارسال بشه .
ببینید ما یه طول دیتا داریم که توسط مستر به اسلیو اعلام میشه ، حالا توی پاسخ ما تعداد بایت داریم که میشه دو برابر دیتای درخواستی.
//--------------------------------------------------------------------------------------
احتمالا اینجا عدد را تغییر بدی درست میشه. اول با یه متغیر بنویسش و بعد که اوکی شد تعدادشو زیاد کن.
نوشته اصلی توسط hamidrezam2
اگر تعداد دیتا بیشتر بشه ، باید بجای عدد 5 یه متغیر تعریف بشه و بسته به دیتاها مقدار دهی بشه.
احتمالا توی طول فریم پاسخ مشکلی وجود داره ، برای CRC در هر حالت باید دو بایت اختصاص بدید / برای دیتا ها و ... باید بایت به بایت ارسال بشه .
کد:
PDU[0] = slaveAddr; // آدرس اسلیو PDU[1] = 0x03; // فانکشن PDU[2] = 2; // تعداد بایت ها (دو برابر دیتا - یعنی برای هر دیتای درخاستی دوبایت داریم) PDU[3] = (value & 0xFF00) >> 8; // مقدار 8 بیت بالای دیتا PDU[4] = value & 0x00FF; // مقدار 8 بیت پایین دیتا
//--------------------------------------------------------------------------------------
احتمالا اینجا عدد را تغییر بدی درست میشه. اول با یه متغیر بنویسش و بعد که اوکی شد تعدادشو زیاد کن.
دیدگاه