HPR4758: کنترل منطق قابل برنامه ریزی - قسمت 6

به قلم Whiskeyjack28/10/2026 às 00:00106 بازدید
Foto: CC BY-SA / Hacker Public Radio
🎙 Whiskeyjack · Hacker Public Radio

این برنامه توسط برگزارکننده به عنوان "مناسب برای تمام سنین" (Clean) طبقه‌بندی شده است.

01 مقدمه

این قسمت ششم از یک مجموعه 8 قسمتی است.

02

در قسمت قبلی، ما به ماژول‌های ورودی/خروجی پرداختیم، تعریف آن‌ها، نحوه عملکرد آن‌ها و هدف آن‌ها در سیستم را بررسی کردیم.

ما همچنین در مورد سیستم‌های ایمنی ماشین و همچنین ادعاهای مطرح شده توسط برخی افراد در مورد امنیت سایبری و ایمنی صنعتی بحث کردیم.

در این قسمت، ما به بررسی شبکه‌های PLC و همچنین بررسی دقیق پروتکل شبکه Modbus خواهیم پرداخت.

3 نوع شبکه

شبکه‌های PLC به سه دسته کلی بر اساس هدف شبکه، تقسیم می‌شوند.

این دسته‌بندی‌ها

• PLC به IO

• ارتباط مستقیم بین PLC ها

• و PLC به کامپیوتر یا کامپیوتر شخصی.

اینها بسیار با هم مرتبط هستند، بنابراین انتظار نداشته باشید که به راحتی و به صورت جداگانه دسته‌بندی شوند.

04 تعدد پروتکل‌ها

از نظر منطقی، انتظار می‌رود که مزایای یکپارچگی به حدی زیاد باشند که تنها چند پروتکل شبکه وجود داشته باشد و همه از آن‌ها استفاده کنند.

واقعیت برعکس است.

تعداد بسیار زیادی از پروتکل‌ها وجود دارد که من قصد فهرست کردن همه آن‌ها را ندارم.

اتوماسیون صنعتی یک بازار است که به شدت تحت کنترل فروشندگان، نه مشتریان، قرار دارد و فروشندگان، ارزش قفل کردن مشتری را بر مزایای کاربر قرار می‌دهند.

05

به جای آن، من بر توسعه فناوری در طول زمان تمرکز خواهم کرد تا بتوانید درک کنید که ما چگونه به جایی که هستیم رسیدیم.

من این موضوع را با چند پروتکل از چند شرکت توضیح می‌دهم و سپس به جزئیات یک خانواده خاص از شبکه‌ها می‌پردازم.

۶ نکته اساسی برای ارتباط سریال نقط به نقط

اولین و ساده‌ترین شبکه‌ها، لینک‌های سریال نقط به نقط ساده بودند.

شما ممکن است استدلال کنید که یک اتصال نقطه‌ای یک شبکه نیست، اما در این مورد، این نقطه شروع اتصال با PLC است و یکی از مهم‌ترین پروتکل‌های شبکه صنعتی امروزی، یک مشتق مستقیم از یکی از پروتکل‌های نقطه‌ای اولیه است.

07

این لینک‌های نقطه‌ای در ابتدا به دو مسئله اصلی می‌پرداختند.

یکی از این روش‌ها این بود که زمانی که کامپیوترها برای اجرای نرم‌افزاری که برای برنامه‌نویسی PLCها مورد نیاز بود، استفاده می‌شد، به یک روش برای دانلود برنامه به PLC و همچنین اشکال‌زدایی برنامه PLC نیاز بود، و این کار از طریق یک ارتباط سریال نقطه‌به‌نقطه انجام می‌شد.

08

یکی دیگر از موارد استفاده، وجود دستگاه‌ها و ابزارهای مختلفی بود که بر پایه میکروپروسسور عمل می‌کردند و در آن، امکان برقراری ارتباط بین PLC و این دستگاه‌ها برای دریافت داده‌ها، تنظیم مقادیر و انجام سایر تبادل اطلاعات، مطلوب بود.

این اتصال سریال، روش واضحی برای پیاده‌سازی این بود.

وسایل فیزیکی و الکتریکی به طور کلی شامل RS-232، RS-422 یا حلق جریان سریال بودند.

09 RS-232

RS-232 باید برای اکثر مخاطبان آشنا باشد.

یکی از ویژگی‌های برجسته RS-232 این است که سیگنال‌های داده و کنترلی به زمین، یا به عبارت دیگر، "سیگنال‌های تک‌سر" ارجاع داده می‌شدند.

در حالی که این روش ساده بود، اما محدودیت‌هایی را در مورد طول کابل‌ها ایجاد می‌کرد و در مواردی که PLC و دستگاه دیگر به منابع تغذیه جداگانه متصل می‌شدند و زمین مشترکی نداشتند، مشکل‌ساز می‌شد.

10 دستگاه RS-422

RS-422 با RS-232 تفاوت دارد به این معنی که سیگنال‌ها به جای ارجاع به یک نقطه زمین مشترک، تفاضلی هستند.

خطوط سیگنال به صورت جفت ارائه می‌شوند و تفاوت ولتاژ در داخل این جفت، نه نسبت به زمین، بلکه نسبت به یکدیگر، تعیین‌کننده صفر و یک هستند.

این امکان انتقال داده با سرعت بالاتر را فراهم می کند، تا 10 مگابیت در هر ثانیه در مسافت های بسیار کوتاه و همچنین کابل های طولانی تر، تا 1200 متر، با هزینه سرعت داده پایین تر.

11

RS-422 همچنین امکان اتصال چندین گیرنده به یک سیم را فراهم می کرد، اگرچه فقط یک فرستنده مجاز بود.

این امکان را فراهم می کرد که چندین دستگاه "گوش دهند" در یک مجموعه سیم ها، اگرچه فقط یک گره می توانست "صحبت کند".

12 حلقه جریان سریال یا TTY

برخی از PLC ها، به ویژه سیمیز، از یک حلقه جریان سریال به جای RS-232 یا RS-422 استفاده می کردند.

این به عنوان یک رابط TTY شناخته می‌شود، زیرا با دستگاه‌های تِلِتیپ منشأ دارد.

ممکن است با اصطلاح TTY که برای توصیف پنجره‌های ترمینال در سیستم‌های عامل شبیه به یونیکس استفاده می‌شود، آشنا باشید.

13

این به دلیل این است که کامپیوترهای اولیه از تجهیزات تِلِتیپ آماده برای ارائه ترمینال‌های اپراتور استفاده می‌کردند.

این از تفاوت‌های جریان به جای تفاوت‌های ولتاژ برای انتقال سیگنال‌ها استفاده می‌کرد.

زمانی که 20 میلی‌آمپر جریان دارد، این نشان‌دهنده "1" است.

هنگامی که 0 میلی آمپر جریان وجود داشته باشد، این نشان‌دهنده "0" است.

حلقات جریان متوالی می‌توانند به طور قابل اعتماد در مسافت‌های بیشتر از RS-232، تا یک کیلومتر در نرخ داده‌های پایین‌تر، کار کنند.

14 پروتکل‌های رایج

یک استاندارد الکتریکی مانند RS-232 امکان انتقال صفر و یک از طریق یک سیم را فراهم می‌کند.

اما این تعریف نمی‌کند که این صفرها و یک‌ها چه معنایی دارند.

این امر نیازمند یک پروتکل داده است.

15

هر سازنده تمایل داشت پروتکل خاص خود را ایجاد کند.

مودی‌کان نرم‌افزار مودبوس را توسعه داد.

آلن برادلی، DF1 را اختراع کرد.

شرکت سیمنز مدل‌های 3964R و RK512 را تولید کرد.

سایر تولیدکنندگان نیز معمولاً سیستم‌های خود را داشتند.

من در مورد مودبوس به تفصیل صحبت خواهم کرد، اما در اینجا به تفصیل در مورد این پروتکل‌ها نخواهم پرداخت.

16 سریال چند-گیرنده

سریال نقطه به نقطه، حتی RS-422 که امکان دریافت چند سیگنال را فراهم می‌کرد، کار می‌کرد، اما با تعداد زیادی محدودیت مواجه بود.

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

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

17 RS-485

مطلوب این است که یک راه برای اجازه دادن به دستگاه‌های سریال متعدد برای به اشتراک گذاشتن یک لینک ارتباطی سریال وجود داشته باشد.

راه حل این امر RS-485 است.

مانند RS-422، از سیگنال‌دهی تفاضلی استفاده می‌کند.

این همچنین امکان ارسال چندین سیگنال از طریق یک سیم را فراهم می‌کند.

در مقابل، RS-485 امکان استفاده از چندین فرستنده را فراهم می‌کند، در حالی که RS-422 این امکان را ندارد.

تا 32 گره می‌توان به یک کابل RS-485 متصل شوند.

این محدودیت توسط ویژگی‌های الکتریکی کابل و تراشه‌های فرستنده و گیرنده تعیین می‌شود.

18 پروتکل جدید

تولیدکنندگان PLC پروتکل‌های موجود خود را تطبیق دادند یا پروتکل‌های جدیدی را ایجاد کردند.

آلن برادل پروتکل سریالی DF1 خود را با Data Highway، Data Highway Plus و Data Highway 485 تطبیق دادند.

شرکت سیمنز با توسعه L1، پروفی‌بوس و پروفی‌بوس-دی‌پی.

19 مقایسه Master-Slave با Multi-Master

بسیاری از این شبکه‌ها سیستم‌های استادی-فرمانی بودند.

یک گره به عنوان گره اصلی شبکه تعیین شده و از هر یک از گره‌های دیگر، که گره‌های برده نامیده می‌شوند، درخواست اطلاعات می‌کرد.

این نوع پیکربندی برای بسیاری از کاربردها مناسب بود، جایی که هدف اصلی، این بود که یک PLC به عنوان سرور شبکه عمل کند و از دستگاه‌های دیگر که در فاصله دور قرار دارند، اطلاعات را جمع‌آوری کند.

20

یکی از کاربردهای اولیه این فناوری، امکان قرار دادن رک‌های ورودی و خروجی (IO) در فاصله نسبتاً دور از پردازنده اصلی PLC بود.

این امر همچنین به این امکان را فراهم کرد که رک‌های IO در ماشین‌های بسیار بزرگ، به دستگاه‌هایی که به آن‌ها متصل هستند، مانند سوئیچ‌ها، شیرها یا رله‌ها، نزدیک‌تر باشند، و در نتیجه، میزان کابل‌کشی و سیم‌کشی مورد نیاز را کاهش داد.

21

توسعه بیشتر این قطعه تولید شده به صورت بلوک‌هایی که می‌توانند مستقیماً روی دستگاه نصب شوند و نیازی به محفظه الکتریکی جداگانه نداشته باشند.

اینها حتی می‌توانند مستقیماً در مجموعه‌های شیر، که مجموعه‌هایی از شیرها هستند که یک فضای مشترک دارند، ادغام شوند.

22

با این حال، این محدودیت‌هایی داشت وقتی هدف، اتصال و هماهنگی چندین PLC با یکدیگر بود.

با یک سیستم استثنایی ارباب و برده، یکی از PLC ها باید به عنوان "مستر" تعیین شود و برنامه PLC باید وظیفه انتقال پیام بین PLC های دیگر را بر عهده بگیرد.

23

راه حل این مسئله، یک شبکه چند-مستر بود.

به طور معمول، سیم‌کشی فیزیکی همچنان از نوع RS-485 یا برخی از انواع اختصاصی آن استفاده می‌کرد.

با این حال، این پروتکل باید تغییر کند تا امکان وجود چندین سرور را فراهم کند.

این معمولاً نوعی پروتکل انتقال توکن بود، که در آن "توکن"، که یک قطعه داده برای تعیین سرور بود، از یک گره به گره دیگر منتقل می‌شد تا هر گره به طور موقت به عنوان سرور عمل کند.

شبکه‌های سطح دستگاه 24

کاهش تعداد کابل‌ها و سیم‌ها و در نتیجه صرفه‌جویی در هزینه‌های نصب، انگیزه بیشتری برای گسترش شبکه‌ها تا دستگاه‌های فردی مانند سوئیچ‌ها یا شیرهای منفرد ایجاد کرد.

من قصد ندارم در مورد جزئیات زیاد این موضوعات صحبت کنم، بلکه فقط چند نمونه رایج را ذکر خواهم کرد.

برخی از سیستم‌های کاملاً اختصاصی مانند سیستم ASI شرکت سیمیانس وجود داشت.

25

همچنین، تعدادی سیستم بر اساس CAN وجود داشت که مخفف Controller Area Network است.

CAN از صنعت خودروسازی آمده است و برای اتصال و ارتباط بین بخش‌های مختلف خودرو طراحی شده است.

شاید شما در خودروی خود یک شبکه CAN داشته باشید، حتی اگر از آن آگاه نباشید.

26

صنایع اتوماسیون صنعتی از استانداردهای CAN موجود و مجموعه‌های تراشه، و همچنین پروتکل‌های خود را برای ایجاد شبکه‌هایی در سطح دستگاه اضافه کردند.

برخی از نمونه‌های رایج از این نوع عبارتند از: کنابس و دستگاه‌های آلن برادلی، دیویک‌نیت.

27 ظهور اترنت

شبکه ارتباطی در سطح کارخانه زمانی ظهور کرد که استفاده از آن در دفاتر کارخانه رایج شده بود.

این امر، همراه با ماهیت بسیار پراکنده از صنعت اتوماسیون صنعتی، باعث می‌شد که دستیابی به مزایای مقیاس در تولید تجهیزات شبکه دشوار باشد.

این همچنین به این معنی بود که هر شرکت مجبور بود تلاش‌های تحقیق و توسعه خود را به سمت توسعه محصولاتی اختصاص دهد که عملکرد مشابهی را در جای دیگری تکرار می‌کنند.

28

در همین حال، فناوری شبکه در محیط‌های اداری در حال گسترش بود و به تدریج حول اترنت و TCP/IP متمرکز می‌شد.

مقیاس بزرگ این بازار و استانداردهای توسعه‌یافته، منجر به کاهش قابل توجه هزینه‌ها به دلیل اقتصاد مقیاس و رقابت بین تامین‌کنندگان شد.

29

با مشاهده این روند در صنعت فناوری اطلاعات، شرکت‌های اتوماسیون تصمیم گرفتند استانداردهای شبکه IT را به طور کامل بپذیرند، حداقل از نظر سیم‌کشی فیزیکی و پروتکل‌های سطح پایین.

آنها می‌توانستند از پروتکل‌های سطح برنامه خود استفاده کنند و وابستگی به تامین‌کننده را حفظ کنند.

30

برخی از نمونه‌های متداول این پروتکل‌ها عبارتند از Siemens Profinet، Allen Bradley Ethernet/IP و Modbus/TCP، که همگی نسخه‌هایی از پروتکل‌های موجود برای کار بر روی اترنت بودند.

تاکنون، خلاصه: 31

تا این لحظه در این قسمت، ما به بررسی ریشه‌های شبکه‌سازی در اتوماسیون صنعتی، از جمله

اتصالات سریال نقط به نقط

شبکه‌های مستر-اسلاو سریال چندگانه

شبکه‌های چندگانه با چندین سرور و چندین مستر

به پذیرش اترنت

در این مرحله، باید درک نسبی از زمینه ای که شبکه‌سازی در صنعت انجام می‌شود و همچنین از کاربردهای آن برخوردار باشید.

در ادامه، ما به طور خاص به یک پروتکل، یعنی مودبوس، می‌پردازیم.

32 Modbus

زمینه

مودبوس توسط مودیکون در سال 1979 ایجاد شد.

اگر به قسمت‌های قبلی توجه کرده باشید، شرکت مودیکون، که اکنون بخشی از شرکت Schneider Electric است، یکی از اولین شرکت‌هایی بود که PLC را توسعه داد.

33

مودیکون مشخصات را منتشر کرد تا سایرین بتوانند آن را پیاده‌سازی کنند، و این امر باعث شد که این استاندارد اتوماسیون صنعتی یکی از معدود استانداردهای واقعاً باز و بدون حق امتیاز باشد.

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

34

با این حال، هر کسی می‌تواند مشخصات Modbus را دانلود کند، آن را پیاده‌سازی کند و از آن به هر شکلی که می‌خواهد استفاده کند.

تعداد زیادی از کتابخانه‌های Modbus به صورت نرم‌افزارهای رایگان در دسترس هستند.

35 نسخه یا واریانت از Modbus

چندین نوع مختلف از Modbus وجود دارد که از نظر رسانه فیزیکی یا برنامه، از یکدیگر متمایز می‌شوند.

این‌ها

• مودبوس RTU

• مودبوس ASCII

• مودبوس پلاس

• و مودبوس TCP

36 مودبوس RTU

این نسخه اصلی پروتکل مودبوس است و یک پروتکل ارتباطی سریال نقطه‌به‌نقطه است.

RTU در این نام، مخفف "واحد ترمینال از راه دور" است، که نام یک دستگاه صنعتی است که دارای یک رابط سریال یا شبکه است و به عنوان رابطی برای تجهیزات میدانی عمل می‌کند.

یک نمونه متداول می‌تواند یک شمارنده جریان در یک لوله باشد.

این پروتکل به طور گسترده توسط طرف‌های ثالث پیاده‌سازی شد.

37

فرمت داده متوالی به شرح زیر است:

• 8 بیت باینری

• یک بیت شروع

• 8 بیت داده، بیت کم‌اهمیت‌ترین ابتدا

• یک بیت پاریتی

• یک بیت توقف

فیلد بررسی تکراری 16 بیتی در پیام گنجانده شده است.

38 Modbus ASCII

Modbus RTU به عنوان یک پروتکل سریال طراحی شده است و دارای مشخصات زمان‌بندی بسیار دقیق بر اساس بیت است.

این بدان معنا بود که این سیستم به طور قابل اعتماد از طریق لینک‌های رادیویی برای سرویس‌دهی به موارد مانند سیستم‌های آب، میدان‌های نفت و سایر برنامه‌های توزیع شده کار نمی‌کرد.

علاوه بر این، پروتکل Modbus RTU یک پروتکل باینری است، و این بدان معناست که برخی از مقادیر می‌توانند توسط سخت‌افزار ارسال‌کننده یا گیرنده به عنوان کدها تفسیر شوند.

39

راه حل این مسئله، استفاده از Modbus ASCII بود.

این داده‌ها به فرمت ASCII، با تبدیل هر بایت به دو بایت هگزادسیمال، ارسال می‌شد.

محدودیت‌های زمانی سریال، برای اینکه سخت‌افزار بتواند به طور موثر به آن پاسخ دهد، کاهش یافت.

40

فرمت سریال به این صورت است:

• هگزادسیمال، کاراکترهای ASCII 0-9 و A-F

• 1 بیت شروع

• 7 بیت داده، بیت کم‌اهمیت‌ترین به اول ارسال می‌شود

• یک بیت کنترل

• یک بیت توقف

41

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

بررسی افزونگی طولانی، به عنوان داده‌های رمزگذاری شده ASCII، در کنار کاراکترهای پایان‌بندی قرار داده شد.

42

از آنجایی که پیام‌های ASCII Modbus دو برابر تعداد بایت‌های پیام‌های Modbus RTU را داشت، فقط می‌توانست داده‌ها را با سرعت نصف منتقل کند. این بدان معنا بود که استفاده از Modbus ASCII محدود به کاربردهایی بود که برای آن طراحی شده بود، یعنی ارتباطات رادیویی.

Modbus Plus

Modbus Plus، Modbus است که برای کار در شبکه سریال چندگانه RS-485 تطبیق داده شده است.

با این حال، هرگز بخشی از مشخصات Modbus نبود و متعلق به Modicon بود.

من دیگر نیازی به توضیح بیشتر ندارم.

44 Modbus TCP

مودبوس TCP، یک نسخه اصلاح‌شده از مودبوس RTU است که برای انتقال از طریق TCP/IP، به ویژه در شبکه اترنت، طراحی شده است.

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

45

پروتکل Modbus TCP از پورت 502 استفاده می‌کند.

این یک پورت اختصاصی است و اگر لیست رسمی پورت‌های TCP را بررسی کنید، Modbus را در آن با شماره 502 خواهید یافت، درست مانند HTTP که شماره 80 و SMTP ایمیل که شماره 25 هستند.

46

کمیته استانداردها برای Modbus تصمیم آگاهانه ای گرفت تا تا حد امکان، استانداردهای و عرف های صنعت فناوری اطلاعات را به طور کامل بپذیرد و فقط به آنها ارجاع دهد، به جای اینکه مجموعه ای از استانداردها و عرف های منحصر به فرد خود را در صنعت اتوماسیون حفظ کند.

این به دلایل بسیار عملی انجام شد.

47

یکی از این دلایل، کمبود تعداد افراد درگیر در کار استانداردسازی بود و آن‌ها به دنبال راه‌هایی برای کاهش حجم کاری بودند که باید انجام می‌دادند.

یکی دیگر از این مشکلات این بود که کارکنان در صنعت، تکرار واژگان را بسیار گیج‌کننده و دشوار می‌دانستند و نمی‌توانستند به درستی بفهمند که اصطلاحات مربوط به فناوری اطلاعات، در زبان تخصصی صنعت اتوماسیون، چه معنایی دارند.

48

یکی از پیامدهای این امر این است که اصطلاحات مربوط به ارتباط سریال بین "فرمانده" و "فرمان‌دهی" جای خود را به اصطلاحات مربوط به شبکه کامپیوتری "مشتری" و "سرور" داد.

به همین دلیل، من در بقیه این قسمت از این به بعد، از اصطلاحات Modbus TCP استفاده خواهم کرد، زیرا این شکل Modbus است که احتمالاً امروزه بیشتر با آن مواجه می‌شوید.

49 مودبوس UDP

این یک نسخه غیررسمی از Modbus TCP بود که فقط داده‌ها را از طریق UDP به جای TCP ارسال می‌کرد.

هیچ تغییری در فرمت داده‌های واقعی Modbus که ارسال شده بود، ایجاد نشد.

این کار عمدتاً برای نشان دادن این بود که امکان انجام آن وجود دارد.

مزیت ادعایی، کاهش سربار و تاخیر در مقایسه با TCP بود، اما این مزیت برای ایجاد علاقه زیادی کافی نبود.

50 افزونه اختصاصی Modbus

چند شرکت افزونه‌های خود را برای Modbus، به ویژه برای گسترش Modbus RTU، ایجاد کردند.

این افزونه‌ها فقط در برخی از کاربردهای خاص استفاده می‌شدند.

یکی از رایج‌ترین آنها، Enron Modbus بود که توسط شرکت Enron در ایالات متحده ایجاد شد.

این، یک افزونه 32 بیتی به پروتکل اضافه کرد.

مدل داده Modbus 51

مدل داده Modbus حول یک جدول داده به سبک PLC متمرکز است.

این یک آرایه حافظه و مجموعه‌ای از دستورالعمل‌ها برای خواندن و نوشتن در آن حافظه است.

52

چهار نوع حافظه وجود دارد

ورودی‌های جداگانه

سیم‌ها

رجیسترهای ورودی

رجیسترهای نگهدارنده

53

می‌توان تا 65536 آدرس حافظه از هر یک از چهار نوع داشته باشد.

هر نوع حافظه می‌تواند بین صفر تا حداکثر تعداد عناصر داشته باشد، تعیین تعداد آدرس‌ها به عهده پیاده‌سازی است.

آدرس‌های حافظه از 1 شروع می‌شوند، بنابراین عدد "1" به آدرس اول اشاره دارد.

آدرس‌هایی که واقعاً از طریق کابل ارسال می‌شوند، از "0" شروع می‌شوند.

54

ورودی‌های جداگانه و رجیسترهای ورودی، حافظه‌های خواندنی هستند.

در حالی که کویل‌ها و رجیسترهای نگهدارنده، حافظه‌های خواندنی-نوشتنی هستند.

ورودی‌ها و سِک‌ها واحد هستند.

به عبارت دیگر، هر آدرس یک بیت از حافظه را نشان می‌دهد.

55

رجیسترهای ورودی و نگهداری 16 بیتی هستند.

هنگام انتقال از طریق شبکه، کلمات "بای بزرگ" هستند.

به این معنی که بایت بالایی کلمه ابتدا و بایت پایینی دوم ارسال می‌شود.

56

اجازه استفاده از انواع مختلف حافظه به صورت لایه ای وجود دارد.

به عنوان مثال، حافظه کویل‌ها می‌تواند روی حافظه رکوردر نگهداری لایه شود، به طوری که به عنوان مثال، 16 کویل اول نیز همان رکوردر نگهداری اول هستند و غیره.

57 تابع مودبوس

مودبوس TCP یک پروتکل مبتنی بر سرور و کلاینت است.

مشتری یک دستور برای خواندن یا نوشتن حافظه ارسال می‌کند و سرور پاسخ می‌دهد، یا با تایید، یا با یک پیام دیگر که حاوی داده‌های مورد درخواست یا یک کد خطا است.

هر دستور به نام "تابع" شناخته می‌شود.

هر تابع با یک شماره مشخص شده است.

58

من تمام توابع را فهرست نمی‌کنم، بلکه فقط توابع پرکاربرد را ذکر می‌کنم.

انستانس Modbus نیازی به پیاده‌سازی تمام توابع ممکن ندارد، بلکه فقط باید توابعی را که از آن‌ها استفاده می‌کند، پیاده‌سازی کند.

59

• تابع ۱ "خواندن سیم‌ها" است.

• 2 ورودی‌های جداگانه خوانده می‌شوند.

• 3 رجیستر خواندنی در حال استفاده.

• 4 رجیستر ورودی برای خواندن داده‌ها.

• 5 یک سیم پیچ تک‌گانه است.

• 6 یک رک ثبت‌نام واحد است.

• 15 به طور همزمان چند سیم را بنویسید.

• ۱۶، نوشتن در چندین رجیستر.

60

محدودیت‌های مربوط به تعداد عناصر داده‌ای که می‌توان در یک تراکنش برای هر دستور استفاده کرد، به شرح زیر است.

• تابع 1 از 1 تا 2000

• 2 - 1 به 2000

• 3 - 1 به 125

• 4 - 1 به 125

• 5 - NA

• 6 - NA

• 15 - 1 تا 1968

16 - 1 تا 123

فرمت پیام Modbus

پیام Modbus کامل، به عنوان ADU یا واحد داده برنامه نامیده می‌شود.

در داخل ADU، واحد داده پروتکل یا PDU وجود دارد.

PDU شامل دستور Modbus و داده‌های مرتبط است.

ADU شامل اطلاعات اضافی است و بسته به نوع Modbus می‌تواند متفاوت باشد.

من فقط در مورد Modbus TCP صحبت خواهم کرد.

62 MBAP هدر

در پروتکل Modbus TCP، PDU توسط هدر MBAP، که هدر پروتکل Modbus Application است، پیش می‌آید.

این فرمت را دارد.

• دو بایت اول، شناسه تراکنش هستند.

• دو بایت دوم، شناسه پروتکل را نشان می‌دهند.

• سه بایت آخر، طول را نشان می‌دهند.

• بایت بعدی، شناسه واحد را نشان می‌دهد.

63

شناسه تراکنش در واقع یک عدد صحیح است که از درخواست مشتری به پاسخ سرور کپی می‌شود.

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

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

64

شناسه پروتکل همیشه صفر است و نشان می‌دهد که پروتکل مورد استفاده، مودبوس است.

طول، تعداد بایت‌های بعدی، از جمله شناسه واحد و فیلدهای داده را نشان می‌دهد.

65

شناسه واحد برای امکان انتقال پیام بین Modbus TCP و Modbus سریال، مانند Modbus RTU، استفاده می‌شود.

به عنوان مثال، یک گیت‌وی در شبکه Modbus TCP ممکن است چندین دستگاه Modbus RTU را به خود متصل کند.

در این مورد، شناسه واحد به آدرس خط سریال یا شماره پورت سریال دستگاه Modbus RTU به عنوان مقصد درخواست اشاره دارد.

66

این فیلد طول توسط کاربر در صورت درخواست، یا توسط سرور در صورت پاسخ، تعیین می‌شود.

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

67 نمونه - تابع 1

در اینجا یک نمونه از پیام PDU Modbus برای تابع 1، خواندن رله‌ها، آورده شده است.

68

این درخواست دارای فرمت زیر است.

• اولین بایت، کد تابع است، در این مورد "1" است.

• دو بایت بعدی آدرس شروع را در محدوده 0 تا 65535 نشان می‌دهند.

• دو بایت بعدی، تعداد سیم‌پیچ‌ها را نشان می‌دهند که می‌تواند بین 1 تا 2000 باشد.

69

پاسخ در قالب زیر است.

• اولین بایت، کد تابع است، در این مورد "1" است.

• با이트 دوم، تعداد بایت‌های داده‌ای که بعد از آن قرار دارند را نشان می‌دهد.

• در ادامه، یک سری بایت وجود دارد که حاوی داده‌ها است، با 8 سوییچ در هر بایت، برای هر تعداد بایت مورد نیاز.

• هر بیت استفاده نشده در با이트 نهایی با صفر پر می‌شود.

70

اگر خطایی وجود داشته باشد، پاسخ به فرمت زیر خواهد بود.

• اولین بایت، کد تابع با 128، یا 80 در هگز، به آن اضافه می‌شود. این کار به طور موثر، بیت بالایی در بایت را تنظیم می‌کند.

• با이트 دوم، یک کد خطا را شامل می‌شود که نشان می‌دهد خطا چه نوع خطایی بوده است. این کد می‌تواند 1، 2، 3 یا 4 باشد.

کدهای خطا 71

در صورت بروز خطا در درخواست، کد تابع با 128 به آن اضافه می‌شود و بیت بالایی تنظیم می‌شود.

کدهای تابع معتبر باید کمتر از 128 باشند، بنابراین هر پاسخی که با 128 یا بیشتر شروع شود، نشان‌دهنده یک خطا است.

پیام خطا، کد خطا خواهد بود.

1 - کد تابع پشتیبانی نمی‌شود.

2 - آدرس خارج از محدوده.

3 - مقدار خارج از محدوده یا مقدار نامعتبر (در مورد توابع 5 و 6).

4 - خطای دیگر.

در مورد تابع 6 (که ثبت واحد را می‌نویسد)، تمام مقادیر کلمه معتبر هستند، بنابراین از نظر فنی، خطا 3 نمی‌تواند رخ دهد، اما این موضوع در مشخصات وجود دارد.

72

همانطور که می بینید، پروتکل Modbus TCP یک پروتکل بسیار ساده و به خوبی تعریف شده است که به خوبی برای کنترل صنعتی مناسب است.

این دستورات اساسی، تقریباً تمام کارهایی را که در بیشتر برنامه‌ها مورد نیاز است، انجام می‌دهند.

به دلیل اینکه این پروتکل به صورت رایگان در دسترس است و پیاده‌سازی آن آسان است، از حمایت گسترده‌ای برخوردار است، به ویژه در میان فروشندگان کوچک یا تخصصی.

نتیجه‌گیری

در این قسمت، به طور مختصر به شبکه‌سازی PLC و همچنین به بررسی دقیق پروتکل شبکه Modbus پرداختیم.

در قسمت بعدی، ما به بررسی

• کامپیوترهای شخصی در صنعت، از جمله سخت‌افزار تخصصی،

• سیستم‌های SCADA

سیستم‌های HMI،

سیستم‌های تست و اندازه‌گیری،

74

این، قسمت ششم از یک مجموعه 8 قسمتی بوده است.

ارائه دهیدبازخورددر این قسمت.

منبع
Hacker Public Radio
گشودن نسخه اصلی ↗

⚙محتوا به‌صورت خودکار ماشینی ترجمه شده است.

این خبر مفید بود؟

بحث‌ها 0

نخستین مشارکت‌کننده در بحث باشید.

اطلاعات خود را به اشتراک بگذارید و استدلال خود را مطرح کنید

در انتشار اطلاعات یا داده‌های مفید تردید نکنید.

برای شرکت در بحث، وارد شوید یا حساب رایگان بسازید.