Impulzus sorozatok egyszerűen


Nem akarom a „101 tipp MS word-re” hagyományt itt bevezetni („ha a kurzort úgy mozdítjuk el hogy közben lenyomva tartjuk a shift gombot, akkor szöveget jelölhetünk ki”) de mégis egy egyszerű S7 programozással kapcsolatos tipp következik.
Sokszor alakul úgy, hogy egy berendezés programjának írása közben egy impulzus sorozatra van szükség. A leggyakoribb felhasználása az ilyen impulzus sorozatnak egy jelzés villogtatása vagy szaggatott hangjelzés. De ilyen időalapot (órajelet) igényelhetnek olyan időzítési funkciók is, amelyeket alapból nem kínál fel a Step7. Hasznos akkor is, ha egy funkció blokkot nem akarunk minden ciklusban meghívni, mert fölösleges és csak pazarolja a rendszer erőforrásait, elég lenne csak bizonyos időközönként egyszer meghívni.
Időzítők felhasználásával természetesen elő lehet állítani bármilyen impulzus sorozatot, de kell, hogy legyen egy vagy több olyan rendszer bit, ami ellátja ezt a funkciót. Hiszen Omron PLC-kben is van ilyen. Sajnos S7-300, S7-400 PLC-ben nincs. De lehet csinálni. Hogyan?
Indítsuk el a HW config programot úgy, hogy a Step7 projektünkben a Hardware ikonra kattintunk:



Ezután válasszuk ki a HW config-ban a CPU-t és kattintsunk duplán a CPU-n, vagy a CPU-n jobb egérgomb után az előbukkanó menüből válasszuk az Object Properties pontot. Megjelenik a CPU beállításait tartalmazó ablak, amit váltsunk át a Cycle/Clock Memory fülre:



Az ablak Clock memory beállítását pipáljuk ki, majd a Memory Byte mezőbe írjuk be egy olyan merker byte címét, aminek egyetlen bitjét sem használtuk még fel a programban.
Célszerű valamilyen magas címet választani, pl. az adott CPU címtartományának legtetejét, hogy ez a merker byte ne keveredjen el a berendezésünk egyéb funkcióit kiszolgáló merkerek között.
Zárjuk be az ablakot az Ok gombbal, mentsük el a hardver konfigot és ne felejtsük el a PLC-be is áttölteni!

A fenti képen a 255-ös memory byte-ot jelöltük ki, ezért az MB255 8 bitje fog 8 különböző sebességű, 50% kitöltési tényezőjű (vagyis azonos ideig be, majd kikapcsolt állapottal billegő) impulzus sorozatot produkálni, az alábbiak szerint:
Bit 0 M255.0 Impulzus: 10Hz, 0.1s
Bit 1 M255.1 Impulzus: 5Hz, 0.2s
Bit 2 M255.2 Impulzus: 2.5Hz, 0.4s
Bit 3 M255.3 Impulzus: 2Hz, 0.5s
Bit 4 M255.4 Impulzus: 1.25Hz, 0.8s
Bit 5 M255.5 Impulzus: 1Hz, 1s
Bit 6 M255.6 Impulzus: 0.625Hz, 1.6s
Bit 7 M255.7 Impulzus: 0.5Hz, 2s

Példa: Az M255.0 10Hz-es frekvenciával, vagyis 0.1 másodperces periódus idővel fog ketyegni, ami azt jelenti, hogy 0.05 másodpercig ez a bit 1 állapotú lesz, 0.05 másodpercig 0 állapotú, majd ismét 1, és így tovább.
Ezt a nyolc sort tegyük bele a szimbólum táblába. Mostantól ezt a 8 bitet a CPU minden egyéb beavatkozás nélkül, automatikusan a táblázatban szereplő sebességgel megállás nélkül billegtetni fogja. Bármelyik bitet a programunkban bárhol felhasználhatjuk, mint érintkezőt (csak olvasni szabad).
A hardver configban szabadon meghatározhatjuk melyik merker byte-ot akarjuk az impulzus sorozatok előállítására használni, de a byte-on belüli bitek mindig a fenti funkciókat kapják. Ha nincs szükségünk csak például az 1 másodperces impulzus sorozatra, akkor használjuk a programban csak azt az egyet, de a másik 7 ekkor is jelen lesz, ami azt jelenti, hogy a Clock Memory-nál megjelölt merker byte mind a 8 bitje foglalttá válik, másra nem használhatjuk fel, a programból kimenetként nem hivatkozhatunk rá (írni nem írhatjuk).

Egy egyszerű példa



A Q0.0 kimeneten egy jelzőlámpa van. Ha I0.0 bemenet aktív, és M30.0 merker kikapcsolt (0), akkor a lámpa 1 másodperces periódus idővel villog. Ha M30.0 merker bit aktív (1), akkor folyamatosan világít.

Ugyenez FBD-ben:



Szirty