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

Obsahuje překlad kapitol 3.3 až 3.x z dokumentu 81318674_Programming_guideline_DOC_v16_en.pdf

3.3 Typy blokových rozhraní

FB a FC mají tři různé typy rozhraní: In, InOut a Out. Prostřednictvím těchto typů rozhraní jsou blokům poskytovány parametry. Tyto parametry jsou v bloku opět zpracovány a vyvedeny na výstup. Parametry InOut slouží k přenosu dat do volaného bloku a také k vrácení výsledků. Existují dvě různé možnosti přenosu dat pomocí parametrů.

3.3.1 Volání hodnotou

Při volání bloku se hodnota aktuálního parametru zkopíruje na formální parametr bloku. K tomu slouží dodatečná paměť ve volaném bloku.

Vlastnosti

  • Každý blok se chová stejně jako přenesené parametry
  • Hodnoty se kopírují při volání bloku

3.3.2 Volání odkazem

Při volání bloku se přenáší reference na adresu aktuálního parametru. K tomu není zapotřebí žádná další paměť.

Vlastnosti

  • Každý blok zobrazuje stejné chování jako odkazované parametry.
  • Skutečné parametry jsou odkazovány při volání bloku, tj. při přístupu jsou hodnoty skutečného parametru přímo čteny nebo zapisovány.

Doporučení

  • Pro strukturované značky (např. typu ARRAY, STRUCT, STRING, ...) obecně používejte typ rozhraní InOut, abyste zbytečně nezvětšovali potřebnou datovou paměť.

3.3.3 Přehled pro přenos parametrů

V následující tabulce je uveden souhrnný přehled způsobu přenosu parametrů bloků S7-1200/1500 s elementárními nebo strukturovanými datovými typy.

Tabulka 3-5: Přehled pro přenos parametrů

Typ bloku / formální parametr Elementární
datový typ
Strukturovaný
datový typ
FC Input Copy Reference
Output Copy Reference
InOut Copy Reference
FB Input Copy Copy
Output Copy Copy
InOut Copy Reference
Poznámka:
Pokud jsou při volání bloku přenášena optimalizovaná data s vlastností "neoptimalizovaný přístup" (non-optimized access), jsou zpravidla přenášena jako kopie. Pokud blok obsahuje mnoho strukturovaných parametrů, může to rychle vést k přeplnění dočasné paměťové oblasti (lokálního zásobníku dat) bloku. Tomu lze zabránit nastavením stejného typu přístupu pro oba bloky (kapitola 2.6.5 Přenos parametrů mezi bloky s optimalizovaným a neoptimalizovaným přístupem).

3.4 Koncepce paměti

Pro STEP 7 se obecně rozlišuje globální a lokální paměťová oblast. Globální paměťová oblast je k dispozici pro každý blok uživatelského programu. Lokální paměťová oblast je k dispozici pouze v rámci příslušného bloku.

3.4.1 Bloková rozhraní jako výměna dat

Pokud zapouzdřujete funkce a programujete výměnu dat mezi bloky pouze prostřednictvím rozhraní, máte jednoznačně výhody.

Výhody

  • Program lze modulárně sestavit z hotových bloků s dílčími úlohami.
  • Program se snadno rozšiřuje a udržuje.
  • Programový kód se lépe čte a testuje, protože v něm nejsou skryté křížové přístupy.

Doporučení

  • Pokud je to možné, používejte pouze lokální značky. Bloky tak můžete používat univerzálně a modulárně.
  • Používejte výměnu dat prostřednictvím blokových rozhraní (In, Out, InOut), jeho zaručuje opakovanou použitelnost bloků.
  • Datové bloky instancí používejte pouze jako lokální paměť pro příslušný funkční blok. Do instančních datových bloků by se neměly zapisovat jiné bloky.

Pokud se pro výměnu dat používají pouze bloková rozhraní, lze zajistit, že všechny bloky lze používat nezávisle na sobě.

3.4.2 Globální paměť

Paměti se nazývají globální, pokud k nim lze přistupovat z libovolného místa uživatelského programu. Existují paměti závislé na hardwaru (například bitová paměť, časy, čítače atd.) a globální DB. U hardwarově závislých paměťových oblastí hrozí nebezpečí, že program nebude přenositelný na libovolný řadič, protože tamní oblasti již mohou být využity. Proto byste měli místo hardwarově závislých paměťových oblastí používat globální DB.

Výhody

  • Uživatelské programy lze používat univerzálně a nezávisle na hardwaru.
  • Uživatelský program lze modulárně konfigurovat, aniž by bylo nutné rozdělovat bitové paměťové oblasti pro různé uživatele.
  • Optimalizované globální DB jsou jednoznačně výkonnější než adresová oblast bitové paměti, která není optimalizována z důvodu kompatibility.
  • Koncepce paměti

Doporučení

  • Nepoužívejte žádnou bitovou paměť a místo ní používejte globální DB.
  • Vyhněte se paměti závislé na hardwaru, jako je například paměť hodin nebo čítač. Místo toho používejte čítač a časovač IEC ve spojení s více instancemi (kapitola 3.2.5 Více instancí). Časovače IEC najdete v části "Instrukce - Základní instrukce - Operace s časovači".

3.4.3 Místní paměť

  • Statické značky
  • Dočasné značky

Doporučení

  • Statické tagy používejte, pokud jsou hodnoty vyžadovány v příštím cyklu.
  • Dočasné tagy používejte jako mezipaměť v aktuálním cyklu. Přístupová doba u dočasných tagů je kratší než u statických.
  • Pokud se ke vstupním/výstupním tagům přistupuje velmi často, použijte dočasný tag jako mezipaměť, abyste ušetřili dobu běhu.
 
 
 
 
 
 
Poznámka:
Pokud jsou při volání bloku přenášena optimalizovaná data s vlastností "neoptimalizovaný přístup" (non-optimized access), jsou zpravidla přenášena jako kopie. Pokud blok obsahuje mnoho strukturovaných parametrů, může to rychle vést k přeplnění dočasné paměťové oblasti (lokálního zásobníku dat) bloku.
Tomu lze zabránit nastavením stejného typu přístupu pro oba bloky (kapitola 2.6.5 Přenos parametrů mezi bloky s optimalizovaným a neoptimalizovaným přístupem).
 
Poznámka:
Optimalizované bloky: Dočasné tagy se při každém volání bloku inicializují výchozí hodnotou (firmware S7-1500 / S7-1200 V4 nebo vyšší)
Neoptimalizované bloky: Dočasné značky jsou při každém volání bloku nedefinované.

3.4.4 Rychlost přístupu k paměťovým oblastem

STEP 7 nabízí různé možnosti přístupu do paměti. Ze systémových důvodů existují rychlejší a pomalejší přístupy k různým oblastem paměti.

Nejrychlejší přístup v S7-1200/1500 v sestupném pořadí

  1. Optimalizované bloky: Dočasné značky, parametry FC a FB, neretušované statické značky, značky [datový typ PLC].
  2. Optimalizované bloky, jejichž přístup pro kompilaci je znám:
    - Retenční tagy FB
    - Optimalizované globální DB
  3. Přístup k neoptimalizovaným blokům
  4. Indexované přístupy s indexem, který byl vypočítán za běhu (např. Motor [i]).
  5. Přístupy, které vyžadují kontrolu za běhu
    - Přístupy k DB, které jsou vytvořeny za běhu nebo které byly otevřeny nepřímo (např. OPN DB[i]).
    - Přístup k registrům nebo nepřímý přístup do paměti
  6. Kopírování struktur mezi optimalizovanými a neoptimalizovanými bloky (kromě pole bytů).