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

  • neděle, 08 září 2019 10:27

Programování v jazyku SCL (Structured Control Language), příkazy pro konvert formátů čísel CONVERT, TRUNC, FLOOR a CEIL. Na závěr si ukážeme jeden z příkazů na posun bitů SHIFT.


Než se ponoříme do konvertování formátů čísel, tak se koukneme do tabulky, co vše PLC Simatic S7-1200 v tomto ohledu umí. Nebudeme si ukazovat vše, stačí jen několik pro pochopení, jak to funguje. Ovšem tento díl už ale bude vyžadovat jisté znalosti ohledně skladby čísel, tedy byte, word, integer doubleword, doubleinteger, real atp.

tia scl6 01


Nejprve si vytvoříme datový blok DB12 s názvem DB12_CONV a v něm osm bitů, osm bajtů, osm wordů a tak dále až do osmi real proměnných.

tia scl6 10


Ne všechny konverze mají pro nás smysl, běžná konverze je třeba integer na real, což znamená 16-ti bitovou celočíselnou proměnnou na 32-bitové real tedy s pohyblivou desetinou čárkou. Základ máme na řádku 16 a 17. Číslo integer konvertujeme do real_0 a pak ještě kopírujeme real_0 do real_1. Brzy uvidíme proč.

tia scl6 11


Vždy si to ukážeme ve VAT tabulce proměnných, tedy řádek 13, 14 a 15. Celočíselná integer se konvertuje na real, ale také celočíselný, jinak to zatím nejde. :)
Klikněte na obrázek pro zvětšení

tia scl6 12b


Násobíme real * 0,1, neboť například analogové signály z periferií jsou 16-ti bitové, což uvidíme prakticky dále.

tia scl6 13


Přesně na posledních třech řádcích - celočíselná do real a pak * 0,1 pro desetinné místo.

tia scl6 14


Konkrétně z periferie TB20 a modulu pro připojení Pt100 již leze přímo teplota, ale na jedno desetinné místo, samozřejmě bez desetinné čárky, to celočíselná proměnná nesvede. Proto ji na jednom řádku 17 z PIW adresy konvertujeme do real a násobíme *0,1, abychom měli teplotu v real na jedno desetinné místo. :)

tia scl6 15


Takto to vypadá IW300 = 304 = 30,4 °C.

tia scl6 16


Takto pak na HMI panelu.
Pokud potřebujeme desetinou čárku jen na HMI, je to otázka nastavení zobrazení tagu v HMI projektu, není potřeba žádný real.

tia scl6 02


A zpět z real do integer. Což je samozřejmě na první pohled trochu nesmysl, ale existují na to konverzní příkazy. Ty nám konvertují jen celé číslo z real, tedy vše před desetinou čárkou. Navíc umí výsledek „zokrouhlit“ (což není úplně přesně, jak uvidíme dále) nahoru nebo dolů.
Poznámka: tyhle konverze potřebují správně dubleinteger, jak je upozornění ve žlutém, ale pokud jsme si jisti že číslo bude v 16-ti bitovém rozsahu, klidně výsledek mrskneme do integer. TIA portal nás na to jen lehce upozorňuje žlutým podtržením.

tia scl6 17


Tady na řádku 24 je to OK.
Níže je videoukázka na tyto funkce.

tia scl6 18


Videoukázka příkazů INT to REAL a TRUNC, FLOOR, CEIL:

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


Zde je to vidět srozumitelně, funkce FLOOR se přikloní k nižší hodnotě proměnné, funkce CEIL naopak k vyšší. Jak je vidět se zmíněným „zaokrouhlením“ to nemá nic společného. Detailnější popis těchto a dalších konvertujících funkcí najdete v helpu TIA Portal.

tia scl6 19


Funkce TRUNC pak ořeže výsledek od desetinných míst.

tia scl6 03


Konverze mezi INT a DOUBLE INTEGER, řádek 35 a 38, jsou již nebezpečné z hlediska překročení maximální hodnoty šestnáctibitového čísla -32767 .. +32767. Tedy pokud víme, že v DINT nikdy nebude číslo větší než 32767, klidně funkci použijeme. Tyhle věci je vhodné si dopředu promyslet.

Mnohem zajímavější funkcí je něco podobného konverzi a sice posun bitů ve wordu. SHIFT nebo ROTARE. První znamená posun bitů vlevo - vpravo, přičemž na uvolněná místa patřičné strany se dosadí 0. Druhá funkce naopak na volnou stranu dosadí bity z druhé strany, bity tedy rotují pořád dokola. Zvolíme jen kolik bitů má být posunuto a kam - vlevo, vpravo. Viz řádek 41.

tia scl6 21


Názorná ukázka je lepší včetně videa níže. Řádek 26 a na řádku 28 jsou všechny bity posunuty příkazem SHIFT - SHR o tři místa vpravo. Na volné pozice vlevo se dosadily nuly.
Klikněte na obrázek pro zvětšení

tia scl6 22


Videoukázka příkazů posunu bitů vpravo funkcí SHIFT - SHR:

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


Závěr:

Funkce SHIFT a ROTARE jsou mimo jiné základem pro různé posouvání svítích LED na výstupech digitálních modulů. Na každé výstavě automatizace můžete vidět takové blikající kreace na výstupních modulech různých výrobců.
V dalších dílech si již nějakou funkci zkusíme naprogramovat s použitím instančního datového bloku a SCL programování.

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