SGSLP – Nastavování, čtení, ukládání a načítání parametrů

Symbol blokuPotřebná licence: ADVANCED
PIC

Popis funkce
Blok SGSLP (z anglického Set, Get, Save and Load Parameters) je speciálním blokem pro správu připojených parametrů jiných bloků v konfiguraci řídicího systému REXYGEN. Blok pracuje i v systému Matlab-Simulink, jeho dosah je však omezen jen na bloky téhož souboru .mdl, v němž je vložen.

Blok může pracovat až se šestnácti sadami parametrů, které jsou číslovány od 0 do 15 a volí se vstupem ips, aktuální počet sad je určen parametrem nps. Je-li vstup ips nepřipojen, pracuje blok se sadou ips = 0. V každé sadě může být zkonfigurováno až 16 různých parametrů daných řetězcovými parametry sc0 sc15, takže jeden blok SGSLP může pracovat s maximálně 256 parametry v řídicím systému REXYGEN. Je-li řetězec sci prázdný (nezadaný), není žádný parametr specifikován, jinak parametry sci mohou používat dvě syntaxe:

  1. <blok>:<param> – specifikují jeden blok se jménem blok s parametrem param. V tomto případě je použit tentýž blok a parametr pro všech nps sad parametrů.
  2. <blok>:<param><sep><blok>:<param> – v tomto případě je pro každou sadu parametrů ips uvažován obecně různý parametr, první dvojice <blok>:<param> odpovídá ips = 0. Oddělovačem <sep> může být buď čárka nebo středník. Specifikovaných dvojic <blok>:<param> by mělo být právě nps. V případě, že jich je méně, a má se provést některá z operací (viz níže) se sadou, pro niž specifikace bloku a parametru chybí, požadovaná operace se neprovede.

Přestože lze obecně pro každý z indexů i, i = 015 volit různý způsob zadání sci, doporučuje se pro celý blok volit buď syntaxi 1 nebo 2. První případ (několik hodnot pro stejný parametr) odpovídá např. výrobě nps druhů zboží, kde pro každé je nastavena jiná hodnota daného parametru. Druhý případ lze použít např. pro uložení co největšího počtu uživatelsky definovaných hodnot parametrů na disk (viz operaci SAVE níže), kde je vhodné blok SGSLP doplnit o logiku přepínání vstupu ips (např. pomocí bloku ATMT z knihovny LOGIC).

Pokud všechny bloky, jejichž parametry mají být nastavovány daným blokem SGSLP, leží v hierarchii bloků v nějakém subsystému nebo níže, lze výhodně použít řetězcový parametr broot, v němž se uvede jméno tohoto subsystému. Toto jméno se připojuje před každou specifikaci <blok> v parametrech sci. V případě, že je broot = ., je výsledek stejný, jako by parametr obsahoval cestu k subsystému, do nějž je daný blok SGSLP vložen (parametr se zadává bez uvozovek, ty jsou použity pouze v tomto textu pro zvýraznění jednotlivého znaku). Je-li hodnota parametru broot prázdná, musí každý výskyt <blok> v parametrech sci specifikovat úplnou cestu k bloku, v níž jsou jednotlivé hierarchické úrovně odděleny tečkami. Například tedy volba broot = . a sc0 = CNR:ycn zajišťuje propojení na blok CNR a jeho parametr ycn, který se nachází ve stejném subsystému jako blok SGSLP. Případně můžeme ponechat parametr broot prázdný a umístit znak ’.’ na začátek řetězce sc0. Bližší informace o cestách v systému REXYGEN jsou uvedeny u bloků GETPR a SETPR.

Blok SGSLP může při náběžné hraně (off on) na některém ze stejnojmenných vstupů provádět následující operace:

SET – nastavit parametry dané množiny ips na hodnoty přivedené na vstupy ui. V případě, že je parametr úspěšně nastaven, je na stejnou hodnotu nastaven i výstup yi.
GET – získat parametry dané množiny ips. V případě, že je parametr úspěšně získán, je jeho hodnota nastavena na výstup yi.
SAVE – uložit parametry dané množiny ips do souboru (tzv. stavový soubor) na cílovém zařízení. Parametry a formát souboru jsou popsány níže.
LOAD – načíst parametry dané množiny ips ze souboru na cílovém zařízení. Kromě načtení parametrů při náběžné hraně vstupu LOAD se parametry sady ips0 načtou při inicializaci bloku v případě, že je hodnota parametru ips0 v rozsahu od 0 do nps1. Parametry a formát souboru jsou popsány níže.

Operace LOAD a SAVE pracují se souborem na cílovém zařízení, jehož jméno je uvedeno v parametru fname. Práce s parametrem fname se řídí následujícími pravidly:

  • Pokud jméno souboru neobsahuje příponu, přidává se automaticky přípona .rxs (ReX Status file).
  • Při ukládání bude vytvářen záložní soubor se stejným jménem, avšak s příponou modifovanou přidáním znaku ’~’ ihned za znak ’.’, např. pokud jméno souboru neobsahuje příponu, je přípona záložního souboru .~rxs.
  • Cesta je relativní a je vztažena k adresáři s datovými soubory runtime jádra systému REXYGEN na cílovém zařízení. Data se typicky ukládají na pevný disk nebo flash disk nebo jiné médium, které po vypnutí a opětovném zapnutí zachovává soubory.

Data jsou příkazem SAVE ukládána do textového souboru, ze kterého jsou příkazem LOAD načítána zpět do bloku SGSLP. Pro každý parametr sci, i = 0,,m, kde m < 16 je maximální číslo, pro něž je parametr scm neprázdný řetězec, obsahuje soubor dva řádky ve tvaru:

  • "<blok>:<param>", …, "<blok>:<param>"
  • <hodnota>, …, <hodnota>

Jednotlivé položky "<blok>:<param>" jsou mezi sebou odděleny čárkami a jejich počet odpovídá parametru nps, obdobně to platí i o položkách <hodnota> obsahujících hodnotu parametru, jehož jméno je uvedeno ve stejné pozici v předchozím řádku. Poznamenejme, že pro nps > 1 má první z těchto dvou řádků vždy právě uvedený tvar (dvojice "<blok>:<param>" se opakuje nps-krát) a to i v případě, že parametr sci obsahuje jedinou dvojici <blok>:<param> (viz 1. syntaxe výše). Tato skutečnost umožňuje přecházet mezi oběma syntaxemi parametrů sci, aniž by musel být soubor upravován.

Při ukládání malého počtu hodnot můžete rovněž využít blok SILO.

Vstupy

ui

i-tý analogový vstupní signál, i = 0,,15

Double (F64)

ips

Číslo sady parametrů (číslováno od 0)

Long (I32)

SET

Přečtení vstupů ui a nastavení parametrů sady ips na jejich hodnoty

Bool

GET

Přečtení parametrů sady ips a nastavení výstupů yi na jejich hodnoty

Bool

SAVE

Uložení parametrů sady ips do souboru na disk cílového zařízení

Bool

LOAD

Načtení parametrů sady ips ze souboru na disku cílového zařízení

Bool

Výstupy

yi

i-tý analogový výstupní signál, i = 0,,15

Double (F64)

E

Příznak chyby

Bool

off ..

bez chyby

on ...

nastala chyba, viz výstup iE

iE

Chybový nebo varovný výstup poslední operace

Long (I32)

0 ....

nenastala žádná chyba ani varování

1 ....

fatální chyba volání systému Matlab (jen pro Simulink), blok dále není spouštěn

2 ....

chyba otvírání souboru pro čtení (příkaz LOAD)

3 ....

chyba otvírání souboru pro zápis (příkaz SAVE)

4 ....

nesprávný formát souboru

5 ....

dané číslo ips nebylo v souboru nalezeno

6 ....

jména parametru v souboru a v konfiguraci bloku si neodpovídají

7 ....

byl nalezen neočekávaný konec souboru

8 ....

chyba zápisu do souboru (plný disk?)

9 ....

chyba syntaxe parametru (chybí znak ’:’)

10 ...

připojení parametru je tvořeno jen bílými znaky

11 ...

nelze vytvořit záložní soubor

12 ...

hodnotu parametru nelze získat operací GET (neexistující parametr?)

13 ...

hodnotu parametru nelze nastavit operací SET (neexistující parametr?)

14 ...

překročení času při získávání/nastavování parametru (timeout)

15 ...

připojenou hodnotu (parametr) není dovoleno zapisovat

16 ...

číslo sady ips je mimo přípustný rozsah

Parametry

nps

Počet sad parametrů   1  16 1

Long (I32)

ips0

Číslo sady parametrů, která se načte ze souboru při inicializaci bloku. Je-li ips0 < 0 nebo ips0 nps, nečte se při inicializaci žádná sada   -1  15

Long (I32)

iprec

Počet platných číslic pro zápis hodnoty typu double do souboru   2  15 12

Long (I32)

icolw

Šířka sloupce v souboru. Je-li skutečná šířka menší, je doplněna zprava mezerami. Pokud je icolw < iprec, nebudou žádné mezery přidávány.   0  22

Long (I32)

fname

Jméno souboru, do kterého se ukládají parametry příkazem SAVE a ze kterého se načítají příkazem LOAD  status

String

broot

Cesta k subsystému, přidávaná na začátek specifikace bloků v parametrech sci, viz popis v textu výše  .

String

sci

Řetězce specifikující připojení vstupů ui a výstupů yi, i = 0,...,15 k požadovaným parametrům, viz popis v textu výše

String

2020 © REX Controls s.r.o., www.rexygen.com