TIA Portal - SCL programování PLC, part 4

  • úterý, 23 červenec 2019 17:20

Programování v jazyku SCL (Structured Control Language), rozhodování v programu. S použitím příkazu CASE, následně ELSE.


Ještě se ale vrátíme k předchozímu dílu a příkazu IF, THEN. Jak nás upozornil kolega Jirka S - moc děkujeme, doplníme, že pokud se instrukcí IF ptáme na TRUE bitové proměnné, není nutné psát celou podmínku v řádku 10, stačí jen adresa, IF automaticky přepokládá, že se ptáme na TRUE. Tak jak je to v řádku 13.
Je překvapující jak jsou tyhle díly ohledně SCL programování čtené a když nám lidé, kteří v tom programují denně, pošlou upozornění s doplňující informací, je to vynikající. Pokud máte kus vlastní zajímavé funkce programované v SCL, klidně nám ji pošlete, uděláme z ní některý další díl.

tia scl4 10


Tak pojďme na příkaz CASE, taková rozvětvená podmínka, použijeme všude, kde potřebujeme vícenásobně porovnat hodnoty jedné proměnné. Zápis na řádku 17 až 26, musí být ukončena příkazem END_CASE. Tedy pokud v MW14 bude hodnota 6, nastaví se bit m11.0 na TRUE. A tak podobně. Tady se to jeví jako jednoduché, ale správný rozměr tahle funkce získá až v následujícím kroku.

tia scl4 11


Do řádků podmínek, kterých může být více, se kromě jedné proměnné dá napsat rozsah hodnot proměnné - řádek 20, několik pevných hodnot - řádek 22 a také kombinace obou - řádek 24. To je již jak se říká „z jiné bečky“.  :).

tia scl4 12


Přesně tak jsme si vše dali o na HMI, aby to bylo srozumitelné. Příkaz má ale jisté omezení, což uvidíme dále.

tia scl4 01


Takto jedeme online, vložili jsme si ještě i podmínku ELSE, význam je jasný, i když zde je akce „zaremována“. Pokud bychom na řádku 27 obě lomené závorky odstranili, zkuste si sami jak se bude vše chovat.

tia scl4 13


Do pole SET vložíme proměnnou, a pokud bude v rozsahu uvedeném u každé LED, což jsou ty bity „m11.x“ v programu, ta se rozsvítí.

tia scl4 02


Nemáme-li HMI, vše si dáme do VAT tabulky, kde si funkci také řádně vyzkoušíme.

tia scl4 14


První omezení příkazu najdeme třeba v HELPu, funkce CASE funguje jen pro šestnáctibitové proměnné typu integer.

tia scl4 16


Další omezení je zde, proměnné v podmínce nemohou opakovat, tedy pokud na řádku 18 máme šestku, nesmíme ji mít i v řádku 24. Pokud ji tam necháme, bit 11.3 nebude stejně TRUE, neboť CASE jakmile zjistí shodu na řádku 6, nastaví patřičný bit a přechází na příkaz END_CASE.

tia scl4 17


Zkusíme si do příkazu CASE napsat vstupní byte a zkusit detekci různých aktivních digitálních vstupů na IM151. Vstupní byte je v HW konfiguraci adresován na IB10.

tia scl4 03


Vyměníme na řádku 16 konstantu MW14 za IW9 a pokud bude stisknuto jedno klidové tlačítko, bit 11.0 bude TRUE, a pokud některé z dalších pracovních tak bude TRUE bit 11.3. A v podmínce ELSE když nebude stisknuto žádné bude nastaven bit m11.3 na TRUE. Ještě připojíme další poznámku od kolegů, při těchto funkcích, pokud je to možné, napíšeme si k ní do ELSE ošetření stavu, pokud CASE (nebo IF) neplatí. Což je to, co my máme v řádku 8 a 9, tedy nastavit bity na FALSE.
Pokud není jasné proč je vstupní IW adresováno na 9 když vstupy na IM151 začínají na 10 ...

tia scl4 18


... je to dáno pořadím bytů ve wordu u Siemens PLC.

tia scl4 19


Jak CASE vypadá online, se podívejte na naší videoukázce:

https://www.youtube.com/watch?v=0bGPbXlCR1U&feature=youtube

 

Jaroslav Blažek


Doplňující odkazy k článku: 

Uvedený PLC program včetně HMI pro TIA Portal V15.1 si stáhněte tady. (registered users only)

Nový systémový manuál S7-1200 z 08/2018 je tady.
TIA Portal pro Simatic S7-1200/1500, více tady.

Pro psaní komentářů se přihlašte

Kontakt

email : blaja @blaja.cz
email reklama: info @blaja.cz
email adresy bez mezery 
před zavináčem

Jaroslav Blažek
Štěpánská 1888
755 01 Vsetín
+420 608 180 209