I když jsme v minulém dílu avizovali vytváření funkcí v SCL, přece jen ještě vydržíme a ukážeme si práci s řetězci a znaky. Budeme potřebovat ASCII tabulku znaků, kterou každý najde někde na internetu, nebo využijte odkaz v závěru článku. Znak pro nás znamená jakákoliv číslice, písmeno nebo diakritický znak, například vykřičník a podobně. Vyzkoušíme si to na HMI panelu, kde nebudeme zadávat konkrétní čísla, ale znaky, tedy nějaký nápis. Více znaků za sebou pak utvoří řetězec, tedy string. V mluvené a psané formě pak třeba větu.
Rozšířených funkcí v PLC Simatic pro práci se znaky a řetězci je celá řada, abychom pochopili, jak to funguje, ukážeme si dvě. V první vytvoříme nápis jako STRING a ten převedeme na jednotlivé znaky, tedy písmena. Ve druhé pak převedeme STRING z číslic na opravdovou proměnnou tedy číslo ve formátu INTEGER.
K tomu budeme potřebovat datový blok, kde prvních pět řádků je pro první funkci, další čtyři pak pro druhou funkci, na pátém řádku máme pole pro dvacet znaků.
Na HMI to vypadá asi takto. Do vstupního STRING zadáme libovolný nápis, číslice, značky a kombinace. Funkce pak nápis rozloží na jednotlivé znaky, přičemž každý znak reprezentuje jedno hexadecimální číslo z ASCII tabulky znaků o délce jednoho bajtu. Takže 77hex znamená „w“, 62h pak „b“ a 61h je „a“. Můžete si to ověřit v ASCII tabulce, ale vše se dá parametrem ještě posouvat, takže uvidíme dále. :)
Vložíme z knihovny uvedenou instrukci „Strg_TO_Chars“, která načte řetězec znaků a rozloží jej na jednotlivé znaky do pole. Horší bude správně přiřadit proměnné k jednotlivým vstupům a výstupům funkce.
Naštěstí TIA Portal poměrně slušně doplňuje možnosti z datového bloku, ale není to přesně tak jak jsme zvyklí.
Proto si klidně funkci uděláme v LADDER, doplníme a pak překopírujeme do SCL bloku. :)
Ovšem ač se nám SCL může líbit nebo ne, stále jsou situace, kdy je třeba vhodnější použít LADDER jazyk. Tohle může být jedna z nich.
Ale v SCL to bude vypadat takto.
Čtvrtý znak z pole (také šestý a osmý) definujeme pro zobrazení na HMI jako hexa číslo.
A už to frčí, funguje to online a cyklicky, takže jakákoliv změna je ihned viditelná. Řádky 10, 12 a 14 jsou zobrazeny v hexa formátu. Parametr ve třetím řádku udává, o kolik bajtů posuneme začátek vloženého textu, jak je vidět dvojka znamená o dva bajty, začínáme tedy na třetím. Číslo na čtvrtém řádku znamená kolik znaků se do datového bloku nasypalo. Dvanáct je přesně celá webová adresa.
Klikněte na obrázek pro zvětšení
Z HMI klidně nápis změníme a změna se projeví i v jednotlivých znacích v datovém bloku PLC.
Asi takto na HMI. Je to vidět na naší videoukázce v závěru.
Jestliže něco není jasné, stačí kouknout do nápovědy, kde najdeme detailnější vysvětlení samotné funkce a parametrů.
Klikněte na obrázek pro zvětšení
Tak a teď si z řetězce znaků 12345 nebo jiného zkusíme vytvořit INTEGER proměnnou (dá se samozřejmě vytvořit REAL atp.), abychom s ní mohli dále matematicky pracovat. Například nám proměnná v tomto STRING formátu přijde z nějaké čtečky čárového kódu a podobně.
Použijeme na to ze všech možných tuto funkci „STRG_VAL“. Jinak to jsou všechny funkce pro práci s řetězci a znaky, stačí si jen přečíst popis instrukce.
Zápis pak vypadá takto. Pozor, výstup funkce je označen rovnítkem a znakem tvořícím šipku, řádek 32.
Tak jednou STRING vytvoří kladné číslo, podruhé záporné. Jak je vidět, závisí to na stavu digitálního vstupu I10.2 na řádku 25. Otázka zní proč?
Klikněte na obrázek pro zvětšení
Pro tohle. Do podmínky pro dotaz na stav I10.2 jsme si dali jednou STRING znaky „12345“ a podruhé „-8965“.
Pak to funguje celkově takto. Pokud si najdete seznam všech funkcí pro práci se znaky o něco výše, najdete i opačnou funkci, tedy převod reaálného čísla do STRING, což se používá třeba pro zobrazení na velkých displejích.
Klikněte na obrázek pro zvětšení
Zobrazení ve VAT tabulce je opravdu nejsrozumitelnější pro pochopení znaku a ASCII kódu a řazení znaků do řetězců.
Videoukázka práce se STRINGs a CHARCTERs:
https://www.youtube.com/watch?v=8fbfftUWQiQ&feature=youtube
Závěr:
Znaky, ASCII kódy, řetězce to vše se používá například v komunikacích s různými externími zařízeními, čtečkami, velkoplošnými panely a tak podobně. Proto jsme se v krátkosti tomuto věnovali v tomto dílu SCL programování a příště už si snad 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).
ASCII tabulka znaků, vysvětlení a kódování na Wikipedii zde.
Nový systémový manuál S7-1200 z 08/2018 je tady.
TIA Portal pro Simatic S7-1200/1500, více tady.