Modbus opas

Julkaistu 2025-08-09 · kirjoittanut HF · Päivitetty 2025-08-09

Yleiskatsaus

Modbus on yksinkertainen ja lisenssimaksuton sovelluskerroksen protokolla. Client (asiakas) lähettää pyynnön ja server (palvelin) vastaa – palvelin ei lähetä viestejä oma-aloitteisesti. Terminologia on päivitetty master/slave → client/server.


1.1 Heksadesimaali

Modbus-viestit kulkevat biteissä (0/1). Neljä bittiä muodostaa helposti luettavan heksaluvun (0–F), joten binäärinen data esitetään lähes aina heksana. Heksadesimaalijärjestelmä on järjestelmä, jonka kantaluku on 16. Modbus-viestit tyypillisesti käännetään binäärisestä muodosta heksadesimaali muotoon, millä helpotetaan lukemista. Heksadesimaalien tulkitsemista tarvitaan käyttöönotto ja vianselvitystilanteissa. Bitti = pienin tieto-yksikkö (0 tai 1)

  • Heksamerkki vastaa neljää bittiä
  • Tavu = 8-bittiä = 2 heksamerkkiä
  • 16-bittinen rekisteri = 2 tavua = 4 heksamerkkiä.

Bittijono 0001 0010 1011 1100 on heksadesimaalimuodossa 0x12BC

N1 N2 N3 N4
BIN 0001 0010 1011 1100
HEX 1 2 B C

Heksadesimaalijärjestelmä on järjestelmä, jonka kantaluku on 16. Modbus-viestit tyypillisesti käännetään binäärisestä muodosta heksadesimaali muotoon, millä helpotetaan lukemista. Heksadesimaalien tulkitsemista tarvitaan käyttöönotto ja vianselvitystilanteissa.

0000 = 0 0100 = 4 1000 = 8 1100 = C
0001 = 1 0101 = 5 1001 = 9 1101 = D
0010 = 2 0110 = 6 1010 = A 1110 = E
0011 = 3 0111 = 7 1011 = B 1111 = F

1.2 Modbus RTU väylän kytkentä ja jännitetasot

Modbus RTU viesti kulkee sarjaväylää pitkin. Sarjaväylässä tulisi välttää haaroja, sillä haarat aiheuttavat ongelmia. Väylä terminoidaan molemmista päistä yleensä 120Ω vastuksella. Tämän vastuksen tarkoitus on estää heijastumia ja siten häiriöitä väylän tiedonsiirrossa.

Connection diagram

Modbus RTU viesteissä (RS-485) väylän jännite taso vaihtelee +5 ja -5 voltin välillä. Jännite -5V tarkoittaa bitti arvoa 1 ja jännite +5V tarkoittaa bitti arvoa 0. Jännite 0V tarkoittaa, että viestinnässä on tauko.

Modbus RTU voltage levels


1.3 Modbus RTU väylän kaapeli

Kaapelina RS-485 -väylissä tulisi käyttää parikierrettyä mahdollisimman suojattua kaapelia. Mitä parempi häiriösuojaus, sitä vähemmän häiriöitä väylässä.

RS-485-väylä perustuu differentiaaliseen signaalinsiirtoon, jossa kaapelin johtimet muodostavat kierretyn parin. Tällainen rakenne vähentää tehokkaasti ulkopuolisista lähteistä tulevia sähkömagneettisia häiriöitä, kuten taajuusmuuttajien, releiden ja muiden suurta virtaa käyttävien laitteiden aiheuttamia pulsseja. Lisäksi suojavaippa auttaa estämään häiriöiden kytkeytymistä väylään ja vähentää vuorostaan väylästä ympäristöön säteileviä häiriöitä.

Väylän maadoitukseen ja suojavaipan liittämiseen tulee kiinnittää huomiota. Yleisesti suositellaan, että kaapelin suojavaippa maadoitetaan vain toisesta päästä välttämään potentiaalieroista johtuvia maasilmukoita.


1.4 Modbus RTU väylän nopeus ja maksimipituus

Modbus RTU -väylän toimivuuteen vaikuttavat merkittävästi tiedonsiirtonopeus (baud rate) ja käytetty kaapelipituus. Mitä korkeampi nopeus, sitä lyhyempi väylän maksimipituus:

  • 9600 bps → jopa noin 1200 m
  • 19200 bps → noin 600 m
  • 38400 bps → noin 300 m
  • 115200 bps → noin 100 m

Yllä olevat arvot ovat ohjearvoja, ja todelliset maksimipituudet riippuvat kaapelityypistä, asennusolosuhteista ja häiriöympäristöstä. Häiriöalttiissa ympäristöissä kannattaa käyttää alhaisempaa nopeutta ja huolehtia kaapeloinnin sekä maadoituksen laadusta.


1.5 Heijastukset kaapelissa

Heijastuksen tapahtuessa sähkö ikään kuin kimpoaa takaisinpäin ja sotkee väylän jännitetasoja. Jännitetasojen sotkeentuminen johtaa viestien virheellisyyteen.

Heijastusten estämiseksi mahdollisimman tehokkaasti, tulee terminointivastus mitoittaa siten, että se vastaa käytettävän kaapelin ominaisimpedanssia. Esimerkiksi Suomessa tyypillisesti käytetyn Nomak-kaapelin ominaisimpedanssi on 75Ω, jolloin päätevastusten koko tulisi olla 75Ω. Mikäli käytetään johdinta ominaisimpedanssilla 75Ω ja tämän päissä on 120Ω vastukset, muodostuu heijastumia kertoimella |Γ| ≈ 0,23. **Tämänkaltainen väylä on yleensä toimiva impedanssiepäsuhdasta huolimatta. **


1.6 Terminoinnin periaate

Terminointivastuksen tehtävänä on sitoa kaapelin loppupää niin, ettei signaali pääse heijastumaan takaisin linjaan. Jos väylä on pitkä ja nopeus korkea, ilman terminointia signaalit vääristyvät helposti ja viestien luettavuus heikkenee. Terminointivastus sijoitetaan aina väylän molempiin päihin.


1.7 Biasointi ja lepotila

Pelkkä terminointi ei riitä, jos väylä jää lepotilassa kellumaan. Tällöin vastaanottimien tulot voivat jäädä epäselvään tilaan ja synnyttää virheellisiä bittitulkintoja. Tätä varten käytetään biasointivastuksia, joilla väylän A- ja B-johtimille asetetaan pieni tasajännite-ero. Tyypillisesti biasointi toteutetaan yhdellä vastusparilla yhdessä pisteessä väylää, useimmiten pääväylän master-laitteen yhteydessä.


1.8 Käytännön huomioita

  • Vain yksi pari terminointivastuksia: Terminointi tehdään vain väylän kahteen päähän. Jos terminointeja on useampia, signaali vaimenee liikaa ja kommunikointi voi häiriintyä.
  • Kaapelin pituus ja nopeus: Mitä pidempi väylä ja suurempi baudinopeus, sitä kriittisempää terminoinnin oikea mitoitus on. Lyhyillä kaapeleilla ja matalilla nopeuksilla väylä voi usein toimia ilman terminointia.
  • Impedanssiepäsuhta: Käytännössä väylät toimivat usein melko luotettavasti myös pienellä impedanssiepäsuhdalla, mutta mitä tarkemmin terminointi vastaa kaapelin ominaisimpedanssia, sitä vähemmän virheitä esiintyy.

1.9 Client ja server

Modbuslaitteita on 2 eri tyyppiä. Client(Master) ja Server(Slave). Modbus RTU verkossa, voi clienttejä olla 1 ja servereitä 255. Jokainen Serverille asetetaan yksilöllinen Modbus-osoite väliltä 1-255. Vältä osoitteen 1 käyttämistä, sillä se on oletusosoite ja aiheuttaa helposti päällekkäisyyksiä käytännön toteutuksissa.

  • Client lukee tai kirjoittaa rekistereitä. Yleensä PLC.
  • Server palauttaa arvot tai tallentaa ne pyydettäessä. Yleensä kenttälaite.
  • Server ei lähetä viestejä ilman pyyntöä.

1.10 Rekisterit

Modbus rekistereitä on neljää tyyppiä (Coil, Discrete Input, Input Register, Holding Register). Ne eroavat koon (1 bitti / 16 bittiä) ja käyttöoikeuden (R/W) mukaan. Valmistajien dokumenteissa esiintyy sekä rekisteriavaruus 1…49999” että ”0…65535”. Rekistereillä voi olla standardista poiketen myös valmistajan määrittämiä rajoituksia, kuten kirjoitus rajoitus Coil-rekistereissä tai rajoitus, kuinka monta rekisteriä kerralla voi lukea.

Register type Access Size Address
Coil Read/write 1-bit 1–9999 (0–65535)
Discrete input Read only 1-bit 10001–19999 (0–65535)
Input register Read only 16-bit 30001–39999 (0–65535)
Holding register Read/write 16-bit 40001–49999 (0–65535)

Huomaa myös 0‑ vs 1‑pohjainen laskenta aloitusrekisterissä; tarkista aina laitteen datasheet.

1.11 Funktiokoodit

Funktiokoodit ovat yhden tavun komentoja, joilla luetaan/kirjoitetaan tiettyä rekisterityyppiä yhdelle tai usealle osoitteelle. Standardikoodien lisäksi joissain laitteissa voi olla valmistajakohtaisia koodeja, eikä kaikkia koodeja välttämättä tueta jokaisella laitteella. Alla listaus virallisista funktiokoodeista modbus.org sivulta.

Funktiokoodit pikakatsaus

1.12 CRC (Cyclic Redundancy Check)

Jokaisen RTU kehyksen lopussa on 16 bittinen CRC. Lähettäjä ja vastaanottaja laskevat CRC:n viestin tavuista ja vertaavat tuloksia; yhdenkin bitin muutos johtaa virheeseen.

1.13 Pariteetti

Pariteetti voi olla N (ei pariteettia), E (parillinen) tai O (pariton). Pariteettibitin täytyy täsmätä molemmissa päissä, muuten syntyy virheitä. Pariteetti bitti huolehtii, että viestissä on määritelty parillisuus arvon 1 saaneita bittejä. Mikäli bittejä olisi pariton määrä ja pariteetiksi valittu E, vaihtaisi pariteetti bitti tilakseen yksi (1).

1.14 Tavu- ja sanajärjestys (endianness)

Modbus käyttää oletuksena Big Endian tavujärjestystä. Osa laitteista voi käyttää Little Endian järjestystä tai vaihtaa myös sanajärjestyksen 32 bittisissä arvoissa – tarkista aina manuaali. Little endian muodossa vähiten merkitevä tavu ja vähiten merkitsevä sana ovat ensin. Big endianissa taas merkitsevin tavu ja merkitsevin sana tulee ensin. Esimerkiksi väylää pitkin voidaan lähettää desimaaliluku 4037755681 heksadesimaali- ja Big Endian -muodoissa, jolloin luvuksi muodostuu F0 AB 43 21. Little Endian -muotoon käännettynä luku on 21 43 AB F0.

1.15 Datatyypit

Modbusissa välitetään laitteiden sisäisiä muuttujia (esim. lämpötilat, tilat, hälytykset) rekistereissä ja bittimuuttujina. Yleisiä tietotyyppejä ovat etumerkillinen kokonaisluku (INT), etumerkitön kokonaisluku (UINT) ja Liuku luku (FLOAT).

Modbus-rekisteri on 16-bittinen. 32- ja 64-bittiset arvot muodostetaan useista peräkkäisistä 16-bittisistä rekistereistä.

16-bittiset esimerkit (heksa 0x9ABC)

Hex Type Value
0x9ABC int16 −25924
0x9ABC uint16 39612
0x9ABC float16 ≈ −0.00328827

32-bittiset arvot kahdesta rekisteristä

Oletus: [HI, LO] = merkittävämpi sana ensin.

Kokonaisluvut

Rekisterit [HI,LO] Yhdistetty heksa Tyyppi Arvo
[0x89AB,0xCDEF] 0x89ABCDEF int32 -1985229329
[0x89AB,0xCDEF] 0x89ABCDEF uint32 2309737967

Liukuluku (IEEE-754 float32)

Rekisterit [HI,LO] Yhdistetty heksa float32
[0xC120,0x0000] 0xC1200000 -10.0

Sanajärjestys: Jotkin laitteet käyttävät “word swapia” → sama 32-bittinen arvo voi esiintyä rekistereinä [LO, HI]. Tarkista laitekohtainen dokumentaatio. 64-bittiset arvot 64-bittiset kokonaisluvut (int64/uint64) ja kelluvat (float64/double) muodostetaan neljästä peräkkäisestä rekisteristä; myös näissä sanajärjestys voi vaihdella.

1.16 Esimerkkiviestit

Read Coils: Function Code 01

Kysely: 01 01 00 05 00 03 6C 0A

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
01 Function code 0x01 (1) - Read Coils
00 05 Aloitusrekisterin osoite Base-0: 0x0005 (5) Base-1: 0x0006 (6)
00 03 Rekisterien määrä 0x0003 (3)
6C 0A CRC 0x6C0A (27658)

Vastaus: 01 01 01 02 D0 49

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
01 Function code 0x01 (1) - Read Coils
01 Datan tavu määrä 0x01 (1)
02 Rekisterien 5,6 ja 7 data 0x02
Bits (bN=Arvo, LSB→MSB per tavu) b0=0, b1=1, b2=0, b3=0, b4=0, b5=0, b6=0, b7=0
D0 49 CRC 0xD049 (53321)

Read Discrete inputs: Function Code 02

Kysely: 01 02 00 02 00 02 58 0B

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
02 Function code 0x02 (2) - Read Discrete Inputs
00 02 Aloitusrekisterin osoite Base-0: 0x0002 (2) Base-1: 0x0003 (3)
00 02 Rekisterien määrä 0x0002 (2)
58 0B CRC 0x580B (22539)

Vastaus: 01 02 01 00 A1 88

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
02 Function code 0x02 (2) - Read Discrete Inputs
01 Datan tavu määrä 0x01 (1)
00 Rekisterien 2 ja 3 data 0x00
Bits (bN=Arvo, LSB→MSB per byte) b0=0, b1=0, b2=0, b3=0, b4=0, b5=0, b6=0, b7=0
A1 88 CRC 0xA188 (41352)

Read Holding Registers: Function Code 03

Kysely: 01 03 00 07 00 02 75 CA

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
03 Function code 0x03 (3) - Read Holding Registers
00 07 Aloitusrekisterin osoite Base-0: 0x0007 (7) Base-1: 0x0008 (8)
00 02 Rekisterien määrä 0x0002 (2)
75 CA CRC 0x75CA (30154)

Vastaus: 01 03 04 00 01 00 06 2B F1

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
03 Function code 0x03 (3) - Read Holding Registers
04 Datan tavu määrä 0x04 (4)
00 01 00 06 Rekisterien 7 ja 8 data 0x0001 (1), 0x0006 (6)
2B F1 CRC 0x2BF1 (11249)

Read Input Register: Function Code 04

Kysely: 01 04 00 00 00 02 71 CB

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
04 Function code 0x04 (4) - Read Input Registers
00 00 Aloitusrekisterin osoite Base-0: 0x0000 (0) Base-1: 0x0001 (1)
00 02 Rekisterien määrä 0x0002 (2)
71 CB CRC 0x71CB (29131)

Vastaus: 01 04 04 00 01 00 0B EB 83

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
04 Function code 0x04 (4) - Read Input Registers
04 Tavu määrä 0x04 (4)
00 01 00 0B Rekisterien 0 ja 1 data 0x0001 (1), 0x000B (11)
EB 83 CRC 0xEB83 (60291)

Write Single Coil: Function Code 05

Kysely: 16 05 00 09 00 00 1E EF

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
05 Function code 0x05 (5) - Write Single Coil
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
00 00 Rekisterin 9 data B1:1
1E EF CRC 0x1EEF (7919)

Vastaus: 16 05 00 09 FF 00 5F 1F

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
05 Function code 0x05 (5) - Write Single Coil
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
FF 00 Rekisterin 9 data B0:1
5F 1F CRC 0x5F1F (24351)

Write Single Register: Function code 06

Kysely: 16 06 00 09 00 01 9B 2F

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
06 Function code 0x06 (6) - Write Single Register
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
00 01 Rekisterin 9 data 0x0001 (1)
9B 2F CRC 0x9B2F (39727)

Vastaus: 16 06 00 09 00 01 9B 2F

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
06 Function code 0x06 (6) - Write Single Register
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
00 01 Rekisterin 9 data 0x0001 (1)
9B 2F CRC 0x9B2F (39727)

Write Multiple Coils: Function code 15

Kysely: 16 0F 00 09 00 05 01 0D 32 78

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
0F Function code 0x0F (15) - Write Multiple Coils
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
00 05 Rekisterien määrä 0x0005 (5)
01 Tavu määrä 0x01 (1)
0D Rekisterien 9-13 data 0x0D
Bits (bN=Arvo, LSB→MSB per byte) b0=1, b1=0, b2=1, b3=1, b4=0, b5=0
32 78 CRC 0x3278 (12920)

Vastaus: 16 0F 00 09 00 05 46 ED

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
0F Function code 0x0F (15) - Write Multiple Coils
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
00 05 Rekisterien määrä 0x0005 (5)
46 ED CRC 0x46ED (18157)

Write Multiple Registers: Function code 16

Kysely: 16 10 00 09 00 05 0A 00 09 00 02 00 4D 00 00 00 01 13 5B

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
10 Function code 0x10 (16) - Write Multiple Registers
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
00 05 Rekisterien määrä 0x0005 (5)
0A Tavu määrä 0x0A (10)
00 09 00 02 00 4D 00 00 00 01 Rekisterien 9-13 data 0x0009 (9), 0x0002 (2), 0x004D (77), 0x0000 (0), 0x0001 (1)
13 5B CRC 0x135B (4955)

Vastaus: 16 10 00 09 00 05 D3 2F

Tavut Tietue Arvo
16 Modbus-osoite 0x16 (22)
10 Function code 0x10 (16) - Write Multiple Registers
00 09 Aloitusrekisterin osoite Base-0: 0x0009 (9) Base-1: 0x000A (10)
00 05 Rekisterien määrä 0x0005 (5)
D3 2F CRC 0xD32F (54063)

1.17 Virhekoodit

Modbus kyselyä voi seurata.

  • Server laite käsittelee kyselyn ja lähettää vastauksen.
  • Server laite saa kyselyn, mutta siinä on CRC/pariteetti virhe, milloin kysely jätetään huomiotta.
  • Server ei saa kyselyä perille, jolloin siihen ei voida vastata.
  • Server ei pysty syystä tai toisesta käsittelemään kyselyä ja vastaa virheellä.

Huomioi laitekohtaiset rajoitukset, esim. Rekisterikartassa olevat tyhjät kohdat tulisi jättää kyselemättä.

Virhekoodeissa palautetaan funktiokoodin sijaan virhekoodi, jonka arvo on funktio koodi + 0x80. Eli esim:

Request — Function code Response — Exception code
01 (0x01) 129 (0x81)
02 (0x02) 130 (0x82)
03 (0x03) 131 (0x83)
04 (0x04) 132 (0x84)
05 (0x05) 133 (0x85)
06 (0x06) 134 (0x86)
15 (0x0F) 143 (0x8F)
16 (0x10) 144 (0x90)

Exception esimerkki viestintä:

Kysely: 01 01 00 42 00 03 DC 1F

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
01 Function code 0x01 (1) - Read Coils
00 42 Aloitusrekisterin osoite Base-0: 0x0042 (66) Base-1: 0x0043 (67)
00 03 Määrä 0x0003 (3)
DC 1F CRC 0xDC1F (56351)

Vastaus: 01 81 01 81 90

Tavut Tietue Arvo
01 Modbus-osoite 0x01 (1)
81 Error code 0x80 + 0x01 (1) - Read Coils
01 Exception code Illegal Function — Function code not supported or not allowed for this state.
81 90 CRC 0x8190 (33168)

Modbus virhekoodeja ovat

Code Name Meaning
1 (0x01) ILLEGAL FUNCTION The function code received in the query is not an allowable action for the server. This may be because the function code is only applicable to newer devices and was not implemented in the unit selected. It could also indicate that the server is in the wrong state to process a request of this type, for example because it is unconfigured and is being asked to return register values.
2 (0x02) ILLEGAL DATA ADDRESS The data address received in the query is not an allowable address for the server. More specifically, the combination of reference number and transfer length is invalid. For a controller with 100 registers, the PDU addresses the first register as 0, and the last one as 99. If a request is submitted with a starting register address of 96 and a quantity of registers of 4, then this request will successfully operate (address-wise at least) on registers 96, 97, 98, 99. If a request is submitted with a starting register address of 96 and a quantity of registers of 5, then this request will fail with Exception Code 0x02 “Illegal Data Address” since it attempts to operate on registers 96, 97, 98, 99 and 100, and there is no register with address 100.
3 (0x03) ILLEGAL DATA VALUE A value contained in the query data field is not an allowable value for the server. This indicates a fault in the structure of the remainder of a complex request, such as that the implied length is incorrect. It specifically does not mean that a data item submitted for storage in a register has a value outside the expectation of the application program, since the Modbus protocol is unaware of the significance of any particular value of any particular register.
4 (0x04) SERVER DEVICE FAILURE An unrecoverable error occurred while the server was attempting to perform the requested action.
5 (0x05) ACKNOWLEDGE Specialized use in conjunction with programming commands. The server has accepted the request and is processing it, but a long duration of time will be required to do so. This response is returned to prevent a timeout error from occurring in the client. The client can next issue a Poll Program Complete message to determine if processing is completed.
6 (0x06) SERVER DEVICE BUSY Specialized use in conjunction with programming commands. The server is engaged in processing a long-duration program command. The client should retransmit the message later when the server is free.
8 (0x08) MEMORY PARITY ERROR Specialized use in conjunction with function codes 20 and 21 and reference type 6, to indicate that the extended file area failed to pass a consistency check. The server attempted to read record file, but detected a parity error in the memory. The client can retry the request, but service may be required on the server device.
10 (0x0A) GATEWAY PATH UNAVAILABLE Specialized use in conjunction with gateways, indicates that the gateway was unable to allocate an internal communication path from the input port to the output port for processing the request. Usually means that the gateway is misconfigured or overloaded.
11 (0x0B) GATEWAY TARGET DEVICE FAILED TO RESPOND Specialized use in conjunction with gateways, indicates that no response was obtained from the target device. Usually means that the device is not present on the network.

1.18 RX ja TX ledit

Kenttälaitteiden muuntimissa/antureissa TX vilkkuu lähetyksessä ja RX vastaanotossa – hyvä perusdiagnostiikka asennuksen aikana. Client-laitteessa lähetystä tulisi seurata vastaus ja Server-laitteessa vastaanottoa tulisi seurata lähetys.


Käytännön vinkkejä

  • Älä käytä oletusosoitetta 1 ja dokumentoi osoitteet I/O listaan.
  • Tarkista 0/1 pohjainen laskenta ja datatyypit; älä sekoita INT/UINT/DINT samaan lukuun.
  • RTU väylällä varmista terminointi ja yksinkertainen sarjarakenne; väärä topologia lisää virheitä.