Tehisintellekt tööstusautomaatikas

Artikli juhend

Kuidas vältida AI-ga loodud PLC-koodi tõrkeid väikepartiide tarnemeetodiga

Suured AI-ga loodud PLC-koodi partiid võivad ebaõnnestuda, kuna neisse kuhjuvad varjatud skaneerimisjärjekorra ja olekusõltuvused. See artikkel selgitab väikepartiide tarnimise matemaatikat ja seda, miks simulatsioonipõhine kontroll vähendab kasutuselevõtu riske.

Otsene vastus

Suured AI-ga loodud PLC-koodi partiid kipuvad ebaõnnestuma, kuna isegi väikesed veamäärad ühe pulga (rung) kohta kuhjuvad järjestikuses loogikas, samas kui varjatud skaneerimistsükli sõltuvused muudavad vigade isoleerimise raskeks. Väikepartiide tarnimine vähendab seda riski, piirates iga iteratsiooni 1–3 pulgani, sundides seejärel olekumuutusi ja kontrollides I/O põhjuslikkust enne täiendava loogika lisamist.

Millele see artikkel vastab

Artikli kokkuvõte

Suured AI-ga loodud PLC-koodi partiid kipuvad ebaõnnestuma, kuna isegi väikesed veamäärad ühe pulga (rung) kohta kuhjuvad järjestikuses loogikas, samas kui varjatud skaneerimistsükli sõltuvused muudavad vigade isoleerimise raskeks. Väikepartiide tarnimine vähendab seda riski, piirates iga iteratsiooni 1–3 pulgani, sundides seejärel olekumuutusi ja kontrollides I/O põhjuslikkust enne täiendava loogika lisamist.

AI-ga loodud redelloogika (ladder logic) ei ebaõnnestu tavaliselt kehtetu süntaksi tõttu. See ebaõnnestub, kuna loogika on deterministliku täitmismudeli raames kontrollimata, ja need ei ole sama probleem. Süntaksivead on nähtavad; skaneerimisjärjekorra vead on sageli piisavalt viisakad, et oodata kasutuselevõtuni.

Meie AI-labori treeneri Yaga sisemise võrdlusanalüüsi käigus täheldasime selget partii suuruse mõju: kasutajad, kes genereerisid ühe viipaga (prompt) 15-pulgalisi järjestusi, tekitasid 82% rohkem kontrollimata skaneerimissõltuvuse vigu kui kasutajad, kes töötasid 3-pulgaliste sammudega. Metoodika: n=96 juhendatud laborikatset mootorite järjestamise ja pumba lubamistingimuste ülesannetega, võrdlusalus = 1–3 pulga iteratiivne genereerimine koos simulatsiooniga pärast iga partiid, ajavahemik = jaanuar–märts 2026. See mõõdik toetab piiratud väidet veakontsentratsiooni kohta juhendatud laboriülesannete ajal Ampergon Vallis'e keskkonnas. See ei väida tööstusharuülest defektide määra kõigi AI PLC-tööriistade puhul.

Insenertehniline seisukoht on lihtne. PLC-töös kuhjavad suured AI-partiid varjatud eeldusi kiiremini, kui inimene suudab neid kontrollida. Väikepartiide tarnimine ei ole "agile juhtimissüsteemidele". See on kontrollriski distsipliin.

Mis on "partii suuruse gravitatsioon" PLC-programmeerimises?

Partii suuruse gravitatsioon on kalduvus, mille kohaselt AI-ga loodud PLC-loogika muutub vähem usaldusväärseks, kui genereeritud pulkade arv suureneb, sest vähemalt ühe olulise vea tõenäosus kasvab iga lisatud sõltuvusega.

Põhiline matemaatika on standardne töökindluse aritmeetika. Kui igal genereeritud pulgal on tõenäosus p olla kontekstis funktsionaalselt õige, siis tõenäosus, et n sõltuvat pulka on kõik õiged, on:

P(edu) = p^n

Kui kasutame lihtsustatud näidet 95% korrektsusest pulga kohta, siis partii tasemel tulemus halveneb kiiresti:

- Üks pulk: 0,95 = 95,0% - 5-pulgaline partii: 0,95^5 = 77,4% - 10-pulgaline partii: 0,95^10 = 59,9% - 20-pulgaline partii: 0,95^20 = 35,8%

Oluline täpsustus on "funktsionaalselt õige kontekstis". Pulk võib olla süntaktiliselt kehtiv ja siiski vale, kuna selle lubamistingimus, lukustuskäitumine, lähtestustee, analooglävi või järjestuse eeldus on protsessi jaoks vale.

Seetõttu on suured AI-koodi mahud matemaatiliselt haprad. Isegi optimistlik kohalik täpsus ei ela üle pikki sõltuvusahelaid. Tööstuslikus juhtimises ei ole 35,8% täieliku korrektsuse tõenäosus tootlikkuse probleem. See on kasutuselevõtu risk.

AI-koodi tõrke tõenäosuse võrrand

Võrrand on oluline, sest PLC-loogika ei ole sõltumatute tekstifragmentide kott. See on interakteeruv olekumudel, mida täidetakse korduvalt skaneerimistsüklis.

Kolm eristust on olulised:

Pulk võib tunduda isoleeritult mõistlik, kuid rikub järjestuse, kui toimuvad ülesvoolu olekumuutused.

  • Kohalik kehtivus ei ole süsteemne kehtivus.

Kui 8. pulk eeldab, et bitt on 2. pulgas lukustatud, saastab üks varajane viga hilisemat käitumist.

  • Sõltuv loogika kuhjub kiiremini kui sõltumatu loogika.

Tegelikud redelprogrammid sisaldavad jagatud silte (tags), kinnitusi (seal-ins), lähtestustingimusi, analooglävesid, taimereid, loendureid ja veaharusid. Sõltuvused ei ole häbelikud.

  • Tegelik veamäär on sageli halvem kui nominaalne määr.

Levinud eksiarvamus on, et kontrollimisele kuluv aeg on võrdeline koodi pikkusega. Tavaliselt see nii ei ole. Kui järjestus ületab teatud suuruse, muutub kontrollimine oleku rekonstrueerimiseks.

Miks põhjustavad suured AI-viibad kuhjuvaid skaneerimistsükli vigu?

Suured AI-viibad põhjustavad kuhjuvaid skaneerimistsükli vigu, kuna suured keelemudelid genereerivad usutavaid tekstmustreid, samas kui PLC-d täidavad deterministlikku loogikat kindlas järjekorras. Mudel ennustab koodi märke; kontroller lahendab olekumuutusi.

IEC 61131-3 programmeerimistava kohaselt tõlgendatakse redelloogikat deterministliku skaneerimisstruktuuri raames: loe sisendid, täida programmi loogika, uuenda väljundeid, seejärel korda. Tarnijate implementatsioonid erinevad detailide, ülesannete ja optimeerimise poolest, kuid valitsev insenertehniline reaalsus jääb järjestikuseks täitmiseks koos olekusõltuvusega, mitte samaaegse semantilise mõistmisega.

See ebakõla tekitab prognoositavaid tõrkerežiime, kui korraga genereeritakse liiga palju loogikat:

Varem skaneerimises seatud bitti võidakse kasutada hiljem samas tsüklis. Kui AI paigutab loogika vales järjekorras, võib järjestus ebaõnnestuda ilma ilmsete süntaksiprobleemideta.

  • Varjatud järjekorra sõltuvus

Mitmekordne kirjutamine samasse väljundisse või sisemisse bitti võib tekitada viimase pulga võidu käitumise, mitmetähendusliku kavatsuse või kontrollerispetsiifilisi üllatusi.

  • Topeltmähise ja ülekirjutamise käitumine

Kinnitusloogika näeb sageli õige välja, kuni tekib ebanormaalne tingimus ja bitt ei lange kunagi või langeb liiga vara.

  • Katkised lukustus- ja lähtestusteed

Rangelt võttes ei ole paljud PLC-probleemid tarkvaralised võistlusolukorrad (race conditions) mitmelõimelises mõttes. Need on skaneerimisjärjekorra ja olekumuutuse vead. Eristust tasub hoida selgena.

  • Võistlusolukorraga sarnane käitumine järjestikuses loogikas

AI genereerib sageli esimesena "õnneliku tee" ja määratleb puudulikult tõestus-tagasisidet, veablokeeringuid ja taaskäivitustingimusi.

  • Sobimatud lubamistingimused ja blokeeringud

Lühike vastandus aitab siin: teksti sidusus versus täitmise sidusus. AI on optimeeritud esimese jaoks. Kasutuselevõtt karistab teist.

Ebakõla LLM-ide ja järjestikuse täitmise vahel

Praktilist ebakõla on kõige lihtsam näha otseses võrdluses.

| Perspektiiv | Kuidas loogikat käsitletakse | Tüüpiline tõrkemuster | |---|---|---| | LLM-i väljundi genereerimine | Sidus plokk seotud teksti, mis on toodetud viiba kontekstist | Usutavad, kuid kontrollimata eeldused paljudes pulkades | | PLC CPU täitmine | Loogika deterministlik hindamine skaneerimisjärjekorras püsiva sildi olekuga | Järjekorrast sõltuvad vead, ülekirjutatud bitid, katkised järjestused | | Inimkontrollija ajasurve all | Suure redelploki visuaalne kontroll | Märkamata jäänud sõltuvused kuni simulatsiooni või reaalajas kasutuselevõtuni |

Seetõttu on "see näeb õige välja" nii nõrk aktsepteerimiskriteerium. Redelloogikat ei hinnata kirjandusliku sujuvuse järgi.

Kuidas parandab väikepartiide tarnimine PLC kasutuselevõttu?

Väikepartiide tarnimine parandab PLC kasutuselevõttu, vähendades igasse testtsüklisse kaasatud kontrollimata eelduste arvu. See muudab vigade isoleerimise arheoloogiast kontrollimiseks.

Operatiivselt tähendab väikepartiide tarnimine seda: kirjuta 1 kuni 3 pulka, sunni olekumuutus, vaatle simulaatoris konkreetset I/O põhjuslikkust ja kinnita oodatud väljund enne täiendava loogika lisamist.

See definitsioon on oluline, sest "iteratiivset ehitamist" kasutatakse sageli vabalt. Siin viitab see väga konkreetsele insenertehnilisele käitumisele, mitte tujule.

3-etapiline iteratiivne kontrolltsükkel

Kasutage seda tsüklit diskreetse ja segatud diskreetse/analoogloogika jaoks:

Näide: mootori käivitus/seiskamis-lukustus ühe käskude tee ja ühe väljundiga.

See lähenemine parandab kasutuselevõttu mitmel konkreetsel viisil:

  • Vead isoleeritakse lähemale muutusele, mis need põhjustas
  • Skaneerimisjärjekorra eeldused paljastatakse varem
  • Ebanormaalseid olekuid testitakse tahtlikult, mitte ei avastata juhuslikult
  • Kontrollimise jõupingutus püsib partiiga proportsionaalses mahus
  • Ümbertegemise kulu langeb, kuna vähem järgnevaid pulki sõltub tõestamata eeldusest

Idee ühtib tarkvara tarnimise uuringutega, sealhulgas DORA korduva leiuga, et väiksemaid muudatusi on üldiselt lihtsam kontrollida, testida ja neist taastuda kui suuremaid (Forsgren et al., 2018). OT ei ole IT ja seda ei tohiks käsitleda otsese PLC-spetsiifilise tõestusena. Kuid aluseks olev juhtimispõhimõte kandub üle piiratud viisil: väiksemad valideeritud muudatused vähendavad tavaliselt taastumiskoormust.

### Näide: esmalt põhiline lukustus, teiseks lubamistingimuste kiht

Väikepartiide 1. samm: Põhilise lukustuse kontrollimine

  1. Kirjuta põhifunktsioon Ehita minimaalne käitumine, mis peaks ideaaltingimustes töötama.
  2. Simuleeri ja sunni I/O Lülita vastavaid sisendeid, vaatle väljundit ja kontrolli oleku säilimist, väljalangemise käitumist ja sildi üleminekuid. Kui põhitee ei käitu õigesti, parandab blokeeringute lisamine ainult segadust.
  3. Lisa lubamistingimused ja ebanormaalse oleku loogika Lisa ülekoormused, hädaseiskamistingimused, tõestus-tagasiside, häireläved, ajalõpu loogika ja taaskäivituspiirangud alles pärast põhifunktsiooni tõestamist.

| Start | Stop | Mootor | |---|---|---| | NO kontakt | NC kontakt | Väljundmähis |

Väikepartiide 2. samm: Lubamistingimuste kihi lisamine

| Start | Stop | No_Fault | Mootor | |---|---|---|---| | NO kontakt | NC kontakt | NO kontakt | Väljundmähis |

Näide on tahtlikult lihtne. Punkt ei ole selles, et mootori lukustused oleksid keerulised. Punkt on selles, et insenerid, kes jätavad vahele põhiolekute kontrollimise, lõpetavad tavaliselt kolme probleemi korraga silumisega: käsulogika, lubamistingimuste loogika ja eeldused seadme oleku kohta.

Miks on väikepartiide valideerimine OT-s olulisem kui üldises tarkvaras?

Väikepartiide valideerimine on OT-s olulisem, kuna juhtimisloogika mõjutab füüsilisi seadmeid, protsessi olekut ja operaatori reageeringut, mitte ainult rakenduse käitumist.

Veebirakenduses võib halb funktsioonide partii halvendada kasutajakogemust või käivitada tagasipööramise. Reaalajas protsessis võib halb juhtimispartii tekitada häirivaid väljalülitusi, varjatud taaskäivitusteid, ummistunud pumpasid, võnkuvaid ventiile või eksitavat HMI olekut. Protsessil ei ole kohustust olla andestav.

Kolm OT-spetsiifilist tegurit tõstavad panuseid:

PLC-d peavad käituma prognoositavalt korduvate skaneerimiste ja teadaolevate olekumuutuste korral.

  • Determinismi tähtsus

Hea juhtimisloogika peab määratlema, mis juhtub vigade ajal, mitte ainult normaalse töö ajal.

  • Ebanormaalsed tingimused on osa disainiruumist

Iga välditav silumistsükkel kohapeal tarbib tööjõudu, aega ja usaldust.

  • Kasutuselevõtu aknad on kallid

See on ka koht, kus Simulation-Ready vajab õiget definitsiooni. Simulation-Ready insener ei ole keegi, kes lihtsalt tunneb redelsüntaksit. See on insener, kes suudab tõestada, vaadelda, diagnoosida ja karastada juhtimisloogikat realistliku protsessikäitumise vastu enne, kui see jõuab reaalajas protsessini.

See on kasulik eristus: süntaks versus juurutatavus.

Kuidas õpetab OLLA Lab iteratiivset redelloogika ehitamist?

OLLA Lab õpetab iteratiivset redelloogika ehitamist, andes õppijatele piiratud keskkonna, kus nad saavad kirjutada loogikat, simuleerida käitumist, kontrollida I/O-d ja võrrelda redeli olekut virtuaalse seadme olekuga enne, kui eksisteerib mingi reaalajas juurutus.

See on koht, kus toode muutub operatiivselt kasulikuks. Väärtus ei seisne selles, et see eemaldab insenertehnilise otsustusvõime. Väärtus on selles, et see annab inseneridele koha otsustusvõime harjutamiseks ülesannetel, mis on liiga riskantsed, liiga kallid või liiga ebamugavad päris seadmetel harjutamiseks.

Juhendatud töövoogude kasutamine riskikindlaks praktikaks

OLLA Labi töövoog toetab väikepartiide distsipliini mitme seotud käitumise kaudu:

Õppijad ehitavad pulki otse brauseris, kasutades kontakte, mähiseid, taimereid, loendureid, võrdlejaid, matemaatilisi funktsioone, loogilisi operatsioone ja PID-juhiseid.

  • Veebipõhine redelloogika redaktor

Kasutajad saavad käivitada loogikat, peatada loogikat, lülitada sisendeid ning vaadelda väljundeid ja muutujate olekuid ilma füüsilise riistvarata.

  • Simulatsioonirežiim

Siltide väärtused, sisendid, väljundid, analoogtööriistad, PID-armatuurlauad ja stsenaariumi muutujad jäävad testimise ajal nähtavaks, mis muudab põhjuslikkuse jälgimise lihtsamaks.

  • Muutujate paneel ja I/O nähtavus

Platvorm struktureerib edenemist esimese pulga põhitõdedest edasijõudnute funktsioonideni, selle asemel et visata kasutajad tühja redaktorisse ja loota distsipliinile.

  • Juhendatud redeliõppe töövoog

Need keskkonnad võimaldavad kasutajatel võrrelda juhtimisloogikat seadme käitumisega realistlikes masinakontekstides.

  • 3D, WebXR ja VR simulatsioonid, mis on seotud digitaalsete kaksikutega

Eelseadistused tootmises, veemajanduses, reoveemajanduses, HVAC-s, keemiatööstuses, farmaatsias, laonduses, toiduainetööstuses ja kommunaalteenustes tutvustavad õppijatele erinevaid blokeeringuid, ohte ja juhtimisfilosoofiaid.

  • Stsenaariumipõhine kasutuselevõtu praktika

Piiratud tooteväide: OLLA Lab on valideerimis- ja harjutuskeskkond kõrge riskiga kasutuselevõtu ülesannete jaoks. See ei ole sertifikaat, ei ole SIL-väide ega asenda juhendatud kohapealset kompetentsi.

Mida tähendab siin "digitaalse kaksiku valideerimine"?

Digitaalse kaksiku valideerimist ei tohiks käsitleda prestiižse sõnavarana. Selles kontekstis tähendab see juhtimisloogika testimist realistliku virtuaalse seadmemudeli vastu ja kontrollimist, kas kästud olekud, tagasiside, blokeeringud, häired ja järjestuse üleminekud käituvad enne juurutamist ettenähtud viisil.

See hõlmab vaadeldavaid insenertehnilisi käitumisi, nagu:

  • kästud mootori oleku võrdlemine simuleeritud seadme vastusega,
  • tõestus-tagasiside kadumise testimine,
  • häirelävede ja väljalülituskäitumise vaatlemine,
  • järjestuse edenemise valideerimine,
  • kontrollimine, kas taaskäivitustee on määratletud tingimustel blokeeritud või lubatud.

Digitaalne kaksik, mis ei suuda paljastada olekute ebakõla, on enamasti dekoratsioon.

Kuidas peaksid insenerid ohutult harjutama AI-toega PLC-arendust?

Insenerid peaksid harjutama AI-toega PLC-arendust, käsitledes AI-d kui mustandite genereerijat kontrolltsükli sees, mitte kui protsessi tõe autoriteeti.

Ohutu töövoog on distsiplineeritud ja üsna lihtne:

  • Genereeri väike loogikaüksus
  • Kontrolli siltide nimesid, olekueeldusi ja väljundite kirjutamist
  • Simuleeri üksust
  • Sunni normaalseid ja ebanormaalseid sisendeid
  • Kinnita väljundi põhjuslikkus
  • Alles seejärel laienda järjestust

See on ka õige koht, kus olla AI-toe suhtes selgesõnaline. Yaga, OLLA Labi AI-labori juhendaja, saab aidata kasutajaid sisseelamisel, parandussoovitustega ja redelloogika juhendamisega. Seda tuleks kasutada õppimishõõrdumise vähendamiseks, mitte valideerimise vahelejätmiseks. Mustandite genereerimine on kasulik. Deterministlik veto jääb inseneri tööks.

Praktiline tõendusmaterjalide pakett on parem kui ekraanipiltide galerii

Kui insener soovib demonstreerida kompetentsi AI-toega juhtimistöös, on õige artefakt kompaktne insenertehniliste tõendite kogum, mitte poleeritud ekraanipiltide kaust.

Kasutage seda struktuuri:

  1. Süsteemi kirjeldus Määratle protsessiüksus, seadmed, I/O ja juhtimiseesmärk.
  2. "Õige" operatiivne definitsioon Sõnasta täpselt, mida edukas käitumine tähendab normaalsetes ja ebanormaalsetes tingimustes.
  3. Redelloogika ja simuleeritud seadme olek Näita implementeeritud loogikat koos vaadeldud masina või protsessi olekuga.
  4. Süstitud veajuhtum Tutvusta tahtlikult realistlikku tõrget, nagu tõestuse kadumine, ülekoormus, vale analoogväärtus või järjestuse ajalõpp.
  5. Tehtud parandus Dokumenteeri loogika muudatus, mida kasutati käitumise parandamiseks või karastamiseks.
  6. Õppetunnid Selgita, mida tõrge paljastas eelduste, skaneerimisjärjekorra, lubamistingimuste või operaatori interaktsiooni kohta.

See struktuur on palju informatiivsem kui "siin on minu redelskeem". Suurem osa tõelisest insenertehnilisest väärtusest ilmneb siis, kui esimene eeldus ebaõnnestub.

Millised standardid ja kirjandus toetavad seda lähenemist?

Väikepartiide argument toetub kolmele tugikihile: väljakujunenud tõenäosusmatemaatika, deterministlik PLC täitmispraktika ja laiem tõendusmaterjal selle kohta, et väiksemad valideeritud muudatused parandavad taastatavust.

Asjakohased ankrud on:

  • IEC 61131-3 programmeeritava kontrolleri keele struktuuri ja täitmiskonteksti jaoks tööstusautomaatika praktikas.
  • IEC 61508 funktsionaalse ohutuse laiema distsipliini jaoks, sealhulgas kontrollimise, valideerimise ja süstemaatilise veakontrolli tähtsus.
  • exida juhised ja ohutuse elutsükli kirjandus süstemaatiliste tõrgete, kontrollimise ranguse ja juhtimissüsteemi kvaliteedi praktiliseks käsitlemiseks.
  • DORA uuringud piiratud, kuid kasuliku külgneva leiu jaoks, et väiksemad muudatused parandavad üldiselt tarnimise stabiilsust ja taastumise jõudlust.
  • Digitaalse kaksiku ja simulatsiooni kirjandus tööstustehnikas ja juhtimishariduses, mis näitab väärtust virtuaalses kasutuselevõtus, stsenaariumipõhises valideerimises ja kaasahaaravates koolituskeskkondades.

Üleminekut tarkvara tarnimise uuringutest OT-sse tuleks teha ettevaatlikult. DORA ei tõesta PLC-spetsiifilist teoreemi. See toetab piiratud järeldust: kui muudatused on väiksemad ja varem valideeritud, paranevad tavaliselt kontrollimine ja taastumine. OT lisab seejärel deterministliku täitmise ja füüsilise protsessi tagajärjed, mis muudavad juhtumi rangemaks, mitte nõrgemaks.

Kokkuvõte: milline on praktiline reegel AI-ga loodud PLC-loogika jaoks?

Praktiline reegel on lihtne: kui te ei suuda selgitada olekumuutust ja tõestada I/O põhjuslikkust praeguse partii jaoks, on partii juba liiga suur.

Suured AI-ga loodud PLC-programmid ei ole ohtlikud, sest AI on ainulaadselt salapärane. Need on ohtlikud, kuna deterministlikud juhtimissüsteemid karistavad varjatud eeldusi ja suured partiid peidavad neid korraga palju.

Väikepartiide tarnimine on ohutum meetod, kuna see ühtib sellega, kuidas PLC-d tegelikult käituvad, kuidas vead tegelikult levivad ja kuidas kasutuselevõtumeeskonnad tegelikult siluvad. Genereerige vähem, kontrollige rohkem ja pange iga skaneerimistsükli eeldus oma kohta väärtustama.

Jätka avastamist

Interlinking

References

Ampergon Vallis Labi insenerimeeskond, kes on spetsialiseerunud tööstusautomaatika ja AI-põhise juhtimisloogika valideerimisele.

Käesolev artikkel on läbinud tehnilise kontrolli Ampergon Vallis Labi poolt, tuginedes 2026. aasta esimese kvartali laborikatsetele ja IEC 61131-3 standarditele.

Toimetuse läbipaistvus

See blogipostitus on kirjutatud inimese poolt ning kogu põhistruktuur, sisu ja algsed ideed on loonud autor. Siiski sisaldab see postitus teksti, mida on viimistletud ChatGPT ja Gemini abiga. Tehisintellekti tuge kasutati ainult grammatika ja süntaksi parandamiseks ning algse ingliskeelse teksti tõlkimiseks hispaania, prantsuse, eesti, hiina, vene, portugali, saksa ja itaalia keelde. Lõplik sisu vaadati autori poolt kriitiliselt üle, toimetati ja valideeriti ning autor kannab täielikku vastutust selle täpsuse eest.

Autorist:PhD. Jose NERI, Lead Engineer at Ampergon Vallis

Faktikontroll: Tehniline korrektsus kinnitati 2026-03-23 Ampergon Vallise labori QA meeskonna poolt.

Rakendamiseks valmis

Kasuta simulatsioonipõhiseid töövooge, et muuta need teadmised mõõdetavateks tulemusteks tootmises.

© 2026 Ampergon Vallis. All rights reserved.
|