utvikling

Data fra fabrikkgulvet krever sanntidsgaranti – derfor ble Google-språk forkastet

Fra Go til Rust. Danske Omnio har utviklet programvare som kan oversette og automatisere integrasjonen av data fra industriens tunge kontrollsystemer til it-baserte analyseverktøy i skyen. Det førte til et nytt programmeringsspråk underveis.

Illustrasjon.
Illustrasjon.

De fleste programvareutviklere får grå hår i hodet hvis de blir bedt om å hente og normalisere data fra industrielle kontrollsystemer som PLC-controllere og Scada-systemer som styrer for eksempel maskiner og roboter i produksjonsindustrien.

Det samme gjorde Mikkel Sørensen da han hos Maersk fikk oppgaven med å skape et overblikk og et system for å overvåke Maersks over 250 000 kjølecontainere over hele verden.

– Vi hadde kanskje undervurdert utfordringen i å kommunisere med en kvart million containere, fordi de hadde helt forskjellig alder, maskinvareversjoner, modeller og lignende. Det tok lang tid – flere måneder – før vi fikk kontroll over hvordan vi fikk data ut av de enkelte kjølecontainerne, gjort dem tilgjengelige, hvilke formater dataene kom ut i, og hvordan vi fikk normalisert data og gjort dem brukbare. Når vi skulle koble til en enhet, var det bare fram med protokoll-manualen og lese gjennom fra perm til perm for å koble den til det sentrale systemet, forteller medstifter og direktør Mikkel Sørensen i danske Omnio.

Automatisert oversettelse

Bedriften har utviklet sin egen programvare, som via en gateway kan samle inn, transportere og normalisere data fra industrielle kontrollsystemer med it-baserte verktøy som kan brukes i for eksempel IoT-plattformer i skyen.

Kjernen i programvaren er en database med en lang rekke industrielle protokoller, slik at Omnio raskt kan sende en konfigurasjonsfil til den gatewayen som henter ut data fra en industriell enhet, for eksempel en heis, en vindmølle eller en CNC-maskin.

I dag består Omnio av åtte medarbeidere som jobber på fire konkrete pilotprosjekter, som involverer flere av de store automasjonskonsernene i Europa og USA.

– Industriell automasjonsprogramvare minner ikke spesielt mye om den vanlige arkitekturen som vi kjenner fra den it-baserte programvaren vår. Levetiden på maskinvare i industrien er ofte 20–30 år, og det kan ikke sendes ut patcher kontinuerlig. Og når vi snakker om data i sanntid, må det måles i mikrosekunder. Arkitekturen fokuserer på hastighet og stabilitet, og det har i årenes løp skapt en forgrenet nettverk av serielle kommunikasjonsprotokoller som brukes til å kommunisere internt mellom de ulike kontrollsystemene, sier Mikkel Sørensen.

Det er disse protokollene som Omnio satte seg som mål å oversette raskt og effektivt, slik at produksjonsdata kan hentes og normaliseres i en IoT-plattform i skyen.

– Vi støtter i dag en rekke protokoller, som for eksempel Modbus (Schneider Electric, red.), Profibus (Siemens, red.), CIP (Rockwell, red.), Bacnet, og et par mindre properitære protokoller, sier Mikkel Sørensen.

Les også: Industriens kontrollsystemer angripes av skadevare (Version2.dk)

Bytter programmeringsspråk

Omnio utviklet de første versjonene av programvaren sin i programmeringsspråket Go, som er utviklet av Google. Men kravene fra industrien var ikke kompatible med konvensjonelle programmeringsspråk.

– I it-verdenen er det litt mer løst – herregud, så mistet vi nettopp en beskjed, men det går nok greit. Slik fungerer det ikke når du styrer en robotarm. Vi har måttet stramme inn på metoden som vi utvikler programvare på, forteller Mikkel Sørensen, og fortsetter:

– Go fra Google er et fint programmeringsspråk, men nå er vi på vei over til Rust, som er et språk hvor du kan gi en sanntidsgaranti, og hvor du er tvunget til å tenke gjennom testcases. Du kan ganske enkelt ikke ha en blindgate i Rust, og du må tenke gjennom hele prosessen fra starten av. Mottoet vårt er: «move fast and don’t break things,» og det er annerledes enn det man sier i it-verdenen, hvor man ofte tenker «hva så hvis det ikke funker». Det kan ikke vi, og derfor kan vi ikke være så oppesen som for eksempel Facebook kan, forteller Mikkel Sørensen.

Rust er utviklet og sponset av Mozilla. I syntaks minner språket om C+++, med fokus på stabilitet, og blir spesielt brukt til utvikling av sikkerhetssystemer i for eksempel industrien.

Spar på alt

Det er ikke bare krav om høy oppetid og stabilitet som preger utviklerkulturen innen industriell programvare.

Tradisjonelt har arkitekturen i industriell automasjonsprogramvare også vært preget av sparsommelighet. Alt skal legges til rette slik at en oppgave eller prosess kan styres med færrest mulig ressurser, og ikke mer enn det.

Men den tankegangen har blitt utfordret i takt med ønsket om å digitalisere den fysiske produksjonen – også kjent under begrepet Industri 4.0, som spesielt drives fram av nye IoT-teknologier.

– Data frugality – vær nøysom med dataene – har vært den dominerende trenden der utgangspunktet er å spare på både maskinvare, altså styringer som PLC-er og timelønnen på oppsetting og drift. I dag har vi i stedet datasultne algoritmer som lærer selv og kan spytte ut påfølgende konklusjoner, for eksempel til forutsigbart vedlikehold. Her er det ikke nok å få to løpende datapunkter fra en enhet, men det er behov for alle datapunktene, forteller Mikkel Sørensen fra Omnio.

Dilemmaet mellom å spare på datamengder samtidig med at man får ut så mange datapunkter som mulig, blir løst i programmeringsspråket Rust med multithreading, der en CPU utfører flere prosesser samtidig.

– I stedet for utelukkende å spare på ressursene, fokuserer vi på å utnytte alle de ressursene du har til rådighet. I Rust multithreader vi, slik at vi får presset hver eneste dråpe kapasitet ut av selv den minste CPU-en. Det innebærer at vi kan kjøre raskt uten å sløse med ressurser, sier Mikkel Sørensen.

Offline-modus på ved siden av

«Nå må det ikke bli et it-prosjekt ut av dette». Slik er bekymringen ofte hos automasjonsingeniører i industrien. Frykten for å koble opp fabrikkgulvet med internett har satt gang i en ny trend innen industriell programvare – edge computing. Så mye som mulig skal prosesseres ved siden av den enheten som skal styres.

– Utgangspunktet vårt er å kjøre så tett opp mot enheten som mulig. Inntil videre via en gateway, men det kunne også være direkte på PLC-en i fremtiden. Det innebærer at vi kan jobbe i offline-modus, og så kan bedriftene selv velge, om de vil prosessere data ute lokalt eller flytte opp i skyen etterpå. Der skjer mye på edge-området, der både Microsoft og SAP har utviklet offline-løsningene sine, sier Mikkel Sørensen.

Fortsatt umodent marked

Når levetiden på det meste av maskinvaren i industrien ligger på 20–30 år, går også produktutviklingen tilsvarende langsomt. Ingen tør investere i teknologi som ikke er ferdig utviklet, for det kan gi store omkostninger. Derfor forventer Mikkel Sørensen heller ikke at det industrielle IoT-markedet for tiden er helt modent.

– Vi tror at det går tre til fem år før IoT-potensialet virkelig setter fart. Vi pleier å si at vi er samme sted som internett anno 1992 – det er ikke helt tindrende klart hva vi skal bruke det til, men vi er mange som bruker det til mye, sier Mikkel Sørensen med et smil.

Selv om han selv kommer fra en it-verden, kan han ikke dy seg for å kaste litt malurt i begeret når han ser hvordan mange industribedrifter som setter i gang med å digitalisere produksjonen.

– En normal digital transformering foregår ofte slik at folk begynner med å kjøpe en IoT-plattform; altså en investering i it-utstyr. Det er et greit stykke programvare som du kan bruke til å bygge forretningsapplikasjoner i. Men applikasjonene er ikke mye verdt hvis du ikke kan oppskalere og raskt hente inn data fra alle enhetene dine. Det kan man forholdsvis enkelt gjøre under en liten pilottest, men det er vanskeligere når du skal oppskalere til alle enhetene dine. Så kanskje man bør snu prosessen litt på hodet i stedet, sier Mikkel Sørensen.

Artikkelen er levert av version2.dk

Powered by Labrador CMS