3 Obecné programování (část 1)

Obsahuje překlad kapitol 3.1 a 3.2.10 z dokumentu 81318674_Programming_guideline_DOC_v16_en.pdf

3 Obecné programování

3.1 Operační systém a uživatelský program

Řídicí jednotky SIMATIC se skládají z operačního systému a uživatelského programu.
 
  • Operační systém organizuje všechny funkce a sekvence řídicí jednotky, které nejsou spojeny s konkrétní řídicí úlohou (např. obsluha restartu, aktualizace obrazu procesu, volání uživatelského programu, obsluha chyb, správa paměti atd.). Operační systém je nedílnou součástí řídicí jednotky.
  • Uživatelský program obsahuje všechny bloky, které jsou potřebné pro zpracování konkrétní automatizační úlohy. Uživatelský program je naprogramován pomocí programových bloků a načten do řídicí jednotky.

obr 3-1

U řídicích jednotek SIMATIC se uživatelský program provádí vždy cyklicky. Cyklický OP "Main" již existuje ve složce "Programové bloky" po vytvoření řídicí jednotky v programu STEP 7. Blok je zpracován řídicí jednotkou a vyvolán v nekonečné smyčce.
 

3.2 Programové bloky

Ve STEP 7 (TIA Portal) jsou k dispozici všechny známé typy bloků z předchozích verzí STEP 7:
 
  • Organizační bloky
  • Funkční bloky
  • Funkce
  • Datové bloky

Zkušení uživatelé STEP 7 se v něm ihned zorientují a noví uživatelé se mohou velmi snadno seznámit s programováním.

Výhody

  • Díky různým typům bloků můžete dát svému programu dobrou a přehlednou strukturu.
Díky dobré a strukturovanému programu získáte mnoho funkčních jednotek, které lze opakovaně používat v rámci projektu i v jiných projektech. Tyto funkční jednotky se pak obvykle liší pouze jinou konfigurací (viz kapitola 3.2.9 Opakované použití bloků).

Váš projekt nebo váš závod se tak stává přehlednějším. To znamená, že chybové stavy v závodě lze snadněji odhalit, analyzovat a odstranit. Jinými slovy, udržovatelnost vašeho závodu se stává snazší. To platí i pro chyby v programování.

Doporučení

  • Strukturujte svou automatizační úlohu.
  • Rozdělte celou funkci vašeho zařízení na jednotlivé oblasti a vytvořte dílčí funkční celky. Tyto funkční celky opět rozdělte na menší jednotky a funkce. Dělte tak dlouho, dokud nezískáte funkce, které můžete použít několikrát s různými parametry.
  • Určete rozhraní mezi funkčními jednotkami. Definujte jedinečná rozhraní pro funkce, které mají být dodávány "externími firmami".
Všechny organizační bloky, funkční bloky a funkce lze programovat pomocí následujících jazyků:
 
Tabulka 3-1: Programovací jazyky
Programovací jazyk S7-1200 S7-1500
Žebříčkový diagram
Ladder diagram (LAD)
ano ano
Diagram funkčních bloků
Function block diagram (FBD)
ano ano
Strukturovaný řídicí jazyk
Structured Control Language (SCL)
ano ano
Graph ne ano
Seznam výpisů
Statement list (STL)
ne ano

3.2.1 Organizační bloky (OB)

OB jsou rozhraním mezi operačním systémem a uživatelským programem. Jsou volány operačním systémem a řídí např. následující procesy:

  • chování řadiče při spuštění
  • cyklické zpracování programu
  • Zpracování programu řízené přerušením
  • Zpracování chyb

V závislosti na řídicí jednotce je k dispozici řada různých typů OB.

Vlastnosti

  • OB jsou volány operačním systémem řadiče.
  • V programu může být vytvořeno několik hlavních OB. OB se zpracovávají postupně podle čísla OB.

Doporučení

  • Zapouzdřit různé části programu, které by možná měly být vyměnitelné mezi jednotlivými řadiči, do několika hlavních OB.
  • Vyhnout se komunikaci mezi různými hlavními OB. Ty pak mohou být používány nezávisle na sobě. Pokud si přesto vyměňujete data mezi jednotlivými hlavními OB, použijte globální DB (viz kapitola 4.2 Žádná bitová paměť, ale globální datové bloky).
  • Všechny části programu, které k sobě patří, rozdělte do složek a uložte je kvůli opakovanému použití do projektu nebo globální knihovny. Obrázek 3-4: Uložení částí programu v pořadí v knihovně projektu

Další informace naleznete v kapitole 3.7 Knihovny.

Poznámka:
Více informací naleznete v následujícím záznamu:
Které organizační bloky lze použít ve STEP 7 (TIA Portal)
https://support.industry.siemens.com/cs/ww/en/view/40654862

3.2.2 Funkce (FC)

FC jsou bloky bez cyklických datových úložišť. Proto nelze hodnoty parametrů bloků ukládat až do dalšího volání a při volání je třeba zadat aktuální parametry.
 

Vlastnosti

FC jsou bloky bez cyklických datových úložišť.

  • Dočasné tagy jsou při volání v neoptimalizovaných blocích nedefinované. V optimalizovaných blocích jsou vždy přednastaveny na výchozí hodnotu (firmware S7-1500 a S7-1200 V4 a vyšší). Výsledné chování tedy není náhodné, ale reprodukovatelné chování.
  • Pro trvalé uložení dat FC jsou k dispozici funkce globálních datových bloků.
  • FC mohou mít několik výstupů.
  • Hodnotu funkce lze přímo znovu použít v SCL ve vzorci.

Doporučení

  • Funkce používejte pro často se opakující aplikace, které jsou volány několikrát na různých místech uživatelského programu.
  • Použijte možnost přímého opakovaného použití hodnoty funkce v SCL.
    [Operand] := [FC name] (parameter list);
 

Příklad:

V následujícím příkladu je v FC naprogramován matematický vzorec. Výsledek výpočtu je přímo deklarován jako návratová hodnota a hodnotu funkce lze přímo znovu použít.

Tabulka 3-2: Opakované použití hodnoty funkce
Krok Instrukce
1. Vytvořte FC s matematickým vzorcem (kruhová výseč) a definujte hodnotu "return" jako výsledek vzorce.
2. Volání FC s výpočtem kruhového segmentu v libovolném bloku (SCL).
[Operand] := [FC name] (parameter list);
Poznámka:
Další informace naleznete v následujících heslech:
Jaký je maximální počet parametrů, které můžete definovat v programu STEP 7 (TIA Portal) pro funkci v CPU S7-1200/S7-1500?
https://support.industry.siemens.com/cs/ww/en/view/99412890

3.2.3 Funkční bloky (FB)

FB jsou bloky s cyklickým ukládáním dat, ve kterých jsou trvale uloženy hodnoty. Cyklické ukládání dat je realizováno v instanční DB.

  • FB jsou bloky s cyklickým ukládáním dat.
  • Dočasné tagy jsou při volání v neoptimalizovaných blocích nedefinované. V optimalizovaných blocích jsou vždy přednastaveny na výchozí hodnotu (firmware S7-1500 a S7-1200 V4). Výsledné chování tedy není náhodné, ale reprodukovatelné.
  • Statické tagy zachovávají hodnotu z cyklu na cyklus

Doporučení:

  • Používejte funkční bloky za účelem vytváření podprogramů a strukturování uživatelského programu. Funkční blok lze také volat několikrát na různých místech uživatelského programu. To usnadňuje programování často se opakujících částí programu.
  • Pokud jsou funkční bloky v uživatelském programu použity vícenásobně, použijte samostatné instance, nejlépe více instancí.

3.2.4 Instance

Volání funkčního bloku se nazývá instance. Data, se kterými instance pracuje, jsou uložena v DB instance.
DB instancí se vždy vytvářejí podle specifikací v rozhraní FB, a proto je nelze v DB instancí měnit.

Instanční DB se skládá z trvalé paměti s rozhraními input, output, InOut a static. Dočasné tagy jsou uloženy v těkavé paměti (zásobník L). Zásobník L je vždy platný pouze pro aktuální zpracování. Tj. dočasné tagy se musí inicializovat v každém cyklu.
 

Vlastnosti

  • Instanční DB jsou vždy přiřazeny k FB.
  • Instanční DB není nutné vytvářet ručně v portálu TIA a vytvářejí se automaticky při volání FB.
  • Struktura instanční DB je specifikována v příslušném FB a lze ji měnit pouze tam.

Doporučení

  • Naprogramujte to tak, aby data instanční DB bylo možné měnit pouze pomocí příslušného FB. Tímto způsobem zaručíte, že blok bude možné používat univerzálně ve všech typech projektů.

Více informací naleznete v kapitole  3.4.1 Bloková rozhraní jako výměna dat .

3.2.5 Multi-instance

U multiinstancí mohou volané funkční bloky ukládat svá data do datového bloku instance volaného funkčního bloku. To znamená, že pokud je ve funkčním bloku volán jiný funkční blok, uloží svá data do instanční DB nadřazených FB. Funkčnost volaného bloku je tak zachována i při přenosu volajícího bloku.

Následující obrázek ukazuje FB, který využívá jiný FB ("IEC Timer"). Všechna data jsou uložena ve více instanční DB. Je tedy možné vytvořit blok s nezávislým časovým chováním, například generátor hodin.

Výhody

 

  • Znovupoužitelnost
  • Je možné volat vícekrát
  • Přehlednější program s menším počtem instancí DB
  • Jednoduché kopírování programů
  • Dobré možnosti strukturování během programování

Vlastnosti

Multi-instance jsou paměťové oblasti v rámci instančních DB.

Doporučení

Používejte multiinstance, abyste mohli...

  • snížit počet instancí DB.
  • vytvořit opakovaně použitelné a přehledné uživatelské programy.
  • naprogramovat lokální funkce, například časovač, čítač, vyhodnocování hran.

Příklad:

Pokud požadujete funkci času a čítače, použijte místo absolutně adresovaného SIMATIC Timer bloky "IEC Timer" a "IEC Counter". Pokud je to možné, používejte zde také vždy více instancí. Tím se udržuje nízký počet bloků v uživatelském programu.

Poznámka:
Další informace naleznete v následujících heslech:
Jak provedete deklaraci časovače a čítače pro S7-1500 v programu STEP 7 (TIA Portal)?
https://support.industry.siemens.com/cs/ww/en/view/67585220

3.2.6 Přenos instance jako parametru (V14)

Instance volaných bloků lze definovat jako parametry InOut.

Výhody:

  • Je možné vytvářet standardizované funkce, jejichž dynamické instance se přenášejí.
  • Pouze při volání bloku je určeno, jaká instance se použije.

Příklad

3.2.7 Globální datové bloky (DB)

Proměnná data jsou umístěna v datových blocích, které jsou k dispozici celému uživatelskému programu.

Výhody

  • Dobře strukturovaná paměťová oblast
  • Vysoká rychlost přístupu

Vlastnosti

  • Všechny bloky v uživatelském programu mohou přistupovat ke globálním DB.
  • Struktura globálních DB může být libovolně složena ze všech datových typů.
  • Globální DB se vytvářejí buď prostřednictvím editoru programu, nebo podle dříve vytvořeného "uživatelského datového typu PLC" (viz kapitola 3.6.4 Datový typ STRUCT a datové typy PLC).
  • Lze definovat maximálně 256 strukturovaných tagů (ARRAY, STRUCT). To neplatí pro tagy, které jsou odvozeny z datového typu PLC.

Doporučení

  • Pokud se data používají v různých částech programu nebo blocích, používejte globální DB.
Poznámka:
Další informace naleznete v následujících heslech:
Jak je strukturována deklarační tabulka pro globální datové bloky ve STEP 7 (TIA Portal)?
https://support.industry.siemens.com/cs/ww/en/view/68015630

3.2.8 Stahování bez reinicializace

Za účelem změny uživatelských programů, které již v řídicí jednotce běží, nabízejí řídicí jednotky S7-1200 (firmware V4.0) a S7-1500 možnost rozšířit za provozu rozhraní optimalizovaných funkčních nebo datových bloků. Změněné bloky lze načíst, aniž by se regulátor nastavil do režimu STOP a aniž by byly ovlivněny aktuální hodnoty již načtených tagů.

Následující kroky proveďte, když je řídicí jednotka v režimu RUN.
 
  1. Povolte "Stahování bez opětovné inicializace".
  2. Vložení nově definovaných tagů do stávajícího bloku
  3. Načtení bloku do řadiče

Výhody

  • Načtení nově definovaných tagů bez přerušení běžícího procesu. Řadič zůstává v režimu "RUN".
 

Vlastnosti

  • Stahování bez reinicializace je možné pouze u optimalizovaných bloků.
  • Nově definované tagy jsou inicializovány. Stávající tagy si zachovávají svou aktuální hodnotu.
  • Blok s rezervou vyžaduje více místa v paměti řadiče.

Rezerva paměti závisí na pracovní paměti řadiče; je však max. 2 MB.

  • Předpokládá se, že pro blok byla definována paměťová rezerva.
  • Ve výchozím nastavení je paměťová rezerva nastavena na 100 bajtů.
  • Paměťová rezerva se definuje individuálně pro každý blok.
  • Bloky lze různě rozšiřovat.

Doporučení

  • Definujte paměťovou rezervu pro bloky, které mají být rozšířeny během uvádění do provozu (např. testovací bloky). Proces uvádění do provozu není stažením narušen, protože aktuální hodnoty stávajících tagů zůstávají zachovány.

Příklad: Nastavení paměťové rezervy na bloku

  • Následující tabulka popisuje, jak lze nastavit rezervu paměti pro stahování bez reinicializace. Tabulka 3-3: Nastavení rezervy paměti
Tabulka 3-3: Nastavení rezervy paměti
Krok Instrukce
1. Klikněte pravým tlačítkem myši na libovolný optimalizovaný blok ve stromu projektu a vyberte možnost "Vlastnosti".
2.
Klikněte na "Stáhnout bez reinicializace".
3. Zadejte požadovanou rezervu paměti pro "Memory reserve".
4. Potvrďte tlačítkem "OK".
Poznámka:
Můžete také nastavit výchozí hodnotu pro velikost paměťové rezervy pro novou paměť v TIA portalu TIA.
V panelu nabídek přejděte na "Options – Settings" a poté na "PLC programming – General – Download without reinitialization".

Příklad: Stahování bez reinicializace

Následující příklad ukazuje, jak stahovat bez reinicializace.

Tabulka 3-4: Načtení bez reinicializace
Krok Instrukce
1. Předpoklad: musí být nastavena paměťová rezerva (viz výše).
2. Otevřete např. optimalizovanou globální DB.
3. Klikněte na tlačítko "Activate memory reserve" a dialogové okno potvrďte tlačítkem "OK".
4. Přidejte nový tag (je možné použít i retenčního tagu).
5. Stáhněte blok do řídicí jednotky.
6. Výsledek: Skutečné (aktuální) hodnoty bloku zůstávají
Poznámka:
Další informace naleznete v online nápovědě portálu TIA v části "Načítání rozšíření bloků bez opětovné inicializace".
Další informace naleznete v následujícím záznamu:
Jak je strukturována deklarační tabulka pro globální datové bloky v aplikaci STEP 7-1500 (TIA portal)?
https://support.industry.siemens.com/cs/ww/en/view/68015630

3.2.9 Opakované použití bloků

Koncepce bloků nabízí řadu možností, jak strukturovaně a efektivně programovat.

Výhody

  • Bloky lze použít univerzálně na libovolném místě uživatelského programu.
  • Bloky lze používat univerzálně v různých projektech.
  • Když každý blok dostane samostatnou úlohu, automaticky se vytvoří přehledný a dobře strukturovaný uživatelský program.
  • Je zde zřetelně méně zdrojů chyb.
  • Je možná jednoduchá diagnostika chyb.

Doporučení:

Pokud chcete blok použít opakovaně, vezměte na vědomí následující doporučení:

  • Na bloky se vždy dívejte jako na zapouzdřené funkce. Tj. každý blok představuje dokončenou dílčí úlohu v rámci celého uživatelského programu.
  • Pro seskupení částí zařízení použijte několik cyklických hlavních OB.
  • Výměnu dat mezi bloky provádějte vždy prostřednictvím jejich rozhraní, nikoliv prostřednictvím jejich instancí (kapitola 3.4.1 Rozhraní bloků jako výměna dat).
  • Nepoužívejte data specifická pro projekt a vyhněte se následujícímu obsahu bloků:
    • Přístupu ke globálním DB a používání jednoinstančních DB.
    • Přístup ke značkám
    • Přístup ke globálním konstantám
  • Opakovaně použitelné bloky mají stejné požadavky jako bloky chráněné know-how v knihovnách. Proto je třeba kontrolovat bloky z hlediska opakovaného použití na základě vlastnosti bloku "Multiple instance capability". Před kontrolou blok zkompilujte.

3.2.10 Automatické číslování bloků

Pro interní zpracování jsou požadovaná čísla bloků automaticky přidělována systémem (nastavení ve vlastnostech bloku).

Výhody

  • Konfliktní čísla bloků, např. v důsledku kopírování, automaticky odstraní portál TIA během kompilace.

Doporučení

Ponechte předvolené nastavení "Automatické" beze změny.