Tööstuslikud infovõrgud
Euroopa struktuurfondide logo
Automatiseerimise viide Mehhatroonikaseadmete viide Pneumoautomaatika viide Siemens LOGO! viide Siemens S7-1200 viide

 

TÖÖSTUSLIKUD SIDEVÕRGUD

Tööväljavõrk MODBUS

Tööväljavõrk MODBUS

Tööväljavõrgu MODBUS protokolli kirjeldus

Tööväljavõrgu Modbus sideprotokoll põhineb klient-server-arhitektuuril. See leiab laialdast kasutust tööstuses kontrolleritevahelise andmeside loomiseks. Andmete edastamiseks kasutatakse jadakanalied nagu RS-485, RS-422, RS-232 (Joonis 6.9), või Ethernet võrku TCP/IP (Modbus TCP) (Joonis 6.10).

Joonis 6.9.RS-485, RS-422, RS-232 [13]

Joonis 6.10. Ethernet võrk TCP/IP [13]

Modbus on seotud OSI võrgumudeli rakendustasandi protokollidega. Kontrollerid, mis töötavad Modbusi võrgus, kasutavad klient-server-mudelit, mis baseerub päringutest ja vastustest koosnevatest andmeedastustest.

Tavaliselt on võrgus ainult üks ülemseade (server) ja mitu alluvseadet (klienti). Ülemseade algatab andmeedastused (sidepäringud),  pöördudes individuaalselt iga alluvseadme poole või alluvseadmete grupi poole (Joonis 6.11). Alluvseade omakorda moodustab sõnumi ülemseadmele poolt nõutud informatsioonist ja saadab selle ülemseadmele tagasi. Grupipäringu saamisel ei moodustata vastust.

Joonis 6.11. Serveri ja kliendi pöördumised [13]

Kaadri (andmepaketi) formaat

Modbusi spetsifikatsioon kirjeldab päringute ja vastuste kaadrite formaat. Elementaarse paketijuhtimise tasandil nimetatakse neid kaadreid ka protokolliandmeüksusteks (Protocol Data Unit, PDU). Protokolliandmeüksuse formaat ei sõltu ühendusliini tüübist. See sisaldab juhtinfot ning andmevälja . Juhtinfo on kodeeritud ühe baidi pikkusesse välja ja võib vastu võtta väärtusi vahemikus 1..127. Vahemik 128..255 on reserveeritud veakoodile. Andmeväli on muutuva pikkusega ja selle pikkuse piirab protokolliandmeüksuse andmepaketi suuruse piirang, milleks on 253 baiti (Joonis 6.12).

Modbus PDU

Funktsiooni-kood

Andmed

1 bait

N < 253 (baiti)

Joonis 6.12.

Protokolliandmeüksus paneb lisaväljade sisu teise andmepaketti, et võimaldada paketi edastamist üle ühenduse füüsilise liini. Seda andmepaketti nimetatakse rakendusandmeüksuseks (Application Data Unit, ADU). Selle formaat sõltub ühendusliini tüübist.

Joonis 6.13. Üldine MODBUS kaader [13]

Tööväljavõrgu Modbus protokollil on kolm põhilist rakendust. Kaks andmete edastamiseks mööda jadaliidest, modem EIA/TIA-232-E (RS-232), EIA-422, EIA/TIA-485-A (RS-485), optline ja raadioühendus:

  • Modbus RTU;
  • Modbus ASCII;
  • Kolmas rakendus on andmete edastamiseks mööda Etherneti TCP/IP võrku:
  • Modbus TCP.

Modbus RTU informatsiooni kaardi rakendusandmeüksuse üldine struktuur on kirjeldatud pildil 6.14:

614

Joonis 6.14. MODBUS RTU kaader

See koosneb järgmistest osadest:

  • Tööjaama aadress – see on alluvseadme aadress, millele kirje (sõnum) on suunatud. Iga seade vastab ainult kirjele, mis sisaldab seadme enda aadressi võiseadmepaketi aadressi kuhu antud seade kuulub. Vastus algab samamoodi alluvseadme aadressiga. Seadmete aadressid on vahemikust 1 kuni 247. Aadressi 0 kasutatakse seadmetepaketi adresseerimiseks ja seda tunnevad kõik seadmed; aadressid vahemikus 248..255 on reserveeritud;
  • Juhtinfo – ühe baidine väli, milles hoitakse täitmiskäsku (funktsiooni number);
  • Andmed – sisaldab infot, mida seade vajab ülemseadme käsu täitmiseks või infot, mis on vajalik vastamiseks. Selle välja pikkus sõltub funktsiooni numbrist ja on vahemikus 0..252 baiti;
  • Veakontroll (tsükkelkoodkontroll, CRC) – kontrollsumma kaadrisiseseks veakontrolliks. Liini sõnumi ülekande ajal kirjutatakse esimesena madalama järgu kontrollsumma bait.

Rakendusandmeüksuse maksimaalne suurus jadavõrgus RS232/RS485 on 256 baiti ja Ethernet TCP võrgus on see 260 baiti.

Modbus ASCII informatsiooni kaadri formaat on kirjeldatud pildil 6.15:

6.15

Joonis 6.15. Modbus ASCII informatsiooni kaader [12]

Modbus ASCII kaadri individuaalsete väljade tähendused on esitatud tabelis 6.9.

Tabel 6.9 Modbus ASCII kaadri individuaalsete väljade tähendused

Nimi

Pikkus

Funktsioon

Algus

1 märk

Kaardi algust tähistatakse kooloniga (;: , ASCII on selle väärtuseks 3A hex)

Aadress

2 märki

Tööjaama aadress

Juhtinfo

2 märki

Viitab juhtinfole (funktsiooni koodile) nagu näiteks loe keerde/sisendite väärtusi

Andmed

n märki

Andmed - pikkus valitakse sõltuvalt sõnumi tüübist ja edastatavast andmemahust

LRC kontroll

2 märki

Veakontroll

Lõpp

2 märki

Kaardi lõppu tähistatakse reavahetuse märgipaariga (CRLF, ASCII on selle väärtuseks 0D& 0A hex)

Modbus TCP informatsiooni kaadri struktuur on järgmine:

Joonis 6.16. Modbus TCP informatsiooni kaader [12]

Joonis 6.17. Modbus TCP andmepaketi koostamine [12]

Modbus TCP kaader koosneb järgmistest osadest:

  • Tehingu ID – kahebaidine tehingu identifitseerimisnumber;
  • Protokolli ID – kahebaidine protokolli identifitseerimisnumber;
  • Pikkus – edastatavate andmete pikkus salvestatud kahes baidis;
  • Üksuse ID – selle seadme aadress, millele päring on adresseeritud. Tavaliselt ignoreeritakse seda, kui side toimub ainult ühe seadmega.

Modbus TCP kaadril puudub kontrollsumma välja.

Joonis 6.18. Modbus TCP kaader [12]

Juhtinfo kategooriad

Modbusis kasutatavates protokollides on kolm juhtinfo (juhtfunktsioonide) kategooriat: Standardiseeritud käsud; kasutajakäsud ja reserveeritud käsud (Joonis 6.19).

Joonis 6.19. Juhtinfo kategooriad [12]

Standardiseeritud käsud

Nende kirjeldus tuleb avaldada ja selle kinnitab Modbus-IDA. See kategooria hõlmab nii jaotatud kui ka vabu koode.

Tabel 6.10 Standariseeritud käsud [12]

Funktsiooni nr

Vastused

1 (0x01)
Loe diskreetne väärtus
(Read Coil Status)

A1

A0

Q1

Q0

 

N

D (N baiti)

2 (0x02)
Loe diskreetsed sisendid
(Read Discrete Inputs)

A1

A0

Q1

Q0

 

N

D (N baiti)

3 (0x03)
Loe ooteregistrid
(Read Holding Registers)

A1

A0

Q1

Q0

 

N

D (N baiti)

4 (0x04)
Loe sisendregistrid
(Read Input Registers)

A1

A0

Q1

Q0

 

N

D (N baiti)

5 (0x05)
Kasuta üksik diskreetne väärtus
(Force Single Coil)

A1

A0

D1

D0

 

A1

A0

D1

D0

 

6 (0x06)
Töötle üksik register
(Preset Single Register)

A1

A0

D1

D0

 

A1

A0

D1

D0

 

15 (0x0F)
Kasuta mitu diskreetset väärtust
(Force Multiple Coils)

A1

A0

Q1

Q0

N

D (N baiti)

A1

A0

Q1

Q0

 

16 (0x10)
Töötle mitu registrit
(Preset Multiple Registers)

A1

A0

Q1

Q0

N

D (N baiti)

A1

A0

Q1

Q0

 

  • A1 ja A0 — elementide aadress
  • Q1 ja Q0 — elementide arv
  • N — andmebaitide arv
  • D — andmed

Andmete lugemine

Väärtuste lugemiseks kasutatakse käskusid väärtustega 1 kuni 4.

  • 1 (0x01) (Read Coil Status);– tagastab väärtuse mitmele olekuregistrile;
  • 2 (0x02) (Read Discrete Inputs) – tagastab väärtuse mitmele diskreetsele sisendile;
  • 3 (0x03) (Read Holding Registers);– tagastab väärtuse ooteregistritele;
  • 4 (0x04) (Read Input Registers);– tagastab väärtuse mõnedele sisendregistritele;'

Päring koosneb esimesest elemendi aadressist, elemendi suurusest, ja loetavate elementide arvust. Nii aadress kui suurus omistatakse 16-bitise numbrina. Päritud andmed saadakse vastusega. Andmetele järgneb bait, mis sisaldab edastatud andmete suurust.

Tabel 6.11 Alamfunktsiooni kood [12]

Alamfunktsiooni kood

Nimi

Hex

Dec

00

00

Tagasta päringu andmed
(Return Query Data)

01

01

Taaskäivita kommunikatsioon
(Restart Communications Option)

02

02

Tagasta diagnostika register
(Return Diagnostic Register)

03

03

Muuda ASCII sisenderaldaja
(Change ASCII Input Delimiter)

04

04

Juuruta ainult kuulamise reziim
(Force Listen Only Mode)

J

05..09

Reserveeritud

0A

10

Nulli loendurid ja diagnostika register
(Clear Counters and Diagnostic Register)

0B

11

Tagasta siini sõnumiteloenduri väärtus
(Return Bus Message Count)

0C

12

Tagasta siini sidevigade loenduri väärtus
(Return Bus Communication Error Count)

0D

13

Tagasta siini erandolukordade loenduri väärtus
(Return Bus Exception Error Count)

0E

14

Tagasta alluvseadme sõnumiloenduri väärtus
(Return Slave Message Count)

0F

15

Tagasta alluvseadme puuduvate vastuste loenduri väärtus
(Return Slave No Response Count)

10

16

Tagasta alluvseadme eituste loenduri väärtus
(Return Slave NAK Count)

11

17

Tagasta alluvseadme hõivatud staatuse loenduri väärtus
(Return Slave Busy Count)

12

18

Tagasta siini märkide ülejooksu loenduri väärtus
(Return Bus Character Overrun Count)

13
14

N.A

19
20

21...65535

Reserveeritud

Nulli ülejooksu loendur ja lipp
(Clear Overrun Counter and Flag)

Reserveeritud

Kasutaja käsud

Need sisalduvad kahes koodivahemikus (65..72 ja 100..110), milles on võimalik realiseerida mitmeid erinevaid funktsioone kasutaja poolt. Siiski ei ole mingit kindlust, et need käsud ei ole kasutuses teistes seadmetes mingite funktsioonide realiseerimiseks.

Reserveeritud käsud

See funktsioonide sisendkoodide kategooria ei ole standardiseeritud, siiski kasutatakse neid erinevate firmade poolt toodetud seadmetes. Need koodid on: 9, 10, 13, 14, 41, 42, 90, 91, 125, 126 ja 127.

Andmemudel

Üks selle protokolli poolt teostatavaid standardiseeritud tegevusi on kontrollerite registrites andmete lugemine ja kirjutamine. Protokolli spetsifikatsioon määratleb neli andmetabelit, mis on toodud tabelis 6.12.

Tabel 6.12 Andmemudelid [12]

Primaarsed tabelid

Objekti tüüp

Tüüp

Kommentaarid

Diskreetne sisend

Üksik bitt

Kirjutuskaitsega (read-only)

Seda tüüpi andmed annab sisend/väljund süsteem.

Diskreetne väärtus

Üksik bitt

Lugemine-kirjutamine

Seda tüüpi andmeid saavad muuta kõik rakendusprogrammid.

Sisendregistrid

16-bitine sõna

Kirjutuskaitsega (read-only)

Seda tüüpi andmed annab sisend/väljund süsteem.

Ooteregistrid

16-bitine sõna

Lugemine-kirjutamine

Seda tüüpi andmeid saavad muuta kõik rakendusprogrammid.

Igas tabelis toimub elementidele ligipääs 16-bitise aadressiga; esimene asukoht vastab aadressile 0. Sel moel võib iga tabel sisaldada kuni 65536 elementi. Spetsifikatsioon ei määra tabelis asuvate elementide füüsilist pikkust ega sisemist aadressi, millele need vastavad. Näiteks on võimalik moodustada kattuvaid tabeleid. Sellisel juhul käsud, mis töötavad diskreetsete andmetega ja 16-bitised registritega võivad adresseerida tegelikult sarnaseid andmeid.

Veakontroll Modbus RTU protokollis

Andmevahetusel Tööväljavõrgus Modbus RTUs võib tekkida kahte tüüpi vigu:

  • Vead, mis on seotud informatsiooni moonutamisega andmete ülekandmisel;
  • Loogikavead.

Esimest tüüpi vead tuvastatakse kaadri sümboli, paarsuskontrolli ja tsükkelkoodkontroll summa CRC-16-IBM (kasutatakse numbrilist polünoomi = 0xA001 ) abil.

Teist tüüpi vigade tuvastamiseks eeldab Modbus RTU protokoll, et seade ei ole vastust kätte saanud või vastus ise sisaldas veakoodi (tabel 6.13).Seda et vastus võib sisaldada veasõnumit, näitab käsukoodi kõrgema järgu bitt. Tööjaam tööväljavõrgus Modbus töötab vastavalt allpool olevale skeemile:

  • Kui alluvseade on kätte saanud korrektse päringu ja on võimeline seda töötlema standardsel moel, saadab ta tagasi standardse vastuse;
  • Kui alluvseade ei ole saanud ühtegi väärtust, ei genereeri ta ühtegi vastust. Sellisel juhul diagnoosib ülemseade aegumise (timeout) vea.
  • Kui alluvseade on saanud päringu, kuid on ühtlasi tuvastanud ka vea (paarsus, LRC või CRC), siis ei genereeri ta ühtegi vastust. Sellisel juhul diagnoosib ülemseade aegumise (timeout) vea;
  • Kui alluvseade on saanud päringu, kuid mingil põhjusel ei suuda seda töödelda, genereerib ta vastuse, mis näitab tekkinud vea tüüpi.

Tabel 6.13 Veakontroll [12]

Andmeedastuse suund

Alluvseadme aadress

Funktsiooni number

Andmed (või veakood)

CRC

Järjekord (Ülem→Alluv)

0x01

0x77

0xDD

0xC7 0xA9

Päring (Alluv→Ülem)

0x01

0xF7

0xEE

0xE6 0x7C

Tabel 6.14 Veakontrolli koodid[12]

Viga #

Veateade

0

Ei ole vigu

1

Keelatud toiming

2

Keelatud andmeaadress

3

Keelatud andmeväärtus

4

Ülemseade aegumine - - timeout

5

Side puudub

6

Sobimatu üksuse ID

7

Sobimatu käsk

8

Sõnumi pikkus

9

Funktsioon ei ole toetatud

10

Keelatud formaat

11

Sobimatud vastuvõetud andmed

Creative Commons Licence
"Tööstuslikud infovõrgud" by Eduard Brindfeldt is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Estonia License .