You are on page 1of 20

1

INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01


MODBUS
MODBUS

Modbus je aplikacijski protokol (odgovara 7. sloju OSI modela) koji omoguuje komunikaciju
izmeu ureaja povezanih na razliite sabirnice ili mree. Komunikacija moe biti ostvarena u
razliitim mrenim konfiguracijama i sa razliitim tipovima ureaja (PLC, HMI, I/O ureaji,
Upravljaki paneli, Motori, itd..( vidi sliku 2.).

Primjena Modbus-a je prisutna u:
- TCP/IP Ethernet klijent-server komunikaciji
- Asinkronoj serijskoj komunikaciji EIA/TIA 232, EAI/TIA 422, EIA/TIA 485, optikih kabela,...
- Modbus Plus, token mrea



Slika 1. Modbus komunikacijski stack







2
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS

Slika 2. Modbus mrena arhitektura

Modbus je komunikacijski protokol razvijen od Modicon-a 1979.god. (danas Schneider Electric's
Telemecanique). Izvorno zamiljen za upotrebu s programabilnim logikim kontrolerima (PLC),
zbog svoje jednostavnosti i lake dostupnosti postao je industrijski standard.

Modbus protokol zasnovan je na serijskoj komunikaciji izmeu master i slave jedinica
spojenih u istu mreu, izravno ili pomou modema. Svaka slave jedinica ima svoju adresu koja
moe biti od 1-247 i samo jedinica kojoj je naredba (Query) poslana odgovara na naredbu
(Response). Master nema adresu. Izuzetak od ovog pravila su broadcast naredbe, koje se
odnose na sve jedinice i na koje nije potrebno odgovarati. Adresa 0 je u tom sluaju rezervirana
kao broadcast adresa za sve slave jedinice. U praksi broj slave jedinica koji se moe koristiti
odreen je odabranim sueljem (npr. RS485 je ogranien na 31 slave jedinicu).



3
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS

Slika 3. Modbus komunikacija

Standardni Modbus ureaji upotrebljavaju serijsko suelje RS-232C, RS422 ili RS485, ali u novije
vrijeme i Ethernet. Izbor suelja definira pinove konektora, kabel, razine signala, brzinu
prijenosa i provjeru pariteta, jer to nije u definiciji Modbus protokola. Sam Modbus protokol
odreuje strukturu poruke koju ureaji mogu prepoznati bez obzira na tip mree te nain na
koji e pojedini ureaj prepoznati svoju adresu, proitati njemu namijenjenu poruku i na nju
primjereno reagirati.

Svaka poruka sastoji se od adresnog dijela, funkcijskog koda, podatkovnog dijela i dijela koji se
odnosi na provjeru ispravnosti primljene poruke.

Slika 4. Master-Slave Query-Response ciklus

4
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Upit (Query): Funkcijski kod u upitu daje nalog adresiranom ureaju to treba izvriti. Podaci
sadre sve informacije potrebne slave-u za izvrenje upita. Npr. funkcijski kod 03 e traiti od
slave-a da proita holding registre a njihov sadraj e slave proslijediti masteru. Podaci iz upita
moraju sadravati informaciju od kojeg registra treba proitati sadraj i koliko registara treba
proitati. Provjera ispravnosti primljenog upita daju mogunost slave-u da ustanovi valjanost
poruke.

Odgovor (Response): Odgovor slave-a ako je sve u redu je istovjetan upitu, ima isti funkcijski
kod a jedina razlika su podaci koje je prikupio slave na upit kao to su sadraj registara, statusi i
sl. Ako doe do greke slave promijeni funkcijski kod i poalje masteru odgovor greke koji u
podacima sadri kod kojim je opisana greka. Provjerom ispravnosti primljene poruke master
ima mogunost ustanoviti valjanost poruke.

VRSTE SERIJSKOG PRIJENOSA PODATAKA

Modbus protokol definira dva naina prijenosa podataka (ASCII i RTU) koji opisuju nain
pakiranja podataka u poruku i njihovo dekodiranje. Nain prijenosa potrebno je odabrati pri
inicijalizaciji mree i ona mora biti ista za sve ureaje spojene na mreu.

ASCII
(American Standard Code for Information Interchange)

Kod ASCII prijenosa podataka svaki bajt se alje kao dva ASCII znaka , od kojih svaki predstavlja
jednu heksadecimalnu znamenku (0..9, A..F). Naime poruka je kodirana u heksadecimalnom
obliku a prikazana u ASCII formatu. Za svaki bajt informacije potrebna su dva ASCII znaka jer
svaki znak definira samo 4 bita u heksadecimalnom sustavu. Pri tome se svaki ASCII znak pakira
u okvir od 10 bitova prema slici 5. na nain:

1 start bit
7 bitova podataka poredanih od najmanje znaajnog (LSB) ka najznaajnijem bitu (MSB)
1 paritetni bit
1 stop bit (ako je odabrana opcija provjere pariteta), odnosno 2 stop bita (ako nije
odabrana opcija provjere pariteta)



5
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Slika 5. Struktura okvira ASCII znaka sa i bez pariteta

ASCII poruka formira se na nain da se kao prvi znak alje dvotoka (:) (heksadecimalno 3A) a na
kraju dvoznak CLRF (carriage return-line feed heksadecimalno 0D&0A). Svi znakovi iz ostalih
polja moraju bit predstavljeni heksadecimalnim znamenkama 0-9 ili A-F budui e podaci biti
kodirani u heksadecimalnom formatu ali prikazani u ASCII-u.
Za provjeru ispravnosti prijenosa poruke koristi se LRC metoda (Longitudinal Redundancy
Check), a znakovi se mogu slati i do 1 sekunde razmaka a da ureaj ne detektira to kao greku.
Ureaji na mrei kontinuirano nadziru mrenu sabirnicu i ekaju da se pojavi znak za poetak
poruke. Nakon pojave dvotoke, svi ureaji proitaju adresni dio poruke da bi provjerili da li se
poruka odnosi na njih. Struktura poruke prikazana je na slici 6.

Slika 6. Struktura ASCII poruke

RTU (Remote Terminal Unit)

Kod RTU prijenosa podataka heksadecimalne znamenke se prenose izravno bez njihove
konverzije u ASCII kod. Pri tome jedan bajt sadri dvije heksadecimalne znamenke koje se alju
u istom okviru, to za rezultat ima veu korisnost pri istoj brzini prijenosa.

Svaki RTU bajt pakiran je u okvir od 11 bitova prema slici 7. na nain:

1 start bit
8 bitova podataka poredanih od najmanje znaajnog (LSB) ka najznaajnijem bitu (MSB)
1 paritetni bit

6
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
1 stop bit (ako je odabrana opcija provjere pariteta), odnosno 2 stop bita (ako nije
odabrana opcija provjere pariteta)

Slika 7. Struktura RTU okvira sa i bez pariteta

Za provjeru ispravnosti poruke upotrebljava se CRC metoda (Cyclic Redundancy Check), a
znakovi se moraju slati kontinuirano. Poetak i kraj poruke oznaavaju se pauzama u
komunikaciji u trajanju od barem 3.5 znakovnih intervala (obino se uzima
viekratnik znakovnog intervala pri brzini prijenosa definiranoj na mrei, na slici dolje oznaeno
kao T1-T2-T3-T4). Prvo se alje uvijek adresa ureaj. Odaslani znakovi mogu biti samo
heksadecimalni 0-9, A-F. Ako se u toku prijenosa poruke pojavi pauza dulja od 1.5 znakovnih
intervala, primatelj e izbrisati nedovrenu poruku i pretpostaviti da sljedei bajt predstavlja
adresni dio nove poruke. Osim toga, ako nova poruka pone za manje od 3.5 znakovnih
intervala nakon zavretka prethodne, primatelj je nee prepoznati kao novu poruku, ve kao
nastavak prethodne, to e uzrokovati greku. I u ovoj varijanti ureaji konstantno nadziru
mrenu sabirnicu, a kad se poruka pojavi, svi dekodiraju adresni dio da bi ustanovili odnosi li se
ista na njih. Struktura poruke prikazana je na slici 8.

Slika 8. Struktura RTU poruke






7
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
STRUKTURA MODBUS PORUKE

ADRESNI DIO

Adresni dio sastoji se od dva znaka (ASCII), ili 8 bitova (RTU). Slave jedinice imaju adrese u
rasponu od 1 do 247, dok adresa nula oznaava broadcast naredbu. Master u adresni dio
poruke postavlja adresu na koju se poruka upuuje, a slave jedinica u odgovoru u adresni dio
postavlja svoju adresu.

FUNKCIJSKI DIO

Funkcijski dio sastoji se od dva znaka (ASCII), ili 8 bitova (RTU). On sadri funkcijski kod
poruke, u rasponu od 1 do 255, koji slave jedinici prenosi naredbu koju treba izvriti. Slave
jedinica u odgovoru vraa funkcijski kod nepromijenjen ako je poruka primljena, dok u sluaju
nemogunosti izvrenja naredbe zbog greke u sadraju poruke slave jedinica vraa isti
funkcijski kod kojemu je najznaajniji bit postavljen u 1. Primjeri naredbi koje master moe
poslati slave jedinici su provjera statusa ulaznih pinova, itanje sadraja registara,
dijagnostika provjera slave jedinice, pisanje u registre, promjena stanja izlaznih pinova, te
uitavanje, snimanje ili provjera programa samog kontrolera.

Primjer: Poruka mastera prema slave jedinici za itanje grupe holding registara e imati
funkcijski kod 0000 0011 (heksadecimalno 03).
Ako slave primi upit bez greke u odgovoru e vratiti isti kod, a u sluaju greke
funkcijski kod biti e 1000 0011 (heksadecimalno 83).
Pored ovoga slave e poslati unutar podatkovnog dijela jedinstveni kod greke
koji masteru ukazuje o razlozima greke. Master moe na osnovu ovoga
pokrenuti odgovarajuu dijagnostiku, obavijestiti korisnike ili prestati slati upite.

PODATKOVNI DIO

Podatkovni dio sastavlja se od parova heksadecimalnih znamenaka (0x00 do 0xFF), pri emu
one mogu, ovisno o nainu prijenosa, predstavljati par ASCII znakova ili jedan RTU znak.
Master u ovaj dio poruke upisuje adrese registara ili vanjskih pinova kojima treba
pristupiti, broj traenih podataka te ako master alje podatke koje treba nekuda upisati, broj
bajtova podataka i potom same podatke. Za neke naredbe slave jedinica ne treba dodatne

8
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
podatke, ve joj je dovoljan funkcijski kod, pa neke poruke ne sadre podatkovni dio.
Slave jedinica u podatkovnom dijelu odgovora alje traene podatke, odnosno kod greke
ako iz nekog razloga nije u mogunosti izvriti poslanu naredbu. Podatkovni dio u upitu izraen
je vrijednou poetne adrese bita/registra koja se sastoji iz gornjeg i donjeg bita/bajta (0-255)
te broja bita/registara (0-255) koje se eli proitati ili upisati. U odgovoru podaci se alju redom
prema zahtjevu poev od prvog bajta a izraeni su takoer kao vrijednost razdijeljena u gornji i
donji bajt (0-255).

PROVJERA ISPRAVNOSTI SLANJA PORUKE

Provjera ispravnosti slanja poruke provodi se na razini slanja svakog znaka provjerom pariteta
te na razini slanja cijele poruke pomou LRC (za ASCII) odnosno CRC (za RTU) prorauna.
Proraun provodi master jedinica pri slanju poruke i upisuje rezultat na kraj poruke (prije
znaka koji oznaava kraj). Slave jedinica tijekom primitka poruke ponovno proraunava LRC
odnosno CRC i usporeuje rezultat s onim koji je master poslao. Ako se rezultati razlikuju, znai
da je dolo do greke tijekom prijenosa podataka.

PROVJERA PARITETA

Provjera pariteta zasniva se na broju jedinica sadranih u svakom bajtu podataka (7 bita za ASCII
ili 8 bita za RTU). Paritetni bit biti e postavljen na 0 ako je ukupan broj jedinica paran odnosno
na 1 ako je neparan.

LONGITUDINAL REDUNDANCY CHECK - LRC

LRC se primijenjuje na poruku bez dvotoke i CRLF znaka, a sastoji se od 2 ASCII znaka (1
bajt). LRC se proraunava zbrajanjem bajtova poruke uz odbacivanje prijenosa, nakon ega se
nad rezultatom provede operacija dvojnog komplementiranja.
LRC je 8-bitno polje tako da svako dodavanje bajtova koje bi rezultiralo vrijednosti veoj od 255
bi automatski resetiralo LRC vrijednost u nulu pa se ovaj prijenos automatski odbacuje.




9
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Proraun LRC provodi se na sljedei nain:
1. Zbroje se svi bajtovi u 8-bitnu vrijednost bez dvotoke i CRLF znaka uz odbacivanje
prijenosa.
2. Oduzme se ova vrijednost od heksadecimalne vrijednosti FF (sve jedinice) da bi se
dobila vrijednost jedininog komplementa.
3. Ovoj vrijednosti se pribroji 1 da se dobije dvojni komplement.

Ovako dobijena vrijednost se postavlja u okvir poruke na nain da se prvo upisuje vii znak a
potom nii. Npr. vidi sliku 9, ako je vrijednost LRC jednaka 61 hex (0110 0001):

Slika 9. LRC provjera

CYCLICAL REDUNDANCY CHECK - CRC

CRC se primijenjuje na cijelu poruku, ali se u proraun uzima u obzir samo osam podatkovnih
bitova svake rijei (bez start i stop te paritetnih bitova). CRC se sastoji od dva bajta koji se
postavljaju na kraj poruke, pri emu se prvo upisuje nii, a potom vii bajt. Proraun CRC
provodi se na sljedei nain:
1. 16-bitni CRC registar napuni se jedinicama (FFFF hex).
2. Nad prvim bajtom poruke i donjim bajtom 16-bitnog CRC registra provede se
operacija EKSKLUZIVNO ILI (XOR) i vrijednost zapie u CRC registar.
3. Rezultat se pomakne za jedan bit u smjeru najmanje znaajnog bita (LSB), a u
najznaajniji bit (MSB) upie se nula.
4. Provjeri se stanje LSB.
Ako je LSB = 0 ponavlja se postupak 3. i pomicanje sadraja registra.
Ako je LSB = 1 provede se operacija XOR registra i vrijednosti A001 hex
(1010 0000 0000 0001)
5. Postupak 3. i 4. ponavlja se dok se ne izvri pomak svih 8 bitova u bajtu.
6. Koraci 2. do 5. Se ponavljaju za sve bajtove ukljuene u poruku.
7. Konani sadraj 16-bitnog CRC registra je vrijednost CRC.

10
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
8. Postavljanjem CRC u okvir poruke donji i gornji bajt registra imaju zamjenjena mjesta,
nii bajt upisuje se prije vidi sliku 10.
Npr. ako je vrijednost CRC jednaka 1241 hex (0001 0010 0100 0001):
Slika 10. CRC provjera

Potrebno je jo navesti da u sluaju pojave greke tijekom prijenosa podataka adresirana slave
jedinica nee reagirati na poslanu poruku. U tu svrhu master ima konfigurirano vrijeme
(timeout) koje treba ekati na odgovor slave jedinice (dovoljno dugo da slave jedinica stigne
reagirati); nakon isteka tog vremena, master jedinica e prekinuti komunikaciju. Isto e se
dogoditi i ako master adresira nepostojeu slave jedinicu.

MODBUS ORGANIZACIJA REGISTARA

Modbus protokol radi na nain da slave jedinice spremaju sve podatke (konfiguracijske, I/O,...)
u niz definiranih statusnih bita i registara, koji imaju specificirane adrese a kojima su pridjeljene
razliite namjene. Uobiajena struktura registara je prikazana u tablici 1. ali nije obvezatna za
proizvoae.

Adresa Opis
00001-10000 itanje/Upisivanje digitalnih izlaza
(coils)
10001-20000 itanje digitalnih ulaza
30001-40000 itanje ulaznih registara - 16-bitni
registri kao to su analogni signali
40001-50000 itanje/Upisivanje holding registara
16-bitne memorije, najee
konfiguracijski podaci

Tablica 1. Modbus struktura registara


11
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Sve naredbe (upiti) od strane mastera koje se odnose na pojedine ulaze/izlaze ili registre uvijek
koriste adrese a ne aktualni broj inputa/outputa ili registra. Sve adrese u Modbus porukama se
definiraju u odnosu na poetnu nultu adresu. Primjere adresiranja pogledajte u nastavku:

- Prvi digitalni izlaz (oznaava se kao coil 1) adresira se kao coil 0000 u Modbus poruci.
- Digitalni izlaz 127 (Coil 127) biti e adresiran kao coil 007E hex (126 decimalno).
- Holding registar 40001 adresira se kao registar 0000 u adresnom polju poruke. . Naime svaki
funkcijski kod pridjeljen je odgovarajuem adresnom opsegu registara (vidi tablicu 2.)
Funkcijski kod koji prethodi podacima u poruci specificira na koje registre se operacija odnosi
tako da nije potrebno dodatno unositi egzaktni broj registra.
- Holding registar 40108 adresiran je kao registar 006B hex (107 decimalno).

MODBUS FUNKCIJSKI KODOVI

Funkcijskim kodovima definiraju se tipovi poruka i radnje koje slave jedinice moraju obaviti.
Kodovi obuhvaaju raspon od 1-255 ali se samo 20-tak koristi u najveem broju sluajeva.
Najee koriteni kodovi dani su u tablici 2.


Kod 1/16-bit Opis Registri
01 1-bit itanje izlaza (coils) 00001-10000
02 1-bit itanje ulaza 10001-20000
03 16-bit itanje holding registara 40001-50000
04 16-bit itanje ulaznih registara 30001-40000
05 1-bit Upisivanje jednog izlaza (coil) 00001-10000
06 16-bit Upisivanje pojedinanog registra 40001-50000
07 16-bit itanje statusa greke Prikriven
08 16-bit Dijagnostika Resetiranje slave-a Prikriven
15 1-bit Upisivanje vie izlaza (coils) odjednom 00001-10000
16 16-bit Upisivanje registara 40001-50000
17 16-bit Izvjee Slave ID Prikriven
22 16-bit Upisivanje registra maske 40001-50000
23 16-bit itanje/Upisivanje registara 40001-50000
24 16-bit itanje FIFO queue 40001-50000

Tablica 2. Modbus funkcijski kodovi




12
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
SERIJSKA MODBUS KOMUNIKACIJA

Primjer master-slave komunikacije prikazan je na sl. 11 i 12 i to u heksadecimalnom obliku te
kako je poruka pakirana u ASCII i RTU okviru za sluaj upita i odgovora.

Master alje upit slave jedinici 6 da proita sadraje registara 40108 40110. Poruka specificira
poetnu adresu registra za itanje kao 107 (006B hex) jer se prva adresa registra 40001 smatra
nultom. Poetna adresa registara se definira kao gornji i donji bajt poetne adrese te kao gornji
i donji bajt broja registara kojih treba proitati (u ovom sluaju 3).

U odgovoru slave jedinica alje svoju adresu i isti funkcijski kod. U nastavku alje broj poslanih
bajtova (3 registra od 16-bita = 6 bajtova), te podatke za svaki registar prikazan pomou gornjeg
i donjeg bajta. Broja bajtova uvijek uzima u obzir koliko je 8-bitnih podataka poslano kao
odgovor neovisno o tipu pakiranja podataka.

Slika 11. Master Upit (Query) u ASCII/RTU modu

Slika 12. Odgovor (Response) slave jedinice u ASCII/RTU modu

13
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
MODBUS KODOVI GREAKA

Ako je komunikacija u redu slave jedinica e vratiti odgovor sa istim funkcijskim kodom. U
sluaju greke odgovor e sadravati izmjenjen funkcijski kod na nain da e najznaajniji bit biti
postavljen u 1 a u polje podataka biti upisan kod greke. U tablici 3. dani su najznaajniji kodovi
greke koji se koriste u Modbusu.


Kod Greka Opis
01 Illegal Function Funkcijski kod poslan upitom je pogrean ili nije dozvoljen.
02 Illegal Data Address Upit sadri adresu registara koja je pogrena ili nije dozvoljena.
03 Illegal Data Value Upit sadri vrijednost podataka koji su pogreni ili nisu dozvoljeni.
04 Slave Device Failure Dolo je do nepopravljive greke dok je slave jedinica izvravala
zahtjev mastera.
05 Acknowledge Slave jedinica zaprimila je upit ali e to potrajati due od oekivanog.
Odgovor je vraen masteru da bi se sprjeila greka timeouta na strani
mastera.
06 Slave Device Bussy Slave jedinica je zauzeta procesiranjem. Master treba ponoviti upit
nakon to slave jedinica zavri zadatak.
07 Negative Acknowledge Slave jedinica ne moe izvriti traenu funkciju iz upita. Vraen je kao
odgovor kod 13 ili 14 o neuspjeno provedenom zahtjevu (ovaj model
ne podrava te kodove). Master treba u tom sluaju uputiti zahtjev za
dijagnostiku slave jedinice.

Tablica 3. MODBUS kodovi greaka


MODBUS I OSI MODEL

U odnosu na OSI model Modbus koristi tri sloja 1,2 i 7.

Sloj ISO/OSI Funkcija Modbus Funkcija
7 Aplikacijski Sloj Modbus Aplikacijski Protokol
3-6 - -
2 Podatkovni Sloj Modbus Serijski Protokol
1 Fiziki Sloj EIA232C, EIA485

Tablica 4. Modbus i OSI model



14
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Aplikacijski sloj zasniva se na Modbus protokolu kojeg smo obradili u prethodnim poglavljima, a
slojevi 3-6 se ne koriste budui se Modbus oslanja na aplikacijski sloj pri slanju poruke.
Podatkovni sloj definira strukturu poruke i nain pakiranja poruka u ovisnosti o ASCII ili RTU
modu komunikacije.

Fiziki sloj

Originalno Modbus je osmiljen za EIA 232C point-to-point komunikaciju izmeu host raunala i
PLC-a uz maksimalni domet do 20-tak metara. No s pojavom standarda EIA 485 omogueno je
paralelno povezivanje veeg broja ureaja dvoilnim ili etveroilnim kabelom. RS485 zahtjeva i
povezivanje dodatnog zajednikog vodia na sve ureaje. Na liniju mogu biti povezane 32
jedinice ukljuujui master. U oba sluaja mogue je postii brzine komunikacija od 1.2 do 115
kbps. Svaka konfiguracija mora podravati brzine 9.6 i 19.2 kbps mada se brzina 19.2 kbps
koristi kao osnovna.

Dvoilna i etveroilna konfiguracija ostvarena je samo s obzirom na razliku serijskih suelja koji
se koriste i ne osigurava mogunost istovremene dvosmjerne komunikacije jer Modbus radi
iskljuivo u master-slave modu. Upotrebom dva vodia upit i odgovor se alju po istoj liniji, a
kod etiri vodia upit se alje preko jedne a odgovor preko druge linije. Zajedniki vodi koji je
neophodan obino se ne prikazuje u dijagramima.


Slika 13. EIA 485 dvoina komunikacija






15
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS

Slika 14. EIA 485 etvero-ina komunikacija

Linije su zakljuene otpornicima impedancije koja je jednaka karakteristinoj impedanciji linije
tipino 100 ohm-a da bi se sprijeile refleksije i fluktuacije signala na kabelu. U praksi na kratkim
linijama i sa malim brzinama prijenosa obino se zakljuni otpornici ne trebaju stavljati.

Kod RS485 pogrena polarizacija spojenih vodia ne moe otetiti ureaje ali komunikacija nee
raditi.

Zajedniki vodi potreban je za sluaj kada ne postoji komunikacija na liniji. Tada je linija u
nedefiniranom stanju i prisustvo uma moe biti interpretirano kao poruka. Da bi se to izbjeglo
linija se titi tzv. biasing-om kojim se linija pritee u definirano stanje i na taj nain reducira um.
Ovo je izvedeno pomou priteznih otpornika (pull-up i pull-down) ija preporuena vrijednost
iznosi izmeu 450 i 650 ohm-a.












16
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
MODBUS TCP

Modbus TCP je u osnovi Modbus RTU serijski protokol enkapsuliran (zapakiran) u TCP/IP
telegram a koristi se za komunikaciju izmeu klijent i server ureaja na Ethernet TCP/IP mrei.
Modbus TCP koristi OSI referentni model koji je podijeljen u 5 slojeva za razliku od troslojnog
koritenog za serijsku liniju.

Sloj ISO/OSI Funkcija Modbus Funkcija
5,6,7 Aplikacijski Sloj Modbus Aplikacijski Protokol
4 Transportni Sloj Transmission Control Protocol
3 Mreni Sloj Internet Protokol
2 Podatkovni Sloj IEEE 802.3
1 Fiziki Sloj IEEE 802.3

Tablica 5. Modbus TCP i OSI model

Protokol nam praktiki daje uvid u nain na koji je Modbus serijska poruka utisnuta u protokol
vie razine. Modbus linija zamijenjena je IP linijom a fiziki i podatkovni sloj nisu specificirani.
Umjesto jednog mastera povezanih na vie slave jedinica sada govorimo o klijent-server
konfiguraciji. Klijenti mogu biti HMI-evi ili PLC-evi, dok su serveri ulazno/izlazni ureaji. Umjesto
mastera naredbe sada alju klijenti, a serveri odgovaraju.

Slika 15. Klijent-server konfiguracija Modbus TCP modela

Za povezivanje klijent/server Modbus serijskih ureaja na TCP/IP mreu koriste se mostovi,
usmjerivai (Router) i mreni prolazi (gateway).

17
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Modbus TCP uspostavlja komunikaciju izmeu nodova na mrei slanjem upita putem RTU-a u
half-duplex-u. TCP dozvoljava da vie upita bude proslijeeno ili pripremljeno u slijed.

Klijent/server model komunikacije je zasnovan na 4 tipa poruke:

- Modbus Upit(Request), klijent alje ovu poruku za inicijalizaciju transakcije.
- Modbus Indikacija(Indication), poruka upita primljena na strani servera.
- Modbus Odgovor(Response), poruka odgovora poslana od servera.
- Modbus Potvrda(Confirmation), poruka odgovora primljena na strani klijenta.

Formiranje Ethernet TCP/IP paketa prikazano je na slijedeoj slici.



Slika 16. Struktura ethernet paketa u Modbus TCP

Primarna funkcija TCP-a je da osigura da se svi paketi prime korektno, dok IP osigurava da su
poruke korektno adresirane i proslijeene. TCP/IP je samo transportni protokol i ne definira
znaenje podataka i kako se podaci interpretiraju (ovo radi aplikacijski protokol, Modbus u
ovom sluaju).
Modbus struktura poruke je aplikacijski protokol koji definira pravila za organiziranje i
interpretiranje podataka neovisno o prijenosnom mediju.


18
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Modbus TCP ukljuuje standardni Modbus PDU (Protokol Data Unit) enkapsuliran unutar TCP/IP
okvira na nain da uz dodavanje zaglavlja MBAP (Modbus Application Protocol header) kreira
Modbus TCP podatkovni paket ili Application Data Unit (ADU).


Slika 17. Modbus TCP ADU

Standardna RTU Modbus poruka se uzima sa neizmjenjenim dijelom naredbi i korisnikih
podataka a bez adrese i dijela za provjeru greke. Modbus adresa je nadomjetena
identifikatorom (Unit ID) a provjera greke je ostvarena standardnom Ethernet TCP/IP
metodom.

MBAP zaglavlje sastoji se od 7 bajta a sadri slijedee dijelove:

- Transakcijski Identifikator (Transaction Identifier), predstavlja identifikacijski broj transakcije i
odreen je od strane klijenta. Vodi rauna da li je svaki upit dobio pripadajaui odgovor.
Server u odgovoru alje isti ID transakcije koji je dobio upitom.
Naime Modbus TCP ureaji mogu poslati vie upita prema serverima bez da ekaju odgovor.
Obino se za ovu svrhu koristi sekvencijalni broja pri emu je vrijednost uveana za svaki upit.
Maksimalni broj transakcija klijenta ovisi o samom ureaju i openito iznosi od 1-16. Isto
vrijedi i za servere.

- Identifikator Protokola (Protocol Identifier), omoguava podrku za vie protokola. Ova
vrijednost je uvijek 0 za Modbus, a ostale vrijednosti su rezervirane za budue upotrebe.

- Duljina Podataka (Length Field), predstavlja broj bajtova koji slijede ukljuujui Unit ID i broj
bajtova u Modbus PDU.

19
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS

- Identifikator Ureaja (Unit ID), definira adresu slave jedinice na Modbus serijskoj liniji kojoj se
moe pristupiti preko mrenog prolaza (gataway-a). Adresiranje u Modbus TCP-u se vri
pomou IP adresa. Ako je slave jedinica spojena na serijsku liniju tada aktualna slave adresa
mora biti specificirana. Gataway adresa je u tom sluaju IP adresa .

Da bi se poslao ADU preko TCP-a mora se koristiti registrirani TCP port. Modbus port registriran
za ovu namjenu je 502. Modbus server oslukuje komunikaciju na portu 502. Kad klijent eli
poslati poruku serveru mora otvoriti vezu prema portu 502. Lokalni port mora biti vei od 1024 i
razliit za svaku klijent otvorenu vezu. im je veza uspostavljena ista se moe koristiti za
prijenos podataka u oba smjera izmeu klijenta i servera. Klijent i server mogu uspostaviti
nekoliko TCP/IP veza istovremeno. Kada je veza uspostavljena sve transakcije koje su dio te
veze a moe ih biti vie i u oba smjera istovremeno moraju imati pridjeljene razliite
transakcijske ID-eve. Nakon zavretka prijenosa podataka komunikacijska veza moe se zatvoriti
i po potrebi opet otvoriti.


Slika 18. Modbus TCP uspostava veze











20
INDUSTRIJSKE RAUNALNE MREE ----- RADNA KOPIJA ver.01
MODBUS
Primjer: Usporedba upita poslanog sa Modbus RTU i Modbus TCP protokolom.
itanje sadraja izlaznih holding registara 40108 40110 sa slave ureaja 17.

MODBUS RTU

11 03 006B 0003 7687

11 : Adresa slave ureaja (17 = 11 hex)
03 : Funkcijski kod (itanje analognog izlaznog holding registara)
006B : Poetna adresa traenog registra (40108 40001 = 107 = 6B hex)
0003 : Ukupan broj registara za itanje (3 registra 40108 40110)
7687 : CRC vrijednost (za provjeru greke)

Nakon eliminiranja adrese i CRC-a PDU je:

03 006B 0003

MODBUS TCP

0001 0000 0006 11 03 006B 0003

0001 : Transakcijski identifikator
0000 : Identifikator protokola
0006 : Duina poruke (slijedi 6 bajtova)
11 : Identifikator slave ureaja (17 = 11 hex)
03 : Funkcijski kod (itanje analognog izlaznog holding registara)
006B : Poetna adresa traenog registra (40108 40001 = 107 = 6B hex)
0003 : Ukupan broj registara za itanje (3 registra 40108 40110)

You might also like