مشاوره تخصصی ۰۹۱۲ ۰۰۴ ۶۳۷۳
LEARN KNOWLEDGE BASE

دانش فنی اتوماسیون صنعتی

LEARN

آموزش Modbus در PLC دلتا | ارتباط Modbus RTU با RS-485

راهنمای عملی ارتباط Modbus RTU در PLC دلتا؛ از RS-485، Station Address و Registerها تا دستورات MODRD و MODWR، ارتباط PLC با اینورتر و HMI و عیب‌یابی خطاهای رایج شبکه.

آموزش Modbus RTU و RS-485 در PLC دلتا برای ارتباط با HMI و اینورتر

پروتکل 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کاربرد عمومی
01Read Coils
02Read Discrete Inputs
03Read Holding Registers
04Read Input Registers
05Write Single Coil
06Write 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
    |
   Motor

PLC نقش دستگاه درخواست‌کننده را دارد و اینورتر اطلاعات موردنیاز را از طریق 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 RTUModbus TCP
بستر متداولSerial / RS-485Ethernet
شناسایی تجهیزStation/Slave AddressIP + Unit/Device context
CRC در Frame RTUداردساختار TCP متفاوت است
کابل متداولزوج سیم مناسب RS-485Ethernet
کاربردشبکه‌های 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ها

یک جدول ساده داشته باشید:

تجهیزStationBaud RateProtocol
Drive 11طبق طراحیModbus RTU
Drive 22طبق طراحیModbus RTU
Controller3طبق طراحی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 در دسترس هستند.

سوالی دارید؟

اگر در انتخاب یا پیاده‌سازی سیستم‌های اتوماسیون نیاز به راهنمایی دارید، با ما تماس بگیرید.

تماس با ما