PLC-AUTOMATIZACE - PROGRAM - PROGRAMOVÉ BLOKY - PARAMETRIZACE PODPROGRAMŮ - FORMÁLNÍ Provoz webu zajišťuje:

www.hapesoft.cz

PARAMETRY PŘEDÁVANÉ FORMÁLNÍM PARAMETREM

Charakteristika

Předání parametrů formálním parametrem je podobné jako nepřímé předání parametrů s tím, že pomocí ukazatele je možno určit různé paměťové oblasti nebo objekty, které obsahují potřebné parametry.

Jako paměťovou oblast je možno určit:

  • datový blok
  • paměťové příznaky
  • čítače, časovače
  • oblast vstupů, výstupů
  • ... další oblasti uvolněné výrobcem PLC

Předání parametrů typem BLOCK

Volání podprogramu, který má definován pouze jeden parametr typu BLOCK, očekává se, že parametru bude přiřazen konkrétní datový blok. Vhodné pro případy, kdy mohou být na jednom místě programu zpracovávány různá data.

1a) Deklarace proměnných v datovém bloku DB 66 pro skupinu proměnných A:

 
DB 66
(adresa) (symbol) (typ)
0.0 ENABLE Bool // proměnná jednoho bitu typu Bool
0.1 STATUS Bool // proměnná jednoho bitu typu Bool
2.0 VALUE Integer // celočíselná proměnná typu Integer
4.0 COEFF Real // proměnná čísla s des. čárkou typu Real
8.0 DIFF Integer // celočíselná proměnná typu Integer
 

1b) Deklarace proměnných v datovém bloku DB 67 pro skupinu proměnných B:

 
DB 67
(adresa) (symbol) (typ)
0.0 ENABLE Bool // proměnná jednoho bitu typu Bool
0.1 STATUS Bool // proměnná jednoho bitu typu Bool
2.0 VALUE Integer // celočíselná proměnná typu Integer
4.0 COEFF Real // proměnná čísla s des. čárkou typu Real
8.0 DIFF Integer // celočíselná proměnná typu Integer
 

2) Volání podprogramu pro hodnoty A nebo B uložené v datovém bloku 66 nebo 67:

 
CALL TEST // volání podprogramu
BLOCK: DB66 // parametr určuje, že potřebné hodnoty jsou uloženy v DB 66
 
    ...      
           
    CALL   TEST  
BLOCK: DB67 // parametr určuje, že potřebné hodnoty jsou uloženy v DB 67
           

3) Podprogram

 
NAME: TEST // název podprogramu
Inp: BLOCK BLOCK-DB // vstupní parametr: typ bloku
 
OPN #P_BLOCK // otevření (zpřístupnění) DB určeného číslem v parametru DB-NR
L DW 2 // načtení hodnoty datového slova 2 VALU (Integer)
ITD // pomocná konverze
DTR // pomocná konverze
L DD 4 // načtení hodnoty dvojitého datového slova 4 COEF (Real)
-R // rozdíl hodnot
TRUNC // pomocná konverze (DInt/DInt)
T DW 8 // uložení výsledku do datového slova 8 / DIFF (Int)
L 0 // porovnávací hodnota (konstanta)
>=F // porovnání
A DBX 0.0 // podmínka výstupu datového bitu 0.0 ENBL (Bool)
= DBX 0.1 // uložení výsledku podmíněného porovnání do dat. bitu 0.1  STAT (Bool)
RET // konec podprogramu
 

Předání parametrů typem ANY / POINTER

Volání podprogramu, který má definovány parametry typu ANY a POINTER a očekává se, že parametrům bude přiřazen takový význam (adresová hodnota), který určuje oblast dat a posunutí v datové oblasti. Efekt je takový, že v jednom datovém bloku může být uloženo více datových skupin a vybírá se, s kterou skupinu dat má podprogram zpracovat.

Příklad:

1) Deklarace proměnných v datovém bloku DB 70 pro skupinu proměnných A i B:

 
DB 70
(adresa) (symbol) (typ)
  // pro skupinu proměnných A
 0.0 A_ENABLE Bool // proměnná jednoho bitu typu Bool
 0.1 A_STATUS Bool // proměnná jednoho bitu typu Bool
 2.0 A_VALUE Integer // celočíselná proměnná typu Integer
 4.0 A_COEFF Real // proměnná čísla s des. čárkou typu Real
 8.0 A_DIFF Integer // celočíselná proměnná typu Integer
10.0 A_REZ_1 DWord // rezerva
14.0 A_REZ_2 Word // rezerva
// pro skupinu proměnných B
16.0 ENABLE Bool // proměnná jednoho bitu typu Bool
16.1 STATUS Bool // proměnná jednoho bitu typu Bool
18.0 VALUE Integer // celočíselná proměnná typu Integer
20.0 COEFF Real // proměnná čísla s des. čárkou typu Real
24.0 DIFF Integer // celočíselná proměnná typu Integer
26.0 B_REZ_1 DWord // rezerva
30.0 B_REZ_2 Word // rezerva
// pro skupinu proměnných ...
32.0 ...
 

2) Volání podprogramu pro hodnoty A a B uložené v datovém bloku 70:

 
CALL TEST // volání podprogramu
P_ANY: P#DB70.DBX 0.0 BYTE 16 // parametr: hodnoty jsou uloženy v datovém bloku DB 70
P_PNT: P#0.0 // parametr: ukazatel na oblast dat od adresy 16
           
    ...      
 
CALL TEST // volání podprogramu
P_ANY: P#DB70.DBX 0.0 BYTE 16 // parametr: hodnoty jsou uloženy v datovém bloku DB 70
P_PNT: P#16.0 // parametr: ukazatel na oblast dat od adresy 16
 

3) Podprogram:

 
NAME: TEST // název podprogramu
Inp: P_ANY Any // vstupní parametr: číslo bloku, typ Integer
Inp: P_PNT Pointer // vstupní parametr: velikost posunutí
           
    L   P##P_ANY   // načtení datového bloku
LAR1   // zpracování v adresovém registru
    L   P##P_POINTER   // zpracování posunutí
 
... // instrukce podprogramu
     
RET // konec podprogramu
 
 
Poznámka
U různých typů PLC, různých výrobců, může být použití instrukcí a parametry odlišné.

PLC-AUTOMATIZACE - PROGRAM - PROGRAMOVÉ BLOKY - PARAMETRIZACE PODPROGRAMŮ - FORMÁLNÍ
 
Publikovaný obsah je určen pouze pro individuální studium.
Není povolena distribuce, prodej, přetisk a použití textu a/nebo vyobrazení (úplný, dílčí a/nebo částečný), použití ke školení a/nebo výuce (hromadné, skupinové nebo zadávané), veřejné a/nebo skupinové prezentace a ani jiné formy šíření v hmotné a/nebo nehmotné podobě.