CANBUS (Controller Area Network) võrkude kasutusala

Sissejuhatus
CAN (Controller Area Network) on robustne serial kommunikatsiooniprotokoll, mida kasutatakse laialdaselt tööstusautomaatikas ja transpordisüsteemides. Algselt arendas Bosch selle 1980ndatel autotööstuse vajaduste rahuldamiseks, et võimaldada erinevate elektrooniliste juhtseadmete (ECU) vahel kiiret ja usaldusväärset andmevahetust. Tänu oma tõhususele, usaldusväärsusele ja vigade taluvusele on CAN võrgud leidnud kasutust paljudes teistes tööstusharudes.

Kasutusalad

  1. Autotööstus
  • Elektrilised juhtseadmed (ECU-d): CAN-võrku kasutatakse peaaegu kõigis kaasaegsetes sõidukites erinevate ECU-de vaheliseks kommunikatsiooniks, sealhulgas mootori juhtimise, pidurite, kliimaseadmete ja muude oluliste süsteemide juhtimiseks.
  • Mehaanilised süsteemid: CAN võimaldab koordineerida keerukaid mehhanisme, nagu ABS (antiblokeerimissüsteem), EPS (elektriline roolivõimendi) ja turvapadjad.
  • Infotainment ja mugavussüsteemid: CAN-võrk ühendab ka mugavus- ja meelelahutussüsteeme, sealhulgas navigatsiooni, audio-video seadmeid ja keskkontrollisüsteeme.
  1. Tööstusautomaatika
  • Masinate ja robootika juhtimine: CAN-võrke kasutatakse laialdaselt tööstuslike masinate ja robotite juhtimisel, võimaldades usaldusväärset andmevahetust juhtseadmete ja sensorite vahel.
  • Protsesside järelevalve ja kontroll: CAN-võrk aitab optimeerida protsesside juhtimist ja jälgimist, pakkudes reaalajas andmeid masina seisundi ja toimivuse kohta.
  1. Meditsiinitehnoloogia
  • Meditsiiniseadmed: CAN-võrku kasutatakse mitmesugustes meditsiiniseadmetes, sealhulgas MRI-aparaatides, patsiendi jälgimissüsteemides ja kirurgiarobotites, et tagada kriitiliste andmete kiire ja usaldusväärne vahetus.
  • Patsiendi jälgimissüsteemid: CAN võimaldab meditsiiniseadmetel suhelda omavahel, näiteks patsiendi jälgimissüsteemid, mis ühendavad mitmesuguseid sensoreid ja kuvaseadmeid, et tagada patsiendi seisundi pidev jälgimine.
  1. Lennundus ja kaitsetööstus
  • Lennuki elektroonikasüsteemid: CAN-võrke kasutatakse lennuki elektroonikasüsteemides, sealhulgas navigatsiooni- ja juhtimissüsteemides, et tagada andmete kiire ja täpne edastamine kriitiliste komponentide vahel.
  • Sõjaväesüsteemid: CAN-võrke kasutatakse ka sõjaliste sõidukite ja seadmete juhtimisel, pakkudes usaldusväärset ja turvalist andmevahetust isegi äärmuslikes tingimustes.
  1. Raudteetransport ja laevandus
  • Raudteesüsteemid: CAN-võrke kasutatakse rongide ja trammide juhtimissüsteemides, sealhulgas mootorijuhtimises, pidurisüsteemides ja reisijainfotahvlites.
  • Laevade juhtimissüsteemid: CAN-võrku kasutatakse ka laevade juhtimissüsteemides, et koordineerida navigatsiooni-, mootori- ja turvaseadmeid.

Järeldus
CAN-võrgud on oma paindlikkuse, töökindluse ja suutlikkuse tõttu leidnud laialdast kasutust mitmesugustes tööstusharudes. Alates autotööstusest ja tööstusautomaatikast kuni meditsiinitehnoloogia ja lennunduseni on CAN-võrgud hädavajalikud paljude kriitiliste süsteemide tõhusaks ja turvaliseks toimimiseks.

Viited ja kasulikud lingid

Need viited ja lingid pakuvad põhjalikku teavet CAN-võrkude kohta ning aitavad sügavamalt mõista nende kasutusala ja eeliseid erinevates tööstusharudes.

1. Tööväljavõrgu CANBUS protokolli kirjeldus

Kontrollersidevõrk (Controller Area Network, CAN) on jadaliides andmete reaalajaliseks edastamiseks kiirusega kuni 1 Mbit/s (megabitti sekundis), mille eeliseks on suurepärased veaparanduse võimalused. Seda kasutatakse kõrge kiirusega ISO 11898 andmete ülekandmiseks ja ka madala kiirusega ISO 11519 rakendustes. Seadmetevaheliseks kommunikatsiooniks kasutatakse OKI, MICROCHIP, MOTOROLA jt toodetud liideseadaptereid.

Füüsiline võrgu elemendiks on paralleeljuhtme liin (pilt 6.1).

Pilt 6.1. Paralleeljuhtme liin [64]

Mööda CANi siini saadetakse samaaegselt edastatavad andmed kõigile võrguseadmetele laiali (pilt 6.2).

Pilt 6.2. CANi siin [64]

Tööpõhimõte

CAN-võrkude tööpõhimõte baseerub faktil, et iga moodul on võimeline sõnumeid edastama, kui siin vaba. Kuna igal sõnumil on prioriteet, siis mitme ülekandemooduli puhul edastatakse kõige kõrgema prioriteediga sõnum enne kui madalama prioriteediga. Analoogsel moel, kui mõnda moodulisse jõuab samaaegselt rohkem kui üks sõnum, siis käib vastuvõtmine vastavalt nende prioriteedile. Iga CAN-võrku kuuluv moodul võib nõuda sõnumite saatmist temale, saates selleks päringuid. Iga korrektselt vastu võetud sõnum kinnitatakse, saates vastav kinnitussõnum. Vastus saadetakse ka siis, kui sõnumi vastuvõtmine või täitmine ebaõnnestus mingi vea tõttu. CAN-võrk tunneb ära püsivigade esinemise ja sulgeb automaatselt vigase mooduli.

Sõnumi sisusse on kodeeritud spetsiaalne identifikaator – CAN-võrgu spetsiifiline, mis kannab informatsiooni edastatava sõnumi kohta (t, P, F).Kõik vastuvõtjad võtavad informatsiooni vastu ja igaüks testib identifikaatorit, et vaadata kas see sõnum on mõeldud vastuvõtjale. Kui sõnum on vastuvõtjale sobilik, võetakse see vastu ja töödeldakse, kui mitte, jäetakse see sõnum vahele. Identifikaator sisaldab infot sõnumi prioriteedi kohta, mis jaotatakse vähemalt kahele tasandile: kõrge ja madal. Informatsiooni edastamine käib üle paralleelse keerutatud juhtmepaari või telefoniliini, kui tekkivad häired ei ole kõrged.

CAN-võrk on paindlik ja võimaldab lisada uusi seadmeid juba toimivasse CAN-võrku ilma, et selles oleks vaja teha uusi riistvaralisi või tarkvaralisi lisamuudatusi.

CAN kasutabNRZ (Non Return to Zero) meetodit andmete kodeerimiseks. NRZ-kodeerimine tekitab lühikesed sõnumid minimaalse arvu üleminekutega ja ei ole väliste häirete poolt oluliselt mõjutatav.

CAN-võrkudes antakse kõrgem prioriteet nendele parameetritele (informatsioonile), mis muutuvad teistest kiiremini. Näiteks automootori pöörded muutuvad sagedamini kui selle temperatuur.

Parameetrite prioriteedi määramiseks kasutatakse liikluse ja põrke tuvastusega pöördusmeetodit (Carrier Sense, Multiple Access with Collision Detect (CSMA/CD). Sõnumi prioriteet salvestatakse identifikaatorisse süsteemi (CAN-võrgu) kavandamise esmases faasis. Kõige kõrgem prioriteet antakse kõige madalama digiväärtusega identifikaatorile.

1.1 Andmepaketi kirjeldus

CAN-süsteemis edastatakse ja võetakse vastu informatsioon andmepaketi formaadis (sõnumi kaader, message frame).

CAN-ist on 2 versiooni – 2.0А ja 2.0В. 2.0А versiooni iseloomustab 11-bitine identifikaator ja ehtne Bosh-i protokoll, samal ajal kui 2.0В versiooni iseloomustab 21-bitine identifikaator. Viimane on arendatud USAs Ameerika autotööstuse vajaduste tarbeks.

2.0A versioonile vastavad CAN-võrgud võtavad vastu ja edastavad informatsiooni seadmete vahel, mis on ehitatud ainult selle standardi kohaselt. 2.0B versiooni puhul võetakse vastu ja edastatakse informatsiooni segatud võrkudes, mis võivad sisaldada mõlema CAN versiooni kontrollereid.

2.0A versiooni kaader on kujutatud pildil 6.3.

Fig. 6.3. 2.0A versiooni kaader

d ’dominantne’, r ’retsessiivne’

Pilt 6.4.

Andmebaitide arvAndmepikkuse kood
DLC3DLC2DLC1DLC0
0Dddd
1Dddr
2Ddrd
3Ddrr
4Drdd
5Drdr
6Drrd
7Drrr
8Rddd

Pilt 6.5. CDR väli

Pilt 6.6. ACK väli

Algselt edastatakse mööda liini impulss mis muutub kõrgest potentsiaalist madalani mida kutsutakse alguskaadriks (StartOfFrame, SOF). Alguskaadrile järgneb 11-bitine identifikaator (arbitration), millesse on kodeeritud edastuse sisu. Sellele järgneb 1 bitine informatsioon kaugedastuspäringuna (Remote Transmission Request, RTR), mille abil küsitakse saatjalt autoriseeringut informatsiooni edastamiseks vastuvõtjale. Bitid r0 ja r1 on protokollis tühjad. Andmepikkuskoodi (Data Length Code, DLC) välja suurus on 4 bitti ja see sisaldab informatsiooni edastatava andmemahu kohta, mis edastatakse andmeintervalli ajal. Selle intervalli pikkus on 0 kuni 8 impulssi, mis on väljendatud andmepikkuskoodiga. DLC’le järgneb andmeväli (suurus 0 kuni 8 baiti), kuhu on salvestatud edastatav informatsioon. Järgmised 15 bitti moodustavad tsükkelkoodkontrolli (Cycle Redundance Code, CRC), mida kasutatakse vastuvõetud informatsiooni korrektsuse kontrollimiseks. Sellele järgneb DEL-ajavahemik. Informatsiooni edastava seadme tuvastamiseks kasutatakse kaht jaatusimpulssi (ACK), mis järgnevad DEL-ile. Andmepakett lõppeb kaadrilõpumärgiga (EOF), mille pikkus on 7 impulssi. Paketi lõppu tähistatakse 3 vaheaja (INTERMISSION) bitiga, peale mida vabastatakse liin järgmiste sõnumite jaoks.

Pilt 6.7.

Retsessiivne ja dominantne bitt

Ülekandemeediumist isoleerimise huvides väldib CAN binaarsete „0“ ja „1“ väärtustega sõnumi kirjeldamist. Selle asemel võetakse vastu „retsessiivseid“ ja „dominantseid“ signaale. Näiteks optilise ühenduse puhul võib „retsessiivne“ signaal olla pimedus ja „dominantne“ valgus. Elektriliste signaalide puhul võib „retsessiivne“ signaal tähendada kõrget elektrilist signaali ning „dominantne“ signaal selle puudumist.

Kaadrite tüübid

CAN-protokollis eristatakse neli kaadrit:

  1. Andmekaader – edastab andmeid;
  2. Päringukaader – esitab andmekaadrite edastamise päringuid antud identifikaatori kohta;
  3. Ülelaadimise kaader – kindlustab andmekaadrite või päringute vahelised vahed;
  4. Veakaader – see edastatakse sõlmest (jaamast), kus tuvastati viga.

Andmekaadrid ja päringu-on eelnevatest kaadritest eraldatud vahedega.

Päringukaadri formaat vastab CANi standardsele kaadrile või laiendatud formaadile kahe erandiga:

RTR-väljas on „dominantne“ signaal asendatud „retsessiivse“ signaaliga;

Andmeväli puudub.

1.2 Arbitreerimine andmeedastuse ajal

Kui siin on vaba võib iga sõlm CAN-võrgus alustada suvalisel ajal andmete edastamist. Andmeedastuse arbitreerimine toimub, kui kahest või enamast sõlmest (tööjaamast) edastatakse mitu kaadrit samaaegselt (pilt 6.8).

Prioriteet edastatakse koos sõnumiga, mis on salvestatud 11-bitisesse seadme identifikaatorisse (seadme aadressisse). Kõige madalama binaarväärtusega identifikaator on kõige kõrgema prioriteediga. Sõnumite prioriteet määratakse võrgu arendamise ajal ja seda ei saa dünaamiliselt (hiljem) muuta. Mitme kaardi edastamise  ajal toimuvad kaadrite kokkupõrked lahendatakse igas tööjaamas omistatud identifikaatori numbrite võrdlemise teel. Pildil 6.8 on näide, mis illustreerib kirjeldatud juhtumit. Selles näites tahavad kolm CAN-sõlme oma andmeid edastada. Erinevalt Ethernet’ist ei ole CAN-võrgus pakettide kadu, nagu ka kokkupõrgete tekitamine, lubatud. CAN-võrgu suurimaks puuduseks on, et madala prioriteediga sõnumeid ei pruugi jõuda CAN-võrku ehk siis ei välju vastavast tööjaamast.

Pilt 6.8. Andmeedastuse arbitreerimine

Veajuhtimine

CANi suureks eeliseks on mitmete veajuhtimise ja vigade vältimise mehhanismide olemasolu:

  • Andmeülekande juhtimine: Andmeülekande ajal võrreldakse võrgu bititasandit edastatavate bittidega;
  • Biti täitmine: Peale viie identse biti jadamisi edastamist järgneb automaatne vastupidise tähendusega biti edastus. Sel moel on kõik andmeväljad ja päringukaader kodeeritud, ainukeseks erandiks on kontrollsumma (CRC) eraldaja ja EOF-märk.
  • Kontrollsumma: Saatja arvutab andmepaketi kontrollsumma ning lisab selle edastatavasse kaadrisse. Vastuvõtja loeb reaalajas juhtringi, arvutab vastuvõetud kaadri kontrollsumma ja võrdleb neid;
  • Töövälja väärtuse kontrollimine sõnumi edastamise ajal.

Edastamiskiirus ja võrgu pikkus

Kiiruse ulatus

Kõik võrgu sõlmed peaksid tegutsema võrdsel kiirusel. CAN-standard ei määra edastamiskiirust, siiski kasutavad enamus CAN-võrkusid katkematut edastust kiirusega 20;Kbit/s kuni 1;Mbit/s. Loomulikult on olemas ka lahendusi, mis töötavad väljaspool seda vahemikku.

Kriitiline võrgu pikkus

Ülalkirjeldatud veajuhtimise meetodid eeldavad üle kogu võrgu hajutamist kuni selle arvutamise hetkeni. See omakorda määrab ära võrgu maksimaalse pikkuse. Mida kõrgem on ülekande kiirus, seda väiksem on võrgu pikkus. Järgnevalt on esitatud sõnumi edastamiskiirus ja sellele vastava võrgu kriitiline pikkus ISO 11898 standardi järgi:

  • 1 Mbit/s – 40 m;
  • 500 Kbit/s – 100 m;
  • 125 Kbit/s – 500 m;
  • 10 Kbit/s – 5000 m;

Kõrgtaseme/kihi protokollid

CAN põhispetsifikatsioon pakub terve hulga lisa võimalusi nagu 8 baidist pikema andmehulga edastamine; automaatne sõlmedevaheline identifikaatorite jaotamine, homogeenne erinevat tüüpi ja erineva tootlikkusega seadmete juhtimine. Selle tõttu on kõrgema tasandi CAN protokolli modifikatsioonid olnud selle loomisest saadik pidevas arenduses. Kõrgema tasandi CAN protokollid on:

  • CANopen;
  • DeviceNet;
  • CAN Kingdom;
  • J1939;
  • SDS.

CANi eelised

  • Võimalus tegutseda fikseeritud reaalajalises režiimis;
  • Lihtne rakendada ja minimaalsed operatiivkulud;
  • Kõrge häirekindlus;
  • Võrgu ligipääsu arbitreerimine ilma mahukadudeta;
  • Usaldatav veajuhtimine sõnumi ülekandmise ja vastuvõtmise ajal;
  • Lai sõnumi edastamiskiiruse ulatus;
  • Suur seadmetevaliku.

CANi puudused

  • Võrgu kriitiline pikkus on pöördvõrdelises seoses edastamiskiirusega;
  • Suur teenusega (CANi protokolliga) seotud andmete hulk edastatavas sõnumis (võrreldes kasulike andmetega);
  • Kõrgema tasandi CANi protokollide konventsionaalse standardi puudumine.

Standardne võrk pakub laialdasi võimalusi praktiliseks turvaliseks andmeedastuseks sõlmede vahel. Järgnevad tabelid sisaldavad CAN-võrgu ühenduseks kõige sagedamini kasutatavaid konnektoreid ja nende jalgade (pistiku kontaktide) kirjeldusi.

9 Pin (male) D-Sub CAN Bus PinOut
Jalg #SignaalinimedSignaali kirjeldus
1ReserveeritudÜlenduse rada
2CAN_LDominant, madal
3CAN_GNDMaandus
4ReserveeritudÜlenduse rada
5CAN_SHLDKilp, valikuline
6GNDMaandus, valikuline
7CAN_HDominant, kõrge
8ReserveeritudÜlenduse rada
9CAN_V+Võimsus, valikuline

10-Pin Header CAN Bus PinOut
Pin #Signal NamesSignal Description
1ReserveeritudÜlenduse rada
2GNDMaandus, valikuline
3CAN_LDominant, madal
4CAN_HDominant, kõrge
5CAN_GNDMaandus
6ReserveeritudÜlenduse rada
7ReserveeritudÜlenduse rada
8CAN_V+Võimsus, valikuline
9ReserveeritudÜlenduse rada
10ReserveeritudÜlenduse rada

7-Pin Open Style CAN Bus PinOut
Jalg #SignaalinimedSignaali kirjeldus
1CAN_GNDMaandus
2CAN_LDominant, madal
3CAN_SHLDKilp, valikuline
4CAN_HDominant, kõrge
5CAN_V+Võimsus, valikuline

5-Pin Micro/Mini CAN Bus PinOut
Jalg #SignaalinimedSignaali kirjeldus
1CAN_SHLDKilp, valikuline
2CAN_V+Võimsus, valikuline
3CAN_GNDMaandus
4CAN_HDominant, kõrge
5CAN_LDominant, madal

RJ10, RJ45 CAN Bus PinOut
RJ45 Jalg #RJ10 Jalg #SignaalinimiSignaali kirjeldus
12CAN_HDominant, kõrge
23CAN_LDominant, madal
34CAN_GNDMaandus
4ReserveeritudÜlenduse rada
5ReserveeritudÜlenduse rada
6CAN_SHLDCAN kilp, valikuline
7CAN_GNDMaandus
81CAN_V+Võimsus, valikuline

CAN Siini sisend/väljund omadused
CANbus signaalitüüpDigitaalne liides
Väljundpinge (kõrge)VOH +4 volti min, +5.5 volti maks
Väljundpinge (madal)VOL +0 volti min, +1.5 volti maks
Väljundpinge+16 volti (absoluutne maksimum)
Väljundvool100mA
Takistus124 oomi lõpetamine +/- terminalide vahel
Lülituse tüüpDiferentsiaalne
Bitiajad1uS @ 1Mb/s; 2uS @ .5Mb/s 4uS @ .25Mb/s
KodeerimisformaatNon-Return-to-Zero (NRZ)
Edastuse/vastuvõtu sagedus1Mbit/s @ 40 meetrit
TopoloogiaPunkt-punkt
MeediumElektriline keerutatud paar (shielded Twisted pair, STP) 9-nõelaga D-Sub
Ligipääsu juhtimineLiikluse ja põrke tuvastusega pöördus (carrier sense multiple access with collision detection, CSMA/CD)
Bitikaupa säilearbitreerimine (non-destructive bitwise arbitration)

Ümar CAN Bus PinOut
9-Pin #8-Pin #7-Pin #Signaali nimedSignaali kirjeldus
133CAN-HDominantne kõrge
244CAN-HDominantne madal
352CAN_GNDMaandus
46Reserveeritud
57Reserveeritud
68Reserveeritud
711CAN_V+Võimsus, valikuline
82GNDMaandus
9Reserveeritud
5DIL-1DIP lüliti 1 ühenduses CAN_V+
6DIL-2DIP lüliti 2 ühenduses CAN_V+
7DIL-3DIP lüliti 3 ühenduses CAN_V+

9/12-Pin Round Flange Style CAN Bus PinOut
12-Pin #9-Pin #Signaali nimedSignaali kirjeldus
1Reserveeritud
27CAN-HDominantne madal
38CAN_GNDMaandus
49Reserveeritud
5Reserveeritud
6Reserveeritud
72CAN-HDominantne kõrge
8Ei kasutata
9Reserveeritud
10GNDMaandus, valikuline
11Reserveeritud
121CAN_V+Võimsus, valikuline
3DIL-1DIP lüliti 1 ühenduses CAN_V+
4DIL-2DIP lüliti 2 ühenduses CAN_V+
5DIL-3DIP lüliti 3 ühenduses CAN_V+
6DIL-4DIP lüliti 4 ühenduses CAN_V+

2. Tööväljavõrk MODBUS

MODBUS võrkude kasutusala

Sissejuhatus
MODBUS on kommunikatsiooniprotokoll, mis töötati välja 1979. aastal Modicon (nüüd Schneider Electric) poolt tööstuslike rakenduste ja automatiseeritud seadmete jaoks. Selle avatud standardi tõttu on MODBUS saanud laialdaselt kasutatavaks erinevates tööstusharudes, pakkudes lihtsat ja usaldusväärset viisi andmevahetuseks kontrollerite ja teiste seadmete vahel.

Kasutusalad

  1. Tööstusautomaatika
  • PLC ja HMI ühendamine: MODBUS-i kasutatakse laialdaselt programmeeritavate loogikakontrollerite (PLC) ja inim-masin liideste (HMI) ühendamiseks. See võimaldab PLC-del ja HMI-del suhelda ja vahetada andmeid, mis on oluline protsesside juhtimisel ning jälgimisel.
  • Andurite ja seadmete integreerimine: MODBUS võimaldab integreerida erinevaid andureid ja täiturmehhanisme tootmisliinidel, tagades reaalajas andmevahetuse ning juhtimise.
  1. Energiasektor
  • Energiaseire ja -haldus: MODBUS-i kasutatakse elektriarvestite, energiaseire seadmete ja muude energiaseadmete ühendamiseks keskse juhtimissüsteemiga. See võimaldab koguda ja analüüsida energiatarbimise andmeid, mis aitab optimeerida energiakasutust.
  • Taastuvenergia süsteemid: MODBUS võimaldab päikese- ja tuuleenergia süsteemide komponentide vahel andmevahetust, mis on oluline tootmisprotsessi jälgimisel ning optimeerimisel.
  1. Vee- ja reoveetöötlus
  • Pumbasüsteemid: MODBUS-i kasutatakse pumbasüsteemide juhtimiseks ja jälgimiseks, tagades tõhusa veevarustuse ja reovee käitlemise.
  • Kvaliteedikontroll: MODBUS võimaldab integreerida erinevaid veekvaliteedi andureid ja seiresüsteeme, mis aitavad tagada veekvaliteedi normide täitmise.
  1. Hooneautomaatika
  • Küte, ventilatsioon ja kliimaseade (HVAC): MODBUS-i kasutatakse laialdaselt HVAC-süsteemide juhtimiseks ja jälgimiseks, tagades energiatõhusa ja mugava sisekliima.
  • Valgustuse juhtimine: MODBUS võimaldab valgustussüsteemide kaugjuhtimist ja automatiseerimist, mis aitab säästa energiat ja parandada mugavust.
  1. Transport ja logistika
  • Liikumise juhtimine: MODBUS-i kasutatakse transpordisüsteemides, nagu konveierid ja kraanad, tagades tõhusa ja koordineeritud liikumise.
  • Ladustamissüsteemid: MODBUS võimaldab laosüsteemide, nagu riiulisüsteemide ja tõstukite, integreerimist ja juhtimist, mis parandab ladustamise efektiivsust ja täpsust.

Tehnilised eelised

  • Lihtsus ja töökindlus: MODBUS on tuntud oma lihtsa protokolli ja töökindluse poolest, mis teeb selle sobivaks laialdaseks kasutamiseks erinevates tööstusharudes.
  • Skaalautuvus: MODBUS võimaldab hõlpsalt lisada uusi seadmeid ja laiendada süsteeme, mis on oluline kasvavates ning muutuvates tööstuskeskkondades.
  • Ühilduvus: MODBUS on ühilduv paljude erinevate tootjate seadmetega, mis järgivad MODBUS standardit, tagades sujuva kommunikatsiooni.

Viited ja kasulikud lingid

Need viited ja lingid pakuvad põhjalikku teavet MODBUS võrkude kohta ning aitavad sügavamalt mõista nende kasutusala ning eeliseid erinevates tööstusharudes.

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 (pilt 6.9), või Ethernet võrku TCP/IP (Modbus TCP) (pilt 6.10).

Pilt 6.9.RS-485, RS-422, RS-232

Pilt 6.10. Ethernet võrk TCP/IP

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 (pilt 6.11). Alluvseade omakorda moodustab sõnumi ülemseadmele poolt nõutud informatsioonist ja saadab selle ülemseadmele tagasi. Grupipäringu saamisel ei moodustata vastust.

Pilt 6.11. Serveri ja kliendi pöördumised

2.1 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 (pilt 6.12).

Modbus PDU
Funktsiooni-koodAndmed
1 baitN < 253 (baiti)

Pilt 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.

Pilt 6.13. Üldine MODBUS kaader

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:

Pilt 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õi seadmepaketi 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:

Pilt 6.15. Modbus ASCII informatsiooni kaader

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

Tabel 6.9

NimiPikkusFunktsioon
Algus1 märkKaardi algust tähistatakse kooloniga (;: , ASCII on selle väärtuseks 3A hex)
Aadress2 märkiTööjaama aadress
Juhtinfo2 märkiViitab juhtinfole (funktsiooni koodile) nagu näiteks loe keerde/sisendite väärtusi
Andmedn märkiAndmed – pikkus valitakse sõltuvalt sõnumi tüübist ja edastatavast andmemahust
LRC kontroll2 märkiVeakontroll
Lõpp2 märkiKaardi lõppu tähistatakse reavahetuse märgipaariga (CRLF, ASCII on selle väärtuseks 0D& 0A hex)

Modbus TCP informatsiooni kaadri struktuur on järgmine:

Pilt 6.16. Modbus TCP informatsiooni kaader

Pilt 6.17. Modbus TCP andmepaketi koostamine

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.

Pilt 6.18. Modbus TCP kaader

2.2 Juhtinfo kategooriad

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

Pilt 6.19.

2.3 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

Funktsiooni nrVastused
1 (0x01)
Loe diskreetne väärtus
(Read Coil Status)
A1A0Q1Q0 
ND (N baiti)
2 (0x02)
Loe diskreetsed sisendid
(Read Discrete Inputs)
A1A0Q1Q0 
ND (N baiti)
3 (0x03)
Loe ooteregistrid
(Read Holding Registers)
A1A0Q1Q0 
ND (N baiti)
4 (0x04)
Loe sisendregistrid
(Read Input Registers)
A1A0Q1Q0 
ND (N baiti)
5 (0x05)
Kasuta üksik diskreetne väärtus
(Force Single Coil)
A1A0D1D0 
A1A0D1D0 
6 (0x06)
Töötle üksik register
(Preset Single Register)
A1A0D1D0 
A1A0D1D0 
15 (0x0F)
Kasuta mitu diskreetset väärtust
(Force Multiple Coils)
A1A0Q1Q0ND (N baiti)
A1A0Q1Q0 
16 (0x10)
Töötle mitu registrit
(Preset Multiple Registers)
A1A0Q1Q0ND (N baiti)
A1A0Q1Q0 
A1 ja A0 — elementide aadressQ1 ja Q0 — elementide arvN — andmebaitide arvD — 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 koodNimi
HexDec
0000Tagasta päringu andmed
(Return Query Data)
0101Taaskäivita kommunikatsioon
(Restart Communications Option)
0202Tagasta diagnostika register
(Return Diagnostic Register)
0303Muuda ASCII sisenderaldaja
(Change ASCII Input Delimiter)
0404Juuruta ainult kuulamise reziim
(Force Listen Only Mode)
J05..09Reserveeritud
0A10Nulli loendurid ja diagnostika register
(Clear Counters and Diagnostic Register)
0B11Tagasta siini sõnumiteloenduri väärtus
(Return Bus Message Count)
0C12Tagasta siini sidevigade loenduri väärtus
(Return Bus Communication Error Count)
0D13Tagasta siini erandolukordade loenduri väärtus
(Return Bus Exception Error Count)
0E14Tagasta alluvseadme sõnumiloenduri väärtus
(Return Slave Message Count)
0F15Tagasta alluvseadme puuduvate vastuste loenduri väärtus
(Return Slave No Response Count)
1016Tagasta alluvseadme eituste loenduri väärtus
(Return Slave NAK Count)
1117Tagasta alluvseadme hõivatud staatuse loenduri väärtus
(Return Slave Busy Count)
1218Tagasta siini märkide ülejooksu loenduri väärtus
(Return Bus Character Overrun Count)
13
14N.A
19
2021…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

Primaarsed tabelidObjekti tüüpTüüpKommentaarid
Diskreetne sisendÜksik bittKirjutuskaitsega (read-only)Seda tüüpi andmed annab sisend/väljund süsteem.
Diskreetne väärtusÜksik bittLugemine-kirjutamineSeda tüüpi andmeid saavad muuta kõik rakendusprogrammid.
Sisendregistrid16-bitine sõnaKirjutuskaitsega (read-only)Seda tüüpi andmed annab sisend/väljund süsteem.
Ooteregistrid16-bitine sõnaLugemine-kirjutamineSeda 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.

2.4 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

Andmeedastuse suundAlluvseadme aadressFunktsiooni numberAndmed (või veakood)CRC
Järjekord (Ülem→Alluv)0x010x770xDD0xC7 0xA9
Päring (Alluv→Ülem)0x010xF70xEE0xE6 0x7C

Tabel 6.14

Viga #Veateade
0Ei ole vigu
1Keelatud toiming
2Keelatud andmeaadress
3Keelatud andmeväärtus
4Ülemseade aegumine – – timeout
5Side puudub
6Sobimatu üksuse ID
7Sobimatu käsk
8Sõnumi pikkus
9Funktsioon ei ole toetatud
10Keelatud formaat
11Sobimatud vastuvõetud andmed