Kommunaalteenused ja SCADA-ga külgnev pärandkood

Kommunaalteenused ja SCADA-ga külgnev pärandkood: moderniseerimismeeskondade erikaalutlused

IT/OT piir kommunaalettevõttes ei ole võrguskeemil selge joon. See on läbilaskev membraan, mille kaudu andmed voolavad mõlemas suunas – COBOL-i pakkprogrammid genereerivad PLC-de poolt tarbitavaid seadeväärtuste konfiguratsioonifaile, RPG-programmid loevad SCADA ajalooandmeid arvelduse ja regulatiivse aruandluse jaoks, pärand-C-sillad tõlgivad suurarvutite väljundeid hajutatud juhtimissüsteemidele arusaadavatesse vormingutesse, JCL-töövood, mis ajastavad ja järjestavad andmevahetust üle piiri ajastuse järgi, millest tööprotsessid sõltuvad. Seda voogu haldav tarkvara ei ole puhtalt IT- ega puhtalt OT-tarkvara. See on sidekude, mis paneb kommunaalettevõtted toimima, ja see on koodikategooria, mida moderniseerimismeeskonnad on ümberkujundamisprogrammi alguses kõige vähem valmis analüüsima.

Energiasektor läbib oma ajaloo üht suurimat digitaalset transformatsiooni. Kuna kommunaalettevõtted kaasajastavad oma taristut nutivõrkude, ühendatud alajaamade, integreeritud haldamissüsteemide ja täiustatud automatiseerimise abil, on OT-võrgud omavahel rohkem ühendatud kui kunagi varem. See ühendatus ei kõrvalda pärandkoodi kihti, vaid muudab selle kriitilisemaks, sest iga uus nutivõrgu lõpp-punkt ja pilveanalüüsi platvorm sõltub andmevoogudest, mis pärinevad aastakümneid tagasi kirjutatud rakendustest. Nende rakenduste kaasajastamine ilma nende rolli mõistmiseta operatiivses andmeahelas ei ole kaasajastamine, vaid häiritus, mille tagajärjed ulatuvad andmekeskusest kaugemale füüsilise taristuni.

Leia iga kõvakodeeritud tööparameeter

SMART TS XL leiab üles kõik teie pärandkoodide portfelli manustatud EL-i konstandid, alarmi piirväärtused ja protokolli aadressid.

SAAGE LISATEAVET…

Mida "SCADA-Adjacent" tegelikult tähendab

Mõiste „SCADA-ga külgnev“ kirjeldab IT-poolset tarkvara, mis liidestub operatiivtehnoloogia süsteemidega, mitte SCADA tarkvara ennast, mitte PLC püsivara, mitte RTU manuskoodi, vaid ärirakenduse kihti, mis edastab andmeid nendesse süsteemidesse ja võtab neilt andmeid vastu. See kategooria on suur, alaanalüüsitud ja erineb oluliselt ülejäänud ettevõtte rakenduste portfellist.

Tüüpilises kommunaalteenuste keskkonnas sisaldab SCADA-ga külgnev kood järgmist:

Kiiruse ja seadeväärtuse arvutamise programmid. COBOL- ja PL/I-programmid, mis arvutavad koormuse seadeväärtusi, pinge sihtväärtusi, rõhu läviväärtusi ja tööpiiranguid, mis edastatakse SCADA-süsteemidele konfiguratsioonifailidena või otse andmevoogudena. Need programmid kodeerivad regulatiivseid vastavusnõudeid, tehnilisi spetsifikatsioone ja füüsikalisi ohutuspiiranguid. Vale arvutus ei anna aruandes valet numbrit, vaid vale tööseadeväärtuse, mille alusel juhtimissüsteem tegutseb.

Ajaloolase andmetarbijad. RPG ja COBOL programmid, mis loevad SCADA ajaloolase andmebaasidest operatiivandmeid arvelduse, regulatiivse aruandluse ja jõudlusanalüüsi jaoks. Need programmid sõltuvad ajaloolase loodud spetsiifilistest andmevormingutest, ajatempli konventsioonidest ja tehniliste ühikute definitsioonidest. Ajaloolase väljundi vormingu muutmine või IT-poole tarbijaprogrammi muutmine võib märkamatult rikkuda arveldusarvutusi või regulatiivseid esildisi.

Protokollisilla programmid. Kohandatud C-programmid, mis teisendavad suurarvuti väljundvormingute ja failipõhiste või võrgupõhiste liideste vahel, mida DCS (Distributed Control System) ja SCADA-süsteemid kasutavad. Need sillad rakendavad spetsiifilisi protokolle, Modbusi, DNP3, IEC 61850, tootjate patenteeritud vorminguid ning sisaldavad kõvakodeeritud eeldusi sõnumistruktuuri, baitide järjestuse ja ajastuse kohta, mida dokumentatsioonis kusagil ei esine.

Pakett-reaalajas andmeedastuskanalid. JCL-töövood, mis ajastavad ja järjestavad andmevahetust IT/OT piiril kindlatel ajastusakendel. Kommunaalettevõtte öine partiitöötlus võib toota konfiguratsiooniandmeid, mis peavad olema SCADA-süsteemile kättesaadavad enne hommikuste toimingute algust. Ajastussõltuvus on ajastaja konfiguratsioonis ja juhtimisruumi tööootustes kaudselt kirjas ning seda pole rakenduskoodis kusagil dokumenteeritud.

Häirete ja sündmuste töötlemise programmid. Programmid, mis võtavad vastu SCADA-süsteemidelt häireandmeid, rakendavad klassifitseerimise ja marsruutimise loogikat, genereerivad töökäske ja toodavad regulatiivse vastavuse dokumente. Häirete klassifitseerimise loogika, mis määrab, millised sündmused nõuavad milliseid regulatiivseid aruandeid ja millise ajaraami piires, on sageli integreeritud programmikoodi, mis on kogunud aastakümneid regulatiivseid muudatusi.

See on kood, mida nii insenerid kui ka IT-arendajad osaliselt omavad ja millest kumbki täielikult aru ei saa. Kui moderniseerimisprogramm küsib: „Mida me saame muuta?“, on SCADA-ga külgneva koodi puhul vastus peaaegu alati: „Vähem, kui arvate, ja alles pärast põhjalikumat analüüsi, kui plaanisite.“

Miks standardne moderniseerimisanalüüs siin ebaõnnestub

Enamik ettevõtte moderniseerimise analüüsi raamistikke eeldab, et analüüsitav kood kontrollib ainult andmeid ja äriloogikat ning et programmi muutmine annab tulemuseks teistsuguse andmetulemuse, millel pole füüsilises maailmas tagajärgi. SCADA-ga külgnev kood rikub seda eeldust neljal konkreetsel viisil.

Andmevigade füüsilised tagajärjed

Tavapärases arveldusrakenduses tulemuseks on vale arvutus, mis annab vale arve. Viga on avastatav, pöörduv ja piiratud ulatusega. SCADA-ga külgnevas koodis võib vale arvutus tulemuseks olla vale seadeväärtus ehk sihtväärtus, millele juhtimissüsteem reageerib, muutes füüsikalisi parameetreid: rõhku, pinget, voolukiirust, temperatuuri. Tagajärjeks ei ole vale number andmebaasis. See on füüsiline protsess, mis toimib väljaspool ettenähtud parameetreid ja mille tagajärjed ulatuvad ebaefektiivsusest seadmete kahjustusteni ja ohutusintsidentideni.

See andmevea ja füüsilise tagajärje vaheline asümmeetria on peamine põhjus, miks SCADA-ga külgnevat koodi ei saa analüüsida sama riskitaluvusega kui standardset ärikoodi. Muudatus, mis kehtiva väljundi tootmise seisukohast „töötab õigesti“, võib siiski anda operatiivselt vale väljundi, mis jääb andmetüübi seaduslikku vahemikku ja on süntaktiliselt kehtiv, kuid füüsiliselt vale selle operatiivse konteksti jaoks, mida see esindab.

Ajastussõltuvused, mida staatiline analüüs ei suuda modelleerida

SCADA-süsteemidega külgnevatel IT-poolsetel programmidel on sageli ajastuspiirangud, mis on operatiivselt olulised, kuid staatilise analüüsi tööriistadele nähtamatud. Konfiguratsiooniandmeid genereeriv programm peab valmima enne, kui SCADA-süsteemi küsitlustsükkel neid loeb. Ajalooandmeid koondav pakktöötlus peab valmima enne regulatiivse aruandluse nõutavat intervalli lõpu ajatempli saabumist. Häireid edastav sildprogramm peab sündmusi töötlema reageerimisaja jooksul, mille juhtimisruumi tööprotseduurid määravad.

Need ajastuspiirangud eksisteerivad utiliidi tööprotseduurides, ajastaja konfiguratsioonis ja programme kirjutanud arendajate vaikimisi arusaamades, mitte lähtekoodis. Staatilise analüüsi tööriistad, mis keskenduvad koodistruktuurile ja andmevoogudele, ei oma ülevaadet ajastusnõuetest, mis eksisteerivad väljaspool koodi ennast.

Praktiline tähendus: SCADA-ga külgneva koodi moderniseerimisanalüüs peab selgesõnaliselt dokumenteerima iga hõlmatud programmi ajastuse konteksti. See nõuab operatiivseid teadmisi, intervjuusid juhtimisruumi operaatoritega, regulatiivsete vastavusgraafikute ülevaatamist, ajakava koostaja tööde sõltuvuste analüüsi, mitte ainult koodianalüüsi.

Ohutusfunktsiooni identifitseerimine

IEC 61511 (funktsionaalne ohutus töötleva tööstuse sektoritele) ja IEC 61508 (funktsionaalne ohutus elektrilistele/elektroonika-/programmeeritavatele elektroonilistele ohutussüsteemidele) määratlevad sertifitseerimisnõuded tarkvarale, mis täidab ohutusfunktsioone. Nende standardite alusel sertifitseeritud kood ei ole lihtsalt pärandkood, mida saab hooldatavuse huvides ümber kujundada. Sertifitseerimine kehtib konkreetsete koodiartefaktide, konkreetse binaarkoodi konkreetse versiooni kohta, mida sertifitseerimisasutus on hinnanud. Koodi muutmine, isegi kvaliteediprobleemi lahendamiseks, mis ärirakenduses oleks tähelepanuta jäetud, muudab sertifikaadi kehtetuks ja nõuab uuesti sertifitseerimist enne, kui muudetud koodi saab ohutusfunktsioonis kasutusele võtta.

Paljudel kommunaalettevõtetel on SCADA-ga külgnevad programmid, mis teostavad ohutusalaseid arvutusi, ülerõhu tuvastamist, trafo kaitse seadeväärtuse arvutamist ja avariiväljalülituse loogikat, mis võivad olla IT-moderniseerimismeeskonna teadmata ohutussertifitseerimise nõuete all. SCADA-ga külgneva koodi esimene analüütiline küsimus on: kas mõni sellest koodist täidab ohutusfunktsiooni? Kui jah, siis milliseid funktsioone, millise sertifikaadi alusel ja mida selle muutmine nõuab?

Riistvara ja protokolli sidumine

Protokollisilla programmid ja manusliidese kood sõltuvad otseselt riistvarast ja protokolli versioonidest, mida nad rakendavad. Programm, mis rakendab Modbus RTU-d kindla tarnija konkreetse RTU mudeli jaoks spetsiifiliste funktsioonikoodide, registrikaartide ja ajalõpu väärtustega, ei rakenda Modbusi üldiselt, vaid rakendab seda spetsiifilist kombinatsiooni eeldustega, mis ei pruugi kehtida ühegi teise konfiguratsiooni puhul.

Kui seda koodi moderniseerimiseks analüüsitakse, siis sõltuvus ei seisne ainult COBOL- või C-koodis, vaid ka RTU-seadme mudelis, püsivara versioonis, füüsilises juhtmestiku topoloogias ja võrgukonfiguratsioonis. Nende muudatused võivad liidese katki teha isegi siis, kui programmi lähtekoodi ei muudeta. Ja programmi lähtekoodi muudatused võivad katki teha liidesed, mis tunduvad olevat omavahel mitteseotud, kuna sild kirjutati müüjapõhiste protokolli iseärasuste kompenseerimiseks, mida pole kusagil dokumenteeritud.

IT/OT piir: kus kood elab

Purdue mudel (ISA-99 / IEC 62443) määratleb tööstuslike juhtimissüsteemide võrkude kontseptuaalse arhitektuuri viiel tasandil, alates füüsilistest protsessidest 0. tasemel kuni ettevõtte ärisüsteemideni 4. tasemel. SCADA-ga külgnev pärandkood kommunaalteenuste keskkondades asub tavaliselt 3. ja 4. tasemel, tootmisoperatsioonides ja ettevõtte võrgu tsoonides, kuid selle andmevood läbivad 2. taset (SCADA järelevalvekiht) mõlemas suunas.

IT/OT piir 3. ja 2. taseme vahel on koht, kus turva- ja operatsioonirisk on kõrgeim. Riiklikud osalejad positsioneerivad end OT-võrkudes juba kuid enne aktiveerimist, samas kui lunavararünnakud kasutavad nüüd ICS-teadlikke koormusi, mis on loodud HMI-de lukustamiseks ja tootmise peatamiseks. Kõige sagedasem sisenemispunkt ei ole sisseehitatud SCADA-tarkvara, vaid IT/OT piirkiht, kus IT-poolne kood ja OT-poolsed süsteemid vahetavad andmeid liideste kaudu, mis on loodud pigem töökindluse kui vastastikuse turvalisuse tagamiseks.

Nii moderniseerimise planeerimise kui ka turvalisuse parandamise eeltingimuseks on täpselt mõista, millised programmid seda piiri ületavad ja mida nad seal teevad. Programm, mis loeb SCADA ajaloolase andmeid ja kirjutab tulemused arveldusandmebaasi, ületab piiri ühes suunas. Programm, mis arvutab seadeväärtusi ja kirjutab need konfiguratsioonikataloogi, mida PLC loeb, ületab piiri teises suunas. Mõlemad on SCADA-ga külgnevad. Kumbki neist ei ilmu SCADA-võrgu skaneerimises ega IT-rakenduste inventuuris, mistõttu neid süstemaatiliselt alaanalüüsitakse.

SCADA-ga külgnevatele programmidele omased koodimustrid

Inseneriüksuse arvutuskood

Insenerimõõtühikute (EU) arvutused teisendavad andurite toorväärtused, tavaliselt analoog-digitaalmuunduritest pärinevad täisarvulised loendused, füüsilisteks mõõtmisteks kindlate ühikute, vahemike ja täpsusega. Rõhuanduri 4-20 mA vooluahel annab toornäidu; EU arvutus teisendab selle PSI-deks või baarideks õige nullpunkti ja mõõteulatuse kalibreerimisega.

Sellel arvutuskoodil on omadused, mis eristavad seda tavalisest äriloogikast:

kobol

       CALCULATE-PRESSURE-EU.
      *  RAW-COUNT ranges 0-4095 (12-bit ADC)
      *  SENSOR-ZERO-OFFSET = 819  (4mA = 20% of 4095)
      *  SENSOR-SPAN       = 3276  (16mA span = 80% of 4095)  
      *  RANGE-LOW-PSI     = 0
      *  RANGE-HIGH-PSI    = 500
           COMPUTE EU-PRESSURE-PSI =
               (RAW-COUNT - SENSOR-ZERO-OFFSET) /
               SENSOR-SPAN *
               (RANGE-HIGH-PSI - RANGE-LOW-PSI)
               + RANGE-LOW-PSI
           IF EU-PRESSURE-PSI < RANGE-LOW-PSI OR
              EU-PRESSURE-PSI > RANGE-HIGH-PSI
               MOVE 'RANGE-VIOLATION' TO ALARM-STATUS
               PERFORM GENERATE-ALARM
           END-IF.

Selle arvutuse konstandid, SENSOR-ZERO-OFFSET, SENSOR-SPAN, RANGE-LOW-PSI, RANGE-HIGH-PSI, vastavad füüsilise instrumendi spetsifikatsioonidele. Kui need on kõvakodeeritud (nagu need sageli pärandkoodis on), nõuab füüsilise instrumendi muutmine koodi muutmist. Kui need on valed (instrumendi ümberkalibreerimise, asendamise või algse vale konfiguratsiooni tõttu), on EU-väärtus süstemaatiliselt vale iga programmi loodud kirje puhul. Staatiline analüüs suudab leida, kus need konstandid on määratletud; ainult toimimise valideerimine saab kinnitada, kas need on instrumendi praeguse konfiguratsiooni jaoks õiged.

Häire genereerimise ja klassifitseerimise loogika

Häire genereerimise kood on kommunaalteenuste keskkondades üks regulatiivselt tundlikumaid SCADA-ga külgnevaid koode. NERC CIP (kriitilise infrastruktuuri kaitse) standardid elektriettevõtetele, NRC nõuded tuumarajatistele ja EPA aruandlusnõuded vee- ja reoveeettevõtetele määravad kõik kindlaks, millised sündmused peavad häireid tekitama, millist teavet need häired peavad sisaldama ja millise aja jooksul tuleb need esitada.

kobol

       CLASSIFY-ALARM.
           EVALUATE TRUE
               WHEN EU-PRESSURE-PSI > HIGH-HIGH-LIMIT
                   MOVE 'HH'   TO ALARM-PRIORITY
                   MOVE 'NERC' TO REPORTING-FLAG
                   PERFORM GENERATE-NERC-EVENT
               WHEN EU-PRESSURE-PSI > HIGH-LIMIT
                   MOVE 'HI'   TO ALARM-PRIORITY
                   MOVE 'LOG'  TO REPORTING-FLAG
               WHEN EU-PRESSURE-PSI < LOW-LIMIT
                   MOVE 'LO'   TO ALARM-PRIORITY
                   MOVE 'LOG'  TO REPORTING-FLAG
               WHEN EU-PRESSURE-PSI < LOW-LOW-LIMIT
                   MOVE 'LL'   TO ALARM-PRIORITY
                   MOVE 'NERC' TO REPORTING-FLAG
                   PERFORM GENERATE-NERC-EVENT
           END-EVALUATE.

Selle koodi alarmipiirid, HIGH-HIGH-LIMIT, HIGH-LIMIT, LOW-LIMIT, LOW-LOW-LIMIT, on regulatiivse tähtsusega tööparameetrid. Nende piirväärtuste muudatused mõjutavad nii juhtimissüsteemi töökäitumist kui ka kommunaalettevõtte regulatiivse aruandluse kohustusi. Iga moderniseerimisprogramm, mis puudutab häireklassifikatsiooni koodi, peab oma muudatuste kontrolli protsessis hõlmama regulatiivsete küsimuste läbivaatamist, mitte ainult inseneri heakskiitu.

Protokollisilla implementatsioonid

Pärandprotokollide sillaprogrammid on SCADA-ga külgneva koodi osas ühed keerulisemad kaasajastada, kuna nende sõltuvusi on kõige raskem loetleda. Programm rakendab konkreetse seadme jaoks kindlat protokolliversiooni, kusjuures dokumenteerimata müüjapõhised käitumisviisid kompenseeritakse koodis.

c

/* Legacy Modbus RTU bridge -- written for Modicon 984 PLCs, circa 1998 */
/* NOTE: 984 series uses 1-based register addressing, not 0-based */
/* Function code 03 only -- 984 does not support FC 04 */
/* Max 60 registers per request -- 984 firmware limitation */

#define MODBUS_FC03_READ_HOLDING  0x03
#define MAX_REGS_PER_REQUEST      60    /* 984 firmware limit, not Modbus spec */
#define REGISTER_OFFSET           1     /* 984 uses 1-based addressing */

int read_holding_registers(int start_reg, int count, uint16_t *buffer) {
    /* Compensate for 984 1-based addressing */
    uint16_t adjusted_start = (uint16_t)(start_reg + REGISTER_OFFSET);
    
    if (count > MAX_REGS_PER_REQUEST) {
        /* 984 will return error if count exceeds 60 */
        /* Split into multiple requests silently */
        return read_registers_chunked(adjusted_start, count, buffer);
    }
    /* ... */
}

Sellel koodil on neli konkreetse PLC mudeli kohta manustatud eeldust, mis ei ole Modbusi spetsifikatsiooni osa: 1-põhine registriaadresseerimine, ainult funktsioonikood 03, maksimaalselt 60 registrit ja tükeldamise käitumine suuremate päringute korral. Ükski neist ei kajastu Modbusi dokumentatsioonis. Need on Modicon 984 müüjaspetsiifilised käitumisviisid, mis on dokumenteeritud 1998. aasta riistvarakäsiraamatus, mis ei pruugi enam saadaval olla. Kui seda silda moderniseeritakse neid eeldusi mõistmata või kui PLC asendatakse uuema mudeliga, mis kasutab standardset 0-põhist adresseerimist, tagastab iga registri lugemine vale väärtuse täpselt ühe registriaadressi nihke võrra.

Eelmoderniseerimise analüüs: mida tuleb toota

Enne mis tahes SCADA-ga seotud koodi muutmist, ümbertegemist või asendamist peab analüüs andma tulemuseks hulga tulemusi, mis ületavad standardse ettevõtte moderniseerimise analüüsi pakutavaid võimalusi.

Operatiivsete funktsioonide inventuur. Iga SCADA-ga seotud programm tuleb liigitada selle operatiivse funktsiooni järgi: EU arvutamine, seadeväärtuse edastamine, ajalooandmete tarbija, häire genereerimine, protokolli sild, partiist reaalajas edastamise rada. See klassifikatsioon määrab, kes peavad olema kaasatud muutmisprotsessi, kas ainult IT-insenerid või valdkondadeülene meeskond, kuhu kuuluvad juhtimisinsenerid, operatiivpersonal ja regulatiivse vastavuse eest vastutavad töötajad.

IT/OT piiri ületamise kaart. Iga IT/OT piiri ületav andmevoog tuleb dokumenteerida: milline programm andmeid genereerib, mis vormingus ja millise ajakava järgi; milline OT-süsteem neid töötleb; ja millised on tagajärjed, kui andmed on valed, hilinenud või puuduvad. See kaart on SCADA-ga külgneva kihi operatsiooniriski profiil.

Ohutusfunktsiooni tuvastamine. Iga programmi puhul tuleb hinnata, kas see täidab ohutusfunktsiooni vastavalt standarditele IEC 61511, IEC 61508, NERC CIP või muudele kohaldatavatele standarditele. Ohutusfunktsiooni koodina identifitseeritud programmid vajavad eraldi muudatuste kontrolli, regulatiivset teavitamist ja potentsiaalselt ümbersertifitseerimist ning nende programmide moderniseerimise ajakava erineb põhimõtteliselt standardse ärikoodi omast.

Kõvakodeeritud tööparameetrite register. Iga kõvakodeeritud konstant, mis esindab tööparameetrit, anduri kalibreerimisväärtusi, alarmi piirväärtusi, protokolli piiranguid või ajastuslävesid, tuleb identifitseerida, dokumenteerida selle töötähendusega ja valideerida vastavalt kehtivatele seadme spetsifikatsioonidele. Sellest registrist saab sisend konfiguratsioonihaldusprotsessile, mis asendab kõvakodeeritud konstandid väliselt hallatava konfiguratsiooniga.

Ajastussõltuvuse dokumentatsioon. Iga programmi ajakontekst, operatsiooniaknad, mille jooksul see peab töö lõpule viima, ajastaja sõltuvused, mis neid aknaid jõustavad, ja operatsiooniprotseduurid, mis sõltuvad programmi lõpuleviimisest, tuleb selgesõnaliselt dokumenteerida. See dokumentatsioon on spetsifikatsioon, mille alusel tuleb moderniseeritud teostust valideerida.

Protokolli ja liidese spetsifikatsioon. Iga protokollisilla programmi tuleb analüüsida müüjapõhiste käitumismustrite, protokolli versiooni eelduste ja seadmepõhiste kompensatsioonide osas. Väljund on spetsifikatsioonidokument, mida saab kasutada asendusrakenduse valideerimiseks, kinnitades, et iga kompenseeriv käitumine on säilinud, isegi need, mis ei olnud algses spetsifikatsioonis.

Moderniseerimismeetodid, mis toimivad ja mis mitte

Strangler Fig, rakendatuna hoolikalt. Strangler Fig muster, mis loob uue funktsionaalsuse vana kõrvale, suunab selle järk-järgult ja eemaldab selle järk-järgult, sobib SCADA-ga külgneva koodi jaoks, mis teostab IT-poolset andmetöötlust (ajaloolised andmetarbijad, arveldusarvutused). Vana programm töötab ülemineku ajal edasi; uus implementatsioon annab paralleelseid väljundeid, mille samaväärsust kontrollitakse enne vana programmi kasutusest kõrvaldamist.

Strangleri joonis ei kehti reaalajas andmeteede kohta. Programmide puhul, mis asuvad reaalajas andmeteel, kus puudub ohutu viis vana ja uue paralleelseks käivitamiseks, kuna need tekitaksid vastuolulisi tööefekte, peab üleminek olema kohene ja valideeritud võrguühenduseta enne mis tahes tootmise ümberlülitamist. Paralleelse seadeväärtuse arvutamise programmi käivitamine, mis annab praegusest programmist erinevaid väärtusi, saadaks juhtimissüsteemile vastuolulisi seadeväärtusi.

Konfiguratsiooni eksternaliseerimine enne koodi muutmist. Püsikodeeritud tööparameetritega programmide puhul on kõige turvalisem esimene moderniseerimise samm nende parameetrite eksternaliseerimine konfiguratsioonifaili või andmebaasi ilma arvutusloogikat muutmata. See muudab parameetrid nähtavaks, hallatavaks ja auditeeritavaks ilma operatiivselt olulist arvutuskoodi puudutamata. Parameetrite eksternaliseerimise risk on oluliselt väiksem kui arvutusloogika refaktoriseerimisel.

Ohutusfunktsiooni kood: analüüs ja dokumenteerimine, mitte ümbertegemine. Ohutussertifikaadiga koodi tuleks moderniseerimise planeerimise etapis analüüsida ja dokumenteerida, kuid selle muudatused tuleks edasi lükata teadliku regulatiivse koordineerimisega ümbersertifitseerimisprogrammi, mitte käsitleda üldise moderniseerimisalgatuse osana. Ohutussertifikaadi kehtetuks tunnistamise risk laiaulatusliku moderniseerimise käigus ei ole õigustatud ühegi tüüpilise moderniseerimise eelisega.

Kuidas SMART TS XL Toetab SCADA-ga külgneva pärandkoodi analüüsi

SMART TS XL'S staatilise koodi analüüs kehtib SCADA-ga külgneva piiri IT-poolele, COBOL-, JCL-, RPG-, PL/I- ja C-programmidele, mis töötavad suurarvutites ja keskklassi süsteemides ning genereerivad, teisendavad või tarbivad andmeid, mis ületavad OT-keskkondi. Selle koodi jaoks loob struktuurianalüüs operatiivsete funktsioonide inventuuri ja kõvakodeeritud parameetrite registri, mida moderniseerimiseelne analüüs vajab.

Rakenduse sõltuvuste kaardistamine loob IT/OT piiride ületamise kaardi: iga programm, mis kirjutab SCADA-süsteemi poolt tarbitavale faililiidesele, iga JCL-töö samm, mis genereerib operatiivse ajastusega olulisi andmeid, iga programm ajalooandmete teel OT allikast IT-tarbijani. Kui kommunaalettevõtte arveldus-COBOL-programm loeb ajalooandmeid vahepealse C-silla kaudu, esindab sõltuvuste kaart nii COBOL-C-sõltuvust kui ka C-historical-sõltuvust ühendatud ahelana, muutes kogu IT/OT ületamise nähtavaks, mitte ainult operatiivse intsidendi kaudu avastatavaks.

Mõjuanalüüsi võimekus on eriti oluline SCADA-ga külgneva koodi puhul , kuna see loetleb enne muudatuse tegemist iga kavandatud muudatuse plahvatusraadiuse. EU arvutusprogrammi muudatus, mida jagatakse (vihikusse) häire genereerimise koodi, sättepunkti edastamise koodi ja ajaloolase kirjutuskoodiga, nõuab enne arvutusega tegelemist kõigi kolme teisese mõju mõistmist. Tavalises ärikoodis annab vale muudatus valesid andmeid. SCADA-ga külgnevas koodis annab see valesid tööparameetreid.

JCL -i laiendusvõimalus paljastab partiikihi ajastuse ja järjestuse struktuuri: millised tööd millises järjekorras töötavad, millised andmestiku väljundid toidavad milliseid järgnevaid samme ja millised töövood on ajaliselt piiratud operatsiooninõuetega. See on struktuuriline tõendusbaas ajastussõltuvuse dokumentatsioonile, mida SCADA-ga külgnev moderniseerimine vajab.

Ettevõtte otsinguvõimalus muudab kõvakodeeritud parameetrite registri teostatavaks suures mahus: leida sekunditega iga konkreetse tehnilise ühiku konstandi esinemine, iga alarmi piirväärtus, iga kõvakodeeritud protokolli aadress iga COBOL-, C-, RPG- ja JCL-artefakti ulatuses keskkonnas miljonite koodiridade ulatuses. Kommunaalteenuste ettevõtete jaoks, mis haldavad sadu tuhandeid SCADA-ga külgneva pärandkoodi ridu, on see otsinguvõimalus erinevus käsitsi auditi, mis võtab kuid, ja automatiseeritud inventuuri vahel, mis võtab tunde.

Meeskondade planeerimiseks pärand moderniseerimine tehnosüsteemidest, SMART TS XL Pakub IT-poolset struktuurianalüüsi, mis positsioneerib moderniseerimismeeskonna tõhusaks koostööks operatsioonikeskkonnast arusaamisega operatsioonimeeskonna juhtimisinseneridega. IT/OT piiri ei ületata ohutult ainult IT-meeskondade või ainult OT-meeskondade poolt, vaid see ületatakse ohutult siis, kui mõlemal poolel on täpsed struktuurilised teadmised oma süsteemide sisust.

Miks see koodeks nõuab teistsugust tähelepanu

Kommunaalettevõtted, kes kaasajastavad oma SCADA-ga külgnevat pärandkoodi, ei uuenda lihtsalt vana tarkvara. Nad muudavad tarkvarakihti, mis vahendab ärisüsteeme ja füüsilist infrastruktuuri. Vale lahenduse tagajärjed ei piirdu ainult andmevigade, teenusekatkestuste või rahaliste kahjudega, vaid laienevad ka füüsilistele süsteemidele, mis teenindavad inimesi, kelle toimimine sõltub kommunaalettevõtetest.

Selle koodi eriliseks muutvad omadused – andmevigade füüsilised tagajärjed, staatilisele analüüsile nähtamatud ajastussõltuvused, ohutussertifitseerimise piirangud, riistvara ja protokolli sidumine – ei ole argumendid selle moderniseerimise vastu. Need on argumendid selle täieliku mõistmise poolt enne millegi muutmist. Käesolevas juhendis esitatud analüüsiraamistik loobki selle arusaama. Sellest järgnev moderniseerimisprogramm on turvalisem, kuna muudatuste ulatus on määratletud pigem tõendite kui eelduste abil, ajastussõltuvused on dokumenteeritud, mitte kaudsed, ohutusfunktsiooni kood on tuvastatud, mitte kogemata muudetud, ning IT/OT piiriületused kaardistatakse, mitte ei avastata neid pärast juurutamist operatiivsete intsidentide kaudu.