Tekoälyn ja koneoppimisen tekniikoiden nopeasti yleistyvä käyttöönotto yhä autonomisemmissa järjestelmissä lisää vaatimuksia entistä älykkäämmille turvajärjestelmille useilla eri teollisuusaloilla. Painopiste on samalla siirtymässä kustannussäästöistä käyttömukavuuteen ja turvallisuuteen.
Artikkelin kirjoittaja Bob Martin toimii Microchip Technology -yhtiössä sulautettujen järjestelmien vanhempana suunnitteluinsinöörinä. |
Tämä kehitys vaatii järjestelmältä täydellisen toiminnallisuuden tarjoavan kerroksen (FuSa), joka koostuu turvaprosessorista ja luotettavista I/O-ohjaimista, jotka toimivat yhdessä järjestelmän suojaamiseksi. Mikro-ohjaimet (MCU) tarjoavat edullisen ratkaisun toteuttaa nämä turvallisuuden takaavat oheisprosessorit, jotka ovat uuden sukupolven autonomisten järjestelmien ytimessä.
Autonomiset turvatoiminnot ja -määritykset
Turvaprosessorit toteuttavat käyttöön otetun ML-mallin, joka hyväksyy ulkoiset datavirrat, mukaan lukien video-, audio-, ympäristö- ja käyttäjätiedot – tai joissakin tapauksissa kaikki nämä datavirrat kerralla. Näihin datavirtoihin on voitava luottaa.
Yhtä tärkeää on, että turvaprosessorien on voitava luottaa moottoreille, releille, ilmaisimille ja muille toimilaitteille tuottamiensa lähtötilojen virheettömään toistoon. Pääprosessorin tulisi myös voida luottaa käytettäviin I/O-ohjaimiin (side band) tehdäkseen älykkäitä ja nopeita päätöksiä vian sattuessa.
Mikro-ohjain turvaprosessorina
Täydellisten kehitysympäristöjen tukemia 8- ja 32-bittisiä mikro-ohjaimia käytetään pääasiassa neljällä toiminnallisen turvallisuuden sovellusalueella, joille on luotu alan standardeihin seuraavat spesifikaatiot:
- ISO262: Automotive Safety Integrity Applications (ASIL) ajoneuvosovelluksiin
- IEC 61508: Safety Integrity Levels (SIL) teollisuussovelluksiin
- IEC 60730: Functional Safety Standards kodinkoneisiin
- IEC 60730 Functional Safety for Medical Devices lääketieteellisiin laitteisiin
Kuva 1. Teollisuusrobotit hitsaavat suuria raskaita esineitä.
Kehitystyökalujen ekosysteemillä on kaksi tärkeää taustavaatimusta. Ensimmäinen sisältää vankat koodauskäytännöt kehityksen aikana sekä konekoodiksi kääntämisen aikana. Tämä tehdään käyttäen toiminnallisen turvallisuuden kääntäjiä, jotka on sertifioitu toiminnallisten ISO- tai IEC-turvastandardien mukaisesti jossain TÜV SÜD -organisaation kaltaisessa kansainvälisesti akkreditoidussa testauslaitoksessa.
Toinen taustavaatimus on yksityiskohtainen analyysi siitä, mitä koodia ajettiin ja mikä koodi puuttui tyypillisen testausjakson aikana. Tämä testausvaihe vaatii koodin kattavuutta analysoivan laajennusosan.
Näin autonominen turva toimii
Ensisijainen vuorovaikutus ulkomaailman kanssa tapahtuu laitteistokerrosten kautta alkaen suorista anturi- ja toimilaiteliitännöistä, joita FuSa-yhteensopivat mikro-ohjaimet tarjoavat järjestelmän reunalla (edempänä kuva 2).
Keskeisiä toimintoja ovat:
Alijännitesuojaus BOD
Hyvin harvoissa toimintaympäristöissä käytetään täydellisiä teholähteitä. Mikroaaltouunit ja lasertulostimet voivat aiheuttaa valojen himmenemistä tai välkkymistä ja suuret sähkötyökalut saattavat laukaista suojakytkimiä. Autonomisen järjestelmän on tunnistettava tehonsyötön katkeaminen jo ennen kuin se tapahtuu, jotta varasyöttöjärjestelmä voidaan ottaa käyttöön tai ainakin kaikki kriittiset tiedot ja lähtötilat voidaan asettaa oikein, jotta siisti virrankatkaisu voidaan varmistaa.
Näiden mikro-ohjainpiirien BOD-yksiköt (Brown Out Detection) voivat valvoa syöttöjännitettä ja reagoida laskevaan jännitetasoon kahdella erityisellä tavalla. Ensinnäkin VLM-toiminto (Voltage Level Monitor) laukaisee keskeytyksen, kun valittavissa oleva kynnysarvo alitetaan, mikä mahdollistaa hätäpysäytystehtävät välittömästi ennen todellisen BOD-tason alittamista.
Kun BOD-taso on alitettu, laite pysyy Reset-tilassa, kunnes tämä tilanne on poistunut. On myös mahdollista määrittää resetoinnin syy, jotta voidaan varmistaa oikea palautusstrategia, joka voi olla erilainen kuin ensimmäinen käynnistysjakso.
Vahtikoira-ajastin
Nykyaikaiset mikro-ohjaimet hyödyntävät vahtikoira-ajastinta vikatilanteen palautusmekanismina, jonka on tarkoitus keskeyttää ääretön silmukka tai spin lock -tilanne, josta ei muuten ole ulospääsyä ilman rajuja toimenpiteitä. Varhaiset ohjainversiot asettivat aikakatkaisukynnyksen sekunneissa tai millisekunneissa ja ne vaativat jonkinlaisen poke-komennon meneillään olevasta koodista ennen kuin tämä kynnys saavutettiin.
Kun aikakatkaisukynnys oli kuitattu, se nollattiin ja lähtölaskenta aloitettiin uudelleen. Laiskat ohjelmoijat käyttivät toistuvia keskeytyspalvelurutiineja ajastimien päivittämiseen, mutta nämä rutiinit saattavat jatkaa suorittamistaan omin päin, vaikka muu järjestelmä olisi jumissa jossain äärettömässä silmukassa. Käytettävissä ei ole mitään järjestelmätason nollausta tämän tilanteen ratkaisemiseksi.
Ikkunallinen vahtikoira-ajastin sen sijaan ratkaisee osan ongelmasta sallimalla ajastimen palveluikkunan määrittämisen. Tällä tavalla vahtikoira-ajastinta ei voi käyttää liian hitaasti tai nopeasti. Tämän vuoksi on vaikeampaa luottaa koodiin, jonka tiedetään laskevan kuluneita aikajaksoja maksimirajan alapuolella.
CRC-koodiskannaus
CRC-koodiskannauksella (Cyclic Redundancy Check) varustettu oheislohko varmistaa ohjelmoidun koodikuvan eheyden. Tämä on paljon tehokkaampi tapa kuin pelkkä tarkistussumma, joka voidaan helposti huijata matemaattisen manipuloinnin avulla. Mikro-ohjainpiirin erityinen lohko on määritetty suorittamaan skannaus ohjelmamuistin käynnistyslatausosassa, sovellusosassa tai koko flash-muistimatriisissa.
Oheislohko vertaa sitten saamaansa CRC-tulosta määritetyn kooditilan loppuun liitettyyn oikeaan tarkistussummaan. Jos nämä kaksi 16-bittistä lukua täsmäävät, tämä varmistaa, ettei kooditilaa ole muutettu. Täsmäysvirhe voidaan määrittää luomaan NMI-keskeytys (non-maskable interrupt) ongelman ratkaisemiseksi.
True Input Path GPIO -oheislohkot
Mikro-ohjainten varhaisina aikoina, kun yleiskäyttöinen tulo/lähtö-nasta (GPIO) konfiguroitiin lähdöksi, ainoa tapa varmistaa, että nastan jännitetaso (5 V) vastasi ohjausbitin arvoa (1), oli käyttää erillistä GPIO-nastaa, joka oli määritetty tuloksi lukemaan jännitetasoa. Lähdöksi määritetty GPIO-nasta ei voinut lukea takaisin todellista jännitettä, vaan ainoastaan siihen kirjoitetun arvon. Tästä syystä ’input’-arvo oli aina sovittu.
True Input Path -tyyppiset GPIO-lohkot tarjoavat erillisen sähköisen polun erilliseen Input-rekisteriin, joka ilmaisee nastan todellista tasoa. Vaikka tämä taso voidaan loogisesti lukea vain ’1’ tai ’0’, se antaa silti riittävästi palautetta vahvistaakseen, mitä Output-lähtörekisteriin kirjoitettiin. Eriävyyttä näiden kahden arvon välillä ei pitäisi koskaan esiintyä. Jos ero vallitsee, kyseisessä GPIO-nastassa on joko oikosulku tai katkos, joka pitää käsitellä asianmukaisesti.
Näillä ominaisuuksilla varustetut mikro-ohjaimet muodostavat perustan täydelliselle FuSa-kerrokselle. Tämän kerroksen merkitys kasvaa, kun AI/ML-pohjaisessa automaatiossa siirrytään järjestelmän tuotannossa ja ylläpidossa saavutettavien säästöjen painottamisesta käyttökokemuksen turvallisuuteen ja mukavuuteen.
Kuva 2. Autonomiset turvaominaisuudet 8-bittisissä mikro-ohjaimissa.