PROGRAMUOJAMIEJI VALDIKLIAI LOGINĖS AUTOMATIKOS SISTEMOSE Pirmąjį programuojamąjį loginį valdiklį (PLV) 1968 metais sukūrė General Motors kompanijos inžinierių grupė, ieškodama alternatyvių sprendimų, galinčių pakeisti sudėtingas ir nelanksčias relines valdymo sistemas. Naujoji valdymo sistema, lyginant ją su relinėmis sistemomis, turėjo būti: - lanksti, lengvai programuojama ir perprogramuojama; - mažesnė, patikimesnė, paprastesnė ir pigesnė eksploatuoti. Per daugiau nei tris dešimtmečius, prabėgusius nuo pirmojo loginio valdiklio sukūrimo, mikroelektronikoje įvyko milžiniškas kokybinis šuolis, lėmęs spartų programuojamųjų loginių valdiklių progresą. Iš esmės pasikeitė valdiklių programavimo ir eksploatavimo sąlygos. Pavyzdžiui, jei iš pradžių, taupant valdiklio atmintį, kuriant valdymo programas, daug dėmesio buvo skiriama programų optimizavimui, dabar vargu ar tai beturi didesnės reikšmės. Be to, labai išaugo valdiklių funkciškumas. Pirmieji programuojamieji loginiai valdikliai buvo kuriami vienam tikslui – pakeisti griežtą elektromagnetinių ar elektroninių valdymo sistemų logiką lanksčia programuojama ir lengvai perprogramuojama logika. Vėliau jų vykdomų funkcijų apimtis sparčiai plėtėsi: dabar valdikliuose programuojamos laiko relės ir įvykių skaitikliai, analoginiai ir „fuzzy“ reguliatoriai; valdikliai vykdo visas aritmetines skaičiavimo operacijas ir gali būti sėkmingai naudojami sudėtingose hierarchinėse procesų valdymo, informacijos mainų ir vizualizavimo sistemose. Pagal tarptautinį IEC 1131 standartą PLV apibrėžiamas kaip „Pramoninėje aplinkoje naudoti pritaikyta skaitmeninė elektroninė sistema, turinti programuojamą atmintį, į kurią įrašomos vartotojo valdymo programos, skirtos specifinėms loginėms, valdymo nuoseklumo, laiko intervalų nustatymo, įvykių skaičiavimo, aritmetinėms funkcijoms realizuoti ir, pasitelkus skaitmeninius bei analoginius įėjimo/išėjimo modulius, įvairiems įrenginiams bei procesams valdyti“. Šis standartu reglamentuotas PLV apibrėžimas liudija, kad programuojamieji loginiai valdikliai – tai universaliausia loginių automatikos sistemų realizavimo priemonė, kuri leidžia įgyvendinti praktiškai visus valdymo uždavinius. 1. Programuojamųjų valdiklių sandara ir veikimo principas Programuojamieji loginiai valdikliai drauge su jiems skirtais išoriniais įrenginiais yra sukonstruoti taip, kad juos būtų paprasta jungti į pramonines valdymo sistemas ir išnaudoti visas jiems skirtas funkcijas. PLV funkcinė schema pateikta 1 paveiksle. 1 pav. Funkcinė valdiklio (su išoriniais įrenginiais) schema Pagrindiniai PLV funkciniai moduliai yra apibrėžti punktyrine linija. Su išoriniais įrenginiais valdiklis jungiamas per įėjimo ir išėjimo modulius. Įėjimo modulio paskirtis – transformuoti įėjime veikiančius signalus į loginius signalus, tinkamus apdoroti PLV, ir nukreipti juos į centrinį valdymo įtaisą. Išėjimo modulis vykdo atvirkštinę funkciją. Jis keičia PLV suformuotus loginius signalus į signalus, tinkamus vykdymo įtaisams valdyti. Pastaruoju metu naudojant specialias komunikacijos priemones – sąsajas, valdikliai sujungiami su juos valdančiais kompiuteriais arba jungiami į valdiklių sistemas, sudarydami sudėtingus valdymo sistemų tinklus. Atskirų valdiklių jungimas, kaip ir jų sujungimas su valdančiuoju kompiuteriu, vykdomas naudojant standartines ryšio sistemas, tokias kaip Profibus, DIN 19 245 ir kt. Šiuolaikiniai valdikliai dėl žymiai išaugusių funkcinių galimybių gali patys vykdyti valdančiųjų kompiuterių funkcijas. Pagal tai, kaip centrinis valdymo įtaisas yra sujungtas su įėjimo/išėjimo moduliais, PLV gali būti skirstomi į kompaktinius (įėjimo modulis, centrinis valdymo įtaisas ir išėjimo modulis yra viename korpuse) arba modulinius. Modulinis PLV gali būti konfigūruojamas individualiai. Praktiškai reikalingi moduliai montuojami specialiame korpuse ir tarpusavyje sujungiami per bendrą magistralę. Kasetiniai PLV – tai specialus modulinių PLV tipas, išplėtotas per pastaruosius keletą metų. Ši Keletas individualių spausdinto montažo būdu pagamintų modulių montuojami standartiniame korpuse, turinčiame bendrą informacijos mainų magistralę. Tokiu atveju pats vartotojas gali susikomplektuoti reikiamos konfigūracijos valdymo sistemą. PLV konstrukcija visada turi būti tokia, kad jis atlaikytų tipinės pramoninės aplinkos poveikius, susijusius su signalų lygiais, temperatūra, drėgme, maitinimo srovės nestabilumu ir mechaniniais poveikiais. 1.1. Centrinis valdymo įtaisas PLV centrinis valdymo įtaisas – tai iš esmės mikrokompiuteris, kurį speciali operacinė sistema paverčia programuojamuoju valdikliu, specialiai optimizuotu valdymo technologijų uždaviniams spręsti. Nesigilindami į centrinio valdymo įtaiso architektūrą, pakalbėsime tik apie programų vykdymo programuojamuosiuose valdikliuose principą ir su tuo susijusius valdymo problemų sprendimo ypatumus. Šiuolaikinės mikrokompiuterių sistemos veikia pagal vadinamąjį „von–Neuman“ principą. Pagal šį principą programa vykdoma nuosekliai eilutė po eilutės, visiškai nepriklausomai nuo to, kokia programavimo kalba ji parašyta. Nusistovėjusi programų vykdymo tvarka – iš viršaus į apačią ir iš kairės į dešinę. Įvykdžius paskutinę eilutę, kompiuteriuose programa užbaigiama, o programuojamuose valdikliuose ji vykdoma cikliškai, t.y. vėl grąžinama į pradžią ir vykdoma iš naujo. Programos vykdymo programuojamajame valdiklyje schema pateikta 2 paveiksle. .2 pav. PLV programos vykdymo schema Prieš pradedant vykdyti pirmąją programos eilutę, t.y. ciklo pradžioje, proceso įėjimų būsena įrašoma į tam tikrą atminties sritį, suformuojamas įėjimų lentelės atvaizdas. Įėjimų būsena nesikeičia viso programos ciklo metu, netgi tuomet, kai ji yra pakeičiama fiziškai. Panašiai ir išėjimai programos ciklo metu nėra nei įjungiami, nei išjungiami, o jų pasikeitusi būsena įrašoma tarpinėje atmintyje. Taip suformuojamas išėjimų lentelės atvaizdas. Tik pasibaigus ciklui, visi išėjimai fiziškai perjungiami pagal naujai suformuotą išėjimų lentelės atvaizdą. Programos eilutei vykdyti centriniame valdymo įtaise sugaištamas laikas, kuris, atsižvelgiant į PLV tipą ir operacijos pobūdį, gali keistis nuo keleto mikrosekundžių iki kelių milisekundžių. Laikas, reikalingas vienam PLV programos ciklui atlikti įskaitant ir išėjimų pagal lentelės atvaizdą aktualizavimą, vadinamas ciklo trukme. Kuo ilgesnė programa ir kuo ilgiau konkretus valdiklis vykdo vieną programos eilutę, tuo ilgesnė ciklo trukmė. Apytiksliai valdiklių ciklo trukmė būna tarp 1 ir 100 milisekundžių. Ciklinis PLV programos vykdymas naudojant proceso atvaizdą gali sąlygoti tokias pasekmes: • trumpesni nei ciklo trukmės laikas įėjimo signalai gali būti neužfiksuoti; • gali atsirasti iki dviejų ciklų trukmės delsa nuo signalo poveikio PLV įėjime iki pageidaujamos reakcijos jo išėjime Kai kada svarbu ciklo metu tiesiogiai prieiti prie PLV įėjimų ar išėjimų. Dėl to kai kurios PLV sistemos leidžia vykdyti programas, apeinant procesų atvaizdą. 1.2. Įėjimo modulis PLV įėjimo modulis – tai modulis, prie kurio jungiami loginius informacinius signalus formuojantys proceso jutikliai, valdymo mygtukai ir kiti loginiai sistemos elementai, kurių signalus reikia perduoti centriniam valdymo įtaisui. Įėjimo modulis vykdo šias funkcijas: • patikimai atskiria signalų grandines; • suderina valdymo signalų įtampų lygius su loginių signalų lygiais procesoriuje; • apsaugo centrinį valdymo įtaisą nuo išorinių įtampų bei triukšmų poveikio. Įėjimo modulio blokinė schema pateikta 3 paveiksle. 3 pav. Įėjimo modulio blokinė schema Pagrindinė šiuolaikinių įėjimo modulių grandis – tai optinė pora, šviesos signalu perduodanti į centrinį valdymo įrenginį įėjime veikiantį signalą. Ji elektriškai atskiria įėjimo signalus formuojančias valdymo grandines nuo loginių valdiklio grandinių ir apsaugo jautrią elektroniką nuo neleistino išorinių signalų įtampos padidėjimo. Šiuolaikinės optinės poros garantuoja apsaugą nuo maždaug iki 5 kV amplitudės viršįtampių. Įvairūs PLV gamintojai, siekdami patikimai apriboti signalus, naudoja arba nuosekliai įjungtus stabilitronus, arba atitinkamą kiekį nuosekliai sujungtų diodų ir optinių porų. Įėjimo grandinės nuo jų įėjime veikiančių pramoninių trikdžių (triukšmų) apsaugomos apsauginiais ekranais bei filtruojant įėjimo signalą. Filtruojama įėjime įjungtomis RC grandinėmis arba programiškai. Ir vienu, ir kitu atveju įėjime veikiantis signalas uždelsiamas, todėl į jį reaguojama tik tuomet, jei jis veikia pakankamai ilgą laiką. Trumpalaikiai signalai (triukšmai) į centrinį valdymo įtaisą neperduodami. Praktiškai tam užtenka palyginti nedidelės, kelių (120) milisekundžių trukmės įėjimo signalo delsos. Specialiems tikslams, pavyzdžiui, kuriant objektų pozicionavimo sistemas, tokia įėjimo signalo delsa gali būti pernelyg didelė, tuomet valdikliuose gali būti numatyti specialūs (greiti) įėjimo kanalai, kuriuose toks įėjimo signalų filtravimas nenaudojamas. 1.3. Išėjimo modulis Išėjimo modulis perduoda PLV centrinio valdymo įtaiso suformuotus signalus galiniams valdymo sistemos elementams valdyti. Išėjimo modulis vykdo tokias funkcijas: • suderina centrinio valdymo įtaiso suformuotų loginių signalų lygius su galinių valdymo sistemos elementų valdymo signalų lygiais ; • sustiprina signalų galią iki reikiamo galiniams valdymo sistemų elementams valdyti lygio; • apsaugo išėjimo modulius nuo trumpųjų jungimų ir perkrovų. Šie tikslai pasiekiami dviem iš esmės skirtingais būdais – naudojant relinius arba elektroninius išėjimo laipsnius. Naudojant išėjimo grandinėse reles, realizuojamos praktiškai visos išėjimo modulio funkcijos. Relių kontaktai ir jų ritės yra elektriškai izoliuoti vieni nuo kitų; relės – tai puikūs galios stiprintuvai, jos itin atsparios perkrovoms, tik apsaugai nuo trumpųjų jungimų reikia papildomų saugiklių. Nepaisant to, į relių grandines nuosekliai jungiamos optinės poros, lengvinančios pastarųjų veikimo sąlygas ir leidžiančios naudoti paprastesnes reles. Siekiant padidinti išėjimo modulio perjungimo greitį bei prailginti jo darbo amžių, naudojami elektroniniai išėjimo moduliai, kurių blokinė schema pateikta 4 paveiksle. 4 pav. Išėjimo modulio blokinė schema Ir išėjimo modulyje optinė pora yra svarbiausias elementas, padedantis realizuoti elektroninių grandinių apsaugą ir suderinti įtampas. Šiuolaikiniuose moduliuose apsaugos nuo trumpųjų jungimų, apsaugos nuo perkrovų bei galios stiprinimo funkcijas atlieka integriniai moduliai. Apsauga nuo trumpųjų jungimų įgyvendinama matuojant srovę, tekančią per galios rezistorius, ir išjungiant maitinimą įvykus trumpajam jungimui; temperatūros jutikliai naudojami apsaugai nuo perkrovų realizuoti. Darlingtono arba galios tranzistorinė išėjimo pakopa garantuoja reikiamą išėjimo galią. Nurodant išėjimo modulio leistinąją išėjimo galią, reikia skirti leistiną atskiro išėjimo galią ir leistiną modulio komutavimo galią. Komutuojamoji modulio galia visuomet kur kas mažesnė už modulį sudarančių komutatorių galią, kadangi galios tranzistoriai šildo vienas kitą. 1.4. PLV programavimo metodika 5 pav. Valdymo programos kūrimo etapinis modelis Valdiklio valdymo programa – svarbus automatinės valdymo sistemos komponentas. Pagal valdiklio atmintyje įrašytą programą centrinis valdymo įrenginys apdoroja įėjimo modulyje veikiančią ir atmintyje įrašytą informaciją ir formuoja valdymo poveikius išėjimo modulio išėjime. Programa turi būti sistemiškai parengta, gerai struktūrizuota bei aprūpinta reikiama dokumentacija. Programoje neturi būti klaidų, ja turi būti paprasta naudotis, ji turi būti nebrangi. Valdymo programų kūrimo etapinis modelis pateiktas 5 paveiksle. Programos kūrimo procedūros suskaidymas į tam tikrus etapus lemia sistemingą ir kryptingą proceso eigą ir leidžia pasiekti aiškių rezultatų, kuriuos prieš diegiant galima patikrinti. Pirmajame etape sudaromas tikslus ir detalus valdymo uždavinio aprašymas. Specifinis, kaip galima labiau formalizuotas valdymo sistemos funkcijų aprašymas leidžia išvengti bet kokių konfliktinių situacijų, pašalinti klaidingus ar neišsamius funkcionavimo sąlygų apibrėžimus. Šio etapo tikslas gali būti konkrečios sistemos GEMMA modelio sudarymas. Taip apibrėžiama proceso valdymo sistemos makrostruktūra. Antrajame etape plėtojama sprendimo koncepcija pirmajame etape nustatytų sąlygų pagrindu. Pasirinktasis sprendimo metodas turi numatyti grafinį, proceso eigą atspindintį valdymo sistemos funkcijų ir veikimo aprašymo būdą neatsižvelgiant į jos techninę realizaciją. Šiuos reikalavimus atitina mechanizmų judesių diagramos bei IEC 848 standartu reglamentuotos SFC diagramos. Kai valdymo uždavinys sudėtingas, sprendimas struktūrizuojamas į atskirus programinius modulius. Šiame etape turi būti parinktas ne tik valdiklis, bet ir visi procesui valdyti reikalingi išoriniai įrenginiai bei įtaisai. Tai svarbu dėl to, kad nuo galinių valdymo sistemos įtaisų charakteristikų (monostabilūs, bistabilūs, trijų padėčių) priklauso valdymo programos struktūra. Prireikus nustatoma valdymo programai realizuoti reikalingos atminties apimtis, užrašomos atminties ir vykdymo įtaisų valdymo loginės lygtys. Iš esmės, šiame etape suprojektuojama proceso valdymo sistema, kuri vėliau gali būti realizuota tiek aparatinėmis priemonėmis, tiek programiškai. Trečiajame etape rašoma valdiklio valdymo programa. Atsižvelgiant į uždavinio sudėtingumą ir valdiklio galimybes, pasirenkama viena ar kita programavimo kalba. Pastaruoju metu plinta IEC 1131-3 standartu reglamentuotos valdiklių programavimo kalbos. Vartotojų patogumui standartu aprobuotos dvi grafinės (kontaktinių schemų ir funkcinių blokdiagramų), dvi tekstinės (komandų sąrašo ir struktūrizuoto teksto) ir viena mišrios struktūros (nuosekliųjų funkcinių diagramų) programavimo kalbos. Kai sistemos valdymo algoritmas apibrėžtas pagal IEC 848 standartą sudaryta SFC diagrama, jei tik leidžia valdiklio galimybės, patogiausia naudotis specialiai tam pritaikyta nuosekliųjų funkcinių diagramų (SFC) programavimo kalba. Jei uždavinys nėra itin sudėtingas ir vartotojas gerai susipažinęs su kontaktinių ar bekontakčių loginių sistemų schemotechnika, patartina rinktis kontaktinių schemų (LD – ladder diagram) ar funkcinių blok-diagramų (FBD) programavimo kalbas. Jei programuotojas nėra loginių valdymo sistemų schemotechnikos specialistas, jis gali rinktis asemblerio tipo tekstinę komandų sąrašo (IL – instruction list) programavimo kalbą. Aukšto lygio struktūrizuoto teksto (ST – structured tekst) programavimo kalba savo struktūra artima algoritminei Pascal programavimo kalbai gali būti naudojama matematiniu pagrindu sudarytoms programoms, pavyzdžiui, valdymo algoritmus aprašantiems moduliams kurti. Visais atvejais sudarytosios valdymo programos ar jų dalys prieš naudojamos turi būti išbandytos. Tai leidžia aptikti ir pašalinti klaidas dar pradiniame sistemų kūrimo etape. Ketvirtajame etape tikrinama automatinės valdymo sistemos ir valdomojo įrenginio tarpusavio sąveika. Kai uždavinys sudėtingas, patartina sistemą derinti sistemingai, žingsnis po žingsnio. Naudojant šį metodą, tiek pačios sistemos, tiek ir programos klaidos lengvai nustatomos ir pašalinamos. 2. Programuojamųjų loginių valdiklių resursai ir bendrieji programavimo elementai Svarbiausi PLV galimybes apibūdinantys resursai yra jo įėjimai (I), išėjimai (Q) ir atmintis (M). Tik per įėjimus valdiklis gali priimti išorinę informaciją, tik per savo išėjimus jis gali lemti tolesnę proceso eigą. Jei nėra papildomų nurodymų, šie simboliai reiškia tik binarinius įėjimus/išėjimus ar atminties elementų ląsteles, vadinamas vėliavėlėmis. Jei leidžia valdiklio galimybės, gali būti operuojama ir didesniais kaip vieno bito (BOOL) resursais, pavyzdžiui, baitais (BYTE) arba žodžiais (WORD). Tokiu atveju programuojant reikia nurodyti duomenų tipą. 2.1. Kintamųjų adresavimas Kai kurie valdiklių kintamieji yra tiesiogiai susieti su aparatūriškai prieinamais valdiklio įėjimais, išėjimais ir atminties elementais. Fizinės ir loginės šių kintamųjų pozicijos yra valdiklių gamintojų atitinkamai nustatytos. Programuojant galima tiesiogiai kreiptis šių kintamųjų adresais. Adresuojant tiesiogiai, prieš atitinkamo resurso žymėjimą dedamas simbolis . Pavyzdžiui, simbolių rinkiniu %IX12 arba %I12 programuojamas dvyliktojo įėjimo bito adresas; simbolių rinkiniu %IW5 – penktojo įėjimo žodžio adresas, simbolių rinkiniu %QB8 – aštuntasis išėjimo baitas, o simbolių rinkinių %MW27 – dvidešimt septintasis atminties žodis. Tiesioginį kintamųjų adresavimą galima taikyti tik programose. Kad programiškai organizuotos funkcijos ar funkciniai blokai (standartinės paprogramės) išliktų nepriklausomi nuo valdiklio tipo ir juos būtų galima kuo plačiau panaudoti, jie programuojami taikant simbolinius adresus. Simbolinis adresas arba identifikatorius sudaromas pasitelkiant didžiąsias arba mažąsias lotyniškas raides, skaičius ar apatinius brūkšnelius. Identifikatorius visada turi prasidėti raide ar brūkšneliu. Apatinis brūkšnelis gali būti panaudotas norint padaryti identifikatorių lengviau suprantamą. Pavyzdžiui, identifikatoriai Stop_var ir Stopvar yra skirtingi, o identifikatoriai Stopvar ir STOPVAR – vienodi. 2.2. Duomenų pateikimas IEC 1131 standartas apibrėžia įvairių tipų duomenų pateikimo būdus. Be loginius kintamuosius (BOOL) apibūdinančių skaitmenų 0 ir 1, gali būti operuojama sveikaisiais skaičiais, skaičiais su slankiuoju kableliu, dvejetainiais, aštuntainiais, šešioliktainiais skaičiais ir laiko intervalus, datas ir laiką žyminčiais duomenimis. Be to, valdikliai gali operuoti simbolių sekomis (STRING), kurios gali būti reikalingos keičiantis informacija, pavyzdžiui, tarp valdiklių, tarp kitų automatinės sistemos elementų ar programuojant tekstus, pateikiamus valdymo ar vaizdavimo įtaisų displėjuose. Įvairių duomenų tipų sąrašas pateiktas 1 lentelėje 1 lentelė Duomenų tipų pavyzdžiai 2.3. Kintamųjų deklaravimas Tai procedūra, kurios metu nurodomas kintamojo tipas, o patys kintamieji susiejami su resursais. Tekstinėse programavimo kalbose (IL ir ST) kintamieji deklaruojami panašiai kaip PASCAL programavimo kalboje. Grafinėje programavimo kalboje priimtina lentelės forma (IEC 1131 standartu neapibrėžta). Programavimo paketai paprastai yra aprūpinti specialiomis kintamųjų deklaravimo priemonėmis. Toliau pateikiamas duomenų tipo priskyrimo kintamiesiems, juos deklaruojant, pavyzdys: VAR Temp :INT (*Temperatūra *) Rank :BOOL (*Rankinio valdymo vėliavėlė *) Pilnas, Atviras :BOOL (*Vėliavėlės pažymėti „Pilnas“, „Atviras“*) END_VAR Čia objekto temperatūrą atspindintis kintamasis Temp deklaruojamas kaip INTEGER tipo kintamasis ir bus reiškiamas tik sveikaisiais skaičiais, o kiti kintamieji – Rank, Pilnas, Atviras deklaruojami kaip BOOL tipo kintamieji ir galės įgyti tik 0 ir 1 reikšmes. Susiejant kintamuosius su resursais, kintamieji priskiriami vienam iš šešių IEC 1131-3 standartu pripažįstamų kintamųjų tipo. Kiekvienas tipas turi savo raktažodį, kuriuo prasideda kintamojo deklaracija: VAR_INPUT (įėjimo kintamasis), VAR_OUTPUT (išėjimo kintamasis), VAR_IN_OUT (įėjimo ir išėjimo kintamasis), VAR (lokalus kintamasis), VAR_GLOBAL (globalus kintamasis), VAR_EXTERN (išorinis kintamasis). Lokalūs kintamieji naudojami neišeinantiems į išorę tarpiniams rezultatams įvardyti. Šie kintamieji yra prieinami tik viename konkrečiame programos organizaciniame modulyje. Globalieji ir išoriniai kintamieji yra prieinami visuose programos organizaciniuose moduliuose. 2.4. Kintamųjų inicializavimas Labai dažnai svarbu kintamajam suteikti pradinę reikšmę. Tai gali būti atliekama deklaruojant kintamuosius, pavyzdžiui: VAR_GLOBAL Tuzinas :INT :=12; END_VAR Taip kiekvienam kintamajam gali būti suteikiama speciali pradinė reikšmė. Būtina, kad pradedant vykdyti programą visi kintamieji turėtų savo pradines reikšmes. Programavimui palengvinti IEC 1131 standartas numato pradines kintamųjų reikšmes, kurias jie įgyja, jei nenurodytos specialios pradinės reikšmės. Tipinės kintamųjų reikšmės pateiktos 2 lentelėje. 2 lentelė Tipinės pradinės kintamųjų reikšmės 2.5. Programų organizaciniai moduliai Valdiklių programos skaidomos į individualius organizacinius modulius, sudarančius tokius programos lygius: • programas; • funkcinius blokus; • funkcijas. Tipiniams uždaviniams spręsti IEC 1131 standartas numato daugybę standartinių funkcijų ir funkcinių blokų. Be to, IEC 1131 standartas leidžia kurti ir savas funkcijas bei funkcinius blokus. Taigi gamintojai arba vartotojai konkretiems uždaviniams spręsti gali kurti originalius modulius. Funkcijos – tai programiniai moduliai, kurie gali formuoti tik vieną rezultatą (duomenų elementą). Funkcija neturi informacijos apie pradinę būseną. Tai reiškia, kad kreipiantis į konkrečią funkciją su tuo pačiu argumentu (įėjimo parametrais), visada gaunamas tas pats rezultatas. Funkcijos ir jų iškvietimo procedūra, atsižvelgiant į programavimo kalbą, gali būti pateikiamos grafiškai arba tekstu. Iškvietus funkciją reikia suformuoti (prijungti) visus įėjimus ir išėjimus. Standartas numato didelę įvairovę tipinių funkcijų, kurių parametrai gali būti įvairių tipų kintamieji. Grafiškai funkcija yra pateikiama stačiakampiu. Visi įėjimo parametrai nurodomi kairiojoje, o išėjimo parametrai dešiniojoje jo pusėje. Funkcijos pavadinimas įrašomas į stačiakampio vidų. Formalūs įėjimo parametrai gali būti nurodyti vidinėje stačiakampio dalyje, prie jo briaunų. Įėjimo ir išėjimo kintamieji gali priklausyti įvairioms duomenų grupėms: ANY_NUM (visi REAL tipo ir visi sveikųjų skaičių – INT, UINT ir t.t. duomenys), ANY_INT (visi INT, UINT ir t.t. tipo duomenys), ANY_REAL (visi REAL arba LREAL tipo duomenys), ANY_BIT (visi bitų sekų tipo duomenys,tokie kaip BOOL, BYTE, WORD ir t.t.) ir kt. Svarbiausios standartinės funkcijos ir jų apibūdinimas pateikti 3 lentelėje. Funkciniai blokai – tai programiniai moduliai, formuojantys vieną ar kelis išėjimo parametrus. Svarbi funkcinių blokų savybė yra ta, kad juos galima kopijuoti. Kai valdymo programoje reikia panaudoti funkcinį bloką, pagal jo pavyzdį sukuriama kopija. Tai atliekama deklaruojant, t.y. suteikiant funkciniam blokui pavadinimą (identifikatorių). Susieti su identifikatoriumi funkcinio bloko kopijos statusą (išėjimo parametrų reikšmės ir vidiniai kintamieji) apibūdinantys duomenys laikomi duomenų bazėje. Informacija apie funkcinio bloko kopijos statusą išlieka nepakitusi nuo vienos operacijos iki kitos. 3 lentelė Svarbiausios standartinės funkcijos Pavadi-nimas Žymėjimas Įėjimo signalų tipas Išėjimo signalų tipas Aprašymas Loginės funkcijos AND & ANY_BIT ANY_BIT Visų įėjimų IR operacija OR >1 ANY_BIT ANY_BIT Visų įėjimų ARBA operacija XOR 2k+1 ANY_BIT ANY_BIT Išskirtinis visų įėjimų ARBA NOT ANY_BIT ANY_BIT Inversija Bitų perstūmimo funkcijos SHL IN:ANY_BIT N:ANY_INT ANY_BIT Perstumti IN signalą per n bitų į kairę, atsilaisvinusias pozicijas užpildant nuliais SHR IN:ANY_BIT N:ANY_INT ANY_BIT Perstumti IN signalą per n bitų į dešinę, atsilaisvinusias pozicijas užpildant nuliais ROR IN:ANY_BIT N:ANY_INT ANY_BIT Cikliškai perstumti IN signalą į dešinę per n bitų ROL IN:ANY_BIT N:ANY_INT ANY_BIT Cikliškai perstumti IN signalą į kairę per n bitų Palyginimo funkcijos GT > ANY_BIT ANY_NUM ir kt. BOOL Daugiau GE >= ANY_BIT ANY_NUM ir kt. BOOL Daugiau arba lygu EQ = ANY_BIT ANY_NUM ir kt. BOOL Lygu LE ANY_BIT ANY_NUM ir kt. BOOL Nelygu Aritmetinės funkcijos ADD + ANY_NUM ANY_NUM Sumuoja visų įėjimų signalus MUL * ANY_NUM ANY_NUM Sudaugina visų įėjimų signalus SUB - ANY_NUM ANY_NUM Atima antrojo įėjimo signalą iš pirmojo įėjimo signalo DIV / ANY_NUM ANY_NUM Pirmojo įėjimo signalą dalija iš antrojo įėjimo signalo MOVE : = ANY_NUM ANY_NUM Priskiria įėjimus išėjimams Algebrinės ir trigonometrinės funkcijos ABS ANY_NUM ANY_NUM Nustato absoliučią reikšmę SQRT ANY_NUM ANY_NUM Traukia kvadratinę šaknį LN ANY_NUM ANY_NUM Skaičiuoja natūrinį logaritmą EXP ANY_NUM ANY_NUM Skaičiuoja eksponentės reikšmę SIN ANY_NUM ANY_NUM Skaičiuoja sinusą COS ANY_NUM ANY_NUM Skaičiuoja kosinusą TAN ANY_NUM ANY_NUM Skaičiuoja tangentą ASIN ANY_NUM ANY_NUM Skaičiuoja arcsin (Pagr. reikšmė) ATAN ANY_NUM ANY_NUM Skaičiuoja arccos (Pagr. reikšmė) Naudojami grafiniai ir tekstiniai kreipimosi į funkcinių blokų kopijas algoritmai. Kreiptis galima tik į deklaruotas funkcinių blokų kopijas, nurodant jų įėjimų parametrus. Grafiškai funkciniai blokai, kaip ir funkcijos, vaizduojami stačiakampiais. Jų įėjimo parametrai vaizduojami iš kairės stačiakampio pusės, o išėjimo – iš dešinės. Funkcinio bloko kopijos pavadinimas įrašomas stačiakampio viduje. Formaliųjų parametrų pavadinimai įrašomi viduje, prie kairiosios ir dešiniosios stačiakampio briaunų. Adresacijai skirtas identifikatorius rašomas virš stačiakampio. Kai kurių IEC 1131 standartu reglamentuotų funkcinių blokų sąrašas pateiktas 4 lentelėje. 4 lentelė Standartiniai funkciniai blokai Programos susideda iš bet kokios programavimo kalbos elementų ir konstrukcijų, reikalingų norimai valdikliu valdomos mašinos funkcionavimo tvarkai ar pageidaujamam proceso pobūdžiui gauti. Programų savybės labai panašios į funkcinių blokų savybes. Skirtinga yra tik jų paskirtis. Būdinga, kad tiesiogiai adresuojamus kintamuosius galima naudoti tik programose. 3. Grafinės programavimo kalbos Grafinių programavimo kalbų ypatybė yra ta, kad jos maksimaliai priartintos prie įrenginių valdymo schemų techninės dokumentacijos standartų. Sakysime, FBD programavimo kalba yra visiškai suderinta su techninės dokumentacijos standartu IEC 617, reglamentuojančiu elektroninių schemų braižymą, o LD programavimo kalba atitinka kontaktinių relinių schemų sudarymo technologiją. Dėl to šios programavimo kalbos yra ypač patrauklios, kai programuojamoji sistema jau aprūpinta technine valdymo sistemos dokumentacija. Pavyzdžiui, tai būna rekonstruojant jau veikiančias sistemas, keičiant griežtos logikos sistemas programuojamomis ir t.t. 3.1. Kontaktų diagramų (LD) programavimo kalba Šios programavimo kalbos ypatybė yra ta, kad sistemos veikimo logika modeliuojama kontaktų grandinėmis taip, kaip tai realizuojama relinėse–kontaktinėse valdymo schemose. Ši kalba yra kilusi iš kontaktinių–relinių grandinių principinių schemų ir yra ypač paranki, kai reikia keisti į programuojamą logiką griežtos logikos relines sistemas. Kontaktų diagramų kalboje naudojami elementai – tai įvairių būsenų kontaktai ir relių ritės. Diagramos braižomos eilutėmis, kurios iš abiejų pusių yra apribotos maitinimo šaltinio linijomis. 6 paveiksle pavaizduota tipinė eilutės struktūra. Šiame pavyzdyje įėjimo kintamojo I1.5 būsena tiesiogiai priklauso išėjimui Q1.1. 6 pav. Eilutės struktūra Svarbiausi LD programavimo kalbos elementai pateikti 7 paveiksle. 7 pav. LD programavimo kalbos elementai LD kalboje kontaktais programuojami logines valdymo sąlygas formuojantys kintamieji. Tai gali būti bet kurie – įėjimo, tarpiniai (atminties) ar išėjimo kintamieji. Normaliai atviras kontaktas sujungiamas tada, kai juo modeliuojamas įėjimo kintamasis įgyja reikšmę lygią „1“, o išjungiamas, jam įgijus reikšmę lygią „0“. Normaliai uždaras kontaktas veikia priešingai – jis išjungiamas, loginiam kintamajam įgijus reikšmę, lygią „1“, o sujungiamas, kai kintamojo reikšmė tampa lygi „0“. Frontų kontaktai vieno ciklo periodui sujungiami loginiam kintamajam keičiant savo reikšmę iš „0“ į „1“ (teigiamo fronto kontaktas) arba iš „1“ į „0“ (neigiamo fronto kontaktas). Išėjimo kintamieji modeliuojami relių ritėmis. Ritė suaktyvinama ir su ja susietas išėjimo kintamasis įgyja „1“ reikšmę tuomet, kai jos grandinėje kontaktais sumodeliuota loginė sąlyga yra tenkinama. Inversinės relės ritės atveju išėjimo kintamojo reikšmė invertuojama. Įjungimą įsimenančios relės ritė S išlaiko įgytąją „1“ reikšmę ir po to, kai ją suaktyvinusi loginė sąlyga nebetenkinama. Išjungimą įsimenančios relės ritė R išsijungia, kai loginės sąlygos rezultatas tampa lygus „1“. Ši ritės būsena palaikoma tol, kol atitinkamas išėjimo kintamasis nebus įjungtas su S komanda. Abi frontų relių ritės P ir S įjungiamos signalui keičiantis iš „0“ į „1“ (teigiamas frontas) arba iš „1“ į „0“ (neigiamas frontas). Svarbiausios loginės operacijos IR, ARBA, NE modeliuojamos atitinkamai sujungiant kontaktus. Šių loginių funkcijų kontaktinės realizacijos pateiktos 8 paveiksle. IR funkcija realizuojama nuosekliai sujungus du kontaktus (8 a pav.). Išėjimas Q1.1 suaktyvinamas tik tuomet, kai abu įėjimo signalai I1.4 ir I1.5 yra aktyvūs. Visais kitais atvejais išėjimas Q1.1 yra išjungtas. Loginė ARBA funkcija realizuojama kontaktus sujungus lygiagrečiai (8 b pav.). Išėjimas Q1.2 suaktyvinamas, kai bent vienas iš įėjimų – I1.4 arba I1.5 yra aktyvus arba, kai aktyvūs abu įėjimai. Loginę NE funkciją paprasčiausia realizuoti panaudojus normaliai uždarą kontaktą (8 c pav.). 8 pav. Pagrindinės loginės kombinacijos kontaktų diagramose Kontaktų grandinėmis patogu modeliuoti logines sąlygas, tačiau jos visiškai netinka, kai reikia programuoti kitokias logines operacijas, pavyzdžiui, įvykių skaičiavimo, delsos ir pan. Šiam tikslui LD programavimo kalboje galima naudoti FBD kalbos funkcijas ir funkcinius blokus. Svarbu tik, kad šie blokai turėtų loginius valdymo įėjimus ir išėjimus, kuriais jie jungiami į kontaktų diagramas. Kai funkcijos ar funkciniai blokai neturi loginių įėjimų bei išėjimų (aritmetinės, algebrinės, trigonometrinės funkcijos), norint juos įkomponuoti į LD diagramas, būtina suformuoti papildomus loginius įėjimus bei išėjimus EN ir ENO, įjungiančius funkciją atitinkamai operacijai vykdyti ir formuojančius loginius signalus, kai atitinkama operacija sėkmingai įvykdyta. Kuriant sudėtingų procesų programas gali tekti atsižvelgti į logines sąlygas ir tam tikrą programos dalį praleisti, t.y. programoje daryti šuolį. Grafinėse programavimo kalbose šitai gali būti atlikta įvedant į programą specialų šuolio identifikatorių. LD programos fragmentas su užprogramuotu šuoliu pavaizduotas 9 paveiksle. 9 pav. Programos šuolio programavimas LD kalba Paveiksle pateiktame programos fragmente, vykdant programą, šuolis į programos vietą pažymėtą identifikatoriumi Variant_1 bus atliekamas, jei bus tenkinama loginė sąlyga: %I1.4 AND %I1.5 = TRUE. Jei ši sąlyga netenkinama, programa į šuolio nuorodą nereaguoja ir vykdo visas eilutes, esančias tarp paveikslėlyje parodytų LD eilučių. Jei sąlyga tenkinama, tarpe esančios programos eilutės nevykdomos (jos praleidžiamos) tol, kol cikliškai vykdant programą, minėtoji sąlyga vėl nebus tenkinama. 4. Tekstinės programavimo kalbos Grafinės valdiklių programavimo kalbos sukurtos siekiant sudaryti didžiulei automatikos ir elektronikos specialistų armijai gerai įsisavinusiai automatikos sistemų schemotechniką kaip galima palankesnes sąlygas greitai pereiti prie pažangiausių automatizavimo technologijų, kuriamų panaudojant kompiuterines valdymo ir informacijos apdorojimo priemones. Programavimas grafine kalba nereikalauja specialaus pasirengimo. Suprojektuotoji automatinės sistemos valdymo schema praktiškai sutampa su atitinkama grafine kalba sudaryta programa. Tačiau reikia pastebėti, kad nepaisant šių patrauklių savybių grafinės programavimo kalbos turi ir tam tikrų trūkumų. Visų pirma jos nėra kompaktiškos, jų struktūra labiau atspindi funkcinius ryšius tarp struktūrinių elementų, o ne loginio proceso veiksmų seką, todėl jos nėra vaizdžios. Be to šios kalbos ne automatikos specialistams yra ir sunkiai suprantamos. Siekiant sudaryti ir kitų sričių (ypač informatikos) specialistams lygias galimybes dalyvauti diegiant automatizuotas valdymo technologijas, IEC 1131 standartu reglamentuotos ir dvi tekstinės programavimo kalbos. Tai nesudėtinga komandų sąrašo (IL) kalba ir aukšto lygio struktūrizuoto teksto (ST) kalba. 4.1. Struktūrizuoto teksto (ST) kalba Tai aukšto lygio struktūrizuota programavimo kalba, skirta automatizavimo problemoms spręsti. Naudojant šią kalbą, galima programuoti sudėtingus procesus, o tai dažnai būna sudėtinga atlikti panaudojus grafines programavimo kalbas. Pagrindiniai ST programavimo kalbos elementai yra pateikti 5 lentelėje. 5 lentelė Struktūrizuoto teksto elementai Teiginys Pavyzdys Priskyrimas := A:=B; CV:=CV+1; Y := COS(X); Funkcinių blokų iškvietimas RS_trig(S:=Klaida,R1:=mygtukas); Sirena :=RS_trig.Q1 Išėjimas iš funkcijos arba iš funkcinio bloko RETURN RETURN Išrinkimo teiginiai IF D:=BB - 4AC; IF D= Daugiau ar lygu > Daugiau Nelygu ) Baigia operatorių grupavimą AND Daugiabitis AND Pavyzdys: IF I1.0 AND I1.1 THEN SET O1.0 OTHRW RESET O1.7 OR Daugiabitis OR Pavyzdys: IF I1.0 OR I1.1 THEN SET O1.0 OTHRW RESET O1.7 EXOR Daugiabitis EXCLUSIVE OR Pavyzdys: IF I1.0 EXOR I1.1 THEN SET O1.0 OTHRW RESET O1.7 TO Naudojamas su LOAD, perduodant pirmo kintamojo turinį antram Pavyzdys: THEN LOAD V500 TO R6 INC Vienbaitinio kintamojo reikšmę padidina vienetu DEC Vienbaitinio kintamojo reikšmę sumažina vienetu N Neigiamas ar loginio 0 (FALSE) nustatymas Pavyzdys: IF N O1.0 THEN SET F1.0 Kai kurie programavimo ypatumai su „Statement List“ Matematinės išraiškos Programuojant gali prireikti įvairių matematinių išraiškų, kurios gaunamos iš loginių lygčių. Žemiau yra parodytas pavyzdys, kaip panaudojama matematinė išraiška programuojant. Pavyzdys: loginės lygties O0.1=(FW0=1234)*(R1≠V0) programinė išraiška: IF ( FW0 = V1234 ) AND ( R1 V0 ) THEN SET O0.1 Kaip ir kitose programavimo kalbose reikia atkreipti dėmesį į korektišką skliaustų panaudojimą, nes nuo to priklauso rezultato reikšmė. 5. Apibendrinimas Valdiklių taikymo loginėse sistemose galimybių ir standartinių programavimo kalbų analizė rodo, jog programuojamieji loginiai valdikliai šiuo metu yra pati universaliausia loginių procesų automatizavimo priemonė. Tai patvirtina didžiulės jų funkcinės galimybės bei programavimo priemonių įvairovė. Aptartosios standartinės programavimo kalbos sukurtos taip, kad tenkintų įvairaus profilio specialistų, dirbančių procesų automatizavimo sferoje poreikius. Svarbu, kad grafinės (LD ir FBD) ir SFC diagramų programavimo kalbos yra visiškai priartintos prie atitinkamų dokumentacijos rengimo standartų. Dėl to tinkamai suprojektuotas ir reikiama dokumentacija aprūpintas logines valdymo sistemas galima tiesiogiai programuoti valdikliuose, netgi neturint specialių programavimo įgūdžių. Tuo tarpu tekstinės programavimo kalbos, ypač ST kalba, patrauklios automatikos srityje dirbantiems informatikos specialistams.
Šį darbą sudaro 4768 žodžiai, tikrai rasi tai, ko ieškai!
★ Klientai rekomenduoja
Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?
Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!
Norint atsisiųsti šį darbą spausk ☞ Peržiūrėti darbą mygtuką!
Mūsų mokslo darbų bazėje yra daugybė įvairių mokslo darbų, todėl tikrai atrasi sau tinkamą!
Panašūs darbai
Kiti darbai
Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.
Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.
Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!