Olulised järeldused:
Tekst näitab, kuidas kavandada tööstusrakenduse loogikat nii, et ajutine võrguühenduse puudumine, seadmete taaskäivitumine ja sessiooni katkemine ei põhjustaks oleku järjepidevuse kadu, käskude dubleerimist ega töö kontrollimatut jätkumist. Lugeja näeb, miks otsused puhverdamise, käskude kinnitamise, sessiooni taastamise ja olekumudeli kohta tuleb teha projekti alguses, sest hiljem mõjutavad need otseselt protsessi järjepidevust, ohutust ja süsteemi aruandekohustust.
- See on füüsilise ohutuse, mitte ainult IT-mugavuse küsimus: võrguühenduse katkemine ja „kinnitamata” käskude automaatne uuesti saatmine pärast ühenduse taastumist (nt „käivita tsükkel”) võib põhjustada selle, et masin teeb toimingu topelt või valel ajal. See on tootmishallis inimeste ja protsessi jaoks reaalne oht.
- Taaskäivitamise kuldreegel: kui süsteem ei suuda pärast ühenduse taastumist 100% üheselt kindlaks teha, millises olekus täiturseade on, ei tohi see mingil juhul tööd automaatselt jätkata. Selline olukord nõuab alati operaatori selget ja teadlikku kinnitust.
- Otsused tuleb teha alguses, vastasel juhul kulud kasvavad: rakenduse käitumine side katkemise korral tuleb kavandada arhitektuuri osana juba projekti alguses. Kui see jäetakse „rakendamise etapis kokku leppida”, lõpeb see kulukate ümbertegemistega, vigade käsitsi lappimisega personali poolt ja sellega, et frustreeritud operaatorid hiilivad ohtlikult blokeeringutest mööda.
Tööstusrakenduse vastupidavus lühiajalisele võrgu puudumisele, seadmete taaskäivitusele ja ühenduse katkemisele ei ole enam kasutusmugavust parandav lisafunktsioon, vaid protsessi korrektse toimimise ning tootja, integraatori või lõppkasutaja vastutuse säilitamise eeltingimus. Tööstuskeskkonnas ei ole side kadumine erandlik sündmus: see esineb hooldustööde ajal, taristu ümberlülitustel, käivitumisel pärast toitekatkestust, uuenduste tegemisel, võrgu ülekoormuse korral või lihtsalt servaseadme rikke tõttu. Kui rakendus sellistes tingimustes kaotab oleku tervikluse, dubleerib käske või teeb pärast ühenduse taastumist järelejäänud toiminguid ilma konteksti kontrollimata, ei ole probleem enam ainult IT-valdkonna küsimus. Sellest saab protsessi järjepidevuse, funktsionaalse ohutuse, tootmisandmete kvaliteedi ja projekteerimisotsuste jälgitavuse teema.
Seetõttu tuleb see teema otsustada projekti alguses, mitte alles pärast esimest käikulaskmist. Sidekatkestustele vastupidav arhitektuur mõjutab masina olekute modelleerimist, andmete puhverdamise põhimõtteid, käskude kinnitamise järjekorda, seansi uuesti loomise tingimusi ja pärast taaskäivitust töö taastamise loogikat. Kui meeskond lükkab need otsused edasi, lõpeb see tavaliselt kulukate möödaviiklahendustega: erandite lokaalne lisamine, järjekordade käsitsi puhastamine, täiendavad operaatorilukustused või järelevalvekihi laiendamine ainult selleks, et kompenseerida seadmete ettearvatava käitumise puudumist. Praktiline hindamiskriteerium on lihtne: iga olulise funktsiooni puhul peab saama üheselt vastata, mis juhtub side kadumisel, mis juhtub taaskäivituse järel ja kes kinnitab töö jätkamise. Kui vastus on „see sõltub teostusest” või „operaator näeb, et midagi on valesti”, siis ei ole see veel projekteerimisotsus, vaid riski ülekandmine käitamisele.
Kõige selgemini ilmneb see rakenduse ja masina või protsessi liikumise kokkupuutepunktis. Kujutame ette süsteemi, kus operaatoripaneel annab käsu tsükli käivitamiseks, kuid kontroller täidab selle ajutise sidekatkestuse tõttu viivitusega. Kui rakendus pärast side taastamist kordab käsku, kuna ta ei saanud kinnitust, võib toiming käivituda topelt või alata tingimustes, mis erinevad neist, mida operaator käsu andmise hetkel nägi. Siin hakkab sidekindluse teema liikuma ootamatu käivitumise vältimise valdkonda: mitte iga taaskäivitus ei ole ohutusprobleem, kuid iga taaskäivitus, mis võib muuta käivitustingimusi ilma teadliku kinnituse ja seadme oleku kontrollita, nõuab juba sellel tasemel analüüsi. Sama kehtib blokeerimisseadmete ja lukustuse kohta: kui rakenduse loogika suunab personali pärast võrguriket tülikatest blokeeringutest mööda minema, ei seisne probleem üksnes kasutaja käitumises, vaid projekteerimisotsuses.
Juhtimise ja vastavuse vaates ei ole seega määrav mitte see, kas sidekatkestusi „juhtub”, vaid kas projekt suudab sellistes piiripealsetes olekutes tõendada ohutut ja ettearvatavat käitumist. See on ka õige hetk, mil teema liigub praktilise riskihindamise tasandile: tuleb eristada funktsioone, mille puhul viivitus või osa ajalooliste andmete kadu on lubatav, funktsioonidest, mille puhul konteksti kadumine võib viia operaatori vale otsuseni, toote kahjustumiseni või ohuni taaskäivitamisel. Mõistlik on mõõta mitte abstraktset „süsteemi stabiilsust”, vaid näitajaid, mis kirjeldavad projekteerimise tagajärgi: mitmetähenduslike taaskäivitamisjärgsete taastumiste arvu, käsitsi oleku kooskõlastamist nõudvate käskude arvu, ohutuks töö taastamiseks kuluvat aega ning juhtumeid, kus süsteem ei suuda tõendada, kas käsk täideti. Alles selle taustal on normatiivsetel nõuetel ja tehniliste meetmete valikul mõte: käivitustingimuste analüüs pärast toitekatkestust, riskihindamine side kadumise stsenaariumide jaoks ning blokeerivate ja järelevalvelahenduste valik seal, kus ainuüksi IT-mehhanism ei anna piisavat kindlust.
Kus kulu või risk kõige sagedamini kasvab
Tööstusrakenduste projektides, mis peavad taluma lühiajalist võrgu puudumist, seadmete taaskäivitust ja ühenduse katkemist, ei kasva kulu enamasti mitte tehniliste mehhanismide endi tõttu, vaid valede eelduste tõttu protsessi oleku kohta pärast häiret. Kui meeskond eeldab, et pärast side taastamist naaseb süsteem „tavapärasesse töösse”, tuleb varem või hiljem maksta olekute käsitsi kooskõlastamise, juhtimisloogika paranduste, täiendavate vastuvõtukatsete või juba pärast käikulaskmist kehtestatud kasutuspiirangute eest. Kõige kulukamad on olukorrad, kus rakendus ei suuda üheselt vastata, kas käsk täideti, katkestati, dubleeriti või ainult registreeriti liidese poolel. See ei ole kasutusmugavuse küsimus, vaid vastutus füüsilise tagajärje eest: ajami liikumine, seadistuse muutmine, ventiili avamine, häire kinnitamine või tsükli taastamine.
Projektide viibimise põhjuseks võib olla ka vastutuse vale jaotus operaatorikihi, vahepealse rakenduse ja masina juhtimise vahel. Kui otsus selle kohta, mis peab pärast taaskäivitust juhtuma, lükatakse „rakendamise” etappi, jõuab meeskond tavaliselt vastuoluliste reegliteni: paneel kuvab viimati teadaolevat olekut, kontroller käivitab initsialiseerimisprotseduuri ja ülemine süsteem taastab ootel käsud, teadmata kindlalt, kas need on endiselt asjakohased. Praktikas tuleb see varem ja üheselt ära otsustada: milliseid toiminguid võib kõrvalmõjudeta korrata, millised nõuavad objekti tegelike tingimuste kinnitamist ning millised peavad side katkemisel aeguma ja minema ohutusse olekusse. Hea otsustuskriteerium on lihtne: kui toimingu vale jätkamine võib muuta energiaolekut, täiturorgani asendit, toote kvaliteeti või inimeste ohutustingimusi, ei tohi tugineda üksnes rakenduse viimase oleku mälule.
See tuleb hästi esile näiteks järjestuse puhul, mis enne side kadumist saatis käsu sulgeda kaitsepiire ja alustada tsüklit, kuid pärast operaatorijaama taaskäivitust taastab ekraani „töövalmis”. Kui rakendus ei erista olekuid „käsk vastu võetud”, „täitmine kinnitatud”, „täitmine katkestatud” ja „määramatu olek”, saab operaator näiliselt sidusa, kuid tegelikult puuduliku pildi. Tagajärjeks võivad olla tarbetud seisakud, sest teenindav personal ei julge protsessi jätkata, või vastupidi: lubamatu käivitamine, sest liides ei näita uuesti kontrollimise vajadust. Projektijuhile tähendab see hiljem kulukat põhjuste väljaselgitamist, testistsenaariumide muutmist ja vajadust lisada ajutisi möödaviiguprotseduure. Toote omanikule tähendab see reklamatsioonide ja vastutusvaidluste riski, eriti siis, kui nõuete dokumentatsioon ei kirjelda üheselt süsteemi käitumist pärast toite või side kadumist. Seetõttu tasub mõõta mitte ainult käideldavust, vaid ka määramatute olekute arvu pärast taaskäivitust, käsitsi kooskõlastamist vajavate toimingute arvu ning aega ohutu töövalmiduse saavutamiseni.
Eraldi kulukategooria on kommunikatsioonikindluse segiajamine funktsionaalse ohutusega. Ainuüksi see, et rakendus suudab andmeid puhverdada, edastust korrata või seansi taastada, ei tähenda veel, et masin käitub ühenduse kadumisel ohutult. Kui häire mõju puudutab liikumisega, salvestatud energiaga, blokeeringutega või taaskäivituse tingimustega seotud funktsioone, liigub teema loomulikult praktilise riskihindamise valdkonda. Siis tuleb hinnata mitte ainult võrgu rikke tõenäosust, vaid eelkõige vale olekuteabe ja vale jätkamise võimalikke tagajärgi. Kui süsteem hõlmab hüdraulikat, lisanduvad nõuded täiturseadiste käitumisele toite kadumise ja rõhulanguse korral; seal ei tohi rakenduse tasandi otsused minna vastuollu hüdrosüsteemidele omaste projekteerimispõhimõtetega. Samuti seal, kus töövalmiduse taastamine sõltub kaitse sulgemisest või lukustuse vabastamisest, võib probleem ulatuda ka blokeerimisseadiste ja kaitsemeetmetest möödahiilimise vastupidavuse valdkonda, sest surve „kiireks jätkamiseks” tekitab väga sageli hiljem ohtlikke kasutuspraktikaid.
Normatiivsetele viidetele on mõtet tugineda alles selles etapis, kui on juba teada, milline stsenaarium toob kaasa tehnilise ja organisatsioonilise mõju. Kui ühenduse kadumine või taaskäivitus võivad muuta ohutu käivitamise tingimusi, tuleb see kirjeldada riskianalüüsis, mitte jätta tarkvaratootja või kontrolleri tarnija vaikimisi käitumiseks. Kui täitursüsteem võib pärast toite kadumist minna protsessi seisukohalt ebasoodsasse või ohtlikku olekusse, tuleb kontrollida, kas konkreetse ajami ja töökeskkonna nõuded ei eelda täiendavaid konstruktsioonilisi meetmeid, mis on sõltumatud rakenduse loogikast. Praktiline piirikriteerium on järgmine: kui oleku taastamise järel tekkinud viga saab kõrvaldada ainult operaatori protseduuriga, ei ole teema enam üksnes IT-küsimus, vaid ka projekteerimise ja vastavuse küsimus. Just siin lakkab otsus rakenduse arhitektuuri kohta olemast juurutusmugavuse küsimus ning muutub kogu süsteemi ohutu ja prognoositava käitumise eest vastutamise osaks.
Kuidas sellele teemale praktikas läheneda
Praktikas ei alga tööstusrakenduse vastupidavus lühiajalisele võrgu puudumisele, seadmete taaskäivitusele ja ühenduse katkemisele tehnoloogia valikust, vaid otsusest, millised rikke tagajärjed on lubatavad ja millised mitte. Meeskond peaks alguses eristama kolme asja: protsessi olekut, juhtimise olekut ja operaatorile kuvatavat olekut. See eristus määrab, kas pärast side katkemist peab rakendus üksnes vaate taastama või on tal õigus jätkata juhtimist, käskude järjekorda või tehnoloogilist järjestust. Kui need kihid sulandatakse üheks, lõpeb projekt tavaliselt kuluka erandite lisamise, käsitsi möödaviiguprotseduuride või kasutuselevõtu järel tekkinud vastutusvaidlusega. Juhi jaoks on siin oluline üks asi: selgesõnalise arhitektuuriotsuse puudumine ei vähenda riski, vaid nihutab selle vastuvõtu, hoolduse ja vastavuse etappi. Seepärast tuleb sellised valikud teha projekti alguses, mitte alles pärast esimest käivitamist, nagu on tavapärane masinate projekteerimisel ja ehitamisel.
Praktilises plaanis tähendab see vajadust määratleda iga kriitilise juhtumi jaoks, mida süsteem peab häiringu järel säilitama ja mida ta ei tohi säilitada. Asi ei ole üldises loosungis „peab pärast reconnect’i töötama”, vaid täpsetes reeglites: millised andmed taastatakse püsisalvestusest, millised tuleb seadme poolt kinnitada, millised käsud kaotavad pärast ajapiiri ületamist kehtivuse ning millised nõuavad uut autoriseerimist või operaatori kinnitust. Hea otsustuskriteerium on lihtne: kui pärast taaskäivitust ei ole võimalik üheselt kindlaks teha, kas varasem käsk täideti, ei tohiks süsteem seda automaatselt uuesti käivitada. Sama kehtib alarmide, partiiloendurite, töörežiimide ja tehnoloogiliste blokeeringute kohta. Selline nõue võib tunduda väikese projekteerimisdetailina, kuid ilma selleta kasvab integratsioonitestide maksumus, sest iga mitmetimõistetav olukord tuleb tagasi raskesti taasesitatava veana. Suureneb ka lahenduse omaniku vastutus, sest hiljem tuleb tõendada, et käitumine sidekatkestuse korral oli ette nähtud ja teadlikult määratletud.
Tüüpiline näide puudutab rakendust, mis saadab kontrollerile tsükli käivitamise käsu ja kaotab seejärel enne kinnituse saamist ühenduse. Kui rakendus saadab pärast ühenduse taastumist käsu „igaks juhuks” uuesti, võib ta käivitada tsükli teist korda. Kui ta aga eeldab, et käsk kindlasti täideti, võib ta protsessi oleku valesti taastada ja lubada järgmised toimingud vales järjekorras. Õige lähenemine seisneb selles, et käsud ja vastused projekteeritakse ajas eristatavaks ja identifitseeritavaks ning pärast taaskäivitust oleks võimalik enne äriloogika jätkamist kontrollida seadme tegelikku olekut. Siin tasub mõõta mitte ainult süsteemi käideldavust, vaid ka mitmetimõistetavate olekutaastamiste arvu, käsitsi sekkumiste arvu pärast taaskäivitust ning aega, mis kulub töö ohutuks taastamiseks. Need on näitajad, mis näitavad arhitektuuri tegelikku hinda, mitte ainult arendaja mugavust.
Piir riskianalüüsiga tekib siis, kui oleku vale taastamine võib muuta masina, järjestuse või täiturmehhanismi käitumist. Sellisel juhul ei ole teema enam ainult IT-küsimus, vaid läheb praktilise riskihindamise valdkonda, sealhulgas ISO/TR 14121-2 juures kasutatava metoodika tähenduses. Kui pärast toite kadumist või seadme taaskäivitust on võimalik liikumise iseeneslik jätkumine, keskkonna etteanne, täiturmehhanismi vabastamine või töörežiimi üleminek ilma operaatori teadliku nõusolekuta, puudutab teema ka kaitset ootamatu käivitumise eest, mis nõuab laiemat vaadet kui ainult rakenduse loogika. Seal, kus kasutatakse hüdraulilisi või pneumaatilisi ajameid, lisanduvad veel konstruktsiooninõuded ja süsteemi käitumine energia kadumisel, seega ei saa otsus töö „pehme” jätkamise kohta olla lahus kogu paigaldise tehnilistest tingimustest. Vastavuse seisukohast on kõige ohutum mitte oletada protsessi kavatsust pärast häiringut, vaid määrata töö taastamise tingimused ette ning siduda need konkreetsete vastutustega: rakendus, kontroller, täiturmehhanism ja operaator.
Millele juurutamisel tähelepanu pöörata
Kõige rohkem vigu tööstusrakenduste juurutamisel, mis peavad taluma lühiajalist võrgu puudumist, seadmete taaskäivitust ja ühenduse katkemist, ei tulene tehnoloogiast endast, vaid vastutuse valest jaotusest. Meeskond eeldab, et „vastupidavuse” tagab sidekiht, pilveteenuse pakkuja või kontroller, kuigi probleem peitub protsessi oleku, seadme oleku ja andmete oleku omavahelises suhtes. Kui neid kolme tasandit ei eristata juba vastuvõtukatsete etapis, hakkab projekt tootma näilist töökindlust: rakendus töötab pärast taaskäivitust, kuid keegi ei suuda tõendada, kas pärast restarti taastati õige, ohutu ja füüsilise tegelikkusega kooskõlas olev olek. Sellel on otsene mõju kulule, sest hilisemad parandused nõuavad tavaliselt muudatusi korraga juhtimisloogikas, operaatoriliideses, sündmuste logimises ja käivitusprotseduurides. Sellel on mõju ka vastutusele, sest intsidendi korral on raske kaitsta lahendust, milles ei ole üheselt määratud, kes ja mille alusel kinnitab valmisoleku töö jätkamiseks.
Praktikas on kõige ohtlikum lõks käsitleda ühenduse kadumist tavalise tehnilise veana, mitte süsteemi eraldi tööolekuna. Kui rakendus puhverdab võrgu kadumise järel toiminguid ja taastab need pärast ühenduse taastumist ilma hetke konteksti kontrollimata, võib ta teha hilinenud, enam mitte lubatud või liini tegeliku olekuga vastuolus olevaid toiminguid. Analoogne probleem tekib pärast seadme taaskäivitust: varem salvestatud loogiline olek võib olla formaalselt täielik, kuid füüsiliselt aegunud, sest vahepeal on muutunud täiturmehhanismi asend, keskkonna rõhk, töörežiimi konfiguratsioon või teenindava personali sekkumine. Hea otsustuskriteerium on siin lihtne: kui süsteem peab pärast oleku taastamist tegema mis tahes protsessi mõjutava toimingu, peab enne olema võimalik kontrollida selle lubatavust jooksvate signaalide alusel, mitte ainult enne häiringut salvestatud ajaloo põhjal. Kui sellist kontrolli ei ole võimalik tõendada, on ohutum lahendus minna olekusse, mis nõuab selgesõnalist kinnitust või uuesti sünkroniseerimist.
Hea näide on jaam, mis lühiajalise sidekatkestuse järel kaotab ühenduse ülemise taseme süsteemiga, kuid näeb kohalikult endiselt osa sisendsignaale. Programmi vaates on ahvatlev pärast ühenduse taastumist „jada lõpuni viia”, et tsükliaega mitte kaotada. Probleem tekib siis, kui vahepeal on operaator detaili eemaldanud, rakendunud on rõhuvabastusventiil, toimunud on paneeli taaskäivitus või ajam on läinud teise töörežiimi. Rakenduse loogikas võib kõik näida kooskõlaline, kuid sellest hoolimata muutub sammu jätkamine tehnoloogiliseks veaks või ohuks. Seetõttu tasub juurutamisel hinnata mitte ainult kaduma läinud teadete arvu või seansi taastamise aega, vaid ka näitajaid, mis kirjeldavad süsteemi käitumise kvaliteeti pärast häiret: mitu korda vajas süsteem käsitsi taassünkroniseerimist, mitu toimingut lükati tagasi aegununa, mitu taaskäivitust lõppes ohutusse olekusse minekuga automaatse jätkamise asemel. Need on lahenduse küpsuse hindamiseks paremad mõõdikud kui pelgalt teenuse kättesaadavus, sest need näitavad, kas töökindlus ei ole saavutatud protsessi üle kontrolli arvelt.
Piir, millest alates ei ole see teema enam ainult rakenduse arhitektuuri küsimus, saabub kiiremini, kui projektimeeskonnad tavaliselt eeldavad. Kui ühenduse katkemine, kontrolleri taaskäivitus või tööjärjekorra taastamine võib mõjutada masina liikumist, energia etteandmist või täiturmehhanismi oleku muutust, liigub teema praktikas riskihindamise valdkonda. Sellises punktis ei piisa enam väitest, et lahendus „tavaliselt töötab õigesti”; vaja on kõrvalekaldestsenaariumide analüüsi, sealhulgas loogikas, mis sarnaneb standardis ISO/TR 14121-2 kasutatava lähenemisega. Kui lisaks on pärast toite või side taastumist võimalik funktsioonide iseeneslik jätkumine, puudutab teema ka kaitset ootamatu käivitumise eest ning seda tuleb käsitleda laiemalt, seoses käivitustingimuste ja energia väljalülitatud olekuga. Seal, kus süsteem hõlmab hüdraulikat või pneumaatikat, ei ole võimalik eraldada programmeerimisotsust paigaldise käitumisest pärast energiakao tekkimist; sellistel juhtudel tuleb kontrollida ka kogu süsteemile kohalduvaid konstruktsiooninõudeid, mitte ainult rakenduskoodi korrektsust. Selliste küsimuste puhul on sageli mõistlik lähtuda juba projekti alguses häirekindlast tarkvaraarhitektuurist tööstuses.
Kuidas projekteerida tööstusrakendusi nii, et need taluksid lühiajalist võrgu puudumist, seadmete taaskäivitust ja ühenduse katkemist?
Sest see mõjutab masina olekumudelit, käskude kinnitamise põhimõtteid, andmete puhverdamist ja töö taaskäivitamise tingimusi pärast restarti. Nende otsuste edasilükkamine lõpeb tavaliselt kulukate ajutiste lahendustega ja riski kandumisega käitamisele.
Tuleb üheselt kindlaks määrata, mis juhtub side katkemisel, mis pärast taaskäivitust ja kes kinnitab töö jätkamise. Kui vastus sõltub ainult teostusest või operaatori reaktsioonist, siis ei ole riski projekteerimisega nõuetekohaselt maandatud.
Juhtudel, kui süsteem ei suuda tõendada, kas käsk täideti, katkestati, dubleeriti või ainult registreeriti liideses. See puudutab eelkõige toiminguid, millel on füüsiline mõju, nagu ajami liikumine, seadistuse muutmine, ventiili avamine või tsükli taaskäivitamine.
Mitte alati, sest pärast side taastamist võivad protsessi tingimused olla juba teistsugused kui käsu andmise hetkel. Artiklis rõhutati, et mõningaid toiminguid saab kõrvalmõjuta korrata, kuid teised nõuavad objekti hetkeseisu kinnitamist või ohutusse olekusse viimist.
Tasub mõõta pärast taaskäivitust esinevate ebaselgete töö jätkamiste arvu, nende käskude arvu, mis nõuavad oleku käsitsi kooskõlastamist, töö ohutuks taastamiseks kuluvat aega ning juhtumeid, kus süsteem ei suuda tõendada, kas käsk täideti. Sellised näitajad kajastavad tegelikku riski paremini kui üldine hinnang „süsteemi stabiilsusele“.