Ръководство за приложния протокол MODBUS V1.1b3

August 18, 2024 2315 коментари

Изтегляне  на спецификацията на приложния протокол MODBUS



Изображението представя ръководството за приложния протокол MODBUS V1.1b3 за безконтактно сканиране в приложения за стандарти и протоколи.



Общ преглед на MODBUS V1.1b3

MODBUS V1.1b3 описва широко използван приложен протокол за комуникация в индустриалната автоматизация. Той е изграден върху ясен модел заявка/отговор, при който клиентът започва транзакция, а сървърът връща исканите данни, потвърждение за извършено действие или отговор с изключение. Протоколът работи на приложния слой, затова структурата на съобщенията може да се пренася през серийни линии, Ethernet TCP/IP, радио, оптични връзки и смесени мрежи с шлюзове.

Основното му предимство е стабилната и лесна за внедряване структура, която позволява на PLC контролери, HMI панели, задвижвания, I/O модули, шлюзове, измервателни уреди, RFID четци и други устройства за автоматизация да обменят оперативни данни без прекалено сложен протоколен стек. В много индустриални проекти инженерите използват MODBUS за четене на състояние на машини, запис на управляващи стойности, събиране на регистрови данни, диагностика на комуникационни проблеми и интеграция на оборудване от различни производители.

Как протоколът организира съобщенията

Една MODBUS транзакция започва, когато клиентът изгради приложна единица данни. В центъра на съобщението стои протоколната единица данни, или PDU. PDU не зависи от базовия комуникационен слой и обикновено съдържа еднобайтов функционален код, последван от данни според конкретната функция. Когато MODBUS се прилага върху конкретна шина или мрежа, PDU става част от по-голяма ADU единица, която според метода на пренос може да добавя адрес на сървъра, поле за проверка на грешки или MBAP заглавка.

Функционалният код указва на сървъра каква операция трябва да изпълни. Например клиентът може да поиска ON/OFF състояние на coils, да прочете input registers, да запише единичен holding register, да запише няколко coils или да получи информация за идентификация на устройството. Ако заявката е валидна и сървърът може да изпълни операцията, отговорът повтаря функционалния код и връща очакваните данни или потвърждение. Ако възникне проблем, отговорът използва функционален код за изключение и код на изключение, за да може клиентското приложение да реши дали да повтори заявката, да задейства аларма, да запише грешката или да премине в безопасно състояние.

Модел на данните, адресиране и кодиране

MODBUS V1.1b3 дефинира логически модел на данните, базиран на четири основни области от обекти: discrete inputs, coils, input registers и holding registers. Discrete inputs са еднобитови стойности само за четене, coils са еднобитови стойности за четене и запис, input registers са 16-битови думи само за четене, а holding registers са 16-битови думи за четене и запис. Този модел е умишлено универсален. Производителят на устройство може да го свърже със собствената приложна памет, докато клиентът използва стандартни MODBUS функции за достъп до публикуваните данни.

Спецификацията също разделя логическите референции към данни от физическите адреси в паметта. В модела на данните на MODBUS елементите могат да бъдат номерирани от 1 до n, но вътре в PDU адресите са с нулева база и могат да бъдат в диапазона от 0 до 65535. Тази разлика е важна при разработка на софтуер, защото номерът на регистър, показан на оператор, и реалният PDU адрес може да се различават с единица. Затова ясната документация от производителя на устройството е ключова за надеждна интеграция.

MODBUS използва big-endian кодиране за многобайтови стойности. При 16-битова стойност като 0x1234 най-значимият байт се изпраща преди най-малко значимия байт. Тази практика поддържа предвидима съвместимост, когато оборудване от различни доставчици обменя регистрови стойности. В реални внедрявания инженерите все пак трябва да потвърдят как 32-битови цели числа, стойности с плаваща запетая и специфични за производителя комбинирани стойности се разпределят върху няколко регистъра, тъй като тези приложни конвенции могат да се различават.

Функционални кодове и практическа интеграция на устройства

Функционалните кодове са дефинициите на услугите в MODBUS. Често използваните публични кодове включват четене на coils, четене на discrete inputs, четене на holding registers, четене на input registers, запис на единичен coil, запис на единичен register, запис на множество coils и запис на множество registers. Други кодове поддържат диагностика, файлови записи, FIFO опашки, encapsulated интерфейс transport и идентификация на устройства. Тези услуги дават на разработчиците компактeн набор от инструменти за изграждане на интерфейси към оборудване, без всяко устройство да бъде принудено да използва една и съща вътрешна структура на паметта.

В RFID или идентификационна система MODBUS може да присъства в шлюз, индустриален контролер, панел за достъп, терминал за събиране на данни или машинен интерфейс. Например производствена линия може да използва MODBUS регистри за показване на състояние на четец, команди за задействане, състояния на антени, алармени флагове или броячни стойности. Складова система може да комбинира PLC комуникация със станция с Barcode скенер, а проект за контрол на достъп може да свързва портали, сензори и достъп контрол терминали чрез контролер, който обменя статусни думи и управляващи битове.

Добрата MODBUS интеграция зависи от повече от изпращането на правилния функционален код. Инженерите трябва да потвърдят транспортния профил, стойността на timeout, unit identifier, максималното количество данни на заявка, регистровата карта, реда на байтовете, поведението при грешки и дали устройството поддържа конкретните публични функции, нужни за приложението. При серийни мрежи скоростта в baud, parity, slave адрес, line termination и контролът на шума също са критични. При MODBUS TCP мрежи трябва да се вземат предвид порт 502, IP маршрутизацията, правилата на firewall и поведението при едновременни клиенти.

Защо MODBUS V1.1b3 все още е важен

MODBUS V1.1b3 остава важен, защото документира приложния протокол по стабилен, четим и пряко полезен за инженерните екипи начин. Неговият PDU-базиран дизайн го прави подходящ за шлюзове и смесени архитектури за автоматизация. Моделът на данните е достатъчно прост за вградени устройства, но и достатъчно гъвкав за надзорни системи. Отговорите с изключения помагат на клиентския софтуер да открива неразрешени функции, невалидни адреси, грешни стойности и откази от страна на сървъра.

За производители и системни интегратори разбирането на тази спецификация помага да се намалят грешките при пускане в експлоатация. Тя изяснява защо четене на holding register може да не успее, защо номер на регистър в ръководство може да не съвпада с PDU адреса, защо някои функционални кодове са само за серийна линия и защо е необходима стратегия за timeout, когато дадено устройство не отговаря. За купувачите, които сравняват устройства за автоматизация, поддръжката на MODBUS може да бъде знак, че продуктът се свързва по-лесно с PLC, SCADA системи, индустриални компютри и gateway модули.

Често задавани въпроси за MODBUS V1.1b3

За какво се използва MODBUS V1.1b3?

MODBUS V1.1b3 се използва за дефиниране на начина, по който устройствата за автоматизация обменят съобщения на приложно ниво. Той обяснява структурите на заявка и отговор, функционалните кодове, обектите от данни, правилата за адресиране и отговорите с изключения. Инженерите го използват при интеграция на PLC, HMI, сензори, задвижвания, шлюзове, контролери и идентификационни устройства, които се нуждаят от предвидим начин за четене или запис на оперативни данни.

MODBUS само сериен комуникационен протокол ли е?

Не. MODBUS започва като стандарт за серийна комуникация, но приложният протокол може да се пренася през различни транспортни среди. Спецификацията описва приложния слой и неговата PDU структура, докато отделни правила за внедряване се прилагат за серийна комуникация, TCP/IP през Ethernet и други среди. Затова MODBUS може да работи както в наследени RS485 мрежи, така и в модерни Ethernet-базирани системи.

Каква е разликата между MODBUS PDU и ADU?

PDU е основната протоколна единица данни и съдържа функционалния код плюс данни според функцията. ADU е пълната приложна единица данни, използвана при конкретен транспорт. Тя обвива PDU с полета, свързани с транспорта, като адрес на сървъра и CRC при серийни връзки или MBAP заглавка при MODBUS TCP.

Защо MODBUS регистровите адреси понякога изглеждат изместени с единица?

Това се случва, защото моделът на данните на MODBUS може да описва елементите като номерирани от 1 до n, докато PDU използва адресиране с нулева база. Регистър, показан на потребителите като 40001, може да бъде адресиран като 0 в реалната заявка в зависимост от ръководството на устройството. Интеграторите винаги трябва да следват регистровата карта на доставчика и да потвърждават дали адресите са записани като референции или в PDU форма.

Какво представляват отговорите с изключение в MODBUS?

Отговорът с изключение информира клиента, че заявката е получена, но не може да бъде изпълнена по искания начин. Сървърът връща оригиналния функционален код с установен най-значим бит, последван от код на изключение. Чести причини са неподдържани функции, невалидни адреси на данни, невалидни стойности или временни състояния на сървъра, които възпрепятстват нормалното изпълнение.

MODBUS дефинира ли вътрешната структура на паметта на всяко устройство?

Не. MODBUS дефинира стандартен модел на данните и метод за достъп, но връзката между този модел и вътрешната приложна памет на устройството е специфична за производителя. Едно устройство може да съхранява coils, inputs и registers в отделни блокове, а друго да ги наслагва върху една обща зона от данни. Затова документацията на устройството е необходима за правилно внедряване.

Какво трябва да се провери преди използване на MODBUS в реален проект?

Преди внедряване потвърдете типа транспорт, поддържаните функционални кодове, формата на адресите, ограниченията за количество регистри, реда на байтовете, настройките за timeout и стратегията за обработка на изключения. При серийни мрежи проверете също slave адрес, baud скорост, parity, окабеляване, екраниране и termination. При Ethernet мрежи потвърдете достъпа до TCP порт, IP настройките, маршрутизацията през gateway и начина, по който устройството обработва множество клиенти.

Код за проверка