ModBus ir TCP/IP paketų pagrindu veikianti automatizavimo sistemų platforma

Vasara kilo idėja sukurti bendrą valdymo sistemą protingų įrenginių valdymui, kurie jungiasi per RS485 sąsają ir palaiko standartinį protokolą. Kaip žinia, RS485 sąsajoj gan sunku įgyvendinti multimaster sistemą. Protokolas pasirinktas MODBUS RTU.

Toliau norėtasi, kad valdyti būtų galima per kompiuterių tinklą, tad tam sukurtas „tiltas“ (angl. bridge), prie kurio iš vienos pusės jungiasi Modbus protokolą palaikantys įrenginiai (per RS485 sąsaja), o iš kitos pusės jungiasi vartotojai (per kompiuterių tinklą).

Sistema veikia taip:

  • vartotojas perduoda į TCP/IP paketą įterptą MODBUS paketą tiltui
  • paketas įkrenta į tilto paketų apdorojimo eilę
  • apdorojus paketą tilte, jis išsiunčiamas vedamiesiems įrenginiams per RS485 sąsają
  • gavus atsakymą iš vedamojo įrenginio, tiltas siunčia šį atsakymą užklausimą siuntusiam vartotojui kompiuterių tinkle. Jei atsakymas negaunamas per nustatytą laiką, siunčiamas specialus paketas, pranešantis apie tai (angl. timeout).
  • toliau apdorojamas kitas tilto eilės paketas (viskas nuo pradžių).

Toks sistemos veikimas leidžia gauti multimaster sistemą.

Vedamųjų įrenginių realizacijai panaudoti mikrovaldikliai Atmega8. Programa parašyta pasinaudojant GCC priemonėmis. Panaudota FreeMODBUS biblioteka, kuri įgyvendina pilna MODBUS protokolo palaikyma.

Tilto kūrimui pasirinkta aparatinė routerio DLink DIR-320 platforma su specialiai šiam projektui sukompiliuota Linux OpenWRT versija bei parašyta atskira aplikacija.

Aparatinė tilto platforma buvo papildyta savadarbiu USB-RS485 keitiklių.

ModBUS paketų apdorojimas tilte kaip ir neatliekamas. Viskas “aklai” persiunčiama vienai ar kitai pusei (vartotojui ar vedamajam įrenginiui).

Žemiau pateikta iliustracija, kurioje pateikta kaip keliauja paketais šioje sistemoje:

Bandomoji vartotojo sąsaja veikianti Windows aplinkoje suprogramuota panaudojant LabWindows CVI. Taip apt pradėta daryti AndroidO S palaikančiuose įrenginiuose veikianti aplikacija. Naudojant vartotojo sąsają, buvo galima išbandyti vedamųjų įrenginių galimybes:

  • stebėti diskretinius įėjimus (mygtukai) ir analoginius įėjimus (potenciometro padėtis ir temperatūros daviklis),
  • junginėti įvarius išėjimus (ant plokštės esantys LED, RGB LED),
  • valdyti išorinius įrenginius (servo pavara).

ModBUS paketų formavimas ir apdorojimas vartotojo sąsajoje atliekamas savo pasirašytu kodu.

Darbas buvo pristatytas jaunųjų mokslininkų parodoje „Technorama 2012“ jungtinių darbų stende. Kadangi darbe buvo reikalingos gausios įvairių sričių žinios (elektronika, programavimas ir t.t.), darbą atliko dviejų skirtingų Kauno technologijos universiteto fakultetų magistrai: Dovydas Rušinskas (Telekomunikacijų ir elektronikos fakultetas) ir Arvydas Burdulis (Informatikos fakultetas).

Buvo parašytas trumpas straipsnelis http://technorama.ktu.lt/darb12/modbus-ir-tcpip-paketu-pagrindu-veikianti-automatizavimo-sistemu-platforma, kuris buvo išspausdintas renginio kataloge.

Toliau pateikto straipsnio tekstas:

ModBus ir TCP/IP paketų pagrindu veikianti automatizavimo sistemų platforma

Rinkoje siūloma įvairių automatizavimo platformų, kuriose atskiri valdymo įrenginiai jungiami į bendrą tinklą. Sukūrėme alternatyvią automatizavimo sistemų platformą, gebančią perduoti duomenis automatikoje paplitusiu protokolu ModBus, įterptu į kompiuterių tinklo protokolą TCP/IP. Toks protokolų derinys leidžia įgyvendinti valdymą nuotoliniu būdu iš įvairių įrenginių.

Šio projekto tikslas buvo sukurti ModBus RTU protokolo pagrindu veikiančią duomenų perdavimo sistemos platformą su tokiomis savybėmis:

  • Valdymas iš keleto įrenginių
  • Aparatinis tiltas duomenų mainams TCP/IP protokolu vietiniame tinkle ir internete
  • Autonominis sistemos veikimas
  • RS-485 sąsają vedamiesiems (angl. slave) įrenginiams
  • Ethernet ir 802.11b/g/n bevielė sąsaja klientų prisijungimui
  • Bandomoji vartotojo sąsaja Windows ir Android OS
  • Bandomieji ModBus įrenginiai su bazinėmis funkcijomis

Tiltas (angl. bridge) tarp vedamųjų įrenginių ir vartotojo sąsajos realizuotas įterptinėje sistemoje su Linux OS.

Sistema gali funkcionuoti autonomiškai, atlikdama vedamųjų įrenginių valdymą ir duomenų iš jų surinkimą.

Įgyvendinant projektą panaudotos elektronikos ir informatikos žinios, darbą atliko specialistai iš skirtingų fakultetų.

Šį projektą galima plėtoti kuriant/prijungiant naujus vedamuosius įrenginius, vystant vartotojo sąsają.

Spread the love

14 thoughts on “ModBus ir TCP/IP paketų pagrindu veikianti automatizavimo sistemų platforma

  1. Ar yra galimybe siame projekte “kalbetis” su modbus’iniais slave’ais skirtingais baudreitais per ta pati tilta (kalba apie papildomu liniju pajungima)?

    • Kalbate apie atvejį, kai vedamieji (angl. Slave) įrenginiai prijungti prie skirtingų linijų su skirtingais sąsajų parametrais (baudrate, parity ir t.t.)?

      Manau, nėra jokių problemų.

      Paprasčiausia būtų tilte paleisti dar vieną aplikaciją tilte tik su kitais parametrais (kita linija, linijos parametrai, tcp prievadas). Kreipiantis į tiltą, reikėtų kreiptis kitu tcp prievadu ir bendravimas vyktų tik su tos linijos vedamaisiais įrenginiais.

      Toks sprendimas leistų bendrauti su keleta atskirų linijų vienu metu.

      • Taip, turejau omenyje linijas su skirtingais parametrais. Del tilto, turejau omenyje naudojant standartini modbus/TCP prievada 502 visoms papildomoms linijoms taciau su duomenu srauto paskirstymu. Pvz: kreipiantis i vedamuosius nuo 1 iki 10 duomenys vaiksto viena linija o nuo 11 iki 20 kita. Beje idomu kiek sis projektas atviras.

        • Žinoma, galima padaryti ir taip, kad kreipiantis į skirtingas Modbus adresų sritis, tiltas kreiptųsi į skirtingas, iš anksto numatytas, sąsajas.

        • Dėl projekto paviešinimo, tai pasistengsiu surinkti reikiamą informaciją ir ją pateikti.

  2. Kaip suprantu projektas realizuotas panaudojant libmodbus biblioteka, gal imanoma pamatyti bent kodo griaucius ar kazkokia duomenu apdorojimo logikos uzuomina kodo pavidale B)

    • Šiek tiek papildžiau aprašymą.

      Vedamuosiuose įrenginiuose panaudota FreeMODBUS biblioteka.

      Tilte ModBUS paketų apdorojimas tilte kaip ir neatliekamas. Viskas “aklai” persiunčiama vienai ar kitai pusei (vartotojui ar vedamajam įrenginiui).

      Vartotojo aplikacijose ModBUS paketų formavimas ir apdorojimas vartotojo sąsajoje atliekamas savo pasirašytu kodu.

      Yra galimybė, kad atsiradus laisvo laiko projektą aptvarkysiu ir pateiksiu viešai 😉

      • Siap manau projektas butu labiau pritaikomas jeigu tiltas sugebetu priimti Modbus/TCP uzklausa, nuimti headeri, uzdeti CRC, taip gautume Modbus/RTU paketa ji siunciame i RS485 gautam atsakymui tikrinam CRC jei ok nuimame CRC uzdedame headeri ir gauname Modbus TCP atsakyma. Vienu zodzdiu ModbusTCP>RTU vartai. Tokie mano pamastymai is praktikos nes paskutiniu metu pastebiu kad daug softo draugauja su Modbus TCP. Beje nesenai uzmaciau grazu softuka androidui SuperView Mobile Lite tavo tiltas manau susidraugautu su juo 🙂

        • Visiškai sutinku, kad padarius ModBus TCP ModBus RTU tiltą jis būtų daug universalesnis, labiau pritaikomas. Šis variantas buvo svarstytas, tik nepamenu kodėl neįgyvendintas. Manau, kad kažkada gali būti tai įgyvendinta 🙂

          • Kalbant apie TCP/RTU tilta atrodo radau tokio projekto koda: http://sourceforge.net/projects/modbusgw/ gal galetum trumpai paaiskinti kaip realizuoti tai ruteryje su openwrt. Ar imanoma pvz instaliuoti kompiliatoriu i ruteri tada “sumaitinti” projekto source koda, gauti kazkoki vykdomaji faila, padaryti ji automatiskai paleizdiamu, ar reikia perkompiliuoti visa FW o gal dar kitaip ? Aciu is anksto uz bet kokia susijusia informacija 🙂

          • Projektas „Modbus Gateway“ atrodo atlieka jums reikalingas funkcijas.

            Visais atvejais reiktų sukompiliuoti kodą reikiamai platformai. FW dėl vienos aplikacijos neperkompiliuodavau.

            Kompiliavimą galima atlikti kitoje platformoje (Cross compiler). Kaip tik tokį variantą ir dariau su routeriu, nes dėl resursų stokos kitas variantas neįmanomas.

            Kompiliavimą galima atlikti savo platformoje. Tam įdiegiamas kompiliatorius ir tada tiesiog sukompiliuojąs išeities kodas. Šitas variantas paprastesnis (lengviau sukonfigūruoti programinę įrangą ir ją testuoti).

            Nesu didelis Linux žinovas, bet padaryti automatiškai paleidžiamą aplikaciją yra ne vienas variantas.

  3. Sveikas, Dovydai. Norėjau paklausti apie ModBus ir TCP/IP paketų pagrindu veikianti automatizavimo sistemų platforma. Gal pavyko sukurti aplikaciją androix sistemai. Yra dalykas, kur tavo sistemą galėtų panaudoti. Mano tel. 862996276

Leave a Reply

Your email address will not be published. Required fields are marked *