Modbus

Wikipedia
Loikkaa: valikkoon, hakuun

Modbus on Modiconin vuonna 1979 julkaisema sarjaliikenneprotokolla, joka oli tarkoitettu käytettäväksi Modiconin ohjelmoitavien logiikkojen (PLC) kanssa. Protokollasta on muodostunut "de facto" standardi teollisuudessa, ja on nyt yleisesti käytössä elektroniikkalaitteiden välisessä kommunikoinnissa.

Pääasialliset syyt Modbus:n laajalle käytölle muihin protokolliin verrattuna:

  1. Avoin ja lisenssimaksuton
  2. Verraten helposti käyttöönotettava teollinen verkko
  3. Siirtää raakadataa ilman laitevalmistajien asettamia rajoituksia

Modbus mahdollistaa monien samaan verkkoon kytkettyjen laitteiden välisen kommunikoinnin, esimerkiksi järjestelmän, joka mittaa lämpötilaa sekä kosteutta, ja toimittaa tulokset tietokoneelle.

Modbus-protokollaa käytetään usein yhdistämään valvontatietokone kenttälaitteeseen (RTU) keskitetyn hallinnan järjestelmissä. Modbus-protokollasta on olemassa sarjaportti- ja ethernet-versiot.

Sarjamuotoiselle liikenteelle on olemassa kaksi muunnelmaa erilaisilla numeerisen datan esitysmuodolla ja hiukan erilaisilla protokollan yksityiskohdilla. Modbus RTU on kompakti binaarinen datanesitysmuoto. Modbus ASCII on tekstipohjainen ja ihmisen ymmärrettävässä muodossa. Molemmat muunnelmat käyttävät sarjaliikennettä. RTU-formaatissa käytetään tiedon eheyden tarkistukseen CRC-tarkistussummaa, kun taas ASCII-formaatti käyttää longitudinal redundancy check -tarkistussummaa. Solmut, jotka ovat määritetty käyttämään RTU-muunnelmaa, eivät kommunikoi ASCII-muunnelmaa käyttävien solmujen kanssa, ja päinvastoin.

TCP/IP-yhteyksille (esimerkiksi ethernet) on olemassa uudempi muunnelma, Modbus/TCP. Se on helpompi toteuttaa, kuin Modbus/ASCII tai Modbus/RTU, koska se ei tarvitse tarkistussumman laskentaa.

Tietomalli ja toimintokutsut ovat samanlaisia kaikille kolmelle yhteysprotokollalle; vain kapselointi on erilainen.

On olemassa myös laajennettu versio, Modbus Plus (Modbus+ or MB+), mutta se on käytössä pääasiassa Modiconissa. Se tarvitsee dedikoidun prosessorin käsittelemään nopeaa HDLC-tyyppistä token-kiertoa. Se käyttää kierrettyä parikaapelia 1 Mbps nopeudella, ja sisältää muuntajaeristyksen jokaisessa kenttälaitteessa, joka tekee siitä muutos/reuna-liipaistavan jännite/taso-liipaisun sijasta. Modbus Plus:n liittäminen tietokoneeseen vaatii erityisliitännän, tyypillisesti laajennuskortin (PCI tai PC-Card).

Jokaiselle Modbus-väylään liitettävälle laitteelle annetaan yksilöllinen osoite. Jokainen laite voi lähettää Modbus-komennon, vaikkakin yleensä vain yksi master-laite tekee sitä. Modbus-komento sisältää sen laitteen modbus-osoitteen, jolle komento on tarkoitettu. Vain tämä laite suorittaa komennon, vaikka kaikki laitteet voivat vastaanottaa komennon. Kaikki Modbus-komennot sisältävät tarkisteen, jolla varmistetaan komennon kulkeminen virheettömänä. Perus Modbus-komennot voivat käskeä kenttälaitetta vaihtamaan jonkin rekisterin arvoa, tai yhtä hyvin komentaa laite lähettämään takaisin yhden tai useamman arvon sen rekistereistä.

Monet modeemit tukevat Modbusia, ja jotkut niistä ovat erityisesti suunniteltu tälle protokollalle. Yhteys voi olla langallinen tai langaton (esimerkiksi SMS tai GPRS). Tyypillisimmät haasteet järjestelmän suunnittelussa ovat pitkät viiveet ja ajastukseen liittyvät ongelmat.

Muunnelmat[muokkaa | muokkaa wikitekstiä]

Lähes kaikki toteutukset sisältävät muunnelmia virallisista standardeista. Eri muunnokset eivät välttämättä kommunikoi oikein eri toimittajien laitteiden välillä. Muutama yleisin muunnos:

  • Datan tyypit
    • Liukuluku IEEE (Floating Point IEEE)
    • 32-bittinen luku (32 bit integer)
    • 8-bittinen data (8 bit data)
    • yhdistettyjä datan tyyppejä (mixed data types)
    • bit fields in integers
    • multipliers to change data to/from integer. 10, 100, 1000, 256 ...
  • Protokollan laajennukset
    • 16-bittinen laiteosoite
    • 32-bittinen datan koko (1 osoite = 32 bittiä dataa palautetaan)
    • word swapped data

Rajoitukset[muokkaa | muokkaa wikitekstiä]

Modbus suunniteltiin 1970-luvun lopulla yhdistämään ohjelmoitavia logiikoita (PLC). Tietotyyppien määrä on rajoitettu tuolloin käytössä oleviin. Suuret binaariobjektit eivät ole tuettuja. Kenttälaitteelle ei ole standardoitua tapaa löytää tieto-objektin kuvausta, esimerkiksi määrittelemään että rekisteriarvo merkitsee lämpötilaa 30 ja 175 asteen välillä. Modbus on isäntä/orja-protokolla, joten kenttälaitteen ei itse ole mahdollista raportoida poikkeustilanteesta. Isäntälaitteen täytyy säännöllisesti kysellä jokaiselta kenttälaitteelta tietoja. Tämä vie verkon kapasiteettia sovelluksissa, joissa datan siirto on kallista, kuten hitaissa radiolinkeissä. Modbusin osoitteisto on rajoitettu 254 laitteeseen yhdessä väylässä. Modbus-tiedonsiirron täytyy olla jatkuvaa, joka rajoittaa etäyhteyksien tyypin sellaisiin, jotka voivat puskuroida dataa katkosten välttämiseksi.

Lähteet[muokkaa | muokkaa wikitekstiä]