Řízení modelu křižovatky s volbou režimu
tutoriál
Tutoriál porogramování PLC systémů
Řízení modelu křižovatky s možností volby režimu
Úkol této kapitoly:
- založit nový projekt
- konfiguraci načíst z předchozího projektu
- vytvořit funkční bloky pro řízení křižovatky ve více režimech
- funkční bloky podmíněně volat z hlavního programu
- program odladit
Zadání úlohy
Sestavte program pro řízení modelu křižovatku ve třech režimech:
- vše vypnuto
- blikání oranžových světel
- časování dle zadaného diagramu
K volbě režimu použijte celočíselnou proměnnou, kterou budeme zatím měnit ručně z počítače, později pomocí menu, které si vytvoříme ve webovém rozhraní. K tvorbě a editaci webu slouží nástroj WebMaker, který si předvedme v další kapitole.
Založení nového projektu
Spustíme vývojové prostředí Mosaic a využijeme projekt vytvořený v minulé lekci. Je uložený v záložce Předchozí projekty.
Z menu Soubor vybereme Nový, projekt pojmenujeme. HW konfiguraci včetně alias zkopírujeme z předchozího projektu pomocí I/O konfigurátoru volbou Načíst konfiguraci z projektu – viz obrázek
Založíme program, nazveme ho např. prgMain, zvolíme jazyk ST a deklarujeme instanci programu.
Založení funkčních bloků
Pro každý z režimů založíme funkční blok, pojmenujeme ho a zvolíme programovací jazyk. Použité POU mohou být vytvořeny v různých programovacích jazycích. Z cvičných důvodů si ukážeme si kombinaci jazyku ST, LD a FBD
Postup založení funkčního bloku je stejný jako při založení programu.
Pravým tlačítkem myši vyvoláme v IEC manageru na položce Funkční blok lokální menu s nabídkou Přidat programovou organizační jednotku, zvolíme jméno a jazyk.
Na obrázku vidíme založení fbVypnuto v jazyce FBD.
Funkční blok vypnutí světel
Funkční blok pro vypnutí všech světel na semaforech je triviální. Na všechny výstupy pošleme úroveň false – viz obrázek
Funkční blok blikání oranžových světel
Jednou z možností je použití časovače s odpovídající předvolbou.
Předvedeme si další řešení s použitím systémových registrů. Systémové registry jsou částí tzv. zápisníkové paměti, se kterou „hospodaří“ PLC.
Význam jednotlivých registrů najdeme v příručce programátora, která je součástí nápovědy Mosaic.
Pro naše účely použijeme bit S13.2 registru časových jednotek, který mění svůj stav s periodou 1s.
Připravíme si globální proměnnou a zvolíme umístění na %S13.2 – viz obrázek.
Při založení funkčního bloku jsme zvolili jazyk LD, náš FB bude vypadat takto:
První příčka slouží k vynulování všech výstupů, kde můžeme využít fbVypnuto – popsaný v předchozím textu. Druhá příčka obsluhuje výstupy OH a OV.
Funkční blok časování
Funkční blok časového režimu fbCasvani je totožný s programem řešeným v předchozí kapitole, můžeme tedy kód zkopírovat a využít v našem FB.
Vzhledem k tomu, že můžeme POU volat s vstupními parametry, tak doporučuji připravit si proměnné typu VAR_INPUT (vstupní parametry) a nahradit jimi zlomové časy našeho kódu.
Program funkčního bloku vidíme na obrázku.
Hlavní program
Funkční bloky jsou sice naprogramované, ale zatím nejsou funkční. PLC je začne řešit až v okamžiku zavolání z programu, nebo jiného funkčního bloku.
Náš hlavní program bude řešit jen volání funkčních bloků podle hodnoty připravené proměnné volbaRezimu.
V deklarační části připravíme instance funkčních bloků a celočíselnou proměnnou volbaRezimu
Ve výkonné části programu budeme příkazem IF nebo CASE volat podle hodnoty proměnné příslušné funkční bloky
Při volání funkčního bloku fbCasovani zadáváme vstupní parametry. Budeme-li chtít jiný časový průběh, do funkčního bloku nezasahujeme, jen změníme parametry při voláni