سلام دوستان من می خوام یک دیمر تحت پروتکل مدباس با میکرو وبرنامه نویسی بیسک درست کنم اگه کسی اطلاعاتی داره ممنون میشم
اطلاعیه
Collapse
No announcement yet.
مدباس RT-U
Collapse
X
-
پاسخ : مدباس RT-U
سلام
فعلا اینا رو بخون:
http://www.mcselec.com/index.php?opt...&Itemid=41
http://www.automation.com/library/ar...tion-to-modbus
http://www.procdev.com/technical/modbusframing.asp
http://www.ccontrolsys.com/w/How_to_...TU_Message_CRC
http://www.modbustools.com/modbus.html
موفق باشیشبنم از سعی به سرچشمه خورشید رسید صائب تبریزی
-
پاسخ : مدباس RT-U
نوشته اصلی توسط شهاب طاهری
من ارتباط سریال با کامپیوتر را کامل انجام دادم ، اما الان میخوام فریم را تحت مدباس ارسال کنم.
اگه امکانش هست نمونه کدی برای ارتباط با مدباس RTU با کدویژن قرار بدید .Reveng will surely come... Your hard time are ahead
// - - - - - - - - - -
برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
// - - - - - - - - - -
اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
// - - - - - - - - - -
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط hamidrezam2سلام.دوستان من میخوام با avrیا armدما رو سنس کنم و با پورت rs485 و پروتکل مدباس دیتا رو بفرستم فقط الان موندم چطور طبق این پروتکل دیتا رو بفرستم؟لطفا دوستان اگه اطلاعاتی دارن یه توضیحی بدن
ممنون
سخت افزار را درست کردید؟Reveng will surely come... Your hard time are ahead
// - - - - - - - - - -
برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
// - - - - - - - - - -
اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
// - - - - - - - - - -
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط Saeid.exeدیتا طبق فریم خاصی دسته بندی و ارسال میشه که برای مدهای مختلف متفاوت هست. میتونید به Manual های موجود مراجعه کنید.
سخت افزار را درست کردید؟
تقریبا یه هفته پیش تونستم با بسکام راه اندازیش کنم :wow:
ولی واقعا سخت بود فقط دو هفته کامل درگیرش بودم :cry2:
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط hamidrezam2ممنون سعید جان
تقریبا یه هفته پیش تونستم با بسکام راه اندازیش کنم :wow:
ولی واقعا سخت بود فقط دو هفته کامل درگیرش بودم :cry2:
اگر برای نرم افزار حالتی تعریف بشه که کاربر مستر و اسلیو بودن را حودش انتخاب کنه ، جالب تر در میاد . و یک سری کارهایی شبیه این هم میشه انجام داد
مثلا یه نکته ای که خیلی مهمه اینه که حتما باید از وقفه سریال برای دریافت دیتا استفاده بشه تا دیتا ار دست نره.Reveng will surely come... Your hard time are ahead
// - - - - - - - - - -
برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
// - - - - - - - - - -
اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
// - - - - - - - - - -
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط dmosavi04... می خوام یک دیمر تحت پروتکل مدباس با میکرو و برنامه نویسی بیسیک درست کنم ...
MODBUS.LBX و دستور MAKEMODBUS را برای راحتی اجرای این پروتکل در اختیار قرار می دهد اما محدودیتهائی در این زمینه وجود دارد مثلا،
تنها فانکشن کدهای 16 & 06, 03 در بسکام پشتیبانی می شوند. من پیشتر این مشکل را در وب سایت رسمی mcselec مطرح کرده ام، اما تا کنون پاسخ یا راه حلی ارائه نشده است:
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط سعید خیریبا چه دستگاهی ارتباط برقرار کردید؟
اگر برای نرم افزار حالتی تعریف بشه که کاربر مستر و اسلیو بودن را حودش انتخاب کنه ، جالب تر در میاد . و یک سری کارهایی شبیه این هم میشه انجام داد
مثلا یه نکته ای که خیلی مهمه اینه که حتما باید از وقفه سریال برای دریافت دیتا استفاده بشه تا دیتا ار دست نره.
اره از وقفه استفاده کردم که دائما چک بشه ولی فکر نمیکنم نیازی باشه که مستر یا اسلیو بودن دستگاه قابل تعیین باشه چون مثلا توی همین دستگاه خب همیشه پی ال سی مستره و اگر بخوایم به جز پی ال سی کار کنیم چرا با مد باس راه اندازی بشه پروتکل های دیگه مثل 1wire , i2c به نظر من خیلی راحت تر و سبکتر هستن که میتونیم استفاده کنیم
فقط کاش به جای avr با arm میتونستم بنویسمش که البه تا 80 درصدشو نوشتم ولی مرحله اخر مشکل خوردم :cry: :cry2:
دیدگاه
-
پاسخ : مدباس RT-U
کتابخانه
MODBUS.LBX و دستور MAKEMODBUS را برای راحتی اجرای این پروتکل در اختیار قرار می دهد اما محدودیتهائی در این زمینه وجود دارداز آنجایی که آموزش ماهی گیری برای من بسیار مهم تر هستش، به همین خاطر، در این انجمن، تاجایی که بتونم جواب مطلبی رو مستقیم نمیگم و تلاش میکنم با آدرس دادن و کمی جستجو به جواب برسید. اگر عاشق الکترونیک باشید، دنبال جواب خواهید گشت.
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط hamidrezam2فقط کاش به جای avr با arm میتونستم بنویسمش که البه تا 80 درصدشو نوشتم ولی مرحله اخر مشکل خوردم :cry: :cry2:
نوشته اصلی توسط مرتضی امانیمهمترین نقص این کتابخانه اینه که فقط از Modbus Master پشتیبانی میکنه و نمیشه Slave رو با اون پیاده سازی کرد.Reveng will surely come... Your hard time are ahead
// - - - - - - - - - -
برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
// - - - - - - - - - -
اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
// - - - - - - - - - -
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط سعید خیریبا چه آرمی؟ فرقی نمیکنه که با چه آیسی کار کنین . الگوریتمش همونه فرقی ندارن فقط یه سری دیفاین عوض میشه.
اره درسته ولی در اخر به مشکل محاسبه کد خطا به مشکل خوردم.یعنی دو بار از برنامه محاسبه خطا استفاده کردم اول برای تشخیص خطای کد دستوری که میاد و درست جواب داد
دوم برای ساخت کد و فرستادن اون به مستر که از همون روش قبل استفاده کردم ولی خطا داشت و جواب نداد
حالا به نظر شما باید چیکار کنم که با آرم هم بتونم جواب بگیرم؟
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط hamidrezam2LPC1768
اره درسته ولی در اخر به مشکل محاسبه کد خطا به مشکل خوردم.یعنی دو بار از برنامه محاسبه خطا استفاده کردم اول برای تشخیص خطای کد دستوری که میاد و درست جواب داد
دوم برای ساخت کد و فرستادن اون به مستر که از همون روش قبل استفاده کردم ولی خطا داشت و جواب نداد
حالا به نظر شما باید چیکار کنم که با آرم هم بتونم جواب بگیرم؟
(متغیر PDU دقیقا دیتاهای قبل از CRC هست که باید با هم محاسبه بشه . عدد 5 توی حلقه ی For هم مربوط به تعداد متغیر هایی هست که باید در محاسبه CRC لحاظ بشوند)
کد:// Generate CRC16 (SaeidKheiri) for(i=0; i<=5; i++){ CRC ^= PDU[i]; for( j=0; j<=7; j++){ if( CRC & 1 ){ CRC >>= 1; CRC ^= 0xA001; }else{ CRC >>= 1; } } }
Reveng will surely come... Your hard time are ahead
// - - - - - - - - - -
برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
// - - - - - - - - - -
اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
// - - - - - - - - - -
دیدگاه
-
پاسخ : مدباس RT-U
به این لینک هم سر بزنید:
http://www.eca.ir/forum2/index.php?topic=20764.15Reveng will surely come... Your hard time are ahead
// - - - - - - - - - -
برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
// - - - - - - - - - -
اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
// - - - - - - - - - -
دیدگاه
-
پاسخ : مدباس RT-U
نوشته اصلی توسط سعید خیریاز این تابع برای کد CRC استفاده کنید:
(متغیر PDU دقیقا دیتاهای قبل از CRC هست که باید با هم محاسبه بشه . عدد 5 توی حلقه ی For هم مربوط به تعداد متغیر هایی هست که باید در محاسبه CRC لحاظ بشوند)
کد:// Generate CRC16 (SaeidKheiri) for(i=0; i<=5; i++){ CRC ^= PDU[i]; for( j=0; j<=7; j++){ if( CRC & 1 ){ CRC >>= 1; CRC ^= 0xA001; }else{ CRC >>= 1; } } }
تا جایی که من فهمیدم PDU بافر اطلاعات خروجی هستش که هشت بایتیه و عدد 5 توی حلقه اول یعنی تمام کدها به جز دوتا بایت اخر که مربوط به crc هستند
عدد 7 حلقه دوم هم که فکر کنم چون اطلاعاتمون 8 بایتی هست قرارش دادیم درسته؟
حلا اگه دیتا هایی که قراره بفرستیم بیشتر شد یعنی به عبارتی به جای یک متغیر دو یا بیشتر خواستیم بفرستیم باید چیکار کنیم؟
من از همین برنامه برای چک کردن درستیه اطلاعات ورودیم استفاده کردم و درست جواب داد فقط نمیدونم چرا برای دیتا های خروجی که قراره به مستر فرستاده بشه درست جواب نمیده
دیدگاه
دیدگاه