Сеопфатен водич за протоколот Modbus: Од пораки и регистри до дијагностика на терен – детално објаснување
Модбус На прв поглед може да изгледа едноставно, но совладувањето на неговите целосни можности бара разбирање на односот главен-служен, адресите на регистрите, функционалните кодови, RTU/TCP пакетите и методите за решавање проблеми на полето. Оваа статија јасно ги објаснува овие концепти користејќи терминологија специфична за полето.
Ако сте работеле со PLC, фреквентни конвертори, инструменти, броила за електрична енергија, термостати, екрани на допир или системи за собирање податоци користејќи домаќински компјутери, неизбежно ќе наидете на еден протокол: Modbus.
За разлика од Profinet или EtherNet/IP, кои нагласуваат контрола во реално време, и за разлика од OPC UA со својот комплексен информациски модел, Modbus се одликува со едноставни карактеристики: едноставна структура, богати спецификации на податоци, широка компатибилност на уредите и изобилство алатки за дебагирање. Токму поради неговата едноставност, многу корисници првично развиваат заблуда: „Не е ли само читање на неколку регистри?“ Сепак, во пракса, вистинскиот предизвик честопати не лежи во тоа дали може да се прочитаат регистрите, туку во одредувањето дали адресите треба да почнуваат од 0 или 1.
- Која е врската помеѓу регистрите 40001 и 0?
- Кој треба да го користам помеѓу функционалните кодови 03 и 04?
- Зошто вредноста на CRC во RTU секогаш се разликува?
- RS-485 поврзувањето е исправно - зошто комуникацијата е сè уште нестабилна?
- Зошто 32-битниот број со подвижна запирка прикажува неправилни вредности при читање?
- Иако Modbus TCP може да воспостави врски, зошто преносот на податоци често има истекување на времето? Оваа статија дава сеопфатно објаснување за Modbus од перспектива на теренски апликации.
Дијаграм на архитектура на апликацијата Modbus

1.Што точно е Модбус?
Modbus е индустриски комуникациски протокол првично развиен од Modicon за PLC апликации, а оттогаш стана еден од најшироко прифатените отворени протоколи во индустриски услови. Работи како збир на „правила за прашања и одговори“: едниот крај испраќа барања, додека другиот враќа податоци како што е договорено. На пример: • Домашниот компјутер го прашува мерачот: Кој е тековниот напон во фазата А?
- PLC-то го прашува фреквентниот конвертор: Која е моменталната работна фреквенција?
- HMI го прашува контролорот на температурата: Која е моменталната температура и поставената температура?
- Гејтвејот собира податоци од повеќе инструменти: мерење на струја, напон, моќност и електрична енергија.
Во Modbus RTU-ата, најчесто користената терминологија е „главна станица“ и „подредена станица“: главната станица иницира барања, додека подредените станици одговараат пасивно. Во Modbus TCP, термините „клиент“ и „сервер“ сега се исто така широко користени. Основниот принцип останува ист: едно барање одговара на еден одговор. Имајте ја предвид оваа клучна поента: Modbus не е ниту кабел ниту интерфејс - тоа е протокол за комуникација на податоци. RS-485, RS-232 и Ethernet служат како медиуми за комуникација; Modbus RTU, Modbus ASCII и Modbus TCP ги претставуваат имплементациите на протоколот. Меѓу нив, Modbus RTU и Modbus TCP се најзастапени во теренските апликации.
2.Кои се разликите помеѓу Modbus RTU, ASCII и TCP?
Modbus обично постои во три варијанти. Modbus RTU најчесто се користи во сериски комуникациски средини, работејќи на RS-485 магистрали. Користи бинарен пренос на податоци со висока ефикасност и вклучува CRC контролни суми на краевите на пораките, што го прави широко прифатен во мерачи, термостати, фреквентни конвертори, сензори и модули за собирање податоци. Modbus ASCII исто така поддржува сериска комуникација, но користи ASCII знаци за претставување на податоци, што резултира со подолги пораки и помала ефикасност; сега е помалку чест во нови теренски проекти и првенствено се користи за застарена опрема или специјализирани апликации. Modbus TCP работи преку Ethernet, обично користејќи порт 502, ја елиминира CRC проверката во RTU и додава MBAP заглавие за да ги специфицира трансакциите, должината на пораката и идентификацијата на единицата. Широко се користи во SCADA системи, PLC, портали, системи за управување со енергија и системи за собирање податоци од повисоко ниво. Клучни споредби: • RTU: Погоден за RS-485 повеќеточки магистрали, нудејќи економично поврзување и умерени брзински перформанси.
- TCP: Погодно за Ethernet мрежи, нудејќи лесна конфигурација, голема брзина и компатибилност со прекинувачи и системи од повисоко ниво.
- ASCII: Многу читлив, но неефикасен, ретко се користи во нови проекти.
На почетниците им се препорачува прво да почнат да учат RTU и TCP.
3, разберете го односот господар-роб:
Фундаменталната логика на Modbus е едноставна.
1. главната станица испраќа барања, а помошната станица одговара.
- Проверете ја адресата, функционалниот код и податоците на станицата.
- Добијте нормален или абнормален одговор од серверот.
- Главната станица продолжува да ја чита следната точка.
На RTU магистралата, само една главна станица може активно да испраќа барања во кое било време. Помошните станици не можат спонтано да пренесуваат податоци; тие мора да чекаат барање од главната станица - критичен услов. Некои погрешно веруваат дека „инструментите автоматски испраќаат податоци до PLC кога се достапни“, но ова не се совпаѓа со функционалноста на Modbus RTU.
PLC-то ги чита податоците секвенцијално, уред по уред и сегмент по сегмент, според однапред дефиниран распоред на анкетирање.
Затоа, при дизајнирање на терен, мора да се земат предвид следниве фактори:
- Колку уреди се поврзани со магистралата?
- Колку регистри чита секој уред?
- Кој е Портеровиот коефициент?
- Колку брз треба да биде циклусот на гласање?
- Како да се конфигурираат ограничувањата за истекување на времето и повторен обид?
Кога повеќе уреди се поврзани на RS-485 магистрала и често се читаат бројни регистри, побавните брзини на комуникација се нормални.
- Моделот на податоци Modbus дефинира четири различни категории на објекти.
За разлика од традиционалните протоколи кои едноставно наведуваат „Сакам да ја прочитам температурата“, Modbus точно одредува кој тип на податоци треба да се прочита од одредена адреса. Вклучува четири стандардни полиња за податоци:
- Намотка: Булова вредност што може да се чита/запишува, најчесто се користи за команди за стартување/стоп, ресетирање и префрлување.
- Дискретен влез: Булова вредност само за читање, која најчесто се користи за состојби на прекинувач или состојби на грешка.
- Влезен регистар: 16-битен регистар само за читање, кој најчесто се користи за мерни вредности.
- Регистар за задржување: 16-битен регистар кој е читлив и запишувачки, најчесто се користи за параметри, поставени вредности и оперативни податоци. Најчесто користените регистри во теренските апликации се регистарот за задржување и влезниот регистар. На пример, упатството за броило може да наведе: • Напон: Регистар за задржување 40001
- Тековна: Регистар на холдинг 40003
- Моќност: Влезен регистар 30021
- Адреса на уредот: Регистар на холдинг 40010.
Во такви случаи, не само што мора да се испитаат нумеричките вредности, туку и да се идентификуваат нивните соодветни категории на податоци, бидејќи различните категории на податоци одговараат на различни функционални кодови.
- Код на функција:„Командата за акција“
функционалниот код во Modbus одредува што треба да прави главната станица. Вообичаените функционални кодови вклучуваат:
- 01: Прочитајте ја состојбата на намотката.
- 02: Читање на дискретен влез.
- 03: Прочитај го регистарот за задржување.
- 04: Прочитај го влезниот регистар.
- 05: Пишувајте за една намотка.
- 06: Запишување во регистар со еден запис.
- 15: Напишете повеќе намотки.
- 16: Запишување во повеќе регистри за одржување.
Еве неколку практични примери:
- Читање на работната фреквенција на инверторот: обично со користење на кодовите 03 или 04.
- Поставете ја фреквенцијата за инверторот: најчесто поставена на 06 или 16.
- Прочитајте го работниот статус на уредот: може да се користат кодовите 01, 02, 03 или 04; погледнете го упатството.
- Контролирајте специфичен излезен канал на релејниот модул: користете 05 или 15.
Функциските кодови не треба да се избираат врз основа на интуиција; секогаш погледнете го упатството за комуникација на уредот. Некои уреди ги складираат мерните вредности во влезниот регистар, кои можат да се прочитаат само со 04; други ги складираат истите податоци во регистарот за задржување, кој може да се прочита со 03. Користењето на погрешен функционален код може да предизвика уредот директно да врати грешка или воопшто да не одговори.
6Адреса на регистарот:
Најчестата грешка во апликациите на Modbus не е во поврзувањето, туку во адресирањето. Може да се сретнат неколку формати:
- 40001
- 400001
- 0000H
- Адреса 0
- Адреса 1
- Регистар на холдинг 1
овие може да се однесуваат на истиот регистар или на различни.
Клучот е да се направи разлика помеѓу „логичко нумерирање“ и „протоколска адреса“. Во многу прирачници, 40001 е рачно читлив регистерски број кој го идентификува првиот регистер во регистерската област.
Сепак, вистинската почетна адреса вклучена во Modbus пораката е често 0.
Со други зборови:
- Упатството наведува 40001, но софтверот може да бара внесување 0.
- Во упатството се бара внесување на 40002, додека во софтверот може да се бара внесување на 1.
- Некои прирачници за домашна опрема ја наведуваат адресата 1, а оваа вредност мора да се внесе и во софтверот.
- Некои софтверски алатки автоматски го обработуваат префиксот 40001, додека други не.
Затоа, при решавање проблеми со решавање проблеми, најпрактичниот пристап е прво да се користи алатка за дебагирање за да се прочита регистар за кој се знае дека се менува, а потоа одделно да се тестираат и адресите засновани на нула и адресите засновани на еден за да се утврди која дава валидна вредност.
Не читајте големи блокови одеднаш и избегнувајте да започнувате со сложени броеви со подвижна запирка. Започнете со едноставни податоци како што се адреси на уреди, брзини на пренос, зборови за статус и броеви на верзии за полесна идентификација.
7.Структура на пораката: Како се структурирани RTU и TCP пораките?
Разбирањето на пораката не е за рачно пресметување на секој фрејм, туку за идентификување каде лежи проблемот за време на решавањето проблеми.
Дијаграм на структурата на пораките на Modbus

Примерот за барање на Modbus RTU претпоставува дека главната станица треба да прочита два регистри за задржување почнувајќи од адресата 0 на помошниот уред бр. 1. Пораката може да се протолкува како: 01 03 00 00 00 02 C4 0B, каде што: • 01: Адреса на помошниот уред.
- 03: Код на функција; прочитај го регистарот за задржување.
- 00 00: Почетна адреса.
- 00 02: Читање на количината; 2 регистри.
- C4 0B: CRC16 проверка; најнискиот бајт доаѓа прв.
Ако помошната станица реагира нормално, може да врати: 01, 03, 04, 00, FA, 13, 88, D7 или 54. Нивните значења се: • 01: Адреса на помошник.
- 03: Код на функција.
- 04: Број на преостанати бајти од податоците, 4 бајти.
- 00 FA: Прв регистар, децимална вредност 250.
- 13 88: Вториот регистер, со децимална вредност од 5000.
- D7 54: Проверка на CRC16.
Полињата што се најсклони кон грешки во RTU пакетите се CRC, адреса, брзина на пренос, бит за парност и редослед на бајти. Структурата на барањата на Modbus TCP започнува со заглавие MBAP проследено со PDU.
MBAP обично вклучува: • Идентификатор на трансакција: Уникатен идентификатор за соодветни барања и одговори.
- Идентификатор на протокол: Идентификаторот на протоколот; Modbus обично користи 0.
- Должина: Должина на последователните бајти.
- Идентификатор на единица: Идентификатор на единица, кој најчесто се користи за портали за пренасочување на сообраќај до сериски помошни уреди.
TCP протоколот не го вклучува CRC полето на крајот од RTU пакетот. Бидејќи работи врз TCP/IP, и слојот за поврзување и слојот за транспорт веќе имаат свои механизми за верификација; следствено, структурата на пораки на Modbus TCP повеќе не го вклучува CRC полето што го користат RTU-ата.
8.Тип на податоци: 16-бит е само почетна точка
Modbus регистрите се по својата природа 16-битни, но податоците од полето не се секогаш 16-битен цел број. Многу уреди делат посложени податоци низ повеќе регистри: • 16-битни непотпишани цели броеви.
- 16-битен означен цел број.
- 32-битен цел број.
- 32-битен број со подвижна запирка.
- 64-битна двојна прецизност или кумулативна вредност.
- Цел број со множител.
На пример, ако упатството за броилото за електрична енергија наведува напон од 40001 со тип на податочен број UINT16 и фактор на скалирање од 0,1, тогаш отчитувањето 2301 одговара на реална вредност од 230,1 V.
Да разгледаме мерач на проток што користи два регистри за да претстави 32-битен број со подвижна запирка. При читање на четири бајти, постојат неколку можни толкувања: • AB CD: стандардниот бит од повисок ред доаѓа прв.
- CD AB: Малите букви доаѓаат први.
- BA DC: Размена на бајти.
- DC BA: Се разменуваат и знаци и бајти.
Modbus специфицира дека највисокиот бајт треба да биде прв во регистрите; меѓутоа, кога повеќе регистри формираат 32-битни или 64-битни податочни потоци, различни производители може различно да го обработуваат редоследот на бајтите.
Затоа, кога ќе наидете на неточни вредности со подвижна запирка, не претпоставувајте веднаш дека протоколот е неисправен. Прво погледнете ги типовите на податоци, факторите на скалирање, редоследот на бајтите и редоследот на зборовите во упатството.
- Типични случаи на употреба
Modbus е широко користен бидејќи се истакнува во различни сценарија кои вклучуваат собирање податоци, конфигурација и следење.
Мерачи на моќност и уреди за мерење на потрошувачката на енергија
вклучувајќи паметни броила, мултифункционални броила, анализатори на квалитет на електрична енергија и сензори за температура/влажност, од кои многу поддржуваат протоколи Modbus RTU или TCP. Домашните компјутери, порталите или PLC-уредите можат да читаат податоци како што се напон, струја, моќност, фактор на моќност, потрошувачка на енергија и фреквенција.
Овие апликации се широко користени во управувањето со потрошувачката на енергија во фабриките, следењето на дистрибуцијата на електрична енергија и енергетските системи во индустриските паркови.
Фреквентен конвертор и мек стартер
PLC може да го прочита статусот на фреквентниот конвертор, кодовите на грешки, излезната фреквенција и струјата преку Modbus, како и да запише команди за стартување/стоп и зададени вредности на фреквенцијата.
Сепак, имајте предвид дека контролата на комуникацијата на фреквентниот конвертор обично бара соодветна конфигурација на параметрите. Параметрите како што се изворот на команда, изворот на фреквенција, адресата на комуникација, брзината на баудирање, битот за парност и заштитата од истекување на времето мора да бидат поставени конзистентно.
Тхермостати, мерачи на проток и предаватели на притисок
Уредите за инструментација обично користат Modbus за пренос на мерни вредности, а исто така поддржуваат и запишување на зададени вредности, прагови на аларм и контролни параметри. Иако овие уреди имаат ограничени точки за следење, нивните табели со адреси можат да се конфигурираат со големи детали.
За време на дебагирањето, најдобро е да се провери секоја ставка според упатството.
PLC, HMI, SCADA системи и портал
HMI можат да читаат и пишуваат PLC податоци преку Modbus. SCADA системите можат да собираат податоци од повеќе контролери или портали користејќи Modbus TCP. Сериските сервери и протоколните портали можат да конвертираат Modbus RTU во Modbus TCP.
Сепак, порталот не е универзален преведувач. Тој ги решава проблемите со пренос и пренасочување на комуникацијата, но не го разбира автоматски значењето на секој регистар на уреди. Табелата со точки сепак мора да се конфигурира рачно.
- Поврзување на лице место и конфигурација на параметри:
Modbus RTU обично користи RS-485 магистрала. За време на решавањето проблеми, прво проверете ги следниве ставки: • Дали A/B линиите се поврзани обратно.
- Дали адресата на секоја помошна станица е единствена?
- Дали соодносот на тежини е конзистентен.
- Дали битовите за податоци, стоп битот и битот за парност се конзистентни?
- Дали е потребен терминален отпорник на крајот од магистралата?
- Дали заштитениот слој и заземјувањето се правилно имплементирани.
- Дали линијата на гранките е предолга?
- Проверете дали каблите за напојување и комуникација се предмет на значителни пречки. RS-485 препорачува ожичување од типот bus; не се препорачуваат конфигурации во форма на ѕвезда со прекумерна разгранетост. Кога должините на каблите се долги, бројот на уреди е висок или нивоата на пречки се сериозни, отпорот на терминалите, заштитата, заземјувањето и изолацијата стануваат критични фактори.
Modbus TCP првенствено проверува дали: • IP адресите се на истиот мрежен сегмент.
- Дали е отворен Порт 502?
- Дали уредот поддржува повеќе клиентски конекции истовремено?
- Дали да се пополни ID-то на единицата.
- Дали односот на мапирањето на портата е точен?
11.Контролна листа за решавање проблеми: Од едноставно до комплексно
Ако комуникацијата со Modbus не успее, следете ја оваа секвенца за решавање проблеми: Прво, проверете го физичкиот слој: • За RTU, проверете ги жиците, напојувањето, A/B терминалите, заштитата и отпорот на терминалите.
- TCP ги испитува мрежниот кабел, IP адресата, портата, портата и прекинувачот.
Потврдете ги повторно параметрите за комуникација: • Адреса на помошник.
- Бауд стапка.
- Бит за податоци, бит за парност, бит за стоп.
- TCP порт и ID на единица. Потоа проверете го протоколното ниво: • Дали функционалниот код е точен.
- Дали почетната адреса е точна?
- Дали бројот на читања го надминува опсегот?
- Дали областа за регистрација е правилно избрана?
- Дали е овозможена дозвола за пишување или комуникација?
Конечна валидација на податоци: • Присуство на зголемување.
- Присуство на број на знак.
- Редослед на зборови за 32-битни или 64-битни податоци.
- Дали единицата е конзистентна?
- Дали зборот за статус треба да се анализира малку по малку.
При решавање проблеми, постои добра практика што треба да се следи: не започнувајте со програмирање на PLC-то.
Прво, користете ја алатката за дебагирање Modbus за директно читање на уредот. Ако алатката се поврзе успешно, продолжете со конфигурирање на PLC или хост компјутерот. Ако алатката не успее да се поврзе, дајте приоритет на проверката на ожичувањето, параметрите, табелата со адреси и упатството за уредот.
Дијаграм на тек на анкетирање и дијагностицирање на грешки во Modbus

12.Кога се работи на проект, табелата со точки треба да биде организирана на овој начин.
Најкритичниот проблем за Modbus проектите е пренатрупана табела со точки.
Препорачливо е да се организираат барем овие полиња за секој проект: • Име на уред.
- Метод на комуникација: RTU или TCP.
- Служна адреса или IP адреса.
- ФК.
- Тип на регистар.
- почетна адреса.
- ДЛ.
- тип на податоци.
- множечка моќ.
- единица.
- Дозволи за читање/пишување.
- Редослед на бајти или редослед на знаци.
- забелешки.
Табелата со точки не е само формалистички документ; таа директно влијае на PLC програмите, HMI интерфејсите, SCADA променливите, полињата на базата на податоци и последователното одржување. Многу проблеми со комуникацијата на ниво на поле на крајот не произлегуваат од недостатоци на протоколот, туку од лошо организирани табели со точки.
13.Предности и ограничувања на Modbus Предностите на Modbus се очигледни:
- Едноставност.
- Отвори.
- Изобилство на информации.
- Широка компатибилност на уреди.
- Достапни се повеќе алатки за дебагирање.
- Идеално за проекти за собирање и следење на податоци од мал обем.
- Сепак, има ограничувања:
- Семантиката на податоците е слаба - таа идентификува само адреси и вредности, но нема деловен контекст.
- Ефикасноста на анкетирањето на RTU е ограничена, што ја прави несоодветна за апликации за контрола во реално време со голема брзина и размери.
- Самиот стандарден протокол не вклучува сложени безбедносни механизми.
- Кога се користи на повеќе уреди од различни производители, адресите, факторите на зголемување и редоследот на зборовите лесно може да се помешаат.
- Дијагностичката способност за абнормалности е ограничена, а многу проблеми бараат испитување врз основа на клиничкото искуство.
Затоа, Modbus е погоден за собирање податоци, следење, конфигурација на параметри и контрола при мала брзина, но не треба да се смета за универзално решение за сите индустриски мрежи.
За апликации што бараат висока контрола на движењето во реално време, комплексно меѓусебно поврзување на уреди, моделирање на податоци во голем обем, безбедносна автентикација и вкрстена системска интеграција, можеби ќе треба да се земат предвид опции како што се Profinet, EtherNet/IP, EtherCAT, OPC UA, MQTT или протоколи специфични за производителот.
Како заклучок, Modbus има ниска влезна бариера, но стабилното работење бара разбирање на четири клучни принципи:
Главната станица испраќа барања, а помошните станици одговараат - не го мешајте ова со известување за активен уред.
Второ, адресата на регистарот мора да се совпаѓа со функционалниот код; поставувањето на 40001 во софтверот не мора да значи дека треба да одговара на оваа вредност.
Трето, за RTU-ата, фокусирајте се на параметрите на серискиот порт, RS-485 поврзувањето и CRC; за TCP уреди, дајте приоритет на IP адресата, бројот на портата, ID-то на единицата и мапирањето на порталот.
Четврто, читањето на податоци е само првиот чекор - точноста на вредностите зависи целосно од брзината на земање примероци, типот на податоци, редоследот на бајтите и конфигурацијата на единиците.
Ако сте нови во индустриската комуникација, Modbus е одлична почетна точка. Доволно е едноставен за да ви помогне да ги разберете основните принципи на комуникација, но сепак широко се користи кај различни уреди како што се броила за електрична енергија, фреквентни конвертори, инструменти, PLC, HMI и SCADA системи.
Прво темелно совладајте го Modbus; разбирањето на другите индустриски протоколи ќе го направи вашиот напредок многу полесен. Сега можеме да продолжиме со детални анализи: поврзување на RS-485 шината, употреба на алатки за дебагирање на Modbus, читање на PLC податоци од фреквентни конвертори, собирање податоци од паметни броила, конфигурација на TCP порталот на Modbus и како да се организираат табелите на комуникациските точки.










