2013 m. balandžio 3 d., trečiadienis

4. Valdymo funkcijų programavimas



Tikslai:
  1. Suprasti valdiklių programavimo principus
  2. Taikyti simbolinius ir absoliučius vardus.
  3. Taikyti kontaktų plano elementus rengiant programas LAD kalba.
  4. Panaudoti trigerius, skaitiklius, laiko registrus valdymo programose
  5. Išmanyti keitiklius, komparatorius, sveikų ir realių skaičių aritmetines ir kitas komandas bei suprasti jų taikymo galimybes

Temos studijoms reikalingas laikas:
Paskaitos
8 val.
Praktika
10 val.
Savarankiškas darbas
10 val.
Programos valdikliai dirba realiu laiko masteliu. Skirtingai nuo įprastinių programų kompiuteriams, programa skenuojama nuo pradžios iki pabaigos ir tie ciklai nuolat kartojami. Per vieną darbo ciklą perskaitoma įėjimo informacija, įvykdomi programoje nurodyti veiksmai ir rezultatas nusiunčiamas į išėjimo grandines. Paskui ciklas vėl kartojamas.
Kai kurių PLV ciklo trukmė gali būti fiksuota, bet daugumos ji priklauso tik nuo programos ilgio.
PLV gali būti programuojami dviem skirtingais metodais, priklausomai nuo turimų priemonių:
1.      Naudojant rankinį programatorių programuojama Būlio (boolean) kalba. Programatorius turi  turėti pagrindines programavimo priemones, bet reikalingos ir papildomos aptarnavimo priemonės: įjungimo/išjungimo į liniją (on/off line), EPROMai, juostiniai kaupikliai, spausdintuvai.
2. Specialiu programatoriumi arba PC klasės kompiuteriu sujungtu su valdikliu per PPT sąsajos įtaisą naudojant  ir kitas kalbas. Programos gali būti įkeliamos į valdiklius iš  FEPROMų arba per RS 233/244 sąsajas bei per  tinklą.
Susipažinsime su valdiklių programavimu LAD (kontaktų plano diagramų) sudarymo principais Visi PLV turi instrukcijų rinkinį, kai kurios instrukcijos yra mnemonikos (mnemonics), kitos yra tik simboliai funkcijoms išreikšti.
Lentelėje 4.1 nurodyti pagrindiniai identifikatoriai, kuriuos naudojame kuriant valdymo programą STEP 7 aplinkoje anglų kalba:

Lentelė 4.1 Pagrindiniai raidinių identifikatorių žymėjimai
Identifikatorius
Žymėjimas
Pavadinimas
I
Įėjimo kintamasis
Q
Išėjimo kintamasis
M
Atminties kintamieji
T
Laiko registras (taimeris)
C
Skaitiklis
AI
Analoginio įėjimo kintamasis
AQ
Analoginio išėjimo kintamasis
AC
Akumuliatorius
K
Konstanta
Programavimo kalbos paprastai leidžia naudoti ne tik absoliučiuosius, bet ir simbolinius adresus.
Pavyzdžiui, STEP 7 programoje gali būti panaudoti ne tik absoliutiniai, pvz., I 32.0, M 2.7, T3 ir pan., bet ir simboliniai vardai, pvz., "Startas", "Variklis_l" ir pan., leidžiantys lengviau suprasti programą. Reikia skirti dviejų tipų simbolinius vardus:
Ø              Bendrus (Shared), kurie gali būti naudojami visoje vartotojo programoje, todėl jie turi būti unikalūs;
Ø              Vietinius (Local), kurie naudojami tik bloke, kuriame buvo deklaruoti ir todėl gali būti naudojami kituose blokuose skirtinga prasme.

Simbolinius vardus galima priskirti:

Įėjimams ir išėjimams
I, Q
Periferiniams įėjimams ir išėjimams
PI, PQ;
Bitinei atmintinei
M;
Taimeriams ir skaitikliams
T; C;
Loginiams blokams
FB, FC, OB, SFB, SFC;
Duomenų blokams
DB;
Vartotojo nustatytiems duomenų tipams
UDT;
Kintamųjų lentelėms
VAT



Lokaliniai simboliniai vardai gali būti priskirti blokų parametrams:
IN, OUT,  STAT, TEMP.
Bendri simboliniai vardai yra deklaruojami simbolių lentelėje, o lokaliniai - bloko deklaravimo lentelėje programavimo metu.
Negalima priskirti simbolinių adresų DB adresams (DBD, DBW, DBB ir DBX), nes tai daroma duomenų blokų deklaravimo lentelėje. OB ir kai kurie SFB ir SFC turi iš anksto nustatytus simbolinius vardus, kuriuos galima perkelti į simbolių lentelę.
Tuščia simbolių lentelė (Symbol objektas) yra sukuriama automatiškai,
kuriant S7 programą (4.1. pav.). Joje yra tokie stulpeliai:
Symbol                         Simbolinis vardas ne ilgesnis kaip 24 simboliai;
Address                        Absoliutus adresas, kurio sintaksė patikrinama po įvedimo;
Data Type                     Duomenų tipą gali pasirinkti pats vartotojas ir, jei tai     nepadaroma, yra įvedamas iš anksto nustatytas tipas;
Comment                     Komentaras (ne ilgesnis kaip 80 simbolių) yra neprivalomas,                                                              tačiau jis leidžia efektyviau kurti programų dokumentaciją;
O/M/C                         Šie stulpeliai, kuriuos galima įjungti komanda View-»Columns O, M, C, (žr. pav. 4.2) rodo, kad simboliniams vardams priskirti specialūs atributai. Tai reiškia, kad simbolių         vardas, prie kurio pažymėta: O - gali būti panaudotas WinCC, M - yra susietas su pranešimu SCAN, C - gali būti suteiktos komunikavimo galimybės.
4.1 pav. Simbolių lentelė

4.2 pav. Simboliniams vardams priskiriami atributai

Simboliniai vardai galioja tik tam CP, kuriam yra sukurta S7 programa. Norint tuos pačius vardus panaudoti kitur, reikia sukurti naujas simbolių lenteles, pvz., kopijuojant.
Kad išvengti neunikalių vardų simbolių lentelėje, leidžiama pradėtą simbolių lentelės pildymą nutraukti bet kuriuo momentu ir tęsti vėliau. Neunikalus simboliniai vardai atsiranda, kai panaudojamas tas pats vardas (simbolinis ar absoliutus), jau esantis lentelėje. Tai dažniausiai atsitinka kopijuojant ir prijungiant. Simbolių lentelėje neunikalus simboliniai vardai yra išryškinami, kad vartotojas galėtų juos pakeisti. Naudojant filtrą, galima atskirai parodyti unikalius ir neunikalius simbolinius vardus.
Simbolių lentele galima atverti keliais būdais:
Ø  Du kartus spragtelėjus ant Symbol objekto SIMATIC Manager lange;
Ø  Pažymėjus Symbol objektą  ir  įvykdžius  komandą  Edit->Open Object;
Ø  LAD/STL/FBD Editor lange įvykdžius komandą Options->Symbol Table. Simbolių vardas įterpiamas prieš pažymėtą eilutę naudojant komandą Insert->Symbol. Be to, galima lentelės eilutes kopijuoti ir modifikuoti naudojant Edit meniu. Simbolių lentelė gali būti išsaugota ir užverta nepilnai užpildyta.
    Simboliniai vardai, panaudojus komandą View->Sort., gali būti surūšiuoti pagal visus 4 pagrindinius stulpelius. Panaudojus filtrą (komanda View->Filter.) galima atskirai parodyti unikalius, neunikalius, su atributais ir visus simbolinius vardus. Tame pačiame dialogo lange galima nustatyti ir kitus simbolinius vardus. Pvz., nustačius filtravimo kriterijus, kuriuos pilnai visus įvykdžius, lentelėje parodomi nufiltruoti kintamieji, o taip pat priskirti jiems atributai O, M arba C.
Yra dar dvi galimybės priskirti simbolinį vardą kintamajam atskirame dialogo lange, programavimo metu neatveriant simbolių lentelės. Daroma taip:
Ø  Įjungiama komanda View->Symbolic Representation;
Ø  Įvykdoma komanda Option->Edit Symbols ir, atsivėrusiame lange, nurodomi visi atributai vienam kintamajam: adresas, simbolinis vardas, duomenų tipas ir komentaras;
Ø  Nuspaudus <OK> klavišą, šis kintamasis įtraukiamas į simbolių lentelę.
Kitas būdas būtų toks:
Ø  Įjungiama komanda View->Symbolic Representation;
Ø  Kodinėje sekcijoje spragtelėjama ant kintamojo, kuriam norima priskirti simbolinį vardą, adreso laukelio;
Ø  Įvykdoma komanda Edit->Object Properties;
Ø  Atsivėrusiame dialogo lange atspausdinami kintamojo atributai;
Ø  Nuspaudus <OK> klavišą, šis kintamasis yra įtraukiamas į simbolių lentelę.
Simbolių lentelę kaip ir kitą STEP 7 objektą, į tekstinį failą komanda Table->Export galima eksportuoti iš Symbol Table lango. Analogiškai yra įmanomas simbolių lentelės, sukurtos, pavyzdžiui, Microsoft Excell paketu, importavimas komanda Table->Import.
Bendri simboliniai vardai kodinėje sekcijoje yra tarp kabučių ("...")> kad atskirti nuo lokalinių vardų, prieš kuriuos automatiškai dedamas # simbolis. Jei tie patys simboliniai vardai yra deklaravimo ir simbolių lentelėje, tai jie yra interpretuojami kaip lokaliniai.
Komanda View->Symbolic Representation leidžia perjungti iš simbolinio į absoliutinį adresavimą ir atvirkščiai.
Siekiant padaryti programavimą simboliniais adresais patogesnį, komanda View->Symbol Information galima įjungti teksto laukelį kiekvienai grandinei. Jame parodomi absoliutiniai, simboliniai vardai bei komentaras. Šis laukelis nėra redaguojamas, todėl būtinus pakeitimus reikia daryti simbolių arba kintamųjų deklaravimo lentelėje.
Pakraunant programą į CP, simbolių lentelė bei komentarai lieka programatoriaus atmintyje.
LAD instrukcijos gali būti atvaizduotos kaip elementai ir kaip blokeliai (Boxes). Elementai gali būti:
Ø  Be adreso ar parametro
Ø  Su adresu
Ø  Su adresu ir verte
Adresu gali būti operandas, o verte - laikas, impulsų skaičius ir pan. Blokelinėse  instrukcijose įėjimai visada yra kairėje, o išėjimai - dešinėje pusėje.
Įėjimai ir išėjimai gali turėti tik leidžiamų duomenų tipą. Kai kurie LAD blokeliai turi leidimo (Enable) įėjimą EN ir išėjimą ENO, kurie yra BOOL duomenų tipo ir gali būti adresuojami I, Q, M, D ir L atminčių srityse. Leidimo įėjimo EN funkcijos tokios:
Ø  Jei EN=0, blokelis operacijos nevykdo ir tada ENO = 1;
Ø  Jei  EN = 1,  blokelis  operaciją vykdo ir, jei nėra klaidos, tai ENO=1;
Ø  Jei EN=1, blokelis operaciją vykdo ir, jei atsiranda klaida, tai ENO=0.
EN ir ENO kontaktų naudojimas neprivalomas.
Programuojant kontaktinių elementų (ladder) būdu naudojami simboliai.
Programuojant LAD kalba naudojami simboliai pateikti lentelėje 4.2

Lentelė 4.2 LAD simboliai
LAD simbolis
Atliekama operacija
Normaliai atviras (angl. open) kontaktas  (NO)
Užsidaro kai kintamojo reikšmė bus lygi 1.
Normaliai uždaras (angl. close) kontaktas (NC)
Atsidaro kai kintamojo reikšmė bus lygi 1.
Išėjimas (ritė)
Paveikia, kai prieš išėjimą (ritę) per visus kontaktus praeina signalas.
Invertuojantis kontaktas (Invert Power Flow)
Jeigu šio kontakto įėjime bus „1“, tai išėjime gausime „0“ ir atvirkščiai
Vidurinis išėjimas (Midline Output)
Šis elementas gavus signalą saugo jį nurodytam adresui
Nustatymo į pradinę padėtį ritė (Reset Coil)
Gavus „1“ nurodyta adresą nustato į „0“
Nustatymo ritė (Set Coil)
Gavus „1“ nurodyta adresą nustato į „1“
Neigiamas įtampos šuolis (Negative RLO Edge Detection)
Suveikia signalui kintant iš „1“ į „0“
Teigiamas įtampos šuolis (Positive RLO Edge Detection)
Suveikia signalui kintant iš „0“ į „1“
(Save RLO into BR Memory)
Išsaugo RLO prie BR bito atminties žodžio

Normaliai atviras kontaktas

   
            Kai kontroliuojamas įrenginys išjungtas (paduodamas nulinis įėjimo signalas), normaliai atviras kontaktas yra ATVIRAS ir išėjimas (OUTPUT) išjungtas.

                  Kontaktas atjungė PLV grandinę

                                    PLV programos išėjimas išjungtas (OUTPUT yra OFF).

            Kai kontroliuojamas įrenginys įjungtas (paduodamas vienetinis įėjimo signalas), normaliai atviras kontaktas UŽDARAS tai  ir išėjimas įjungtas.

                        Kontaktas uždarė PLV grandinę.

                        PLV programos išėjimai įjungti (OUTPUT yra ON).




Kad suprastumėte, peržiūrėkite paprastą STOP/START grandinę.

STOP kontaktas būna paprastai uždaras, o START kontaktas  - normaliai atviras. Kai starto mygtukas nuspaustas, ritė sužadinama, laikantis kontaktas uždaromas ir leidžia starto mygtukui atsijungti. Ritė lieka maitinama, kol nebus nuspaustas stop mygtukas.
            Jei STOP ir START kontaktai  tiesiogiai sujungti, kaip parodyta žemiau:

               I.01 STOP mygtukas

               I.02 START mygtukas

Kontaktinių elementų (ladder) loginė diagrama turėtu būti tokia:     
Palyginkime su ta pačia  programa užrašyta STL kalba:
                        0000: ANDN I0.1
                        0001: AND (
                        0002: OR I.02
                        0003: OR Q2.07)
                        0004: = Q2.07
            Programos darbą galima patikrinti įkėlus ją į valdiklį.

                                    Įėjimo signalo Reikalavimas (input required)
                                    Įėjimo signalo Nereikalavimas (input NOT required)

 

Loginės instrukcijos
Komandos, simboliai ir žingsnių numeracija pateikti lentelėje 4.3

4.3 lentelė. Komandos, simboliai ir žingsnių numeracija
LAD simbolis
Paaiškinimas
 1
Naujas kontaktas (ar atšaka) su normaliai atviru N.O. kontaktu.
 1
Naujas kontaktas (ar atšaka) su normaliai uždaru N.C. kontaktu.
 1
Išėjimas (ritė)
Paveikia kai prieš išėjimą (ritę) per visus kontaktus praeina signalas.
AND
 1
Nuoseklus N.O. kontaktas.
ANDN
 1
Nuoseklus N.C. kontaktas.
OR
 1
Lygiagretus N.O. kontaktas
ORN
 1
Lygiagretus N.C. kontaktas
OUT
Išėjimas

 


Komandų ir simbolių atliekamos funkcijos paaiškintos lentelėje 4.4

4.4 lentelė. Komandų ir simbolių atliekamos operacijos
LAD simbolis
Atliekama operacija
 
Loginės linijos pradžia, sauganti parodytą įėjimo būseną.

Loginės linijos pradžia su pateikto įėjimo paneigimu.
IR (AND) Loginės  linijos pratęsimas su pateiktu įėjimu.
ARBA (OR) Loginės linijos pratęsimas su lygiagrečiu įėjimų ar atšakojimu.
ARBA – NE (ORN) šaka su pateikto rezultato pratęsimu.
IŠĖJIMAS (OUT arba EQUALS) Nustato konkrečią išėjimo vertę duotai linijai.

Žinoma, šių simbolių reikšmės rodo Būlio (Boolean) interpretacijas, o ne relių (relay). PLV priima visus normaliai atvirus kontaktus, tačiau normaliai uždari kontaktai sukelia jam     problemas.

Loginių instrukcijų pavyzdžiai su laiko diagramomis

Loginė daugyba

Loginės daugybos laiko diagrama

Loginė sudėtis

Loginės sudėties laiko diagrama

Loginė sudėtis ir loginė daugyba (būsenos išsaugojimas)


Loginės sudėties ir loginės daugybos laiko diagrama

Pastaba: StandartasIEC1131-3 reikalauja, prieš įėjimo – išėjimo signalų absoliutinius vardus naudoti % ženklą, tačiau ne visi programų paketai, tame tarpe ir STEP7 yra pilnai suderinti su šia standarto norma, todėl pavyzdžiuose iš STEP7 programos šis ženklas nenaudojamas.
Tik vidinės relės gali būti naudojamas, kaip mechaniški sklendinių relių ekvivalentai.
Kontaktinių elementų  (LAD) diagramos:


Signalas I1.1 perveda trigerį į vienetinę, I0.2 – į nulinę būseną.

Atminties elementų trigerių (Flip Flop) tipai ir nustatymai

RS (Reset-Set Flip Flop) – pradinės (nulinės) padėties  nustatymo trigeris
Trigeris pereina į pradinę padėti jeigu R įėjime yra „1“ ir S įėjime yra „0“. Jeigu R įėjime yra „0“ ir S įėjime yra „1“, tada trigeris nustatomas į vienetinę būseną.
  Jeigu turime „1“ arba „0“ abiejuose įėjimose, trigeris nekeičia savo būsenos.
SR (Set-  Reset Flip Flop) - vienetinės padėties nustatymo trigeris.
Trigeris pereina į vienetinę padėti jeigu S įėjime yra „1“ ir R įėjime yra „0“. Jeigu R įėjime yra „1“ ir S įėjime yra „0“, tada trigeris nustatomas į pradinę būseną.
 Jeigu turime „1“ arba „0“ abiejuose įėjimose, trigeris nekeičia savo būsenos.

Trigerio loginio valdymo programos pavyzdys su laiko diagrama:

Išėjimo signalas Q0.0 vienetinis signalas turi būti formuojamas nuo I0.0 signalo iki I0.1 signalo išdavimo momento

Trigerio laiko diagrama

            Norint vykdyt kokio nors proceso įvykių apskaitą, pvz.: kiek praėjo žmonių arba pravažiavo mašinų reikės naudoti skaitiklius.
Iš viso yra trijų tipų skaitikliai, vieni gali skaičiuoti nuo 0 iki 999 (S_CU, CU), kiti nuo 999 iki 0 (S_CD, CD). Yra ir skaitiklis kuris sugeba skaičiuoti į abi puses , t.y. skaičiuoja ir nuo 0 iki 999 ir nuo 999 iki 0, priklausomai nuo to į kokį įėjimą gaus signalą. S_CU, S_CD ir S_CUD skaitikliai turi galimybę perduot rezultatą į kitus elementus (pvz.: komparatorius, duomenų bazę).

Išsamiau apie skaitiklių įėjimus, išėjimus (lentelė.4.5) ir atliekamas funkcijas aprašyta žemiau

 4.5 lentelė. Skaitiklių sutartinių grafinių ženklų paaiškinimai
Žymėjimas
Paaiškinimas
CU
Skaitiklio turinio padidinimo įėjimas
CD
Skaitiklio turinio sumažinimo įėjimas
S
Skaitiklio programavimo valdymas
PV
Nurodoma programuojant įvedama skaitinė vertė nuo 0 iki 999
R
Įėjimo pradinės būsenos nustatymas
Q
Skaitiklio būsena (išėjimas)
CV
Dabartinė skaitiklio vertė
CV_BCD
Dabartinė skaitiklio vertė BCD formate

Skaitiklio skaičiuojančio parodymo didėjimo seka sutartinis grafinis ženklas.
  S_CU (UP Counter) pirmyn skaičiuojantis skaitiklis bus suprogramuotas, jeigu valdiklio įėjime S bus teigiama reikšmė. Jeigu įėjime R yra 1, skaitiklis nustatomas į nulį. Skaitiklio parodymo vertė padidėja vienetu, jeigu įėjime CU signalas keičiasi iš „0“ į „1“ ir skaitiklio vertė yra mažesnė už „999“.

Skaitiklio skaičiuojančio parodymo mažėjimo seka sutartinis grafinis ženklas.
S_CD (Down Counter) atgal skaičiuojantis skaitiklis bus suprogramuotas jeigu valdiklio įėjime S bus teigiama reikšmė. Jeigu įėjime R yra 1, skaitiklis nustatomas į nulį. Skaitiklio vertė sumažėja vienetu, jeigu įėjime CD signalas keičiasi iš „0“ į „1“ ir skaitiklio vertė yra didesnė už „0“.

Reversinio skaitiklio, skaičiuojamčio parodymo didėjimo bei mažėjimo seka sutartinis grafinis ženklas.
S_CUD (Up.-Down Counter) pirmyn – atgal skaičiuojantis skaitiklis bus suprogramuotas, jeigu valdiklio įėjime S bus teigiama reikšmė „1“. Jeigu įėjime R yra 1, skaitiklis nustatomas į pradinę padėtį. Skaitiklio parodymo vertė padidėja vienetu, jeigu įėjime CU vienas signalas keičiasi iš „0“ į „1“ ir skaitiklio vertė yra mažesnė už „999“. Skaitiklio parodymo vertė sumažėja vienetu, jeigu įėjime CD signalas keičiasi iš „0“ į „1“ ir skaitiklio vertė yra didesnė už „0“. Jeigu CU ir CD įėjimose vienu metu bus teigiami signalai, skaitiklio vertė nepasikeis.

                    
Pavyzdys: Išdavus signalą I0.1, į skaitiklį įrašoma Pradinė vertė PV (Preset Value) -5. Spaudžiant mygtuką I0.0 skaitiklis C1 skaičiuoja atgal. Išėjime Q0.0 yra vienetinio lygio signalas, kol skaitiklio parodymas nėra lygus nuliui. Išėjime CV (Counter Value)  fiksuojama skaitinė skaitiklio parodymo vertė dešimtainėje skaičiavimo sistemoje, išėjime CV_BCD (Counter Value Binary-CD)  fiksuojama skaitinė skaitiklio parodymo vertė dvejetainėje –dešimtainėje skaičiavimo sistemoje. Duomenys iš šių išėjimų esant reikalui gali būti perduodami į duomenų bloką


Tais atvejais, kai skaitiklis panaudojamas tik valdymo signalams formuoti, paprasčiau naudoti bitų logikos skaitiklį:


            Norint atlikti konkrečius veiksmus tam tikrame laiko intervale, būtina naudoti laiko registrus arba taimerius. Jie tinka, kai reikia vykdyti norima veiksmą konkretų laiką, arba atidėti jį konkrečiam laikui, kuri nustatome patys.
            Taimerio įėjimai ir išėjimai yra tokie: S, TV, R, Q, BI, BCD. Iš viso yra penki taimerių tipai: impulsinis (S_PULSE, SP), prailgintų impulsų (S_PEXT, SE), paleidimą vėlinantis (S_ODT, SD), įsimenantis ir paleidimą vėlinantis (S_ODTS, SS) ir prailginantis signalą (S_OFFDT, SF). Žemiau plačiau apie taimerių įėjimus, išėjimus ir jų laiko diagramos.
            Išėjimų reikšmės.
Į S (set) įėjimą išduodamas programavimo signalas; TV (TW) įėjime nurodome norimą užprogramuoti laiko trukmę, kuri įvedama išdavus signalą į S įėjimą; į R (reset) įėjimą galima paduoti signalą, kuris atstatys taimerį į pradinę padėtį. Q išėjimas nurodo taimerio būseną, BI (DUAL) nurodo likusį laiką sveikais skaičiais, BCD (DEZ) nurodo likusi laiką BCD formate.
Paveikslėliuose 4.3 – 4.5 pateikiami laiko registrų sutartiniai grafiniai ženklai, jų panaudojimo pavyzdžiai ir laiko diagramos.
4.3 pav. Impulsinio laiko registro sutartinis grafinis ženklas ir laiko diagrama


4.4 pav. Įsimenančio ir paleidimą suvėlinančio  laiko registro sutartinis grafinis ženklas ir laiko diagrama

4.5 pav. Paleidimą vėlinančio laiko registro sutartinis grafinis ženklas ir laiko diagrama

Sudarant nesudėtingas programas, kai laiko registrų parodymai nepersiunčiami į duomenų blokus, patogiau naudoti paprastesnius bitų logikos rites (laiko registrus).
Impulsinė laiko ritė (Pulse timer coil)
Gavus signalą ritė veiks nurodytą laiką, praėjus nurodytam laikui ritė išsijungia. Nutrūkus  signalui paleidimo grandinėje, ritė išsijungia, nepriklausomai ar suprogramuotas laikas pasibaigė.
Vėlinanti laiko ritė (On-delay timer coil)
Gavus signalą ritė užlaikys jį nurodytą laiką, praėjus nurodytam laikui ritė įsijungia. Nutrukus  įėjimo signalui ritė išsijungia.
Programos su laiko registru pavyzdys Nr.1
Paveikus signalui I0.1, išėjime Q 20-ties sekundžių laikotarpiu veiks vienetinis signalas. Signalui I0.1 užsibaigus anksčiau, nei po 20s, su jo užpakaliniu frontu baigiasi signalas Taimerio išėjime. Priekiniu signalo frontu M4.0 trigeris pervedamas į vienetinę būseną.
Programos su laiko registru pavyzdys Nr.2
 Panašią operaciją galime atlikti su bitų logikos laiko registru.  Atsiradus signalui I0.2. paveikia laiko ritė T1, vienu metu uždarydama T1 kontaktą ir įjungdama Q0.0 išėjimą, Q0.0 išėjime vienetinio lygio signalas veiks. 2,5 minutės, jei I0.2 signalas nenutrūks anksčiau..

Ši instrukcija leidžia nukreipti valdymą į kitą programos segmentą, jei viena ar keletas sąlygų jau patenkintos.
Pavyzdyje atsiradus I0.1 signalui paveikia cas1 JMP ritė ir programos vykdymas iš karto peršoka prie cas1 žymės. Jei signalas I0.1 neaktyvus, po pirmojo segmento bus vykdoma antrojo segmento instrukcija.


Palyginimo komandoms naudojami komparatoriai.
Su komparatoriais labai patogu dirbti kada naudojami skaitikliai, kurie turi galimybę perduot duomenis į duomenų blokus, o vėliau jų parodymus reikia sulyginti su konstanta, arba kai vykdomos matematinės funkcijos. Komparatorių parenkame pagal duomenų formatus.
Žemiau pavaizduotas komparatorius ir jo įėjimų ir išėjimų reikšmės:
            Į IN1 ir IN2 įėjimus paduodami žodžiai. Signalas  Q0.0 išėjimą bus lygus vienetui tuo atveju, jeigu bus paduotas I0.3 signalas ir MW1 žodis bus lygus MW2 žodžiui.
 Signalas gali būti praleistas ir tuo atveju kai IN1>IN2, IN1<IN2 ir t.t. , priklausomai nuo pasirinkto komparatoriaus tipo. Žymėjimai ir reikšmės pateiktos lentelėje 2.5
                                   
4.6 lentelė.  Palyginimo ženklai
Palyginimo ženklas
MW1 ir MW2 santykis
= =
lygus
< >
nelygus
> 
Daugiau už
< 
Mažiau už
> =
Daugiau arba lygu
< =
Mažiau arba lygu
            Duomenų perdavimui yra naudojama „MOVE“ komanda. Čia EN – aktyvuota įvestis, ENO – aktyvuota išvestis, IN – įvesties reikšmė (visų duomenų tipas su 8, 16, 32 bitų ilgiu), OUT – adresato adresas (visų duomenų tipas su 8, 16, 32 bitų ilgiu). Išdavus I0.3 signalą, skaičius 4 yra pernešamas į žodį MW1, jeigu sukurta duomenų bazė (pvz.: DB1), jeigu komanda  vykdoma, Q0.0 išėjime tai pat gaunamas vienetinis signalas.


Keitikliai keičia vieno formato duomenis į kitą formatą. Sutartiniame grafiniame ženkle nurodyta iš kokio formato duomenys bus keičiami į kitą nurodytą formatą.
BCD_I (Convert BCD to Integer) Keitiklis skaito IN įėjime paduota trijų ženklų skaičių ( ± 999) BCD formate ir konvertuoją jį į 16 bitų sveiką skaičių. Rezultatą gausime OUT išėjime. EN ir ENO signalų tipas visais atvejais lieka toks pat.
Iš viso yra penkiolika keitiklių, jų veikimo principas yra toks pat kaip ką tik aprašyto, tik skiriasi tik konvertuojamų duomenų formatai.
Ši komanda atidaro iš anksto išsaugota DB arba DI duomenų bloką (bazę). Duotu atveju paveikus I0.0 kontaktui bus atidaryta duomenų bazė DB1, iš kurios paimti duomenys galės būti panaudoti to loginio bloko komandoms vykdyti. Gauti rezultatai t. P. Galės būti joje išsaugoti.
Šios komandos skirtos aritmetiniams veiksmams su sveikais skaičiais ir dvigubais skaičiais atlikti. Į IN1 ir IN2 įėjimus paduodami skaičiai iš duomenų bloko, OUT išėjime  išdavus valdantįjį  signalą EN, gauname rezultatą, kuris nusiunčiamas į nurodytą vietą duomenų bloke. Atsiradus signalui EN įėjime ENO išėjime bus „1“, jeigu rezultatas OUT išėjime neviršys leistinų ribų, priešingu atveju išėjime ENO bus loginis „0“.
Iš viso yra devynios komandos aritmetiniams veiksmams atlikti. Pvz.: ADD_I sudeda IN1 ir IN2 nurodytus skaičius ir nusiunčia į OUT išėjimą, SUB_I atima iš IN2 skaičiaus IN1 skaičių ir nusiunčia rezultatą į OUT išėjimą ir t.t.

Iš esmės šios komandos yra panašios į komandas su sveikais skaičiais, tik čia veiksmai atliekami su slankaus kablelio skaičiais ir papildomai pridėti veiksmai su trigonometrinėmis funkcijomis.
Šios komandos skirtos aritmetiniams veiksmams su slankaus kablelio skaičiais atlikti. Į IN1 ir IN2 įrašome norimą skaičių, OUT išėjime gauname rezultatą, kuris nusiunčiamas į nurodytą vietą. Norint gauti rezultatą reikia kad įėjime EN atsirastu signalas „1“.  Atsiradus signalui EN įėjime ENO išėjime bus „1“, jeigu rezultatas OUT išėjime neviršys leistinų ribų, priešingu atveju išėjime ENO bus loginis „0“.
Pvz.: ADD_R sudeda IN1 ir IN2 nurodytus skaičius ir nusiunčia į OUT išėjimą, SUB_R atima iš IN2 skaičiaus IN1 skaičių ir nusiunčia rezultatą į OUT išėjimą ir t.t.
Kai įėjimas kartojasi keliuose segmentuose, tada vietoj kartojimų naudojamos pagrindinės valdymo relės (MCR<) (Open a Master Control Relay zone), (MCR>) (close the last opened MCR zone).  Antrajame ir trečiajame programos segmente signalas I0.1 bus aktyvus, nors ir nenurodytas.



Paprogramę galime iškviesti CALL komandos pagalba, pavyzdžiui FC1 paprogramę, grįžti atgal į programą galime RET komanda.
Bito būsenos instrukcijos, tai bito logikos instrukcijos, kurios dirba su būsenos bito žodžiais. Kiekviena iš šių instrukcijų reaguoja į vieną iš sąlygų, kuri pažymėta vienu arba keliais būsenos bitų žodžiais:
Ø  Dvejetainis rezultato bitas (BR) yra nustatytas (tai yra , signalas yra „1“).
Ø  Matematinė funkcija yra perpildyta (OV) arba išsaugotas perpildymas (OS).
Ø  Matematinės funkcijos rezultatas neužsakomas (UO).
Ø  Matematinės funkcijos rezultatas surištas su 0 vienu iš sekančių atvejų:
Ø= = 0, <> 0, > 0, < 0, > = 0, < = 0.
OV (Exception Bit Overflow) - išskirtinio bito perpildymas. Naudojamas paskutinės matematinės funkcijos perpildymui nustatyti. Tai reiškia jei įvykdytos funkcijos rezultatas išeina už teigiamos arba neigiamos ribos, kontaktas ENO paveikia. OV kontaktas gali būti normaliai atidarytas ir normaliai uždarytas.

OS (Exception Bit Overflow Stored) - įsimenamas išskirtinio bito perpildymas. Naudojamas paskutinės matematinės funkcijos perpildymui nustatyti ir išsaugoti. Tai reiškia jei įvykdytos funkcijos rezultatas išeina už teigiamos arba neigiamos ribos kontaktas paveikia ir išsaugo savo būsena. Skirtingai negu OV, kontaktas OS kontaktas išsaugo būseną tada, kada vyksta funkcijos perpildymas ir lieka paveikęs. OS kontaktas gali būti normaliai atidarytas ir normaliai uždarytas.

 

Iš viso yra 20 būsenos bitų funkcijų, kurios reaguoja į skirtingas sąlygas.
            Žodžių logikos instrukcijos atlieka logines operacijas su žodžių poromis po 16 bitų ir dvigubais žodžiais po 32 bitus.
            Jeigu rezultatas išėjime nelygus nuliui, tada būsenos žodis nustatomas į „1“
            Jeigu rezultatas išėjime lygus nuliui, tada būsenos žodis nustatomas į „0“
    
            WAND_W (OR Words) – IR žodis. Ativizuojamas, kai į įėjimą EN yra paduotas signalas „1“ ir kai įėjimuose IN1 ir IN2 yra paduotos dvi žodžių reikšmės, atliekama IR operacija. Reikšmės interpretuojamos kaip tikros bitų kombinacijos, rezultatas patalpinamas išėjime OUT. ENO išėjimas turi tą pačią loginę būseną kaip ir EN įėjimas.
            WOR_W – ARBA žodis. Ativizuojamas, kai į įėjimą EN yra paduotas signalas „1“ ir kai įėjimuose IN1 ir IN2 yra paduotos dvi ARBA žodžių reikšmės, atliekama ARBA operacija. Reikšmės interpretuojamos kaip tikros bitų kombinacijos, rezultatas patalpinamas išėjime OUT. ENO išėjimas turi tą pačią loginę būseną kaip ir EN įėjimas.
            Iš viso yra šešios žodžių logikos operacijos, be išvardytų dar yra XOR operacija ir operacijos su dvigubais (32 bitų) žodžiais.
4.5.1. Kontaktų plano diagramos projektavimo taisyklės
            Projektuojant kontaktinių elementų diagramą reikia laikytis tam tikrų taisyklių. Skirtingi gamintojai nustato skirtingas taisykles. Štai keletas gerų programavimo  praktikos pavyzdžių:
1.      Visi segmentai privalo turėti išėjimus.
2.      Paprastai būna tik vienas išėjimas segmente.
3.      Kiekvienas išėjimas gali būt naudojamas tik kartą kontaktinių elementų diagramoje.
4.      Visi išėjimai turi būti išdėstyti išorinėje valdymo ir šuolio (Master Control and Jump) diagramos dalyje, todėl, kad jei jie bus vienos iš šių dalių viduje, jie negalės būti aktyvūs.
5.      Visi segmentai turi turėti įėjimus. Tik atskirais atvejais įėjimai nereikalaujami pagal programą. Tuomet galima panaudoti laisvas vidines reles (atminties bitus).
6.      Niekada nenaudokite tuo pačio skaitiklio, taimerio ar reles du kart.
7.      Egzistuoja įėjimo įrenginių nuoseklaus prijungimo segmente limitas , pvz.: 10.
8.      Egzistuoja įėjimo įrenginių lygiagretaus prijungimo laiptelyje limitas , pvz.: 7.
9.      Dviejų paskutinių taisyklių sąlygas įgyvendinkite naudodami papildomus segmentus ir vidines reles (atminties bitus).
Programuojant LAD kalba, būtina laikytis tam tikrų taisyklių.
Srovės kryptis.
Grandinėse negali būti lygiagrečių šakų, kuriose srovė gali tekėti priešinga (iš dešinės į kaire) kryptimi, pvz., (4.6 pav.), jei I 1.2=0, tai per kontaktą I 6.8 gali tekėti srovė iš dešinės į kairę.
4.6 pav. Neleistina grandinė


Užtrumpinta grandinė
Negalima prijungti lygiagrečios šakos, užtrumpinančios  grandinės elementus (4.7 pav.):
4.7 pav. Neleistinas užtrumpinimas

Blokelių prijungimas
Lygiagreti šaka, prie kurios jungiamas blokelių įėjimas, turi prasidėti nuo kairiosios (maitinimo) linijos, t.y., neturi būti jokių elementų ir blokelių įėjime. Blokelių (išskyrus komparatorius) negalima patalpinti T tipo grandinėse (1.6 pav.).
4.8 pav.  Neleistina elemento padėtis
Išėjimu prijungimas
Išėjimai (ritės) yra prijungiami dešinėje šakos pusėje lygiai taip pat kaip ir kiti LAD elementai, o kai kuriais atvejais, pavyzdžiui, vykdant komandą Insert->Network, tai atliekama automatiškai. Išėjimais yra užbaigiama grandinė, tačiau kraštinėje pozicijoje (kairėje arba dešinėje) negali būti ričių: -(#)-, -(P)- ir -(N)-.
Prieš taimerių ir skaitiklių blokelius, o taip pat rites: -(S), -(R), -(JMPN), -(MCR), -(SAVE) ir -(RET) privalo būti loginės instrukcijos.
Iš kitos pusės prieš rites : -(MCRA), -(MCRD), -(OPN) ir -(MCR) neprivalo būti loginių instrukcijų.
Visi kiti išėjimai, išskyrus -(#)-, -(P)-, -(N)-, gali turėti logines operacijas prieš juos, bet nebūtinai.
Lygiagrečių šakų išėjimais negali būti: -(JMPN), -(JMP), -(CALL) ir
-(RET) ritės.

LAD elementų įvedimas
Norint įvesti elementą į grandinę, reikia:
Ø  Parinkti vieną iš šių įvedimo zonų (4.9 pav.).
Ø  Elementą (kontaktą, ritę) ir blokelį;
Ø  Sujungimo tašką;
Ø  Tuščią liniją arba atvirą šaką;
Ø  Adresą.
4.9  pav. Elemento įvedinmo zonos parinkimas

Siekiant palengvinti programavimą LAD kalba, leidžiama užprogramuoti visus grandinės elementus, o tik po to priskirti jiems adresus arba parametrus.

Lygiagrečios šakos prijungimas
Reikia atsiminti, kad lygiagrečios šakos prijungimas atitinka ARBA (O R) loginę operaciją.
4.10 pav.
Lygiagrečių šakų sudarymo pagrindinės taisyklės tokios:
1.      Piešiama tik iš kairės į dešinę;
2.      Visada pradedama žemyn (Open Branch) ir užbaigiama aukštyn (Close Branch);
3.      Visada prasideda prieš pasirinktą elementą;
4.      Visada užbaigiama po pasirinkto elemento;
5.      Ji panaikinama, pašalinus visus į ją įeinančius elementus (komanda Cut);
6.      Panaikinus blokelį, visos šakos, išskyrus pagrindinę, yra panaikinamos.
7.      Norint prijungti lygiagrečią šaką reikia (1.9 pav.):
8.      Pasirinkti elementą, kurio priekyje numatoma lygiagrečios šakos pradžia;
9.      Pasirinkti vieną iš šių metodų pradėti lygiagrečią šaką:
Ø  {vykdyti komandą Insert—>LAD Element-»Open Branch;
Ø  Nuspausti klavišą <F8>;                                                
Ø  Nuspausti atitinkamą klavišą įrankių juostoje (žr.4.10 pav.)
                                                                                                                         
10.  Grandinėje atsiranda lygiagreti šaka su strėle >>.
11.  Įterpiami reikiami LAD elementai į naują lygiagrečią šaką;
12.  Pagrindinėje šakoje išrenkamas elementas, už kurio norima uždaryti lygiagrečią šaką. Jei tai nepadaroma,  tai  šaka  automatiškai užsidarys po sekančio elemento;
Lygiagrečios šakos užbaigimui galima panaudoti šiuos metodus:
Ø  Įvykdyti komandą Insert->LAD Element->Close Brandi;
Ø  Nuspausti klavišą <F1>;
Ø  Nuspausti atitinkamą klavišą įrankių juostoje.
Taip galima suformuoti keletą lygiagrečių šakų. Siekiant išvengti linijų susikirtimų šakose, tušti elementai (linijos) pridedami automatiškai.
Pašalinus blokelį, visos šakos, prijungtos prie blokelio įėjimų, išskyrus pagrindinę, yra panaikinamos. Jei šakoje tik vienas blokelis, tai, jį panaikinus, pasinaikina visa šaka.

LAD elementų pakeitimas
Programą, sukurtą LAD kalba, galima modifikuoti įterpimo bei perrašymo režimuose, bet pastarasis patogesnis, ypač grafinėse kalbose, nes adresai ir parametrai išlieka. Perrašyti gali būti tik tokio pat tipo LAD elementai: normaliai atviras kontaktas gali būti pakeistas normaliai uždaru kontaktu, RS trigeris - SR trigeriu, vienas taimerio tipas - kitu ir pan. Elementų pakeitimo tvarka tokia (4.11 pav.):
Ø    Nuspaudus <INSERT> klavišą, persijungiama į perrašymo režimą, kuris rodomas būvio juostos dešiniajame kampe;
Ø    Pažymimas keičiamas LAD elementas;
Ø    Panaudojami tie patys būdai kaip ir LAD elementų įterpimo atveju
Ø         Grįžtama atgal į įterpimo režimą, nuspaudus <INSERT> klavišą.

4.11 pav. LAD elementų pakeitimas

            Perrašymo režime galima perskirti dvi grandines taške, kuriame jungiami lygiagrečios šakos atviras ir uždaras kontaktai (4.12 pav.). Tam reikia pažymėti tą tašką ir įterpti reikiamą LAD elementą. Jei reikia, po pakeitimų galima koreguoti pavadinimus ir komentarus perrašymo režime.

                          
  
4.12 pav. Perrašymo režimas

Susipažinus su valdiklių instrukcijų rinkiniais, bei programų rengimo metodika galima pradėti rengti realių objektų valdymo programas.
            Tai PLV valdiklių charakteristika, apibrėžianti valdiklio darbo greitį  (tai vidutinis 1K komandų skenavimo laikas) . Pvz.: 8 ms /1K žingsnių (vidutinis 1000 instrukcijų vykdymo laikas). Tai yra greitis, kuriuo procesorius peržiūrinėja programą ir tai priklauso nuo instrukcijų , kurias jam tenka vykdyti. Kai PLV įjungtas ir pradeda veikti, jis startuoja pirmame segmente (laiptelyje), apdoroja jį, tada pereina prie antro segmento, ir taip tęsia darbą iki pasieks programos pabaigą. Po to jis vėl grįžta į programos pradžią. Procesorius tęsia programos peržiūra kaip reikalauja peržiūros standartas iki pabaigos. Kol PLV peržiūrinėja  viena segmentą, jo išėjimas tampa aktyvus, jei visos įėjimų būsenos atitinka nustatytas sąlygas, ir jei sąlygos  nepasikeitė iki sekančio šio segmento skenavimo (peržiūros) išėjimo signalo lygis išlieka toks pat. Jis išlieka net jei įėjimo signalai ciklo laiku keitėsi. Kaip bebūtų, peržiūros laikas paprastai trumpas, išorinėms operacijoms šis uždelsimas paprastai nepastebimas, bet jis gali įtakoti loginės diagramos struktūrą.
            Peržiūrėkite diagramas:
Žingsnis 101
Žingsnis 102
Žingsnis 103
Žingsnis 104
4.9 pav. Programos peržiūros laiko (Scan Time) įvertinimas

Kai segmentas 101 peržiūrinėjamas su įjungta rele 4.02 ir išjungta rele 4.05, rele 4.00 bus uždaryta.
            Kai sekantis segmentas 102 skenuojamas, rele 4.05 bus uždaryta.
            Kai skenuojamas segmentas 103, ir  rele 4.05 uždaryta, tol rele M 4.00 nepaveikta.
            Kai 104 segmentas peržiūrimas, rele 4.00 uždara ir rele 4.06 neveikia, faktiškai šio segmento išėjimas 4.06 niekada nebus aktyvus. Kad to išvengti, segmentai 103 ir 104 turi būti sukeisti. Kadangi tai labai paprastas pavyzdys, tokia klaida sąlyginai lengvai randama didelėje kontaktinių elementų diagramoje.
  Valdiklio valdymo programa – svarbus automatinės valdymo sistemos komponentas. Pagal valdiklio at­min­tyje į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 nau­dotis. Valdymo programų kūrimo etapų modelis pateiktas 4.10  paveiksle.
4.10 pav. Valdymo programos kūrimo etapų modelis
4.11 pav. Programos algoritmo elementai

           Programuotojui labai sudėtinga sudaryti visą kontaktinių elementų diagramą iškart, ypač didelėse sistemose. Ją sunku suprasti, ir labai sunku rasti klaidas. Todėl programuotojas prieš programuojant turi išstudijuoti specifikaciją ir pabandyti sumodeliuoti programos algoritmą. Modulinė struktūra palengvina problemos sprendimą, nes dalina programą į trumpų programėlių seką, kurios gali būti vykdomos ir testuojamos atskirai. Kai visi moduliai bus parašyti ir patikrinti jie gali būti susijungti į vieną kontaktinių elementų (ladder) programą. Kai programa moduline, tampa lengviau joje ieškoti netikslumų.
          Algoritmai tai būsenų sekos žingsnis po žingsnio aprašančios programos veiksmus. Paprastai jie rašomi prieš kuriant programą tam, kad padėtų programuotojui išspręsti problemas.

             Vėliau jie pridedami šalia kontaktinių elementų diagramos ar LAD (Būlio) programos, kad paaiškintų jos  veikimą
Pirmiausia  reikia sukurti programos specifikacija, kuri apibudina rezultatą, kartu su visais įėjimais ir išėjimais. Algoritmas padės sukurti ir užrašyti programą. Jis taip pat reikalingas tiems, kuriems reikia modifikuoti esamą programą.
  1. PLV gali būti programuojami dviem skirtingais metodais, priklausomai nuo turimų priemonių: naudojant rankinį programatorių programuojama Būlio (boolean) kalba; specialiu programatoriumi arba PC klasės kompiuteriu sujungtu su valdikliu per PPT sąsajos įtaisą naudojant  ir kitas kalbas.
  2. Programos gali būti įkeliamos į valdiklius iš  FEPROMų arba per RS 233/244 sąsajas bei per  tinklą.
  3. Programavimo kalbos paprastai leidžia naudoti ne tik absoliučiuosius, bet ir simbolinius adresus. 
  4. Bendri simboliniai vardai yra deklaruojami simbolių lentelėje, o lokaliniai - bloko deklaravimo lentelėje programavimo metu.
  5. Negalima priskirti simbolinių adresų DB adresams (DBD, DBW, DBB ir DBX), nes tai daroma duomenų blokų deklaravimo lentelėje. OB ir kai kurie SFB ir SFC turi iš anksto nustatytus simbolinius vardus, kuriuos galima perkelti į simbolių lentelę.
  6. Simboliniai vardai galioja tik tam CP, kuriam yra sukurta S7 programa. Norint tuos pačius vardus panaudoti kitur, reikia sukurti naujas simbolių lenteles, pvz., kopijuojant.
  7. Komanda View->Symbolic Representation leidžia perjungti iš simbolinio į absoliutinį adresavimą ir atvirkščiai.
  8. Siekiant padaryti programavimą simboliniais adresais patogesnį, komanda View->Symbol Information galima įjungti teksto laukelį kiekvienai grandinei. Jame parodomi absoliutiniai, simboliniai vardai bei komentaras. Šis laukelis nėra redaguojamas, todėl būtinus pakeitimus reikia daryti simbolių arba kintamųjų deklaravimo lentelėje.
  9. Pakraunant programą į CP, simbolių lentelė bei komentarai lieka programatoriaus atmintyje.
  10. RS (Reset-Set Flip Flop) – pradinės (nulinės) padėties  nustatymo trigeris
Ø  Trigeris pereina į pradinę padėti jeigu R įėjime yra „1“ ir S įėjime yra „0“. Jeigu R įėjime yra „0“ ir S įėjime yra „1“, tada trigeris nustatomas į vienetinę būseną.
Ø  Jeigu turime „1“ arba „0“ abiejuose įėjimose, trigeris nekeičia savo būsenos.
  1. SR (Set-  Reset Flip Flop) - vienetinės padėties nustatymo trigeris.
Ø   Trigeris pereina į vienetinę padėti jeigu R įėjime yra „1“ ir S įėjime yra „0“. Jeigu R įėjime yra „1“ ir S įėjime yra „0“, tada trigeris nustatomas į pradinę būseną.
Ø    Jeigu turime „1“ arba „0“ abiejuose įėjimose, trigeris nekeičia savo būsenos.
  1. Iš viso yra trijų tipų skaitikliai, vieni gali skaičiuoti nuo 0 iki 999 (S_CU, CU), kiti nuo 999 iki 0 (S_CD, CD). Yra ir skaitiklis kuris sugeba skaičiuoti į abi puses , t.y. skaičiuoja ir nuo 0 iki 999 ir nuo 999 iki 0, priklausomai i kokį įėjimą gaus signalą. S_CU, S_CD ir S_CUD skaitikliai turi galimybę perduot rezultatą į kitus elementus (pvz.: komparatorius, duomenų bazę).
  2. S_CD (Down Counter) atgal skaičiuojantis skaitiklis bus suprogramuotas jeigu valdiklio įėjime S bus teigiama reikšmė. Jeigu įėjime R yra 1, skaitiklis nustatomas į nulį. Skaitiklio vertė sumažėja vienetu, jeigu įėjime CD signalas keičiasi iš „0“ į „1“ ir skaitiklio vertė yra didesnė už „0“.
  3. S_CUD (Up.-Down Counter) pirmyn – atgal skaičiuojantis skaitiklis bus suprogramuotas, jeigu valdiklio įėjime S bus teigiama reikšmė „1“. Jeigu įėjime R yra 1, skaitiklis nustatomas į pradinę padėtį. Skaitiklio parodymo vertė padidėja vienetu, jeigu įėjime CU vienas signalas keičiasi iš „0“ į „1“ ir skaitiklio vertė yra mažesnė už „999“. Skaitiklio parodymo vertė sumažėja vienetu, jeigu įėjime CD signalas keičiasi iš „0“ į „1“ ir skaitiklio vertė yra didesnė už „0“. Jeigu CU ir CD įėjimose vienu metu bus teigiami signalai, skaitiklio vertė nepasikeis.
  4. Norint atlikti konkrečius veiksmus laiko tarpe būtina naudoti taimerius, jų pagalba galime vykdyti norima veiksmą konkretų laiką, arba atidėti jį konkrečiam laikui, kuri nustatome patys.
  5. Taimerio įėjimai ir išėjimai yra tokie: S, TV, R, Q, BI, BCD. Iš viso yra penki taimerių tipai: impulsinis (S_PULSE, SP), prailgintų impulsų (S_PEXT, SE), paleidimą vėlinantis (S_ODT, SD), įsimenantis ir paleidimą vėlinantis (S_ODTS, SS) ir prailginantis signalą (S_OFFDT, SF).
  6. Į taimerio S (set) įėjimą išduodamas programavimo signalas; TV (TW) įėjime nurodome norimą užprogramuoti laiko trukmę, kuri įvedama išdavus signalą į S įėjimą; į R (reset) įėjimą galima paduoti signalą, kuris atstatys taimerį į pradinę padėtį. Q išėjimas nurodo taimerio būseną, BI (DUAL) nurodo likusi laiką sveikais skaičiais, BCD (DEZ) nurodo likusi laiką BCD formate.
  7. Sudarant nesudėtingas programas, kai laiko registrų parodymai nepersiunčiami į duomenų blokus, patogiau naudoti paprastesnius bitų logikos laiko registrus.
  8. Impulsinė laiko ritė (Pulse timer coil) Gavus signalą ritė veiks nurodytą laiką, praėjus nurodytam laikui ritė išsijungia. Nutrūkus  signalui paleidimo grandinėje, ritė išsijungia, nepriklausomai ar laikas pasibaigė.
  9. Vėlinanti laiko ritė (On-delay timer coil) Gavus signalą ritė užlaikys jį nurodytą laiką, praėjus nurodytam laikui ritė įsijungia. Nutrukus signalui įėjimo grandinėje, ritė išsijungia.
  10. Palyginimo komandoms naudojami komparatoriai.
  11. Duomenų pernešimui yra naudojama „MOVE“ komanda. Čia EN – aktyvuota įvestis, ENP – aktyvuota išvestis, IN – įvesties reikšmė (visų duomenų tipas su 8, 16, 32 bitų ilgiu), OUT – adresato adresas (visų duomenų tipas su 8, 16, 32 bitų ilgiu).
  12. BCD_I (Convert BCD to Integer) Keitiklis skaito IN įėjime paduota trijų ženklų skaičių ( ± 999) BCD formate ir konvertuoją jį į 16 bitų sveiką skaičių. Rezultatą gausime OUT išėjime. EN ir ENO signalų tipas visais atvejais lieka toks pat.
  13. Iš viso yra penkiolika keitiklių, jų veikimo principas yra toks pat kaip ką tik aprašyto skaitiklio, skiriasi tik konvertavimo tipas tarp IN ir OUT, pvz.: 16 bitų skaičius keičiamas dvigubu 32 bitų skaičiumi (I_DINT keitiklis), Dviguba 32 bitų skaičių keičia į slankaus kablelio skaičiumi (DI_REAL keitiklis) ir t.t..
  14. Iš slankaus kablelio komandos yra panašios į komandas su sveikais skaičiais, tik čia veiksmai atliekami su slankaus kablelio skaičiais ir papildomai pridėti veiksmai su trigonometrinėmis funkcijomis.
  15. Paprogramę galime iškviesti CALL komandos pagalba, pavyzdžiui FC1 paprogramę, grįžti atgal į programą galime RET komandos pagalba.
  16. Bito būsenos instrukcijos, tai bito logikos instrukcijos, kurie dirba su būsenos bito žodžiais. Kiekviena iš šių instrukcijų reaguoja į vieną iš sąlygų, kuri pažymėta vienu arba keliais būsenos bitu žodžiais. Iš viso yra 20 būsenos bitų funkcijų, kurie reaguoja į skirtingas sąlygas.
  17. Žodžių logikos instrukcijos atlieka logines operacijas su žodžių poromis po 16 bitų ir dvigubais žodžiais po 32 bitus.
29.  Projektuojant kontaktinių elementų diagramą reikia laikytis tam tikrų taisyklių. Skirtingi gamintojai nustato skirtingas taisykles.
30.  Visi segmentai privalo turėti išėjimus.
31.  Paprastai būna tik vienas išėjimas segmente.
32.  Kiekvienas išėjimas gali būt naudojamas tik kartą kontaktinių elementų diagramoje.
33.  Visi išėjimai turi būti išdėstyti išorinėje valdymo ir šuolio (Master Control and Jump) diagramos dalyje, todėl, kad jei jie bus vienos iš šių dalių viduje, jie negalės būti aktyvūs.
34.  Visi segmentai turi turėti įėjimus. Kartais įėjimai nereikalaujami pagal programą. Tuomet galima panaudoti laisvas vidines reles (atminties bitus).
35.  Niekada nenaudokite tuo pačio skaitiklio, taimerio ar relės du kartus.
36.  Egzistuoja įėjimo įrenginių nuoseklaus prijungimo segmente limitas , pvz.: 10.
37.  Egzistuoja įėjimo įrenginių lygiagretaus prijungimo laiptelyje limitas , pvz.: 7.
38.  Dviejų paskutinių taisyklių sąlygas įgyvendinkite naudodami papildomus segmentus ir vidines reles (atminties bitus).
  1. Lygiagreti šaka, prie kurios jungiamas blokelių įėjimas, turi prasidėti nuo kairiosios (maitinimo) linijos, t.y., neturi būti jokių elementų ir blokelių įėjime.
  2. Prieš taimerių ir skaitiklių blokelius, o taip pat rites: -(S), -(R), -(JMPN), -(MCR), -(SAVE) ir -(RET) privalo būti loginės instrukcijos.
  3. Iš kitos pusės prieš rites : -(MCRA), -(MCRD), -(OPN) ir -(MCR) neprivalo būti loginių instrukcijų.
  4. Visi kiti išėjimai, išskyrus -(#)-, -(P)-, -(N)-, gali turėti logines operacijas prieš juos, bet nebūtinai.
  5. Lygiagrečių šakų išėjimais negali būti: -(JMPN), -(JMP), -(CALL) ir -(RET) ritės.
  6. Siekiant palengvinti programavimą LAD kalba, leidžiama užprogramuoti visus grandinės elementus, o tik po to priskirti jiems adresus arba parametrus.
  7. Reikia atsiminti, kad lygiagrečios šakos prijungimas atitinka ARBA (O R) loginę operaciją.
  8. Lygiagrečių šakų sudarymo pagrindinės taisyklės tokios: piešiama tik iš kairės į dešinę; visada pradedama žemyn (Open Branch) ir užbaigiama aukštyn (Close Branch); visada prasideda prieš pasirinktą elementą; visada užbaigiama po pasirinkto elemento; ji panaikinama, pašalinus visus į ją įeinančius elementus (komanda Cut); panaikinus blokelį, visos šakos, išskyrus pagrindinę, yra panaikinamos.
  9. Taip galima suformuoti keletą lygiagrečių šakų. Siekiant išvengti linijų susikirtimų šakose, tušti elementai (linijos) pridedami automatiškai.
  10. Pašalinus blokelį, visos šakos, prijungtos prie blokelio įėjimų, išskyrus pagrindinę, yra panaikinamos. Jei šakoje tik vienas blokelis, tai, jį panaikinus, pasinaikina visa šaka.
  11. Algoritmai tai būsenų sekos žingsnis po žingsnio aprašančios programos veiksmus. Paprastai jie rašomi prieš kuriant programą tam, kad padėtų programuotojui išspręsti problemas.
  12. Pirmiausia  reikia sukurti programos specifikacija, kuri apibudina rezultatą, kartu su visais įėjimais ir išėjimais. Algoritmas padės sukurti ir užrašyti programą. Jis taip pat reikalingas tiems, kuriems reikia modifikuoti esamą programą.
  1. Kokiomis priemonėmis galima programuoti PLV?
  2. Kas tai yra absoliutūs ir simboliniai adresai?
  3. Kur deklaruojami simboliniai vardai?
  4. Kaip panaudoti vienam valdikliui sukurtus simbolinius vardus kitame?
  5. Ar simbolių lentelė įkeliama į valdiklį?
  6. Paaiškinkite RS ir SR trigerių taikymą.
  7. Kokius žinote skaitiklių tipus?
  8. Paaiškinkite skaitiklių taikymą.
  9. Kokius žinote taimerių tipus?
  10. Paaiškinkite taimerių taikymą.
  11. Kuo skiriasi bitų logikos registrai ir taimeriai nuo įprastinių?
  12. Paaiškinkite komparatorių paskirtį.
  13. Paaiškinkite įvairių tipų keitiklių paskirtį.
  14. Paaiškinkite realių skaičių apdorojimo komandų ypatumus
  15. Paaiškinkite loginių operacijų su žodžiais paskirtį.
  16. Kokių pagrindinių taisyklių reikia laikytis sudarant programas LAD kalba?
  17. Kokiomis taisyklėmis vadovaujatės dirbdami su Program Editor?

Komentarų nėra:

Rašyti komentarą

Etiketės