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.).
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).
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.
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.
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
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.
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.
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.
- 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.