Kurzy programování

Kurzy programování SIMATIC S7-300

Kurzy programování PLC SIEMENS SIMATIC S7-300, díl 5


Pojďme se teď podívat, jak vytvořit instalační datový blok s FB blokem, jak volat programový blok s DB, jak kopírovat mezi dvěma datovými bloky nebo jak používat pointery a nastavovat časovače a čítače.

Ve spolupráci se společností FOXON s.r.o. vzniká kurz programování PLC SIEMENS SIMATIC S7-300 a práce s tímto PLC. Cílem následujících dílů, jejichž počet bude flexibilně přizpůsoben zájmu a jednotlivým tématům, nebude detailní vysvětlení kompletního programování a vlastností PLC SIMATIC, právě naopak.

Zaměříme se na ryze praktické stránky práce s PLC a nejpoužívanější programové segmenty pro začínající a občasné uživatele, kteří potřebují v základech porozumět Simatikům, dále ty, kteří se s tímto PLC setkávají jen občas, a v neposlední řadě i ty, kteří mají v zaměstnání vícero druhů PLC od různých výrobců a nelze pro všechna PLC absolvovat detailní školení. Proto uvítáme jakékoliv vaše ohlasy, abychom mohli eventuálně další díly korigovat.

Pokud nemáte k dispozici nějaké zkušební PLC pro ukázky tohoto kurzu, bude vám pro většinu příkladů stačit i SIEMENS PLC simulátor, tedy vystačíte si pouze s počítačem a softwarem.

FOXON s.r.o. & Jaroslav Blažek

banner skoleni blog



5.1 INSTANČNÍ DATOVÝ BLOK S FB BLOKEM A TEMPORARY PROMĚNNÉ

V minulém díle jsme skončili s datovým blokem vygenerovaným podle UDT struktury. Teoreticky bychom mohli práci s datovými bloky opustit, ale je to téma natolik obsáhlé, že by to byl určitý nedostatek. Datové bloky jsou totiž základ veškerých dat a práce s nimi je prakticky v každém PLC programu.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 1 1

Spojíme tedy datový blok s programovým blokem, vytvoříme instanční datový blok. Nejprve si do našeho projektu vložíme nový funkční blok programu FB6.

Připomeňme si – do programového bloku se píšou jednotlivé instrukce, datový blok je pouze k ukládání hodnot proměnných.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 1 2

FB6 je prázdný, takže jej otevřeme v editoru a v horní části bloku si zobrazíme jeho část interface, tažením vodorovné přepážky dolů. Následně si do složky STAT deklarujeme proměnné, podobně jako při vytváření datového bloku.

Je také možné vložit více proměnných najednou podle UDT struktury.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 1 3

Každou proměnnou si můžeme pojmenovat, přiřadit jí výchozí hodnotu a také napsat komentář, který se bude dále zobrazovat.

Vyzkoušejte si vkládat různé typy proměnných, pro seznámení se všemi možnostmi.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 1 4

Připravili jsme si asi 20 bytes prostoru s několika proměnnými typu bool, integer a byte.

Pozn.: Všimněte si adresace ve sloupci Address.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 1 5

V interface je také složka TEMP, do které si můžeme deklarovat proměnné úplně stejně jako do STAT. Hlavní rozdíl spočívá v tom, že tyto proměnné se nevygenerují v datovém bloku, ale jsou k dispozici jen v tomto programovém bloku a cyklu programu. Slouží jen k zapsání hodnot v programu, podobně jako třeba poznámkový blok, uvidíme prakticky dále.

Poznámka: V dalším cyklu programu již hodnoty proměnných v TEMP nemusí být pravdivé, takže v jednom bloku do těchto proměnných zapíšeme, a pokud potřebujeme, i přečteme hodnotu. Prakticky se tyto TEMP používají pro mezi výpočty, zalepení nepoužívaných výstupů z funkcí a podobně. Šetří se tím místo v datových blocích a dají se lehce přidat při ladění programu.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 1 6

Pokud jsme v editoru vše uložili, tak si zkusíme vložit do projektu datový blok DB6. Při jeho vytváření jej musíme deklarovat jako instanční a v roletovém menu vybereme blok programu, ke kterému bude náležet a podle kterého se vytvoří.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 1 7

Tak a otevřeme si vytvořený DB6 v editoru, kde ihned vidíme, že jeho struktura je přesně stejná jakou jsme deklarovali v našem FB6, včetně komentářů.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 2 1

5.2 VOLÁNÍ PROGRAMOVÉHO BLOKU S INSTANČNÍM DB A SYNTAXE DEKLAROVANÝCH PROMĚNNÝCH

Abychom mohli s naším programovým blokem FB6 pracovat, musíme jej jako obvykle zavolat z OB1, tentokrát ale jinak, než jsme si zatím ukázali. Také zápis proměnných z instančního DB může být jiný než obvykle.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 2 1

Zatímco dosud jsme vždy v OB1 volali programový blok instrukcí UC, tedy nepodmíněné volání bloku programu, nyní musíme použít příkaz CALL a za čárkou číslo datového bloku, který jsme si k němu vygenerovali. Pokud si nyní zapneme zobrazení symboliky, uvidíme tento zápis ještě jinak.

Poznámka: V nápovědě si můžeme zobrazit další instrukce pro různé volání částí programu.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 2 2

Nyní si do DB6 zapíšeme nějaká data. Vezme to hezky popořádku od nejjednodušší varianty. Vidíme, že nemusíme používat zápis pro transfer do DB typu DB6.DBW2, ale zde stačí jen #INT_1. Po najetí myší na proměnnou se zobrazí i její typ a popis s komentářem.

Poznámka: Tato syntaxe zápisu je možná jen u instančního DB a stačí ji z horní části okna překopírovat třeba přes schránku.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 2 3

Nyní si ukážeme, jak zapíšeme naše číslo 1234 do temporary proměnné deklarované v hlavičce programového bloku FB6. Stačí na to známý příkaz MOVE, kde vstup, tedy zdroj, je naše proměnná z datového bloku a výstup, tedy cíl, temporary oblast.

Poznámka: Oba zápisy v segmentu 1 a 2 jsou identické, první segment je zobrazení v AVL, druhý LADDER.



5.3 KOPÍROVÁNÍ DAT MEZI DVĚMA DATOVÝMI BLOKY

Pokud si vytvoříme dva a více datových bloků, dříve nebo později vznikne potřeba zkopírovat nebo přenést data z jednoho DB do druhého DB. Jedná-li se o několik bytes, vystačíme si s příkazem uvedeným výše, ovšem jakmile bychom potřebovali kopírovat větší část DB, například desítky či stovky bytes, tak výše uvedený postup není efektivní.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 3 1

Pro pochopení principu si vytvoříme nový standardní datový blok DB7, kterého struktura bude naprosto shodná s instančním datovým blokem DB6. To vše jen proto, aby se nám nic zbytečně nepletlo. Jen jeho inicializační hodnoty si nastavíme na 11 až 18 v oblasti celočíselných proměnných, abychom viděli, zda se nám celá oblast překopíruje do jiného datového bloku.

Poznámka: Pro kopírování jedné oblasti dat do druhé by tyto oblasti měly mít stejnou strukturu, tedy integer do integer atd.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 3 2

Začneme jednou proměnnou, pro kterou použijeme standardní příkaz L a T. Kopírujeme proměnou 11 z DB7 do DB6.

Poznámka: Příkaz T = transfer je zde použit 2x, abychom si znovu připomněli různý zápis do jedné oblasti. DB6.DBW2 je standard, ale #INT_1 je stejná oblast DB6 ale zapsána syntaxí instančního DB. Je důležité si tohle zapamatovat a hlavně několikrát vyzkoušet.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 3 3

Pro uživatele a programátory má PLC Simatic v sobě velké množství systémových funkcí v knihovnách, takže si najdeme SFC20, která slouží právě ke kopírování oblastí dat. Zde je nesmírně důležitá syntaxe zápisu, při které se již používá tzv. pointer, tedy ten dvojitý křížek. Ten nám říká, že zdroj dat je v DB7, začíná od 4 byte a je dlouhý 10 bytes, tedy 5 wordů.

Jako zdroj i cíl je možné také použít merkrovou oblast dat, například P#M100.0 BYTE 10.

Poznámka: Tato forma zápisu se používá v programování dost často, takže si ji zapamatujeme, nebo aspoň uložíme do komentáře segmentu.

Protože jeden z výstupů funkce SFC20 je proměnná RET_VAL, jejíž hodnota nám říká, zda přesun dat proběhl v pořádku, nebo došlo k nějaké chybě, viz. Help přes klávesu F1. Pro zápis této hodnoty použijeme novou temporary proměnou v našem FB6, takže nemusíme hledat a deklarovat žádnou volnou oblast někde v merkrech nebo datových blocích. Tohle je přesně jeden z příkladů použití temporary proměnných.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 3 4

Celou funkci si vyzkoušíme vytvořením VAT tabulky, do které si vložíme zdrojová data a cílovou oblast dat. V označeném sloupci si budeme libovolně měnit hodnoty proměnných, které si jednorázově zapíšeme do PLC označeným tlačítkem. Okamžitě uvidíme ty samé hodnoty v DB6, kde se nám přenesly, výše uvedenou funkcí, v našem PLC programu. Tuto VAT tabulku budeme potřebovat i dále!

Poznámka: Délku kopírované oblasti si vyzkoušíme v PLC programu u SFC20 a můžeme ji měnit.



5.4 KOPÍROVÁNÍ DAT S POUŽITÍM POINTERU

Teď si ukážeme již trochu složitější a hlavně zajímavé postupy, které někdy nejsou ani moc známé a používané. Pokud si je ale osvojíte, dokážou v programování přesunů dat velmi pomoci. Prakticky se podobné příkazy používají například při kopírování receptur a podobně. Pokud si navíc pro práci s pointerem vytvoříte třeba vlastní funkci, pak je tohle nepřímé adresování vynikající.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 4 1

Teď si zkopírujeme zatím jednu proměnnou 664 do našeho datového bloku, ale použijeme k tomu adresaci přes adresní registr.

V prvním řádku jen nahrajeme hodnotu 664 do akumulátoru 1. Dále příkazem LAR1 vložíme do adresního registru hodnotu 2.0, což je v podstatě adresa odkud, tedy byte v DB. Následně příkazem OPN otevřeme datový blok 6 a v posledním řádku přeneseme proměnnou do DBW2, tedy na adresu 2. byte, která je v AR1 v datovém bloku. Pointer za AR1 je jen offset, změníme-li jej třeba na 2.0, posune se proměnná o 2 byte dále, tedy o jedno slovo.

Poznámka: Vyzkoušejte si vše vícekrát s různými proměnnými a pointery a ve VAT tabulce sledujte, kde se vám hodnota v datovém bloku objeví. Tohle je důležité pro pochopení principu, po několika změnách pointeru a proměnné vám jistě bude princip jasný. Budeme to potřebovat pro další příklad.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 4 2

A zkusíme se trochu zacyklit tak, abychom mohli celou předchozí operaci provést několikrát za sebou a každé vložení proměnné posunout do dalšího slova v našem datovém bloku. Proto si ve známém prostoru pro temporary proměnné vytvoříme proměnnou cykl, která je nezbytná pro práci s příkazem LOOP, tedy smyčka.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 4 3

A zde už to máme naplno, bez ohledů na momentální znalosti. S použitím pointerů nám tento kousek programu zkopíruje počet bytes z jednoho DB do druhého. První dva řádky slouží jen jako výhybka, tedy podmínka pro kopírování, které můžeme použít jen občas. Dále nahrajeme 2x adresní registr hodnotou 2.0, neboť v našem DB6 a DB7 začínají proměnné až na 2. byte. Pak následuje smyčka s hodnotou 10, tedy 10 bytes, což je 5 slov. Uvnitř smyčky již známé příkazy adresace, jen s tím rozdílem, že se adresa v AR1 a AR2 vždy posune o 1, takže další průběh smyčkou kopíruje data o 1 byte dále.

Poznámka: Tohle si pořádně vyzkoušejte, ale až vám půjde bez potíží kopírování jen jedné proměnné z předchozí ukázky. Možná se to zdá na první pohled komplikované, ale jakmile vám to bude chodit, zjistíte, že je to bezvadná věc, hlavně pro několik desítek nebo stovek proměnných.



5.5 ČASOVAČE, ČÍTAČE A DATOVÝ BLOK

Možná na první pohled trochu odbočíme k tématu časovačů a čítačů, ale jen zdánlivě, neboť uvidíme, jak se dají datové bloky použít i v této oblasti. Někteří programátoři ani o těchto funkcích moc neví.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 1

Nejprve si vyzkoušíme funkci čítače. Vložíme si čítač nahoru i dolů, který budeme ovládat prvním bitem z našeho DB6. Bit M1.5 je z clock merkru a mění hodnotu neustále každou vteřinu. Tuto změnu budeme počítat. Stav, proměnnou čítače, máme v MW98.

Poznámka: Význam ostatních vstupů si najděte označením čítače a Help přes klávesu F1.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 2

Protože by nám čítač směrem nahoru počítal stále dál, napíšeme si do dalšího segmentu krátkou zarážku.

Poznámka: Segment 8 je výborný pro pokusy. Vše, co nechcete mazat a potřebujete uchovat, nakopírujete jednoduše za něj a kdykoliv si je zase vrátíte před tento příkaz BE. Ten totiž PLC řekne, že tento blok skončil a má se vrátit zpět, odkud byl volán.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 3

Celou funkci čítače a jeho ovládání si vyzkoušíme z VAT tabulky. Zkuste například vyřadit zarážku z předchozího obrázku, stačí napsat dvě lomítka na začátek posledního řádku, změnit M1.5 za rychlejší a uvidíte, jak daleko čítač napočítá. Budete překvapeni.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 5

Časovač se zpožděným rozběhem. Funkce je jasná, ovládání 4. bitem přes VAT tabulku. Jakmile uběhne nastavený čas 5 sekund, čítač změní svoji hodnotu a nastaví výstupní bit na H, přesně podle obrázků.

Poznámka: Zkuste si vložit i jiné typy časovačů pro seznámení s funkčními rozdíly mezi nimi.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 6

Jenomže co když potřebujeme časovač nebo čítač a v PLC už nemáme žádný volný? U starších PLC to bylo velmi časté, počet časovačů a čítačů byl hodně omezen. Z knihovny systémových funkčních bloků vložíme do programu SFB4, což je opět časovač se zpožděným rozběhem.

Poznámka: Tímto způsobem můžeme použít časovače i čítače, stačí jen vybrat správný systémový blok SFB0 až SFB5.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 8

SFB4 vyžaduje vlastní instanční datový blok. Napíšeme proto číslo datového bloku, který zatím nemáme, je volný. U nás DB8 a editor nám nabídne automatické vygenerování datového bloku.

Poznámka: Vstupy a výstupy této funkce jsou trochu jiné než u předchozího klasického časovače.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 9

Vygenerovaný datový blok DB8 si prohlédneme v parametrizačním nástroji pro DB. Stačí na něj kliknout myší ve složce programu a vidíme, jak jeho jednotlivé proměnné přiřadit systémovému časovači podle jejich jména.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 10

Přesně takhle. Jednotlivé proměnné nám korespondují s označením vstupů a výstupů funkce SFB4, našeho časovače.


Kurz programovani Siemens PLC S7 STEP7 foxon 5 5 11

Tady už vidíme, jak nám fungují oba časovače. SFB4 má symbolický název TON a datový blok 8 pak symboliku TIMER.

Poznámka: Jeden datový blok a jeden časovač nebo čítač přes systémovou funkci nám pomůže v případě nutnosti použít více časovačů nebo čítačů, než je v PLC. Datových bloků máme totiž vždy v PLC k dispozici více, než potřebujeme.


Je vidět, že datové bloky a jejich použití je základním kamenem pro programování PLC. Takže si všechno vyzkoušejte, včetně použití různých čítačů a všech druhů časovačů, nejen ty známé TON a TOF. Příště si zkusíme ukázat vytvoření jednoduché funkce a její opětovné použití v PLC programu.

Autor: Jaroslav Blažek, blaja.cz


Užitečné odkazy k tématu 5. dílu:

Technická podpora Siemens pro CPU Simatic S7-300

PLC Simatic hlavní stránka v češtině

Související produkty

{foxonstore id="30380,30383,30379,23201,23473,24131"}

Novinky
z naší firmy

Stačí 2 e-maily měsíčně a neunikne vám nic podstatného. 
Přihlaste se a každou druhou středu čtěte přímo ve své poště.

Váš e-mail je u nás v bezpečí. Vždy ctíme Zásady zpracován osobních údajů.

Rychlý dotaz


Typ vašeho dotazu



Společnost FOXON je držitelem certifikátu ISO 9001:2015

Sledujte nás i na sociálních sítích.

Made by FOXON s.r.o. © 2022