Modbus: erinevus redaktsioonide vahel
Resümee puudub |
P Fix URL prefix |
||
128. rida: | 128. rida: | ||
== Välislingid == |
== Välislingid == |
||
*[ |
*[http://www.simplymodbus.ca/FAQ.htm Simply Modbus] |
||
*[http://www.modbus.org/ Modbus Organization] |
*[http://www.modbus.org/ Modbus Organization] |
||
== Viited == |
== Viited == |
Redaktsioon: 12. detsember 2013, kell 14:33
See artikkel valmib koolitööna. Võimaluse korral lisa oma parandusettepanekud arutelulehele. See ei tähenda siiski, et teistel kaastöölistel on artikli muutmine keelatud. Malli võib eemaldada 1. jaanuar 2014. |
See artikkel vajab toimetamist. (Detsember 2013) |
See artikkel ootab keeletoimetamist. |
Modbus on jadaside protokoll, mille töötas 1979. aastal välja Modicon (nüüd Schneider Electric), kasutamaks seda oma programmeeritavas loogikakontrolleris (PLC). Aja jooksul on sellest oma lihtsuse tõttu saanud sideprotokollide tunnustatud standard ja on nüüdseks tavapäraselt saadaval võimalus tööstuslike elektroonikaseadmete ühendamiseks. [1]
Ajalugu
Aasta oli 1979, kui PLC tootja Modicon avalikustas Modbus kommunikatsiooni liidese multidrop võrgu jaoks baseerudes ülem/alam (inglise keeles Master/slave) võrguarhitektuuril. Informatsiooni vahetamine Modbus võrguharude ühenduspunktide vahel saavutati sõnumitega. Tegu oli avatud standardiga, mis kirjeldas sõnumite edastamise struktuuri. Modbus'i liidese füüsiline kiht oli vabalt valitav. Originaalne Modbus liides kasutas RS-232 standardit, aga enamus hilisematest Modbus teostustest kasutasid RS-485, sellel põhjusel, et RS-485 võimaldas pikemaid vahemaid ja suuremaid kiiruseid. Lühikese aja jooksul kogus Modbusi protokoll palju kuulsust, marginaalselt väikse ajavahemiku jooksul peale protokolli väljatöötamist võttis suur arv tarnijaid oma seadmetes selle süsteemi kasutusele. [2]
Modbusi protokollide arendamine ja uuendamine on toimunud alates 2004 Aprillist Modbus organization [3] poolt, kui Schneider Electric andis õigused üle sellele organisatsioonile.
Seadmed ja kommunikatsioon
Igale seadmele, mis jagab informatsiooni Modbus kaudu, antakse unikaalne aadress. Seade, mis küsib informatsiooni, on Modbus'i ülem (ingl k. Modbus master) ja seadmed, mis jagavad informatsiooni on Modbus'i alamad (ingl k. Modbus slaves). Standardses Modbus võrgus on üks ülem ja kuni 247 alamat, mille juures iga alam on määratud oma unikaalse alam-aadressiga, mis varieerub 1st kuni 247ni. Tavaliselt on ühes võrgus seadmeid umbes 240. Ülemal on samuti olemas volitused kirjutamaks informatsiooni alamatele. [4]
Eksisteerib palju modemeid ja võrguväravaid mis toetavad Modbus’i, kuna see on väga lihtne protokoll ja tihtipeale seda ka kopeeritakse. Marginaalne osa neist on spetsiifiliselt valmistatud selle protokolli jaoks. Erinevad teostused kasutavad kas wireline kaablitehnoloogiat, traadita infoedastust, nagu näiteks ISM band ja isegi lühisõnumite teenust (SMS) või üldist raadio-pakettandmeside teenust (GPRS). Tihti esinevad tüüpprobleemid on näiteks kõrge latentsusaeg ja sünkronisatsiooniga seonduvad probleemid.
Sõnumistruktuur
Modbusi teabevahetuse liides on ehitatud tuginedes teadetele (sõnumitele). Nende sõnumite vorming on eraldiseisev kasutatud füüsilisest liideset. RS232 standardiga kasutatakse samu sõnumeid, mis ka Mobdus/TCP etherneti kaudu. Ühte ja sama protokolli saab kasutada sõltumata ühenduse tüübist. Tänu sellele tagab Modbus võimaluse uuendada tööstuslike võrkude riistvara struktuuri nõudmata selleks suuri muudatusi tarkvaras. Seade saab suhelda mitme erineva Modbus võrguharude ühenduspunktiga isegi juhul, kui nad on ühendatud erinevate liidesetüüpidega, ilma vajaduseta kasutada iga ühenduse jaoks erinevat protokolli.
Igal Modbus sõnumil on identne struktuur. Igas sõnumis eksisteerib neli erinevat baaselementi. Nende osade järgnevus on ühtne kõikide sõnumite puhul, et lihtsustada vastava Modbus teate sisu sõelumist. Vestlus alustatakse Modbusi võrgus alati ülema poolt. Ülem saadab sõnumi ja seejärel - olenevalt sõnumi sisust - alam aktiviseerub ja tegutseb vastavalt saadud teatele. Sõnumi aadresseerimist kasutatakse selgitamaks, milline seade peab vastama saadetud sõnumile. Ülejäänud võrguharude ühenduspunktid, mis asuvad ka Mobus võrgus, eiravad saadetud sõnumit juhul, kui aadressiväli ei vasta nende endi aadressile. [5]
Väli | Kirjeldus |
---|---|
Seadme aadress | Adressaadi aadress |
Funktsiooni kood | Kood, mis määrab sõnumitüübi |
Andmed | Andmejagu lisainformatsiooniga |
Veakontroll | Numbriline kontrollväärtus testimaks teabevahetusvigade olemasolu |
Jadaedastuse režiimid
Modbus jadaühendused saavad kasutada kahte põhilist jadaedastuse režiimi, milleks on vastavalt ASCII ja RTU (Remote terminal unit). Jadaedastuse režiim jadasides määrab viisi, kuidas Modbus sõnumeid kodeeritakse. Modbus/ASCII puhul on kõik sõnumid loetavas ASCII vormingus. Modbus/RTU vorming kasutab binaarkodeerimist, mis muudab sõnumid vaatlejale loetamatuks, kuid vähendab iga teate mahukust, lubades sellega suurema hulga andmete vahetuse sama ajaühiku jooksul. Kõik ühe Modbus võrgu segmendi võrguharude ühenduspunktid peavad kasutama sama jadaestastuse režiimi. Seade, mis on seadistatud kasutamaks Modbus/ASCII režiimi ei suuda mõista sõnumeid Modbus/RTU režiimis ja ka vastupidiselt.
Modbus/ASCII puhul on kõik sõnumid kodeeritud kuueteistkümendarvude väärtustena, esindatuna loetavate ASCII märkidena. Kodeerimises on kasutusel vaid karakterid 0-9 ja A-F. Iga baidi informatsiooni jaoks läheb vaja kahte side-baiti, kuna iga side-bait suudab määratleda kuueteistkümnendarvu süsteemis vaid 4 bitti. Modbus/RTU puhul vahendatakse andmeid binaarses formaadis ja iga bait informatsiooni on kodeeritud ühe side-baidiga.
Jadaühendustes ei saadeta Modbus sõnumeid lihtvormingus. Need raamitakse, andmaks päringu vastuvõtjale lihtsa võimaluse sõnumi alguse ja lõpu tuvastamiseks. Kasutades Modbus/ASCII'd, võetakse kasutusele karakterid, et määratleda raami algus ja lõpp. Koolonit (:) kasutatakse märgendamaks sõnumi algust. Modbus/RTU kasutab aga hoopis ajalisi vaikushetki sidevahetuse real, raamistamaks sõnumit. [6]
Modbus/ASCII | Modbus/RTU | |
---|---|---|
Karakterid | ASCII 0-9 ja A-F | Kahendsüsteem 0-255 |
Veakontroll | LRC(Longitudinal Redundancy Check) | CRC (Cyclic Redundancy Check) |
Raami algus | Karakter (:) | 3,5 karakterit vaikust |
Raami lõpp | Karakterid CR/LF | 3,5 karakterit vaikust |
Tühimikud sõnumis | 1 sekund | 1,5 korda karakteri pikkust |
Algusbitt | 1 | 1 |
Andmebitt | 7 | 8 |
Adresseerimine
Esmane informatsioonikild igas Modbus sõnumis on adresseeritava aadress. See parameeter sisaldab ühe baidi jagu informatsiooni. Modbus/ASCII puhul on see kodeeritud kahe kuueteistkümnendarvu karakteriga, Modbus/RTU puhul on kasutusel vaid üks bait. Kehtivad aadressid jäävad vahemikku 0-247. Väärtused 1-247 määratakse individuaalsetele Modbus seadmetele ja väärtust 0 kasutatakse leviaadressina (broadcast address). Sõnumid, mis saadetakse viimasele aadressile aksepteeritakse kõigi alamate poolt. Alam vastab alati Modbus sõnumile. Sõnumile vastamise ajal kasutab alam sama aadressi, mida ülem kasutas päringu sooritamisel. Niimoodi saab ülem kindlaks teha, et seade reaalselt vastab päringule.
Modbus seadme piires määratakse hoidvatele registritele, sisenditele ja väljunditele number vahemikus 1-10000. Modbus sõnumites kasutatakse aadresse väärtusega vahemikus 0-9999. Kui on vaja näiteks lugeda väljundi väärtust (ehk coil)18, siis on vaja täpsustada väärtust 17 Mobus päringusõnumis. Järgnev tabel näitab aadressivahemikke coildele, sisenditele ja hoidvatele registritele ja aadressi kalkuleerimise viisi Modbus sõnumis, kui on antud ühiku reaalne aadres alamseadmes. [7]
Seadme aadress | Modbus aadress | Kirjeldus |
---|---|---|
1-10000* | aadress - 1 | Coils(väljundid) |
10001-20000* | aadress - 10001 | Sisendid |
40001-50000* | aadress - 40001 | Hoidvad registrid |
- Maksimaalne väärtus sõltub kasutatavast seadmest
Funktsioonikoodid
Teine parameeter, mis sisaldub igas Modbus sõnumis on funktsioonikood. See määrab ära sõnumitüübi ja vastava tegevuse, mida nõutakse alama (slave) poolt. Vastav parameeter sisaldab ühte baiti informatsiooni. Modbus/ASCII juures on see kodeeritud kahe kuueteistkümnendarvuga, Modbus/RTU (Remote Terminal Unit) juures on kasutuses vaid üks bait. Kehtivad funktsioonikoodid jäävad vahemikku 1-255. Kõik Modbus seadmed ei tunnusta sama komplekti funktsioonikoode, need varieeruvad. [8] Järgnevas tabelis on ära toodud enimlevinumad funktsioonikoodid.
Kood | Kirjeldus |
---|---|
01 | Read coil status |
02 | Read input status |
03 | Read holding registers |
04 | Read input registers |
05 | Force single coil |
06 | Preset single register |
07 | Read exception status |
15 | Force multiple coils |
16 | Preset multiple registers |
17 | Report Slave ID |
Rakendused
Peaaegu kõikidel rakendustel on erinevaid variatsioone võrreldes originaalse standardiga. Erinevad variandid ei pruugi ühilduda, olles tegu teistsuguse tehnikaga või erinevate tarnijaga. Mõningad enimlevinumatest variatsioonidest on:
Andmetüübid
- Ujukomaarv IEEE
- 32-bitised täisarvud
- 8-bitised andmed
- Erinevatest elementidest koosnevad andmetüübid
- Bittide väljad täisarvudes
- Kordajad vahetamaks andmeid täisarvudeks/täisarvudest. 256, 10, 100, 1000, 10000 jne
Protokolli laiendused
- 16-bitised alam-aadressid
- 32-bitine andmepaketi suurus (1 aadress = 32 bitti andmeid tagastatud.)
- Sõnaga ära vahetatud andmed
Välislingid
Viited
- ↑ Bill Drury (2009). "Control Techniques Drives and Controls Handbook" (pdf). 2nd edition (inglise). 508-: Institution of Engineering and Technology.
{{netiviide}}
: CS1 hooldus: koht sisaldab numbrit (link) CS1 hooldus: tundmatu keel (link) - ↑ w3.usa.siemens.com. "Modbus Information" (pdf) (inglise). lk 2.
{{netiviide}}
: CS1 hooldus: koht sisaldab numbrit (link) CS1 hooldus: tundmatu keel (link) - ↑ Modbus Organization, Inc. "Modbus home page" (inglise).
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ www.simplymodbus.ca (2013). "Simply Modbus" (inglise).
- ↑ 5,0 5,1 w3.usa.siemens.com. "Modbus Information" (pdf) (inglise). lk 7.
{{netiviide}}
: CS1 hooldus: koht sisaldab numbrit (link) CS1 hooldus: tundmatu keel (link) - ↑ 6,0 6,1 w3.usa.siemens.com. "Modbus Information" (pdf) (inglise). lk 6.
{{netiviide}}
: CS1 hooldus: koht sisaldab numbrit (link) CS1 hooldus: tundmatu keel (link) - ↑ 7,0 7,1 w3.usa.siemens.com. "Modbus Information" (pdf) (inglise). lk 5.
{{netiviide}}
: CS1 hooldus: koht sisaldab numbrit (link) CS1 hooldus: tundmatu keel (link) - ↑ 8,0 8,1 w3.usa.siemens.com. "Modbus Information" (pdf) (inglise). lk 8.
{{netiviide}}
: CS1 hooldus: koht sisaldab numbrit (link) CS1 hooldus: tundmatu keel (link)