PLC - Programovatelné logické automaty
PLC-AUTOMATIZACE - PROGRAM - SYMBOLICKÁ ADRESACE Provoz webu zajišťuje:

www.hapesoft.cz

SYMBOLICKÁ ADRESACE

Charakteristika

Symbolická adresace je metoda, která dovoluje přiřazení názvu - jména proměnné konkrétnímu (obecně) objektu, používaného v programu. U některých systémů, převážně starších není nutno symbolickou adresaci používat vůbec, modernější systémy vyžadují přiřazení symboliky alespoň u položek datových bloků, nové systémy mohou vyžadovat i povinnou symbolickou adresaci u všech proměnných a objektů.

Princip symbolické adresace

Princip symbolické adresace spočívá v tom, že konkrétnímu operandu (vstup, výstup, merker, čítač, časovač, programový blok, datový blok) je přiřazeno symbolické jméno, které je následně používáno v programu jako symbolický (zástupný) operand, přičemž program pracuje s konkrétním absolutním objektem. Jednoduché příklady jsou uvedeny v tabulce 1.

typ deklarace fyzická
adresa
symbol přístup
absolutní symbolický
bit bool I  5.3 tlakovy_vzduch A    I  5.3 A    "tlakovy_vzduch"
slovo word MW 134 stav_modulu AW   MW 134  AW   "stav_modulu"
slovo integer MW 136 pocet_cyklu L    MW 136 L    "pocet_cyklu"
blok program FC 17 poruchy CALL FC 17 CALL "poruchy"
blok data DB 6 data_mereni OPN  DB 6 OPN  "data_mereni"
Tabulka 1
Symbolická adresace.

Kompilátor (překladač) zápisu programu vždy potřebuje určit, jedná-li se absolutní nebo symbolický zápis operandu. K tomu se používá znak " (uvozovky) nebo ' (apostrof). Tento znak potom zamezuje kolizi v případě, že je jako symbolický operand použit zápis, který odpovídá (částečně nebo úplně) absolutnímu zápisu. Pokud kompilátor nedokáže instrukci přiřadit žádný operand, nahlásí chybu zápisu. Z hlediska identifikace je tato situace lépe odstranitelná než v případě kolizního zápisu, viz dále.

Kolizní zápisy

Kolizní zápisy jsou specifické případy nevhodné volby symbolu, kdy vynecháním znaků " může kompilátor programu vyhodnotit operand jako absolutní. Příklady kolizních zápisů jsou uvedeny v tabulce 2.

deklarace fyzická
adresa
symbol přístup poznámka kolize
absolutní symbolický přístup poznámka
bool I 5.3 I07.01 A  I  5.3 A  "I07.01" snímač označen: I07.01 A  I  07.01 vstup I7.1
bool I 7.1   A  I  7.1   nějaký vstup (I7.1)    
word MW 134 MW62 AW MW 134  AW "MW61" modul W61 AW MW 62 obecný MW62
word MW  62   AW MW  62   nějaké slovo (MW62)    
integer MW 136 C3 L  MW 136 L  "C3" convertor 3 L  C  3 čítač C3
counter C 3   L  C  3   nějaký čitač (C3)    
Tabulka 2
Symbolická adresace s možnými kolizními stavy (zápisy).

V tabulce je na jednom řádku uveden nevhodný zápis symbolu a na následujícím řádku výsledek, kdy po odstranění znaků " je zápis pokládán za absolutní.

Upozornění
Pokud v některém příkladě kolizního zápisu budou odstraněny znaky " , dosadí kompilátor hodnotu operandu, která odpovídá danému zápisu (absolutní) a přitom na tento stav NEUPOZORNÍ! Toto pak vede k neočekávanému chování programu.
 
Poznámka
Použití znaku " (uvozovky) nebo ' (apostrof) může být u různých systémů individuelní a může určovat, je-li symbol tvořen jedním slovem (mezery nahrazeny _ podtržítkem) nebo, jsou-li v symbolickém zápisu použity znaky mezera.

Deklarace

Pokud vývojové programové prostředí umožňovalo použití symbolické adresace, jednalo se z počátku pouze o usnadnění práce programátorovi, kdy konkrétní zástupný symbol lépe specifikoval význam konkrétního objektu než strohé absolutní označení a k symbolickému označení bylo možno přiřadit i doprovodný komentář, vit tabulka 3. Jednoduchou ale povinnou symbolickou adresaci používala společnost ASEA již u prvních PLC.

operand komentář vysvětlivky (mimo symboliku)
absolutní symbolický
I  2.3 V17_B02_3 hydraulika, valec 17, snimač B02.3, zvednut určení polohy zařízení
Q  21.6 V17_ON hydraulika, valec 17, zvednuti pohybový příkaz
MW 300 POR_SK1 poruchy skupiny 1 slovo pro uložení poruchových stavů
MW 420 POC_CYKL pocitadlo cyklu počítání výrobních cyklů
T  6 T_V17_D hydraulika, valec 17, zpozdeni zdvihu řízení časové souslednosti
DB 6 DATA data mereni oblast ukládání hodnot
Tabulka 3
Základní symbolické adresace.

Dalším krokem v používání symbolické adresace bylo doplnění informace o deklaraci typu proměnné. Toto doplnění bylo přidáno za účelem omezení chyb při programování, zejména při používání paměťové oblasti merkerů / flagů nebo i datových slov pro rozlišení proměnných bitově nebo číselně orientovaných a rozlišení číselných hodnot, viz tabulka 4.

operand komentář vysvětlivky (mimo symboliku)
absolutní symbolický typ
MW 300 POR_SK1 WORD poruchy skupiny 1 slovo pro uložení poruchových stavů
MW 420 POC_CYKL INTEGER pocitadlo cyklu - smena počítání výrobních cyklů
MD 302 POR_LIN DOUBLE WORD poruchy linky slovo pro uložení poruchových stavů
MD 422 TLAK REAL provozni tlak technologická hodnota
MD 426 POC_C_CELK DOUBLE INTEGER pocitadlo cyklu - celkem počítání výrobních cyklů celkem
T  6 T_V17-D TIMER valec 17, zpozdeni zdvihu řízení časové souslednosti
DB 6 DATA DATA BLOCK data mereni oblast ukládání hodnot
FC 100 VYPOCET FUNCTION vypocet hodnot matematické zpracování
Tabulka 4
Symbolické adresace s deklarací typu.

V souvislosti s rozšířením symbolické adresace o deklaraci typu byla rozšířena i kontrola zápisu programu ohledně přiřazení proměnné k dané funkci u graficky orientovaných zobrazení (FUP/FDB/FBS, KOP/LAD, AS/SFC). V takovém případě, při použití zápisu programu se symbolickou adresací, nelze např. přiřadit funkci násobení reálných čísel jako parametr proměnnou typu Integer nebo DWord.

Poznámka
U zobrazení AWL/STL a nebo při absolutním zápisu operandů nelze, nebo nemá kontrola shody operandů význam.

Použití symbolické adresace u DB

Výše popsaná symbolická adresace se v projekčním prostředí vytváří samostatně, mimo bloky programu. Případem, kdy je symbolická adresace svázána s blokem programu je datový blok, kdy je jednotlivým položkám přímo v datovém bloku přiřazen symbolický popis položky a deklarace typu, viz tabulka 5.

položka komentář vysvětlivky (mimo symboliku)
absolutní symbol typ
DW  0 POC_CYKL INTEGER pocitadlo cyklu - smena počítání výrobních cyklů
DW  2 POC_C_CELK DOUBLE INTEGER pocitadlo cyklu - celkem počítání výrobních cyklů celkem
DW  6 T_V17-D TIME valec 17, zpozdeni zdvihu řízení časové souslednosti
DW 10 POR_SK1 WORD poruchy skupiny 1 slovo pro uložení poruchových stavů
DW 12 POR_LIN DOUBLE WORD poruchy linky slovo pro uložení poruchových stavů
Tabulka 5
Symbolické adresace v datovém bloku.
 

Práce se symbolickou adresací

Symbolická adresace bezesporu usnadňuje práci programátora ve smyslu udržení přehlednosti programu a to již od malých aplikací až po rozsáhlé programové aplikace, kde je použití symbolické adresace nutností. Definováním typu operandu se dále zamezuje kolizím u neshody typu operandu pro různé funkce a zpracování.

Kolize absolutního a symbolického adresování

Pokud je používána symbolická adresace, bude symbol vždy ukazovat na konkrétní správnou absolutní adresu, kterou mu programátor přidělí při deklaraci (např. u paměťového příznaku ... "ZAPNUTO" ... M10.3). Absolutní adresu je dodatečně změnit na  M10.4 (automaticky nebo manuálně předrátovat) a kompilátor zajistí potřebné změny v celém programu. Pokud však v některém místě programu po předrátování nepoužijeme přístup pomocí symbolického adresování "ZAPNUTO" ale zadáme původní absolutní adresu M10.3, dojde k situaci, že bude (pravděpodobně) používán nesprávný paměťový příznak, než bylo zamýšleno (ZAPNUTO).

Podobná situace nastává u datových bloků v případech kdy:

a) je do datového bloku přidána nová položka nebo je naopak položka odebrána
b) je změněn typ některé položky (např. INT => DINT, DWORD => WORD, Byte => WORD, ...

a to před položkou u které může dojít ke kolizi v přístupu. Pokud ke konkrétní položce budeme přistupovat pouze s použitím symbolické adresace, změnu absolutní adresy ošetří kompilátor. Pokud ke konkrétní položce budeme chtít přistupovat absolutně, bude nutno přepočítat polohu položky v datovém bloku v závislosti na počtu a typu přidaných / odebraných / změněných položek. Vliv změny položek v datovém bloku na absolutní adresaci je zobrazen v tabulce 6.

adresa symbol typ symbolický přístup absolutní přístup poznámka
výchozí stav
DB 10 MERENI DATA BLOCK OPN "MERENI" OPN DB 10  
DW  8 INPUT WORD      
DW 10 KOEF INTEGER      
DW 12 STATUS DWORD      
DW 16 PROCES REAL L MERENI."PROCES" L DB10.DBD16 sledovaná položka
DW 20 LIMIT INTEGER      
stav po přidání položky
DB 10 MERENI DATA BLOCK OPN "MERENI" OPN DB 10  
DW  8 INPUT WORD      
DW 10 KOEF INTEGER      
DW 12 OFFSET INTEGER     přidaná položka
DW 14 STATUS DWORD      
DW 18 PROCES REAL L MERENI."PROCES" L DB10.DBD18 sledovaná položka
DW 22 LIMIT INTEGER      
stav po (další) změně položek
DB 10 MERENI DATA BLOCK OPN "MERENI" OPN DB 10  
DW  8 INPUT WORD      
DW 10 KOEF REAL     změněná položka
DW 14 OFFSET REAL     změněná položka
DW 18 STATUS DWORD      
DW 22 PROCES REAL L MERENI."PROCES" L DB10.DBD22 sledovaná položka
DW 26 LIMIT INTEGER      
Tabulka 6
Změna absolutní adresy při přidání nebo změně položky v datovém bloku
 
Poznámka
Pokud změníte fyzickou adresu operandu, kompilátor programu vyhledá všechny výskyty tohoto operandu a adresu operandu opraví, všechny změny (změněné bloky programu) je nutno nahrát do CPU.
 
Upozornění
Pokud změníte typ operandu je nutno prověřit výskyt tohoto operandu v celém programu, zkontrolovat a ručně opravit jeho přímé použití v instrukcích, funkcích i předávaných parametrech podprogramů a jiných. Změněné programové bloky je nutno znova nahrát do CPU.
 
Varování
Pokud nejsou znova nahrány všechny změněné bloky programu, bude to mít za následek nedefinované chování programu, protože "staré" bloky pracují stále s původní deklarací typu proměnné.

Moderní programovací prostředí jsou schopny automaticky detekovat změny v blocích programu a upozorní na nutnost nahrání všech změněných bloků programu a zároveň nedovolí nahrání programového bloku, kde vlivem změny typu došlo ke kolizi parametrů a tato vyžaduje úpravu.

Tag

Tag je položka symbolické adresace, která nese informace o jednom operandu. S vývojem projekčního software doznal Tag několik změn. Podle dodavatele projekčního software se obsah a možnosti využití Tagu liší co do užití a funkcí. Obecně je nutno v Tagu uchovávat několik informací sloužící k systémovému začlenění Tagu do programu, viz tabulka 7.

identifikační číslo unikátní identifikační číslo Tagu
typ bool, Byte, Word, ... , blok programu
oblast podle typu Tagu ... I/O, M(F), DB, oblast programu
fyzická adresa místo uložení v oblasti, ev. číslo pro blok programu *)
bitová adresa číslo bitu u typu Bool
symbol zástupný popis objektu
komentář pomocný vysvětlující popis objektu
Tabulka 7
Obecná struktura Tagu.

*) skutečnou fyzickou adresu objektu v paměti určuje kompilátor a systém CPU při nahrání do paměti, případně operační systém CPU u dynamicky vytvářených DB.


PLC-AUTOMATIZACE - PROGRAM - SYMBOLICKÁ ADRESACE
 
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ě.