آموزش راه اندازی مدباس با STM32

(دیدگاه کاربر 42)

تومان249,000

آموزش نحوه راه اندازی پروتکل MODBUS RTU بصورت SLAVE بر روی میکروکنترلر STM32 با استفاده از توابع HAL و نرم افزار cubeMX

3 نفر در حال مشاهده این محصول هستند!
توضیحات

در این آموزش نحوه راه اندازی پروتکل مدباس (MODBUS RTU)  بصورت SLAVE بر روی میکروکنترلر STM32 با استفاده از توابع HAL و نرم افزار cubeMX انجام شده است. در این آموزش از پایه پروتکل مدباس را توضیح داده و نحوه ارتباط آن با دیگر دستگاه های روی شبکه و پیاده سازی آن روی میکرو کنترلر STM32 با استفاده از یکی از کاملترین کتابخانه های مدباس برای سیستم های امبدد مینماییم.

این آموزش شامل 88 دقیقه اموزش ویدیویی به همراه مثال و فایل های متنی مورد استفاده در ویدیو میباشد.

مثال توضیح داده در آموزش روی میکروکنترلر STM32F217ZG پورت شده است اما در فایل آموزشی یک ویدیو جداگانه از نحوه پورت کردن روی همین میکرو از صفر توضیح داده شده تا بتوانید روی میکرو مورد نظر خود این کتابخانه را پورت نمایید.

فانکشن کدهای پشتیبانی شده در این کتابخانه (0X03 | 0X06 | 0X10 | 0X17 | 0X01 | 0X05 | 0X15)

فهرست مطالب ویدیو اول (مقدمات و نحوه کار)

  1. چرا مدباس
  2. نحوه ارتباطات master و slave در مدباس
  3. تفاوت پروتکل و لایه فیزیکی
  4. هر بخش از فریم چه کاری انجام میدهد
  5. تفاوت پروتکل و لایه فیزیکی
  6. توضیح دیاگرام ارتباطی master و بررسی حالت های مختلف
  7. توضیح دیاگرام ارتباطی slave و بررسی حالت های مختلف

  8. تعداد بایت های هر بخش از فریم ها
  9. اهمیت timing در فریم ها و میزان زمان مورد نیاز و محاسبه آن ها
  10. ارتباطات سخت افزاری روی خطوط rs485
  11. ارتباطات سخت افزاری روی خطوط rs422
  12. توضیح انواع فانکشن کدهای پرکاربرد (0X03 | 0X06 | 0X10 | 0X17 | 0X01 | 0X05 | 0X15)
  13. مثالی از فریمینگ یک فانکشن کد
  14. توضیح مختصر در رابطه با کتابخانه مورد استفاده در آموزش
  15. راه اندازی مثال همراه با محصول روی میکرو کنترلر
  16. ارتباط مدباس بین برد (SLAVE) و نرم افزار modbus pool به عنوان master
  17. تست ارتباط در فانکشن کد های (0X03 | 0X06 | 0X10 | 0X17 | 0X01 | 0X05 | 0X15)
  18. توضیح فریم های ارسالی و دریافتی بین نرم افزار و برد
  19. توضیح کاربرد هر قسمت از فریم در فانکشن 0x03 جهت مثال بخش قبل
  20. توضیح کاربرد هر قسمت از فریم در فانکشن 0x17 جهت مثال بخش قبل
  21. تست ارتباط ساده بین برد و نرم افزار HMI دلتا dopsoft در حالت شبیه سازی آنلاین
  22. شماتیک و نکات مهم در راه اندازی rs485
  23. تشریح برخی از قسمت های کتابخانه مدباس

فهرست مطالب ویدیو دوم (نحوه پورت کردن کتابخانه روی میکرو)

  1. دریافت کتابخانه
  2. انتخاب میکرو  و کانفیگ در cubeMX
  3. ساخت پروژه با keil v5
  4. وارد کردن کتابخانه مورد نیاز
  5. پورت کردن تایمر و پورت سریال به کتابخانه
  6. کانفیگ کتابخانه
  7. دانلود کد نوشته شده روی برد
  8. ارتباط با نرم افزار modbus pool به عنوان master

با استفاده از این آموزش میتوانید پروتکل modbus rtu را بصورت slave روی میکرو کنترلر stm32 خودتان پیاده سازی کرده و ارتباطات بین میکروکنترلر و دستگاه های متصل روی این شبکه ارتباط گرفته و تبادل داده انجام دهید.

اطلاعیه مهم : در صورت نیاز به راهنمایی در رابطه با محصول و مطالب عنوان شده لطفا فقط در بخش کامنت ها سوال خود را مطرح کنید به طور معمول بین 2  تا حداکثر 24 ساعت پاسخ شما داده خواهد شد. همکاران ما در قسمت تماس با ما امکان راهنمایی فنی را ندارند لطفا فقط در قسمت کامنت ها سوال خود را مطرح نمایید.

این آموزش به صورت پروژه محور کار شده و ویدیویی که در بالا مشاهده میکنید قسمتی از ویدیو اصلی میباشد و در این آموزش دقیقا همان مطالب بیان شده در فهرست توضیح داده شده است.

هرگونه نشر یا انتقال این آموزش به فردی غیر از خریدار یا انتشار آن در وب سایت های اینترنتی، شبکه های مجازی و … غیرقانونی می باشد و شرکت نوین الکترونیک هیچگونه رضایتی ندارد و در صورت مشاهده از طریق مراجع قانونی پیگیری خواهد شد.

توضیحات تکمیلی
نام محصول

راه اندازی پروتکل MODBUS RTU بصورت SLAVE

میکرو کنترلر

STM32

نوع آموزش

ویدیویی به همراه مثال

زمان آموزش

88 دقیقه

فانکشن کدهای استفاده شده

0X03

,

0X06

,

0X10

,

0X17

,

0X01

,

0X05

,

0X15

نرم افزارهای مورد استفاده

KEILV5

,

STM32 CUBEMX

,

MODBUS POOL

,

DOPSOFT

42 دیدگاه برای آموزش راه اندازی مدباس با STM32

  1. خریدار محصول علی شیرخانی (مالک تایید شده)

    سلام من می خوام خروجی یک سنسور رو ارسال بکنم اومدم بافر usRegHoldingBuf به صورت extern در تابع main تعریف کردم ولی مقدار خروجی سنسور رو فقط یک عدد ثابت نمایش می ده و اشتباه راه حل این کار رو میشه یه بار کامل توضیح بدید

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      با سلام
      1. ابتدا بافر usRegHoldingBuf را به صورت extern در فایل main.c تعریف کنید(توجه کنید در فایل main.c قبل از تعریف تابع main باید باشد نه در داخل تابع main).
      2. در خانه ای که رجیستر انرا میخوانید دیتای خود را قرار دهید (اگر از اولین رجیستر توسط مدباس خوانده میشود دیتای شما باید داخل خانه 0 این متغیر باشد)

      اما به صورت کلی باید مقداری زبان سی را بهتر کار کنید مخصوصا در رابطه با extern کردن تا به راحتی همانظور که در مثال آمده بتوانید دیتا مورد نظرتان را قرار دهید.

  2. کاوش نیرو سپاهان

    سلام وقت شما بخیر
    این فایل با کیل وکیوب هست؟
    کد هم اره یا فقط فایل اموزشی هست؟

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      سلام وقت شما هم بخیر. بله با کیل و کیوب هست. مثال انجام شده داخل ویدیو داخل فایل های دانلودی موجود هست

  3. کاوش نیرو سپاهان

    سلام فاکتورهاتون به چه صورت هست فاکتور میدین

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      سلام خیر فاکتور ارایه نمیشود
      صرفا صورتحساب داخل حساب کاربری تون هست

  4. خریدار محصول asp (مالک تایید شده)

    سلام وقتتون بخیر
    ببخشید من مد باس را روی ttl پیاده سازی کردم و جواب گرفتم می خواستم روی rs485 هم پیاده سازی کنم همونطور که فرموده بودید در فایل mbrtu.c آی سی را در مد ارسال و دریافت قرار میدم اما با خطای checksum error مواجه شدم بازم طبق توضیحاتی که در بقیه نظرات فرموده بودید خواستم تاخیری 1 تا 5 میلی ثانیه اعمال کنم تا آی سی adm485 به درستی در مد ارسال و دریافت قرار بگیره اما با خطای timeout error مواجه شدم ممنونم میشم اگه زحمت بکشید و راهنمایی بفرمایید.

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      سلام وقت شما بخیر
      نیازی به ایجاد تاخیر نیست چون در اون قسمتی که ادیت میکنید به ازای هر بایت اون تاخیر ایجاد میشه و باعث ایجاد خطای تایم اوت میشه. و طبق تست های عملی بنده روی پروژه های مختلف با ای سی های max485 و sp3485 مشکلی از بابت ارسال دریافت وجود نداره.
      تنها موضوعی که نیاز دارید همین قسمت قرار دادن در حالت ارسال و دریافت هست که به کامنت یکی از دوستان در این رابطه پاسخ دادم و دقیقا اگر طبق اون عمل کنید مشکلی از بابت ارسال و دریافت در بستر 485 نخواهید داشت.
      اگر باز هم مشکل وجود داره اون فایلی که ادیت کردید که همان mbrtu هست را حذف کنید و فایل اورجینال کتابخانه را قرار بدید و بعد این تغییرات را ایجاد کنید

  5. خریدار محصول علی شیرخانی (مالک تایید شده)

    سلام اگه نخواهیم از تابع embpoll استفاده کنیم و بخواهیم در حالت وقفه رخ بدهد باید از چه توابع استفاده کنیم دو تا دیدم که نوشته بود در هنگام وقفه ارسال و دریاف هست اینا رو تست کردم و داخل قسمت it.c
    داخل irq uart این کار انجام شده ولی نمی دونم اگه نخوام embpoll استفاده کنم چه راهکاری هست؟

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      سلام با فراخوانی دستور embpoll شما برای مدتی پردازشگر را در اختیار این کتابخانه قرار میدهید تا پردازش های خودش را انجام بده و اینکه به صورت وقفه فراخوانی empoll انجام بشه امکانش نیست
      همچنین وقفه تعریف شده در واقع وقفه دریافت سریال هست که برای راه اندازی جزو لازمه های اضلی هستن.
      اما میتونید از freertos برای پروژتون استفاده کنید که در یک تسک جداگانه به مدباس رسیدگی کنید.
      در چنین مواقعی شخصا بنده یا از freertos استفاده میکنم یا مجددا کتابخانه مدباس را برای کاری که نیاز دارم از اول مینویسم تا عملکرد مورد نظر خودم را داشته باشه.

  6. خریدار محصول علی شیرخانی (مالک تایید شده)

    سلام اگه بخوام به جای embpoll از روش وقفه استفاده کنم راه حلش چیه ؟

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      در کامنت قبلی شما پاسخ داده شد

  7. m.h.Yazdani

    سلام
    برای دریافت دیتا از روی پورت سریال ازکدام روش استفاده شده ؟ برام مهمه بدونم چقدر پردازنده رو درگیر میکنه

  8. خریدار محصول محمد مهدی فتح الهی (مالک تایید شده)

    سلام وقت بخیر من این آموزش رو برای ارتباط با پی ال سی 1200 تهیه کردم ، بعد از اتصال داخل محیط دیباگ مقدار usregholdingreg تغییر نمیکند، در پی ال سی هم از تابع مدباس مستر و تابع شماره 16 مدباس استفاده کردم. اگه ممکن است راهنمایی بفرمایید

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      سلام وقتتون بخیر . پیشنهاد میکنم ابتدا مطابق مثال ببندید و تست بگیرید که از کد نویسی و ارتباطات مطمئن باشید همچنین برای فانکشن کدها مطابق مثال نرم افزار modbus pool که آموزش داده شده را استفاده کنید که از صحت ارتباط و دیتا ها و ارتباط مناسب با فانکشن کد ها مطمئن بشید و بعد برید سراغ اتصال اون به plc

  9. خریدار محصول asp (مالک تایید شده)

    سلام و عرض ادب
    ببخشید من از freeRTOS و مدباس استفاده کردم اما نیاز دارم تا از intrupte پورت سریال هم استفاده کنم البته سریالی به غیر از اونی که در مدباس استفاده شده که در یکی از تسک ها قرار دادم اما داده ها دریافت نمیشوند نمیدونم مشکل از کجاست ممنون میشم اگر راهنمایی بفرمایید

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      سلام وقت بخیر . اگر کانفیگ سریال مشکلی نداشته باشه باید بتونید دیتا را دریافت کنید همچنین داخل حلقه متغیر (RXxfercount اگر اشتباه نکنم..) باید دائما چک بشه که اگر 0 شد به مقدار اولیه طول دریافتی برگرده. البته میتونید از DMA هم استفاده کنید که نیازی به چک کردن دائمی هم نداره.
      در صورت نیاز میتونید از بخش انجام پروژه الکترونیک درخواست بدید تا پروژه تون انجام بشه پیروز باشید
      درخواست انجام پروژه الکترونیک

  10. jamali.zahra.s

    سلام
    آیا ارسال و دریافت ها در حلقه اصلی برنامه انجام میشه؟ یا در وقفه rx و tx انجام میشه؟

    • مدیر فروشگاه حمیدرضا محبوب مقدم

      سلام وقت بخیر. دریافت توسط وقفه انجام میشود و پردازش و ارسال در زمانی که پردازنده در اختیار مدباس قرار میگیره.

دیدگاه خود را بنویسید