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.
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.
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č.
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í
Násobíme real * 0,1, neboť například analogové signály z periferií jsou 16-ti bitové, což uvidíme prakticky dále.
Přesně na posledních třech řádcích - celočíselná do real a pak * 0,1 pro desetinné místo.
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. :)
Takto to vypadá IW300 = 304 = 30,4 °C.
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.
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.
Tady na řádku 24 je to OK.
Níže je videoukázka na tyto funkce.
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.
Funkce TRUNC pak ořeže výsledek od desetinných míst.
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.
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í
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.