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

  • pondělí, 23 září 2019 07:29

Programování v jazyku SCL (Structured Control Language), příkazy pro práci s řetězci a znaky, strings and characters.


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.

tia scl7 04


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.

tia scl7 10


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ů.

tia scl7 11


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. :)

tia scl7 01


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.

tia scl7 12


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í.

tia scl7 13


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.

tia scl7 14


Ale v SCL to bude vypadat takto.

tia scl7 15


Čtvrtý znak z pole (také šestý a osmý) definujeme pro zobrazení na HMI jako hexa číslo.

tia scl7 16


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í

tia scl7 17b


Z HMI klidně nápis změníme a změna se projeví i v jednotlivých znacích v datovém bloku PLC.

tia scl7 18


Asi takto na HMI. Je to vidět na naší videoukázce v závěru.

tia scl7 03


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í

tia scl7 19b


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ě.

tia scl7 02


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.

tia scl7 20


Zápis pak vypadá takto. Pozor, výstup funkce je označen rovnítkem a znakem tvořícím šipku, řádek 32.

tia scl7 21


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í

tia scl7 22b


Pro tohle. Do podmínky pro dotaz na stav I10.2 jsme si dali jednou STRING znaky „12345“ a podruhé „-8965“.

tia scl7 23


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í

tia scl7 24b


Zobrazení ve VAT tabulce je opravdu nejsrozumitelnější pro pochopení znaku a ASCII kódu a řazení znaků do řetězců.

tia scl7 05


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.

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