2_2_isip_2015_predavanja - modbus

45
Protokoli višeg reda MODBUS Industrijski sistemi i protokoli - predavanje 6 Rev 2009.2

Upload: nikolatl

Post on 16-Dec-2015

45 views

Category:

Documents


7 download

DESCRIPTION

.......

TRANSCRIPT

  • Protokoli vieg reda MODBUS

    Industrijski sistemi i protokoli -

    predavanje 6

    Rev 2009.2

  • Modbus protokol 2/27

    1 Uvod u MODBUS protokol2 Modbus protokol poruke

    2.1. Modbus struktura2.2. Struktura Modbus poruke2.3. Osnovni modovi prenosa (Modbus/ASCII i Modbus/RTU)2.4. Detekcija greke u Modbus poruci

    2.4.1. LRC detekcija u ASCII modu2.4.2. CRC detekcija u RTU modu

    3 Povezivanje ureaja i razmena podataka preko Modbus protokola3.1. Fiziko povezivanje3.2. Adresiranje preko Modbus protokola3.3. Modbus kodovi funkcija

    3.3.1. Function 01: Read coil status3.3.2. Function 02: Read input status3.3.3. Function 03: Read holding registers3.3.4. Function 04: Read input register

    4 Moderna primena MODBUS protokola4.1. Modbus TCP4.2. Modbus gateway ureaji4.3. Modbus protokoli u odnosu na OSI model i TCP/IP

    Sadraj

  • Protokoli master-slave tipa

  • Modbus protokol 4/27

    Primer master slave protokola

    Sistem sa jednim masterom i tri slave ureaja Master-slave protokol . Master poinje komunikaciju, slave samo odgovara. Master alje podatke, jedan bajt nam nije dovoljan. Prvi bajt moe biti start bajt, kod koji svi prepoznaju Drugi bajt neka bude adresa, 1 , 2 ili 3. ta nama kao master ureaju treba, da piemo po memoriji slave ureaja, i da je itamo. Dakle, sledei bajt neka bude funkcija , RD ili WR. ta itamo/piemo, gde je to ? Nas kao master ureaju to ne zanima, nas zanima samo tabela podataka koja nam je na raspolaganju. U svakom slave ureaju postavimo tabelu, koju master moe da ita i pie. Ako slave meri temperaturu, neka povremeno sa najnovijom temperaturom puni neku lokaciju te tabele, a master e je itati kada ta mu temperatura zatreba. Isto i za drive, i za bilo koji slave, samo sada ima i pisanje referenci. Dakle, dve funkcije nam sve resavaju, ali, za svaku funkciju, Rd i za Wr , razliciti niz Na kraju check sum Svaki slave ima adresu i tabelu koju master cita/pise

  • Modbus protokol

  • Modbus protokol 6/27

    ta je Modbus protokol

    master/slave protokol sa half-duplex prenosom detalji o Modbus na http://www.modbus.org/ razvijen je od strane Modicon-a, 1979 godine fizika podloga su mu protokoli RS232, RS485 i Ethernet

    Koriste se tri tipa Modbus prenosa, 1) ASCII jedan byte poruke sa dva bajta (1HEX ASCII char = 1Byte), 2) RTU poruke se sastaje od binarnih bajtova 3) Modbus/TCP modbus poruka ugrauje u TCP/IP poruke.

    Modbus/ASCII i Modbus/RTU koriste RS232 i RS485 Modbus/TCP koristi sve fizike slojeve koji podravajuTCP/IP protokol kao to su Etherent 10BASE-T i 100BASE-T.

    Osnovna razlika izmedju ASCII i RTU modaBroj 156 u ASCII modu = 0x9C `9``C` dva bajta 0x39 0x43Broj 156 u RTU modu = jedan bajt 156 (ili 0x9C)

  • Modbus protokol 7/27

    Modbus struktura

    Osnovna Modbus struktura podrava jedan master i vie slave ureaja

  • Modbus protokol 8/27

    Modbus master/slave razmena poruka

    master/slave protokol, half duplex, MASTER alje upit, pitanje (query), SLAVE odgovor (response)

  • Modbus protokol 9/27

    Modbus master/slave razmena poruka

    master/slave protokol, half duplex, MASTER alje upit, pitanje (query), SLAVE odgovor (response)

    M

    A

    S

    T

    E

    R

    S

    L

    A

    V

    E

    Start adresa funkcija dataS1 Check EnddataSN

    Startadresafunkcijadata1CheckEnd dataN

    Start adresa funkcija Check End

    MODBUS poruka sadriSTART bajt - da se zna da je krenula ADRESNI bajt - da se zna kome je namenjena FUNKCIJSKI bajt da prozvani rob zna ta da radi NIZ PODATAKA bajtova sa podacima- zavisi od funkcije, na primer

    ako je pisanje sledi adresa na koju se pie i broj koji se pie CHECKSUM bajt - provera tanosti END bajt - da se zna da je kraj

  • Modbus protokol 10/27

    Modbus poruka je niz brojeva,a kako se alje jedan broj?

    ASCII i RTU (binarni) modovi se razliku po nainu slanja jednog broja ali i Po karakterima poruke tj. razliitim start, stop i poljima greke

    Jedan broj, na primer adresa 1, 1. se alje ba kao taj broj (RTU) 0000 0001 ili 2. kao dva heksadecimalna ASCII karaktera koji definiu taj broj 0 1

    Primer za broj 1

    ASCII prenos, RTU prenos,

    poslati dva bajta, svaki nosi poslati jedna bajt sa timJedan ASCII karakter brojem

    0 =0x30 1 =0x31 0x01

    0000 0001 0011 0000 0011 0001

  • Modbus protokol 11/27

    ASCII tabela znakova

    isto da imate ... Kada vam neko ili neka da 0x32 ...

    ASCII tabela karaktera (American Standard Code for Information Interchange)

  • Modbus protokol 12/27

    idle line

    (1)

    START

    (0)

    0 1 0 1 0 1 1 0 1 1 1

    STOP

    (1)

    idle line

    PARITY PORUKA

    (0xA6)

    8 bitova (0 -255)

    idle line

    (1)

    START

    (0)

    0 0 1 1 0 0 1 0 1 1 1

    STOP

    (1)

    idle line

    PARITY ASCII char

    0x32=2

    7 bitova (dosta za jedan ASCII karakter )

    1. RTU, binarni prenos , jedan bajt znai broj od 0 -255

    2. ASCII, ASCII prenos , jedan bajt znai karakter iz ASCII tabele.

    Modbus poruka je niz brojeva,a kako se alje jedan broj?

    0x01

    0000 0001

    0 =0x30 1 =0x31

    011 0000 011 0001

    Idu dva, to je loe, ali barem malo utede na 1 bitu.

  • Modbus protokol 13/27

    Modbus poruka je niz brojeva,a kako se alje jedan broj ?

    Ako ASCII alje duplo vie bajtova u odnosu na RTU (binarni) emu onda uopte ASCII prenos? ASCII je bio laki za nainiti, jer kod RTU svaki broj moe da ide od 0-255 i nije bilo mogue odrediti poseban karakter za START ili STOP. A to znaajno olakava detekciju poetka, kraja, ... Danas se ipak koristi samo RTU jer mnogo manje bajtova se alje, a detekcija se poboljala.

    Modbus/ASCII Modbus/RTU

    Tip karaktera ASCII 0...9 and A..F Binarni brojevi 0...255

    Frame start character ':' 3.5 chars silence (tiine)

    Frame end Characters CR/LF 3.5 chars silence (tiine)

    Dozvoljena pauza

    1 sec 1.5 times char length(1.5 trajanja karaktera)

    Start bit 1 1

    Data bitovi 7 8

    Pariti bit even/odd ili nema even/odd ili nema

    Stop bit 1 ili 2 1 ili 2

    Tip polja za proveru greke

    LRC Longitudinal Redundancy Check (8 bita)

    CRC Cyclic Redundancy Check (16 bitova)

  • Modbus protokol 14/27

    Modbus poruke u ASCII i RTU modu

    LRC

    Primer Modbus/ASCII poruke sa jednim informacionim bajtom

    : adresafunkcijapodatak

    A_H A_L F_H F_L D_H D_L

    CRLF

    CRC1

    Primer Modbus/RTU poruke sa jednim informacionim bajtom

    adrfunpoda CRC2 3.5 char tiina

    Mada ima problema sa sinhronizacijom starta, RTU prenos se brzo isplati ako se alje vie bajtova u poruci!

  • Modbus protokol 15/27

    Detekcija greke ASCII poruke LRC bajt

    U ASCII modu jedan bajt poruke je rezervisan za proveru greke. Ovaj bajt poruke nosi Longitudinal Redundancy Check (LRC) koji se:

    Rauna na predaji na osnovu poslatih bajtova i utiskuje u poruku. Rauna na prijemu na osnovu primljenih bajtova Prijemnik poredi dve LRC vrednosti i ispituje ima li greke.

    Procedura za LRC raun je ista i na predaji i na prijemu:

    saberi sve bajtove u poruci, bez start bajta ':' i bez zavrnog CRLF. Bajtove sabirati u 8-bitnoj aritmetici, prenos igorisati, Napravi II komplement dobijenog broja (255 x) +1

    LRC : adresafunkcijapodatakCRLF

    8 bitova 8 bitova 8 bitova

    Ovde nema veze to se 8 bitova podatka alje kao 2 ASCII bajta.. To LRC ne zanima, LRC radi sa 8 bitnim bajtovima a ne sa ASCII karakterima koji su iskorieni za njihovo slanje.

  • Modbus protokol 16/27

    Detekcija greke RTU poruke dva CRC bajta

    Isto raun na prijemu i predaji i porede se, ali ovog puta 16 bitne rei

    Procedura za raun 16 bitnu CRC glasi :1. 16 -bitni registar se napuni jedinicama, crc =0xFFFF2. Vri se logika XOR operacija nad crc registrom i bajtom poruke,3. Ukoliko je LSB = 1

    Sadraj crc registra se pomera za jedno mesto udesno Nad sadrajem crc registra se opet vri XOR ali sa nekim unapred definisanim brojem (na primer 0xA001)

    Ukoliko je LSB = 0 Sadraj crc registra se pomera za jedno mesto udesno

    1. U najvii bit (MSB) se upisuje nula, 2. Operacije 2-5 se ponavljaju 8 puta, za svih 8 bitova jednog bajta 3. Zatim se sve to ponavlja 2-6, za sve bajtove poruke i konana crc

    se upisuje u 16-bitno polje.

    CRC1 adrfunpoda CRC2 3.5 char tiina

    8 bitova 8 bitova 8 bitova16 bitova

  • Modbus protokol 17/27

    Adresiranje u Modbus sistemu

    Prva informacija u okviru Modbus poruke je adresa prijemnika. Ovo je uvek samo jedan 8bitni podatak, esto nazivan slave ID byte.

    Svakom slave ureaju je dodeljena jedna adresa, iz opsega 1 to 247. Na ovaj nain ve posle prvog pristiglog byte-a poruke slave zna da li je poruka za njega ili treba da je ignorie. Kada slave odgovara na poruku, on koristi istu (svoju) adresu u odgovoru.

    Adresa 0 je rezervisana za broadcost, i njome se alje poruka namenjena svime slave ureajima na liniji , poruka koju svi primaju ali niko na nju ne odgovara.

    CRC1 adrfunpod2 CRC2 pod1 pod3

    CRC1 adrfunCRC2Odgovor (ovde samo ACK)

  • Modbus protokol 18/27

    Funkcije u Modbus sistemu

    Ako je slave prozvan, on mora da zna ta od njega traimo da uradi ili da nam poalje. Ovu informaciju nosi function code polje.

    CRC1 adrfunpod2 CRC2 pod1 pod3

  • Modbus protokol 19/27

    Function 01: Read coil status

    Master Query funkcije 01 za itanje statusa jednog ili vie bitovaunutar slave jedinice. Master alje poruku

    Predvieno 2 bajta za adresu bita unutar slave jedinice(65536 bitova se mogu videti)

    Predvien 1 bajt adrese 0 -255

    Predvieno 2 bajta da definiu Koliko bitova se odjednom ita (65536 bitova se mogu videti)

    Slave

    Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7

    Bit 8 Bit 9 Bit10 Bit11 Bit12 Bit13 Bit14 Bit15

    Master

  • Modbus protokol 20/27

    Function 01: Read coil status

    Odgovor na funkciju 01 za itanje statusa jednog ili vie bitovaunutar slave jedinice. Slave alje odgovor

    Proraun koliko bajtova treba da sepoalje traeni bitovi, npr za 11 napie 2 bajta

    Samo `povraa` nazad adresu i kod, da master zna da je u redu.

    Bajtovi koji nose traene bitove

    Funkcija 02 je ista ali ba za INPUT bitove, praktino pinove Mikrokontera ili ulaze PLC koje master hoe da proita.

  • Modbus protokol 21/27

    Function 01: Read coil status

    itanje stanja diskretnih vrednosti izlaza poevi od broja 20 pa sve dobroja 56 koji se nalaze na slave jedinici sa adresom 17 (MODBUS/RTU)

  • Modbus protokol 22/27

    Function 03: Read holding registar

    Master Query funkcije 03 za itanje statusa jednog ili vie registaraunutar slave jedinice. Panja, po def. Modbus protokola registri su 16-bitni, videti odgovor! Master alje poruku

    Predvieno 2 bajta za adresu registra unutar slave jedinice(65536 registara se mogu videti)

    Predvien 1 bajt adrese 0 -255

    Predvieno 2 bajta da definiu koliko registara se odjednom ita (65536 registara se mogu videti)

  • Modbus protokol 23/27

    Function 03: Read holding registar

    itanje izlaznih holding registara poevi od broja 40108 pa do broja 40110 koji se nalaze na slave jedinici sa adresom 17 (MODBUS/RTU)

    Ne treba zamarati studente sa time, ali MODBUS je jasno definisao raspon adresa holding registare koji poinje od 40000. Tako da se alje adresa 108 misli se na 40108.

  • Modbus protokol 24/27

    Function 16: Preset multiple registars

    Master Query funkcije 16 za pisanje jednog ili vie registaraunutar slave. MODBUS holding registri poinju na adresi 40001.

  • Moderni Modbus protokolModbus/TCP

  • Modbus protokol 26/27

    Modbus/TCP

    Omoguena kontrola i akvizicija podataka preko interneta.

    Master (client) alje poruku do specificirane IP adrese i porta.

    Svaki slave ureaj (server) ima svoju specifinu IP adresu.

    Modbus/TCP je za razliku od Modbus/RTU i ASCII klijent server tipa

    Po konvenciji mnogi server ureaji koriste Ethernet port 502

    Kod Modbus/TCP imamo IP adresu za razliku od slave ID

    Modbus TCP ima sledee karakteristikeJednostavnost: Modbus TCP/IP uzima Modbus poruku i dodaje TCP/IP okvir zaprolaz poruke do destinacije kroz internet. Podrava standardni Ethernet: Standardni Ethernet ureaji su veoma pristupanii pada im cena dok brzina rada raste (10 , 100 Mb i 1Gb). Modbus TCP/IP je dobio i koristi Ethernet port 502 koji je rezervisan samo za Modbus/TCP. Protokol je otvoren:Ovo znai da ne treba platiti za njegovo korienje. Veliki broj ureaja ga podrava:mnogi proizvoai standardno ugrauju Modbus opciju u svoje ureaje.

  • Modbus protokol 27/27

    Kako se pravi Modbus/TCP poruka, tj. okvir na TCP nivou?

    MODBUS TCP/IP formira TCP poruku tako to u nju ugrauje deo MODBUS RTUporuke. Iz MODBUS RTU poruke se izdvajaju funkcijski kd i podaci, a brie se adresa i cheksum polje.Funkcijski kd i podaci se ugrauju u TCP deo koji je oznaen sa Protocol Data Unit (ADU), bez izmena.Umesto MODBUS slave ID adrese se koriste IP adresa i broj porta.Umesto MODBUS checksum polja se koristi Ethernet i TCP/IP checksum polja.

  • Modbus protokol 28/27

    Modbus/TCP okvir na transportnom nivou

    Da bi Modbus TCP/IP Application Data Unit stigla preko interneta, ide se sve po redu, ona se prvo okruzuje sa IP okvirom (koji nosi IP adresu na koju Modbus poruka ide) i sa Ethernet okvirom i tako krene u svet.

  • Modbus protokol 29/27

    Modbus gateway ureaji

    Modbus gateway omoguuje prostu konverziju Modbus RTU ili ASCII poruka u MODBUS TCP i obrnuto. Gateway vri

    - fiziku konverziju Rs232 ili RS485 na Ethernet i obrnuto - adaptaciju Modbus RTU i Modbus ASCII u Modbus TCP

    Modbus Gateway ureaj moe da radi kao Modbus Master ili kao Modbus Slave Gateway. lokalno podrava RTU (binarni) ili ASCII format preko interneta moe da radi koristee TCP ili UDP protokol moe da pria sa do 248 razliitih ureaja

  • Modbus protokol 30/27

    Primena Modbus slave gateway ureaja

    Primena Modbus slave gatewaySvi slave-ovi su na serijskoj, lokalnoj strani Modbus Master A moe priati sa slave 1,2 ,3 i 4. Modbus Master B moe priati sa slave 1,2 ,3 i 4.

  • Modbus protokol 31/27

    Primena Modbus master gateway ureaja

    Primena Modbus master gatewaySlave-ovi na lokalnoj mrei ali i negde na internetu.Modbus Master A moe priati sa slave 1,2 i 3. Modbus Master B moe priati sa slave 1 i 2.

  • Protokoli klijent-server tipa

  • Modbus protokol 33/27

    Klijent-server komunikacija

    master

    RX/TX

    slave 1 slave 2 slave 3

    RX/TX RX/TX RX/TX

    1. Modbus RTU i ASCII (master slave)Master poinje komunikaciju i ita pie po memoriji slave ureaja. Master pronalazi slave-a preko njegove modbus adrese.

    2. Modbus TCP(klijent - server) protokol

    Klijent poinje komunikaciju i ita pie po memoriji server. ureaja. Klijent pronalazi server na osnovu IP adrese. Server-i imaju port specijalno namenjen za MODBUS servise.

  • Primer MODBUS TCP vezeizmeu dva PLC

  • Modbus protokol 35/27

    Primer MODBUS TCP veze izmeu dva PLC

    U primeru se koriste dva PLC S7-1200, sa integrisanim PROFINET/Ethernetprikljukom. Preko ove veze je ostvarena MODBUS TCP komunikacija kojase bazira na TCP/IP protokolu iji je fiziki nivo upravo Ethernet protokol.Za vizuelizaciju komunikacije je korien Siemens SIMATIC HMI TouchPanel KTP 400 Basic Mono sa kojim PLC ureaji komuniciraju prekoPROFINET protokola koji takoe koristi Ethernet kao fiziki nivo.

  • Modbus protokol 36/27

    Kreiranje projekta u TIA portalu

    U ovom primeru je potrebno dva puta odabrati PLC SIMATIC S71200 iji CPU nosi oznaku 1212C AC/DC/RLY, serijskog broja 6ES7 212-1BD30-0XB0, kao i jednom odabrati HMI ureaj KTP400 Basic mono PN, verzije 12.0.0.0 i oznake 6AV6647-0AA11-3AX0 koji se nalazi u SIMATIC Basic Panel/4 Display. Nakon odabira HMI Touch Panel-a potrebno je odabrati sa kojim PLC ureajima je povezan panel, vie o tome u nastavku.

    TIA Totally Integrated AutomationSiemens program koji pored klasinog programiranja PLC nudi i konfigurisanje ipovezivanje PLC i raznih ureaja u sloene sisteme i mree tipa PROFIBUS, PROFINET ..Kada je novi TIA projekat kreiran (opcija new project) otvara se novi prozor prikazan na slici,i potrebno je dodati nove ureaje odabirom opcije Devices/Add new device.

  • Modbus protokol 37/27

    Dodavanje IP adresa svim ureajima

    Nakon kreiranja projekta i dodavanja ureaja koji ine jednu mreupotrebno je dodeliti odgovarajue IP adrese ureajima. Takoe, potrebno je dodeliti IP adresu raunaru sa kog je pokrenutTIA Portal tj. sa koga programiramo i pratimo rad sistema

    IP adresa raunara se dodeljuje u prozoru Local Area Connection, Internet protocol properties. U ovom primeru IP=192.168.0.10, dok je Subnet mask 255.255.255.0.

  • Modbus protokol 38/27

    Dodavanje IP adresa dva PLC i jednom HMI

    Dodeljivanje IP adrese PLC i HMI ureajima se vri u offline modu u TIA portalu u prozoru Devices. Potrebno je : odabrati ureaj kome elimo dodeliti i/ili promeniti IP adresu, zatim odabrati opciju Device configuration pa opciju Ethernet addresses. nakon toga u polje IP address upisati eljenu IP adresu i Subnet mask, slika 14.50. Isti postupak se ponavlja i za druge ureaje. Odabrane su sledee IP adrese/maske ureaja:

    Dodeljivanje IP adrese za PLC1

  • Modbus protokol 39/27

    Povezivanje ureaja u PROFINET mreu

    O PROFINET kasnije tokom kursa. Zasad samo da se napomene da je PROFINET korien za praenje rada realizovanog MODBUS sistema. Poto je PROFINET sastavni deo TIA portala on lako proradi nakon dodele IP adresa. On e nam svojom razmenom podataka pomoi da pratimo i testiramo rad MODBUS komunukacije. O PROFINET protokolu u sledeem poglavlju.

  • Modbus protokol 40/27

    Realizacija MODBUS TCP komunikacije

    Povezivanje ureaja u PROFINET mreu nije sutina, ona e nam samo pomoi da nadgledati rad MODBUS. MODBUS TCP komunikacija e koristiti iste IP adrese ureaja. Za povezivanje ureaja u MODBUS mreu potrebno je koristiti posebno realizovane module MB_CLIENT i MB_SERVER

    EN

    REQ

    DISCONNECT

    CONNECT_ID

    IP_OCTET_1

    IP_OCTET_2

    IP_OCTET_3

    IP_OCTET_4

    IP_PORT

    MB_MODE

    MB_DATA_ADDR

    MB_DATA_LEN

    MB_DATA_PTR

    1

    1

    0

    1

    110

    120

    10

    10

    502

    0

    40001

    1

    P#M10.0 WORD 1

    EN0

    DONE

    BUSY

    ERROR

    STATUS

    MB_CLIENT

    EN

    DISCONNECT

    CONNECT_ID

    IP_PORT

    MB_HOLD_REG

    MB_SERVER

    ENO

    NDR

    DR

    ERROR

    STATUS

    1

    0

    1

    502

    P#M100.0 WORD 10

  • Modbus protokol 41/27

    Realizacija PLC programa za Modbus /TCP

    EN

    REQ

    DISCONNECT

    CONNECT_ID

    IP_OCTET_1

    IP_OCTET_2

    IP_OCTET_3

    IP_OCTET_4

    IP_PORT

    MB_MODE

    MB_DATA_ADDR

    MB_DATA_LEN

    MB_DATA_PTR

    1

    1

    0

    1

    110

    120

    10

    10

    502

    0

    40001

    1

    P#M10.0 WORD 1

    EN0

    DONE

    BUSY

    ERROR

    STATUS

    MB_CLIENTMB_CLIENT blok se konfigurie na osnovu ulaznih parametara a ostatak programa obavetava o svom statusu preko izlaznih parametara. Ulazni parametar EN (BOOL, 1 ili 0) ukljuuje MB_CLIENT blok. Ulaz REQ (BOOL) je signal za poetak komunikacije sa serverom. Ulaz DISCCONNECT (BOOL) se moe iskoristiti za prekid veze. U datom primeru ova tri ulaza su postavljeni na 110, respektivno. CONNECT_ID (UINT) parametar predstavlja jedinstven identifikacioni broj.

    IP adresa servera sa kojim e klijent da komunicira se definie preko etiri ulazna parametra (IP_OCTET_1, IP_OCTET_2, IP_OCTET_3 i IP_OCTET_4). U primeru IP adresa servera je 110.120.10.10, slika 14.52. Broj TCP porta (ulaz IP_PORT) dodeljen MB_CLIENT bloku je 502, poto je port 502 po TCP standardu rezervisan za MODBUS TCPkomunikaciju.

    Ukoliko je ulazni MB_MODE parametar postavljen na nulu MB_CLIENT ita podatke sa servera, a kada je postavljen na jedinicu upisuju se podaci na server. MB_DATA_ADDR parametar predstavlja poetnu adresu podatka kome se pristupa od strane klijenta. Na osnovu njega blok zna koja je MODBUS funkcija. MB_DATA_LEN ulazni parametar predstavlja broj bitova ili rei podataka koji se prenose tokom komunikacije. U primeru se

    ita samo podatak sa adrese 40001.

    MB_DATA_PTR definie gde se u memoriji klijenta fiziki nalaze podaci za prenos. MB_DATA_PTR je pokaziva na

    MODBUS niz registara podataka koji su proitani iz MODBUSservera ili trebaju biti upisani u server. U primeru je izabrana oblast od jednog podatka, na lokaciji MW10. U optem sluaju vai P#adresa prvog podatka tip podatka

    duina na pr (P#M10.0 WORD 5).

  • Modbus protokol 42/27

    Realizacija PLC programa za Modbus /TCP

    EN

    DISCONNECT

    CONNECT_ID

    IP_PORT

    MB_HOLD_REG

    MB_SERVER

    ENO

    NDR

    DR

    ERROR

    STATUS

    1

    0

    1

    502

    P#M100.0 WORD 10

    Ulazni parametar EN (BOOL) i DISCCONNECT (BOOL) imaju istu ulogu kao i kod klijent bloka. CONNECT_ID (UINT) ulazni parametar predstavlja jedinstven identifikacioni broj kojim se definie izmeu kog klijenta i kog servera je uspostavljena komunikacija. IP port broj definie koji IP port se koristi za MODBUS komunikaciju. I u sluaju servera se koristi IP_PORT = 502.

    Ulaznim parametrom MB_HOLD_REG se definie u kom segmentu memorije servera se nalaze podaci kojima klijent moe da pristupi. MB_HOLD_REG parametar mora da sadri adresu prve memorijske lokacije, tip podataka i duinu oblasti u kojoj se nalaze podaci za itanje ili pisanje. U datom primeru je izabrana oblast od deset registara, ija je poetna adresa MW100. U optem sluaju vai P#adresa prvog podatka tip podatka duina

    NDR izlazni parametar daje signal ostatku server programa da su pristigli novi podaci sa klijenta. DR izlazni parametar daje signal ostatku server programa da su podaci proitani od strane klijenta (1) ili da nisu (0). ERROR (BOOL) signalizira eventualnu greku iji kd se moe proitati u izlaznom STATUS (WORD) parametru.

  • Modbus protokol 43/27

    Realizacija PLC programa za Modbus /TCP

    MODBUS TCP klijent i server komuniciraju preko segmenata memorije definisanih sa MB_HOLD_REG parametrima i time rezervisanih za MODBUS TCP komunikaciju. U sluaju itanja, klijent alje funkciju read (3 ili 16) jer eli da ita vrednosti nekih registara unutar memorije servera. Pretpostavlja se da je ostatak server programa ove memorijske lokacije ve popunio sa potrebnim podacima, npr. sa najnovijim rezultatima nekog merenja. Po pristizanju odgovora na funkciju itanja klijent dobijene (proitane) podatke smeta u deo svoje memoriju, takoe definisan sa MB_HOLD_REG parametrom. U sluaju pisanja, klijent alje funkciju write (6) jer eli da menja vrednosti nekih registara unutar memorije servera. Pre slanja, ostatak klijent programa memorijske lokacije za slanje popunjava potrebnim podacima, npr. sa najnovijim komandama za server. Po prijemu funkcije 6 server pristigle podatke smeta u deo svoje memoriju definisan sa MB_HOLD_REG parametrom.

    40001 (MW100)

    40002

    40003

    40004

    ...

    49999

    40001 (MW10)

    40002

    40003

    40004

    ...

    49999

    Read40001

    40002(MW102)

    40003

    40004

    ...

    49999

    40001

    40002(MW12)

    40003

    40004

    ...

    49999

    Write

    a) b)Server Klijent Server Klijent

    Modbus ne zanima koje su fizike lokacije u pitanju. On lokacije 40000 pa nadalje iz klijenta kopira u server (u sluaju write) ili iste te lokacije iz servera kopira u memoriju klijenta (u sluaju read). Ili poto smo kod klijenta MW10 vezali za start adresu (40000) Client MB_DATA_POINTER P#M10.0 WORD 1A kod servera MW100 Server MB_DATA_POINTER P#M100 WORD 10fiziki se vrednosti sa tih memorijskih lokacija razmenjuju.

  • Modbus protokol 44/27

    Realizacija klijent PLC programa za Modbus/TCP

    Network 1 predstavlja blok klijenta koji ita podatke saneke mem. lokacije u serveru, i upisuje u svoju mem.lokaciju. Blok MB_CLIENT je uvek dozvoljen (EN=1).Nakon starta prvog sken ciklusa programa setuje sesistemski bit FirstScan (M1.0) koji je doveden na ulazREQ bloka MB_CLIENT pa se tako zapoinje komunikacija.Na DISCONNECT ulaz dovodi se sistemski bit AlwaysFALSE(M1.3) koji uvek ima vrednost nula i time nikad nee doido prekida veze. Poruka se alje ka serveru naIP=192.168.0.1, preko porta 502. Ovaj MB_CLIENT vrifunkciju itanja sa servera, MB_MODE=0, i to samemorijske lokacije 40001 na serveru. Dobijeni podatakse upisuje u lokaciju klijenta MW10.

    Network 2 predstavlja drugi MB_CLIENT blok koji jepodeen da pie (MB_MODE=1) podatke u nekumemorijsku lokaciju u server ureaju. Podatke za upisuzima iz memorijske lokacije u svojoj, klijent memoriji, salokacije M12. I ovaj MB_CLIENT blok je uvek dozvoljen(EN=1 i DISCONNECT=0). REQ ulaz ovog MB_CLIENTbloka je povezan sa DONE izlazom MB_CLIENT bloka zaitanje iz Network1. Time se slanje poruke za pisanjeinicira odmah po zavretku poruke za pisanje. Ovim jenainjeno da se nakon prvog sken ciklusa inicira prvoitanje Network1, a po zavretku itanja i pisanje u server,Network2. Ovaj drugi MB_CLIENT vri funkciju pisanjapodatka iz svoje memorijske lokacije M12 na MODBUSlokaciju servera 40002.Network 3 predstavlja treu liniju koda u kojoj se izvravamatematika funkcija inkrementiranja. U svakom novomciklusu programa inkrementira se memorijska lokacijaMW12. Ova memorijska lokacija e se upisivati naMODBUS lokaciju 40002 server ureaja.

  • Modbus protokol 45/27

    Realizacija server PLC programa za Modbus/TCP

    Network 1 ini MB_SERVER blok i njegovi ulazi i izlazi.Ovo linijom koda je omoguena razmena podataka saMODBUS TCP klijentima. MB_HOLD_REG predstavljanajbitniji parametar MB_SERVER bloka. To je pokazivana privremenu memorijsku lokaciju u kojoj se nalazepodaci za razmenu sa klijentom. Korienjem MODBUSfunkcije read klijent moe da ita podatke iz te oblasti,dok korienjem MODBUS funkcije write klijent moe ida pie po toj oblasti, tj. menja podatke u njoj. U ovomprimeru je uzeta memorijska oblast koja poinje salokacijom MW100, ima deset podataka tipa word. Iakoje na serveru rezervisano 10 word lokacija, u primeruklijent programa (slika 14.55) se koriste samo dve,klijent ita sa servera MW100 (MODBUS 40001) i klijentpie na server u MW102 (MODBUS 40002). Ostali ulazniparametri server bloka su CONNECT_ID=1 (isti kao i kodklijenta), DISCONNECT na koga je doveden sistemski bitAlwaysFALSE ija memorijska lokacija uvek imavrednost nula, kao i IP_PORT=502 to je po TCPstandardu upravo broj porta rezervisan za MODBUS TCPprenos.Network 2 predstavlja drugu liniju koda u kojoj seizvrava matematika funkcija inkrementiranja. Usvakom novom ciklusu programa inkrementira sememorijska lokacija MW100. Ova memorijska lokacija ese iitavati na zahteh klijenta.