Neuroverkon inferenssi PLC:ssä

Neuroverkon käyttäminen PLC:ssä ei yleensä tarkoita mallin kouluttamista automaatiojärjestelmässä. Neuroverkon kouluttaminen PLC:llä on osoitettu mahdolliseksi, mutta optimoidullakin toteutuksella pienen verkon opettaminen vei Siemens S7-1516 -logiikassa useita minuutteja.[1] Käytännöllisempi ratkaisu on kouluttaa malli erillisessä Python-ympäristössä ja siirtää valmis laskenta PLC:lle. PLC lukee prosessin reaaliaikaiset mittaukset, suorittaa koulutetuilla painoilla eteenpäinlaskennan ja antaa tuloksen muun ohjauslogiikan käyttöön.

Tämä mahdollistaa koneoppimisen hyödyntämisen lähellä prosessia ilman, että PLC:hen rakennetaan koulutusalgoritmia tai liitetään jokaiseen käyttökohteeseen erillistä tietokonetta. Ratkaisu sopii erityisesti pienille ja tarkasti rajatuille neuroverkoille, joiden laskenta-aika ja toiminta voidaan todentaa.

Kokonaisketju prosessidatasta ohjaukseen

Toteutus voidaan jakaa kuuteen vaiheeseen. Kolme ensimmäistä tapahtuvat mallin kehitysympäristössä. Kolme viimeistä liittyvät mallin siirtämiseen, suorittamiseen ja turvalliseen hyödyntämiseen automaatiojärjestelmässä.

1. Prosessidatan kerääminen

Neuroverkon toiminta perustuu prosessista kerättyyn dataan. Syötteinä voivat olla esimerkiksi lämpötila, paine, virtaus, nopeus, moottorin kuormitus, kosteus tai eri työvaiheiden tilat. Lisäksi tarvitaan tavoitearvo, jonka malli yrittää oppia.

Tavoite voi olla esimerkiksi:

  • tuotteen ennustettu laatu
  • häiriön tai tukoksen todennäköisyys
  • tuleva energiankulutus tai kuormitus
  • prosessin optimaalinen nopeusohje
  • valinta kahden toimintatavan välillä

Datan pitää kuvata samaa tilannetta, jossa mallia myöhemmin käytetään. Mittausten aikaleimat, prosessiviiveet ja tavoitearvon muodostuminen ovat usein vähintään yhtä tärkeitä kuin itse neuroverkon rakenne.

2. Datan esikäsittely

Ennen koulutusta datasta poistetaan virheelliset mittaukset ja muodostetaan mallin tarvitsemat piirteet. Usein arvot myös skaalataan esimerkiksi välille 0…1.

x_scaled = (x - x_min) / (x_max - x_min)

Sama esikäsittely täytyy toteuttaa myöhemmin PLC:ssä täsmälleen samoilla parametreilla. Jos malli koulutettiin skaalatuilla arvoilla, mutta PLC syöttää sille raakoja mittauksia, mallin laskenta voi olla matemaattisesti oikein ja tulos silti käyttökelvoton.

3. Neuroverkon koulutus

Malli koulutetaan esimerkiksi Pythonilla, TensorFlow’lla tai PyTorchilla. Koulutuksessa optimizer muuttaa verkon painoja siten, että ennusteen virhe pienenee. Opetus-, validointi- ja testidata pidetään erillään, jotta mallin toiminta voidaan arvioida myös datalla, jota se ei ole nähnyt koulutuksen aikana.

PLC:n ei tarvitse suorittaa optimizeria eikä takaisinlevitystä. Kun koulutus on valmis, PLC tarvitsee vain mallin eteenpäinlaskennan.

4. Mallin siirtäminen PLC:lle

Koulutetusta mallista siirretään PLC:lle kaikki inferenssin kannalta tarpeellinen:

  • painot
  • bias-arvot
  • kerrosten ja neuronien määrä
  • aktivointifunktiot
  • syötteiden järjestys ja skaalausparametrit
  • ulostulon jälkikäsittely
  • mallin versiotunnus

Pienessä verkossa painot voidaan tallentaa Pythonista CSV-tiedostoihin ja siirtää PLC:n datalohkoon REAL-taulukoina. Esimerkiksi 3-4-1-verkossa ensimmäinen painomatriisi sisältää 3 × 4 painoa ja toinen 4 × 1 painoa.

5. Mitä PLC käytännössä laskee?

Kolmen syötteen, neljän piiloneuronin ja yhden ulostulon verkossa laskenta voidaan esittää seuraavasti:

h = sigmoid(XW1 + b1)
y = sigmoid(hW2 + b2)

PLC muodostaa jokaiselle neuronille painotetun summan, lisää bias-arvon ja suorittaa aktivointifunktion. Sigmoid-funktio on:

sigmoid(x) = 1 / (1 + exp(-x))

Siemens S7-1500 -järjestelmässä toteutus voidaan rakentaa SCL-kielisellä FB-lohkolla. Lohkon Input-liitäntä vastaanottaa prosessiarvot, staattiset taulukot sisältävät painot ja biasit, ja Output-liitäntä antaa mallin tuloksen. Instanssidatalohkoon voidaan jättää näkyville myös kerroskohtaisia summia ja aktivointeja käyttöönottoa sekä diagnostiikkaa varten.

PLC suorittaa siis saman eteenpäinlaskennan kuin Python-malli. Oleellista on, että matriisien suunta, painojen järjestys ja aktivoinnit vastaavat alkuperäistä mallia.

6. Valvottu ohjaus

Vaikka neuroverkko suoritetaan PLC:ssä, se ei korvaa automaatiojärjestelmän perinteisiä suojauksia, käyttöehtoja eikä turvatoimintoja. Mallin tulos kannattaa käsitellä yhtenä ohjausjärjestelmän tuottamana ehdotuksena tai ohjearvona.

Ennen tuloksen hyväksymistä PLC-logiikan pitää tarkastaa ainakin:

  • ovatko kaikki syötteet kelvollisia
  • onko prosessi mallin tarkoittamassa käyttötilassa
  • pysyykö ulostulo fyysisesti ja prosessiteknisesti sallitulla alueella
  • onko mallin tuloksen muutosnopeus hyväksyttävä
  • onko käytettävissä turvallinen varatoiminto

Turvallisuuskriittisten toimintojen tulee säilyä niille tarkoitetussa turvalogiikassa. Neuroverkon tulos ei saa ohittaa koneen suojauksia tai hyväksyttyjä turvallisuusehtoja.

Miten käsin toteutettu PLC-malli poikkeaa ONNX-mallista?

Perusmatematiikka ei poikkea. Sekä käsin kirjoitettu SCL-toteutus että ONNX-mallia suorittava järjestelmä käyttävät koulutettuja parametreja uuden syötteen käsittelyyn. Ero on siinä, miten malli kuvataan ja mikä ohjelmisto suorittaa sen.

OminaisuusKäsin toteutettu SCL-malliONNX-malli
Mallin sisältöPainot siirretään erikseen ja verkkorakenne kirjoitetaan SCL-koodiin.Rakenne, operaatiot ja parametrit ovat samassa standardoidussa tiedostossa.
SuoritusPLC suorittaa itse kirjoitetun laskennan.Malli tarvitsee ONNX-yhteensopivan suoritusmoottorin.
LäpinäkyvyysKaikki laskut näkyvät PLC-ohjelmassa ja niitä voidaan seurata online-tilassa.Malligraafi on standardoitu, mutta runtime hoitaa varsinaisen suorituksen.
Mallin vaihtaminenVerkkorakenteen muutos voi vaatia muutoksia SCL-lohkoon.Tuettu malli voidaan usein vaihtaa ilman käsin kirjoitettua kerroslogiikkaa.
Sopiva käyttökohdePienet, rajatut ja deterministisesti suoritettavat verkot.Siirrettävät mallit ja laajemmat verkkorakenteet sopivalla suorituslaitteella.

ONNX on mallin standardoitu esitysmuoto, ei itsenäinen laskentalaite. Tavallisessa PLC-toteutuksessa tarvitaan joko ONNX-suoritusmoottori erillisellä edge-laitteella tai muunnosvaihe, joka lukee ONNX-mallin ja muodostaa siitä PLC:lle sopivan toteutuksen.

Kun painot, biasit, syötteiden esikäsittely, aktivointifunktiot ja laskentatarkkuus vastaavat toisiaan, tulosten pitää olla käytännössä samat:

Python-tulos ≈ ONNX-tulos ≈ PLC-tulos

PLC- ja Python-tulosten validointi

Ennen tuotantokäyttöä samat testivektorit ajetaan sekä Pythonissa että PLC:ssä. Vertailussa kannattaa tallentaa lopullisen ulostulon lisäksi myös kerroskohtaiset arvot. Näin mahdollinen ero voidaan paikantaa skaalaamiseen, painojen järjestykseen, painotettuun summaan tai aktivointifunktioon.

Validoinnissa tarkastetaan ainakin:

  • PLC:n ja Pythonin tulosten numeerinen vastaavuus
  • REAL-laskennasta syntyvä hyväksyttävä toleranssi
  • FB-lohkon suoritusaika ja vaikutus PLC:n kiertoaikaan
  • toiminta syötealueen rajoilla
  • toiminta puuttuvilla tai virheellisillä mittauksilla
  • mallin ja painosarjan versiointi

Missä PLC:ssä suoritettava neuroverkko on järkevä?

Suoraan PLC:ssä suoritettava neuroverkko on kiinnostava erityisesti silloin, kun malli on pieni, vasteajan pitää olla ennustettava ja tuloksen halutaan olevan välittömästi muun ohjauslogiikan käytössä. Ratkaisu voi vähentää erillisten tietokoneiden, käyttöjärjestelmien ja tiedonsiirtorajapintojen tarvetta.

Kaikkia malleja ei silti ole järkevää siirtää PLC:lle. Suuret kuva- ja äänimallit sekä monimutkaiset sekvenssimallit soveltuvat usein paremmin esimerkiksi edge-tietokoneelle. PLC-toteutuksen arvo syntyy rajatusta ja läpinäkyvästä ratkaisusta, ei mahdollisimman suuren neuroverkon suorittamisesta.

Yhteenveto

Kokonaisketju on selkeä:

  1. Prosessista kerätään mittaus- ja tavoitedata.
  2. Data esikäsitellään ja neuroverkko koulutetaan erillisessä ympäristössä.
  3. Mallin painot, biasit, rakenne ja skaalausparametrit siirretään PLC:lle.
  4. PLC suorittaa reaaliaikaisille mittauksille inferenssin.
  5. Perinteinen PLC-logiikka validoi ja rajaa mallin tuloksen ennen ohjauskäyttöä.

PLC ei siis opettele prosessia tuotannon aikana. Se käyttää ennalta koulutettua ja validoitua mallia deterministisenä laskentalohkona osana muuta automaatio-ohjelmaa.

Lähteet

  1. Zamora-Arranz, D., Garcia-Bringas, P., Gude, J. J. & Del Ser, J. (2026). Leveraging programmable logic controllers for machine learning applications in industrial setups. Results in Engineering, 30, artikkeli 110194. https://doi.org/10.1016/j.rineng.2026.110194

Asau Oy kehittää ratkaisuja, joissa teollisuusautomaatio, prosessidata ja koneoppiminen yhdistetään käytännön tuotantoympäristöön.

Scroll to Top