پروتکل Modbus یکی از پرکاربردترین روشهای ارتباطی در اتوماسیون صنعتی است. از PLC و HMI گرفته تا اینورتر، کنترلر دما، Remote I/O و بسیاری از تجهیزات اندازهگیری صنعتی میتوانند از Modbus برای تبادل اطلاعات استفاده کنند.
در سیستمهای مبتنی بر PLC دلتا نیز Modbus کاربرد گستردهای دارد. یکی از سناریوهای متداول، استفاده از Modbus RTU روی شبکه RS-485 برای برقراری ارتباط PLC با تجهیزاتی مانند HMI یا اینورتر است.
با وجود سادگی نسبی Modbus، بخش زیادی از مشکلات ارتباطی در پروژههای واقعی از چند اشتباه ساده ایجاد میشود: Baud Rate متفاوت، Station Address اشتباه، جابهجایی خطوط RS-485، انتخاب Function Code نامناسب یا اشتباه در آدرس Register.
در این راهنما از مفاهیم پایه شروع میکنیم و سپس تنظیمات شبکه، Registerها، دستورات Modbus در PLC دلتا، ارتباط با تجهیزات دیگر و روش عیبیابی را بررسی میکنیم.
Modbus چیست؟
Modbus یک پروتکل ارتباطی صنعتی است که برای تبادل اطلاعات میان تجهیزات مختلف استفاده میشود.
در یک شبکه Modbus RTU معمولی، یک دستگاه درخواست ارسال میکند و تجهیز مقصد به آن پاسخ میدهد. در مستندات و نرمافزارهای صنعتی قدیمیتر معمولاً از اصطلاحهای Master و Slave استفاده میشود؛ در برخی مستندات جدیدتر نیز ممکن است اصطلاحهای Client و Server دیده شوند.
برای مثال، یک شبکه میتواند شامل این تجهیزات باشد:
PLC ← اینورتر ← کنترلر دما ← Remote I/O
PLC میتواند اطلاعاتی مانند وضعیت تجهیز، مقدار اندازهگیریشده یا پارامترهای عملیاتی را بخواند و در صورت مجاز بودن، فرمان یا Setpoint موردنظر را بنویسد.
سادگی ساختار Modbus یکی از دلایلی است که این پروتکل هنوز در بسیاری از سیستمهای اتوماسیون صنعتی استفاده میشود.
Modbus RTU چیست؟
Modbus RTU یکی از روشهای متداول انتقال پیامهای Modbus روی ارتباط Serial است.
در RTU اطلاعات به شکل فشرده و باینری منتقل میشوند و هر Frame شامل اطلاعاتی برای مشخصکردن تجهیز مقصد، نوع عملیات، داده و کنترل صحت پیام است.
یک Frame را بهصورت مفهومی میتوان چنین در نظر گرفت:
[ Slave Address ] [ Function Code ] [ Data ] [ CRC ]هر بخش وظیفه مشخصی دارد.
Slave Address مشخص میکند پیام برای کدام تجهیز است.
Function Code مشخص میکند چه عملیاتی درخواست شده است.
Data شامل آدرس و اطلاعات موردنیاز عملیات است.
و CRC برای بررسی صحت Frame مورد استفاده قرار میگیرد.
تفاوت Modbus RTU و RS-485 چیست؟
یکی از اشتباهات رایج در اتوماسیون صنعتی، یکی دانستن Modbus RTU و RS-485 است.
این دو مفهوم یکسان نیستند.
RS-485 مشخصات لایه فیزیکی/الکتریکی ارتباط را تعیین میکند؛ یعنی نحوه انتقال سیگنال میان تجهیزات.
در مقابل، Modbus RTU مشخص میکند اطلاعات چگونه قالببندی و تفسیر شوند.
به زبان ساده:
RS-485 مسیر انتقال است؛ Modbus RTU زبان گفتگو روی آن مسیر است.
بنابراین وقتی میگوییم:
Modbus RTU over RS-485
یعنی پیامهای Modbus RTU از طریق رابط فیزیکی RS-485 منتقل میشوند.
ساختار شبکه Modbus RTU

یک شبکه ساده میتواند به شکل زیر باشد:
PLC Delta
|
RS-485
|
+---- Inverter
|
+---- Temperature Controller
|
+---- Remote I/Oدر چنین شبکهای هر تجهیز باید آدرس مشخصی داشته باشد.
برای مثال:
PLC / Master
Inverter Station 1
Temperature Control Station 2
Remote I/O Station 3در یک Segment Modbus RTU، دو Slave نباید Station Address یکسان داشته باشند.
اگر دو دستگاه آدرس یکسان داشته باشند، پاسخها میتوانند باعث اختلال ارتباط شوند.
پارامترهای ارتباطی Modbus RTU
قبل از اینکه PLC و Slave بتوانند با یکدیگر ارتباط برقرار کنند، تنظیمات Serial باید سازگار باشند.
مهمترین پارامترها عبارتاند از:
Baud Rate
Baud Rate سرعت ارتباط Serial را مشخص میکند.
مقادیر رایج بسته به تجهیزات ممکن است شامل مواردی مانند:
9600
19200
38400
57600
115200باشد.
اما باید از مقادیری استفاده شود که هر دو تجهیز پشتیبانی میکنند.
بالا بردن Baud Rate همیشه به معنی شبکه بهتر نیست. طول کابل، کیفیت سیمکشی، نویز محیط و مشخصات تجهیزات نیز باید در نظر گرفته شوند.
Data Bits
در Modbus RTU معمولاً ساختار داده Serial براساس تنظیمات تجهیز تعیین میشود.
برای نمونه ممکن است در Manual یک تجهیز با قالبی مانند:
8,E,1مواجه شوید.
یعنی:
8 Data Bits
Even Parity
1 Stop Bitیا:
8,N,1که در آن N به معنی No Parity است.
Parity
Parity یکی از تنظیمات ارتباط Serial است.
حالتهای متداول عبارتاند از:
None
Even
Oddاگر PLC روی Even تنظیم شده باشد ولی Slave روی None باشد، ارتباط صحیح برقرار نخواهد شد.
Stop Bit
تعداد Stop Bit نیز باید مطابق تنظیمات دو سمت ارتباط انتخاب شود.
اصل مهم این است:
پارامترهای Serial دو طرف ارتباط باید با یکدیگر سازگار باشند.
تنظیم درست یک سمت بهتنهایی کافی نیست.
Station Address در Modbus چیست؟
در یک شبکه Modbus RTU هر Slave یک Station Address یا Slave ID دارد.
PLC با استفاده از این آدرس مشخص میکند درخواست برای کدام تجهیز ارسال شده است.
فرض کنید سه اینورتر روی یک Bus داریم:
Drive 1 → Station 1
Drive 2 → Station 2
Drive 3 → Station 3اگر PLC بخواهد اطلاعات Drive 2 را دریافت کند، Request را برای Station مربوط به همان دستگاه ارسال میکند.
یکی از اولین مواردی که هنگام Timeout باید بررسی شود همین Station Address است.
Register در Modbus چیست؟
دادههای تجهیزات Modbus معمولاً در ساختارهای آدرسپذیر قرار دارند.
در منابع Modbus با دستههایی مانند اینها روبهرو میشویم:
- Coil
- Discrete Input
- Input Register
- Holding Register
اما یک نکته مهم وجود دارد:
نحوه نمایش آدرس در Manual تجهیزات مختلف ممکن است متفاوت باشد.
مثلاً ممکن است Manual یک تجهیز Register را با یک شماره نمایشی نشان دهد، در حالی که Frame پروتکل یا نرمافزار PLC انتظار Offset متفاوتی داشته باشد.
به همین دلیل نباید صرفاً یک عدد را از جدول Manual برداریم و بدون بررسی Addressing Convention وارد برنامه کنیم.
این موضوع یکی از دلایل رایج خطای:
«ارتباط برقرار است ولی Register اشتباه خوانده میشود»
است.
Function Code در Modbus چیست؟
Function Code مشخص میکند Master چه عملیاتی از Slave درخواست کرده است.
Function Codeهای شناختهشده Modbus شامل عملیاتهایی مانند:
- خواندن Coil
- خواندن Input
- خواندن Register
- نوشتن یک Coil
- نوشتن یک Register
- نوشتن چند مقدار
هستند.
برای مثال Function Codeهای متداول Modbus شامل موارد زیر هستند:
| Function Code | کاربرد عمومی |
|---|---|
| 01 | Read Coils |
| 02 | Read Discrete Inputs |
| 03 | Read Holding Registers |
| 04 | Read Input Registers |
| 05 | Write Single Coil |
| 06 | Write Single Register |
| 15 (0F) | Write Multiple Coils |
| 16 (10) | Write Multiple Registers |
اما وجود یک Function Code در استاندارد Modbus به این معنی نیست که هر Slave الزاماً از آن پشتیبانی میکند.
همیشه جدول Communication Protocol تجهیز مقصد را بررسی کنید.
مراحل راهاندازی Modbus RTU در PLC دلتا
برای جلوگیری از سردرگمی بهتر است ارتباط را مرحلهبهمرحله راهاندازی کنیم.
مرحله ۱: Manual هر دو تجهیز را بررسی کنید
قبل از برنامهنویسی مشخص کنید:
- PLC از کدام Port استفاده میکند؟
- Slave چه Interfaceای دارد؟
- Modbus RTU پشتیبانی میشود؟
- Baud Rateهای مجاز چیست؟
- Parity چیست؟
- Register Map کجاست؟
- Function Codeهای قابل استفاده کداماند؟
این مرحله بسیار مهمتر از شروع مستقیم برنامهنویسی است.
مرحله ۲: اتصال RS-485
در مرحله بعد سیمکشی شبکه انجام میشود.
نامگذاری ترمینالهای RS-485 ممکن است میان سازندگان متفاوت باشد؛ بنابراین اتصال باید مطابق Manual همان تجهیزات انجام شود.
در شبکههای صنعتی باید به موارد دیگری نیز توجه کرد:
- کابل مناسب
- مسیر کابل
- فاصله از کابلهای قدرت
- توپولوژی شبکه
- Shield
- Grounding
- Termination
خصوصاً در محیطهایی که اینورتر، موتور یا تجهیزات قدرت وجود دارند، طراحی فیزیکی نامناسب میتواند باعث خطاهای متناوب ارتباط شود.
مرحله ۳: تنظیم Station Address
برای هر Slave یک آدرس یکتا تعیین کنید.
مثلاً:
Inverter 1 = 1
Inverter 2 = 2
HMI = 3در یک شبکه، آدرسها نباید بدون دلیل تکرار شوند.
مرحله ۴: یکسانکردن تنظیمات Serial
برای مثال اگر شبکه روی:
19200
8
Even
1تنظیم شده، تجهیزات شرکتکننده در همان ارتباط باید تنظیمات سازگار داشته باشند.
در این مرحله باید موارد زیر را یکبهیک کنترل کنید:
Baud Rate ← Data Bits ← Parity ← Stop Bit ← Mode
مرحله ۵: انتخاب Modbus RTU
در تجهیزاتی که چند Protocol یا Mode دارند باید حالت مناسب انتخاب شود.
ممکن است یک Port قابلیت استفاده در حالتهای مختلف را داشته باشد و صرفاً اتصال سیم RS-485 باعث فعال شدن Modbus RTU نشود.
تنظیم Communication در PLC دلتا
روش دقیق تنظیم Communication به سری PLC، CPU، Port و نرمافزار مورد استفاده بستگی دارد.
این نکته مهم است زیرا نمیتوان یک Register سیستمی یا روش Configuration را برای تمام PLCهای Delta عمومی کرد.
در برخی مدلهای DVP، Delta از Deviceهای سیستمی مشخصی برای پارامترهای ارتباط استفاده میکند. برای نمونه در بعضی مستندات DVP به Deviceهایی مانند:
D1120
D1121
M1143برای بخشهایی از تنظیم Protocol، Station Address یا انتخاب ASCII/RTU اشاره شده است.
اما:
این Deviceها را بدون بررسی Manual مدل PLC خودتان استفاده نکنید.
ممکن است معماری ارتباطی سری دیگری از PLCهای Delta متفاوت باشد.
برای سریهای جدیدتر نیز Configuration میتواند از طریق ابزارها و ساختار نرمافزاری دیگری انجام شود.
دستورات MODRD، MODWR و MODRW در PLC دلتا
در برخی PLCهای Delta برای ارتباط Modbus با دستورهایی مانند:
MODRD
MODWR
MODRWمواجه میشویم.
کاربرد کلی آنها به عملیات خواندن و نوشتن داده در ارتباط Modbus مربوط است.
دستور MODRD
MODRD برای سناریوهایی استفاده میشود که PLC باید دادهای را از Slave بخواند.
مثلاً:
PLC ← درخواست خواندن وضعیت تجهیز ← Slave
و سپس Slave پاسخ را برمیگرداند.
کاربرد ممکن است خواندن مواردی مانند:
- Status
- Frequency
- Temperature
- Process Value
- Alarm Code
باشد؛ البته Register واقعی باید از Manual تجهیز مقصد گرفته شود.
دستور MODWR
MODWR در سناریوی نوشتن اطلاعات روی تجهیز مقصد کاربرد دارد.
برای مثال PLC ممکن است بخواهد:
- Setpoint
- Command
- Parameter
را به Slave ارسال کند.
باز هم قابلیت Write و Register مقصد باید در Manual همان دستگاه بررسی شود.
دستور MODRW
MODRW برای عملیات ارتباطی Modbus و سناریوهای Read/Write مطابق قابلیت PLC مورد استفاده قرار میگیرد.
Syntax دقیق، Operandها و رفتار این دستورات به مدل PLC و Instruction Set آن وابسته است.
بنابراین قبل از استفاده، Programming Manual همان CPU باید مرجع اصلی باشد.
Delta نیز استفاده از دستورهای MODRD، MODWR و MODRW را در سناریوهای ارتباطی PLC مستند کرده است.
مثال عملی: ارتباط PLC دلتا با اینورتر از طریق Modbus
یکی از کاربردهای بسیار متداول Modbus، ارتباط PLC و اینورتر است.
ساختار سیستم را بهصورت زیر در نظر بگیرید:
PLC Delta
|
| RS-485 / Modbus RTU
|
Inverter
|
MotorPLC نقش دستگاه درخواستکننده را دارد و اینورتر اطلاعات موردنیاز را از طریق Registerهای Modbus ارائه میکند.
مرحله اول: تنظیم اینورتر
باید تنظیمات Communication اینورتر مشخص شوند.
برای مثال:
Station Address
Baud Rate
Parity
Stop Bit
Communication Modeهمچنین در بسیاری از Driveها لازم است منبع فرمان Run یا Frequency Reference بهدرستی انتخاب شود.
این تنظیمات وابسته به مدل اینورتر هستند.
مرحله دوم: پیدا کردن Register Map
در Manual اینورتر باید جدول Modbus پیدا شود.
این جدول مشخص میکند هر پارامتر در چه Registerی قرار دارد.
مثلاً ممکن است تجهیز Registerهایی برای موارد زیر داشته باشد:
Run Command
Frequency Command
Output Frequency
Drive Status
Fault Codeاما عمداً در این راهنما برای آنها شماره ثابت اعلام نمیکنیم، زیرا Register Map بین مدلهای مختلف متفاوت است.
مرحله سوم: خواندن وضعیت اینورتر
PLC میتواند با درخواست مناسب وضعیت Drive را بخواند.
منطق برنامه بهصورت مفهومی:
Send Read Request
↓
Wait For Response
↓
Validate Response
↓
Store Data
↓
Handle Errorیک برنامه صنعتی مناسب نباید صرفاً Request ارسال کند؛ باید وضعیت پاسخ را نیز کنترل کند.
مرحله چهارم: ارسال Setpoint
اگر Drive اجازه Write از طریق Communication را بدهد، PLC میتواند مقدار موردنظر را در Register مناسب بنویسد.
برای مثال:
PLC Frequency Setpoint
↓
Modbus Write
↓
Drive Registerاما قبل از Write باید Scaling مقدار نیز بررسی شود.
ممکن است مقدار 5000 در یک تجهیز به معنی 50.00 Hz باشد و در تجهیز دیگری Convention متفاوتی وجود داشته باشد.
مثال ارتباط PLC دلتا با HMI
سناریوی دیگر، ارتباط PLC و HMI است.
برای نمونه Delta سناریوی ارتباطی را مستند کرده که در آن PLC بهعنوان Master و HMI بهعنوان Slave از طریق RS-485 کار میکنند و برای ارتباط از دستورهای Modbus PLC استفاده میشود.
در عمل نقش PLC و HMI باید براساس معماری واقعی سیستم تعیین شود؛ در بسیاری از پروژهها نیز HMI مستقیماً نقش درخواستکننده دادههای PLC را دارد.
بنابراین قبل از Configuration مشخص کنید:
چه دستگاهی Request ارسال میکند؟
و:
چه دستگاهی باید به Request پاسخ دهد؟
اتصال چند دستگاه Modbus به یک PLC
یکی از مزیتهای RS-485 امکان ایجاد شبکه چندنقطهای است.
برای مثال:
┌── Drive #1
│
PLC ─ RS485 ─┼── Drive #2
│
├── Temperature Controller
│
└── Remote I/Oهر Slave آدرس متفاوتی دارد.
PLC میتواند به ترتیب با تجهیزات ارتباط برقرار کند.
PLC Link در PLCهای Delta
Delta برای برخی سناریوهای چندتجهیزی قابلیت PLC Link را نیز ارائه میکند.
در مستندات Delta، برای WPLSoft به PLC Link Configuration و برای ISPSoft به ابزار/جدول مربوط به PLC Link اشاره شده است. این قابلیت میتواند در برخی معماریها مدیریت تبادل داده با تجهیزات Modbus را ساختاریافتهتر کند.
اما قابلیت دقیق PLC Link و تعداد تجهیزات قابل پشتیبانی باید براساس CPU و مستندات همان سری بررسی شود.
Polling در شبکه Modbus
در شبکهای با چند Slave، PLC معمولاً درخواستها را طبق یک Sequence مدیریت میکند.
برای مثال:
Read Drive 1
↓
Read Drive 2
↓
Read Temperature
↓
Write Setpoint
↓
Repeatطراحی Polling اهمیت زیادی دارد.
ارسال بیوقفه Request بدون توجه به وضعیت Busy، Response یا Timeout میتواند باعث عملکرد نامطمئن ارتباط شود.
یک معماری بهتر وضعیت ارتباط را مدیریت میکند:
IDLE
↓
SEND
↓
WAIT
↓
SUCCESS / ERROR
↓
NEXT DEVICEاین ساختار در پروژههای بزرگتر بسیار قابل نگهداریتر است.
Timeout در Modbus چیست؟
PLC پس از ارسال Request نمیتواند برای همیشه منتظر پاسخ بماند.
اگر Slave در مدت تعیینشده پاسخ ندهد، ارتباط باید Timeout شود و برنامه تصمیم مناسب بگیرد.
مثلاً:
Request
↓
Waiting
↓
Timeout?
┌───────┐
No Yes
↓ ↓
Read Error
Data Handlerدر سیستم واقعی بهتر است خطای ارتباطی فقط یک Bit ساده نباشد.
میتوان اطلاعاتی مانند:
- تعداد خطا
- آخرین زمان ارتباط موفق
- Station دارای خطا
- Retry Count
- Communication Status
را نیز مدیریت کرد.
آیا بعد از Timeout باید دائماً Retry کنیم؟
نه لزوماً.
Retry بدون محدودیت میتواند شبکه را با درخواستهای بینتیجه درگیر کند.
بسته به اهمیت تجهیز میتوان منطقهایی مانند:
Retry 1
↓
Retry 2
↓
Retry 3
↓
Communication Faultطراحی کرد.
سپس بعد از یک Delay مشخص دوباره ارتباط را امتحان کرد.
این طراحی باید متناسب با فرآیند باشد.
قطع ارتباط یک نمایشگر دما ممکن است رفتار متفاوتی نسبت به قطع ارتباط یک Drive حیاتی نیاز داشته باشد.
عیبیابی Modbus RTU در PLC دلتا
اگر ارتباط برقرار نشد، بهتر است بهجای تغییر تصادفی تنظیمات، مرحلهبهمرحله عیبیابی کنید.
۱. Station Address را بررسی کنید
آدرس PLC در Request باید با Station Address تجهیز مقصد مطابقت داشته باشد.
۲. Baud Rate را بررسی کنید
مثلاً اگر PLC:
19200باشد و Slave:
9600باشد، ارتباط صحیح شکل نمیگیرد.
۳. Parity و Stop Bit را بررسی کنید
حتی با Baud Rate صحیح، تفاوت در Parity یا Stop Bit میتواند باعث شکست Communication شود.
۴. حالت RTU/ASCII را بررسی کنید
Modbus Serial میتواند Modeهای متفاوتی داشته باشد.
اگر یک سمت روی RTU و سمت دیگر روی ASCII تنظیم شده باشد، پیامها با یکدیگر سازگار نیستند.
۵. سیمبندی RS-485 را بررسی کنید
مشکل در خطوط Differential، اتصال نامناسب، توپولوژی بد یا نویز میتواند Communication را مختل کند.
نامگذاری ترمینالها را نیز براساس Manual بررسی کنید و صرفاً بر اساس رنگ یا نام سیم قبلی تصمیم نگیرید.
۶. Register Address را بررسی کنید
اگر Communication برقرار است اما مقدار اشتباه دریافت میشود، Addressing را بررسی کنید.
به تفاوت بین:
Register Number
و
Protocol Address/Offset
توجه داشته باشید.
۷. Function Code را بررسی کنید
ممکن است Register درست باشد ولی Function Code اشتباه انتخاب شده باشد.
همچنین ممکن است Slave Function Code موردنظر را اصلاً پشتیبانی نکند.
۸. Data Type را بررسی کنید
یک مقدار همیشه یک Word ساده نیست.
ممکن است داده:
- 16-bit
- 32-bit
- Signed
- Unsigned
- Floating Point
باشد.
در دادههای چندرجیستری، Word Order/Byte Order نیز ممکن است اهمیت پیدا کند.
۹. Scaling را بررسی کنید
فرض کنید Register مقدار:
253را برمیگرداند.
این الزاماً به معنی 253 واحد واقعی نیست.
ممکن است Manual مشخص کرده باشد:
253 = 25.3 °Cپس Scaling بخشی از تفسیر داده است.
چرا Modbus گاهی کار میکند و گاهی قطع میشود؟
اگر ارتباط کاملاً قطع نیست ولی ناپایدار است، احتمالاً فقط با یک اشتباه ساده در Station Address روبهرو نیستیم.
مواردی مانند:
- نویز الکتریکی
- کابلکشی نامناسب
- مسیر مشترک با کابل قدرت
- Grounding نامناسب
- Termination نامناسب
- Polling بسیار سریع
- Timeout نامتناسب
- کیفیت اتصال
- معماری نامناسب شبکه
باید بررسی شوند.
وجود اینورتر و موتور در تابلو نیز بررسی EMC و طراحی صحیح کابلکشی را مهمتر میکند.
آیا میتوان Modbus را در Simulator نرمافزار Delta تست کرد؟
در اینجا باید احتیاط کنیم.
طبق FAQ رسمی Delta، Simulator از برخی Instructionهای ارتباطی از جمله:
MODRD
MODWR
MODRW
پشتیبانی نمیکند. همچنین Delta تأکید میکند رفتار Simulator الزاماً کاملاً مشابه PLC واقعی نیست.
بنابراین برای تأیید نهایی ارتباط Modbus باید تست روی سختافزار واقعی انجام شود.
Simulator میتواند برای بخشهای دیگری از Logic مفید باشد، اما جای تست Communication واقعی را نمیگیرد.
تفاوت Modbus RTU و Modbus TCP
هر دو از خانواده Modbus هستند اما بستر ارتباطی آنها متفاوت است.
| ویژگی | Modbus RTU | Modbus TCP |
|---|---|---|
| بستر متداول | Serial / RS-485 | Ethernet |
| شناسایی تجهیز | Station/Slave Address | IP + Unit/Device context |
| CRC در Frame RTU | دارد | ساختار TCP متفاوت است |
| کابل متداول | زوج سیم مناسب RS-485 | Ethernet |
| کاربرد | شبکههای Serial صنعتی | شبکههای Ethernet صنعتی |
در Modbus TCP پیامهای Modbus روی شبکه TCP/IP منتقل میشوند.
برخی کنترلرها و تجهیزات Ethernet دلتا نیز از Modbus TCP پشتیبانی میکنند، اما قابلیت دقیق باید برای مدل مورد استفاده بررسی شود.
Modbus RTU بهتر است یا Modbus TCP؟
هیچ پاسخ ثابتی برای همه پروژهها وجود ندارد.
اگر تجهیزات موجود عمدتاً RS-485 هستند و حجم داده محدود است، Modbus RTU میتواند راهکار ساده و اقتصادی باشد.
اگر زیرساخت Ethernet وجود دارد یا معماری سیستم نیازمند شبکه Ethernet است، Modbus TCP ممکن است مناسبتر باشد.
انتخاب باید براساس:
- تجهیزات
- فاصله
- توپولوژی
- حجم داده
- سرعت موردنیاز
- زیرساخت موجود
- قابلیت نگهداری
- هزینه
انجام شود.
نکات طراحی یک شبکه Modbus قابل اعتماد
برای داشتن شبکه پایدار، فقط صحیح بودن کد PLC کافی نیست.
مستندسازی Stationها
یک جدول ساده داشته باشید:
| تجهیز | Station | Baud Rate | Protocol |
|---|---|---|---|
| Drive 1 | 1 | طبق طراحی | Modbus RTU |
| Drive 2 | 2 | طبق طراحی | Modbus RTU |
| Controller | 3 | طبق طراحی | Modbus RTU |
این جدول در Commissioning و تعمیرات بسیار مفید است.
Register Map پروژه بسازید
به جای اینکه آدرسها در قسمتهای مختلف برنامه پراکنده باشند، یک مستند مشخص داشته باشید:
Device
Parameter
Register
Function
Data Type
Scale
Read/Write
Descriptionاین کار عیبیابی پروژه را بسیار سادهتر میکند.
خطای Communication را در HMI نمایش دهید
اگر یک Slave قطع شود، اپراتور باید بتواند متوجه شود.
مثلاً:
Drive 2 Communication Fault
بسیار مفیدتر از یک Alarm عمومی مانند:
Communication Error
است.
وضعیت آخرین داده معتبر را مدیریت کنید
اگر ارتباط قطع شود باید مشخص باشد دادهای که HMI نمایش میدهد:
داده جدید است یا آخرین مقدار دریافتشده قبل از قطع ارتباط؟
این موضوع در سیستمهای مانیتورینگ اهمیت زیادی دارد.
اشتباهات رایج در Modbus PLC دلتا
بخش زیادی از مشکلات پروژهها به چند مورد تکراری برمیگردد:
اشتباه گرفتن RS-485 با Modbus
RS-485 بهتنهایی به معنی Modbus نیست.
کپی کردن Register از یک مدل دیگر
حتی دو تجهیز از یک سازنده میتوانند Register Map متفاوت داشته باشند.
نادیده گرفتن Offset
شمارهای که در Manual میبینید الزاماً همان مقداری نیست که باید مستقیماً در همه نرمافزارها وارد شود.
تغییر چند تنظیم همزمان هنگام عیبیابی
در این حالت پیدا کردن علت واقعی مشکل دشوار میشود.
عدم مدیریت Timeout
برنامه نباید در صورت قطع یک Slave رفتار نامشخص پیدا کند.
تست نکردن سختافزار واقعی
Communication باید روی شبکه واقعی بررسی شود.
سوالات متداول درباره Modbus در PLC دلتا
Modbus RTU چیست؟
Modbus RTU یکی از روشهای متداول ارتباط Serial در اتوماسیون صنعتی است که برای تبادل اطلاعات میان تجهیزاتی مانند PLC، HMI، اینورتر و کنترلرهای صنعتی استفاده میشود.
آیا RS-485 همان Modbus است؟
خیر. RS-485 مشخصات ارتباط الکتریکی را تعیین میکند، در حالی که Modbus یک پروتکل برای ساختار و تفسیر پیامهاست. Modbus RTU معمولاً روی RS-485 استفاده میشود.
PLC دلتا میتواند با اینورتر از طریق Modbus ارتباط برقرار کند؟
در مدلهایی که Interface و قابلیت لازم را دارند، بله. تنظیمات و Instructionهای دقیق باید براساس Manual PLC و اینورتر انتخاب شوند.
MODRD و MODWR در PLC دلتا چه کاربردی دارند؟
در PLCهای پشتیبانیشده، این دستورها در عملیات خواندن و نوشتن داده از طریق Modbus استفاده میشوند. Syntax دقیق باید از Programming Manual همان PLC بررسی شود.
چرا PLC از Slave پاسخ نمیگیرد؟
دلایل رایج شامل Station Address اشتباه، Baud Rate یا Parity متفاوت، تنظیم RTU/ASCII نامناسب، سیمبندی RS-485، Function Code اشتباه یا مشکل فیزیکی شبکه است.
چرا ارتباط برقرار است ولی مقدار Register اشتباه است؟
Register Address/Offset، Function Code، Data Type، Word/Byte Order و Scaling را بررسی کنید.
آیا چند دستگاه را میتوان به یک شبکه RS-485 متصل کرد؟
RS-485 برای شبکههای چندنقطهای طراحی شده است، اما تعداد تجهیزات، توپولوژی، طول شبکه و سایر محدودیتها باید مطابق مشخصات تجهیزات و طراحی فیزیکی شبکه بررسی شوند.
آیا میتوان ارتباط Modbus را فقط با Simulator ISPSoft آزمایش کرد؟
برای تأیید نهایی خیر. Delta اعلام کرده Simulator برخی Instructionهای ارتباطی مانند MODRD، MODWR و MODRW را پشتیبانی نمیکند و تست نهایی باید روی سختافزار واقعی انجام شود.
جمعبندی
Modbus RTU یکی از مهمترین پروتکلهایی است که هنگام کار با PLC و تجهیزات اتوماسیون صنعتی با آن روبهرو میشویم.
برای راهاندازی یک ارتباط پایدار در PLC دلتا باید چند لایه را جداگانه بررسی کنیم:
لایه فیزیکی:
RS-485، کابلکشی، توپولوژی و شرایط محیطی.
لایه ارتباط Serial:
Baud Rate، Parity، Stop Bit و سایر پارامترها.
لایه Modbus:
Station Address، Function Code و Register Address.
لایه برنامه PLC:
ارسال Request، دریافت Response، مدیریت Busy، Timeout، Retry و Error.
لایه فرآیند:
تفسیر صحیح Data Type، Scaling و تصمیمی که ماشین در صورت قطع ارتباط باید بگیرد.
اگر این لایهها بهصورت مرحلهای بررسی شوند، عیبیابی Modbus بسیار سادهتر از تغییر تصادفی تنظیمات خواهد بود.
در پروژههای واقعی نیز Manual مدل دقیق PLC و تجهیز مقصد مرجع نهایی است؛ بهخصوص برای Register Map، Instruction Syntax و تنظیمات Communication.
برای طراحی و برنامهنویسی شبکههای صنعتی، ارتباط PLC با HMI و اینورتر و عیبیابی سیستمهای کنترل میتوانید از بخش خدمات مهندسی PLCSEA استفاده کنید. سایر آموزشهای تخصصی PLC و اتوماسیون نیز در دانشنامه PLCSEA در دسترس هستند.

