EPC – Blok pro spouštění externích programů

Symbol blokuPotřebná licence: ADVANCED
PIC

Popis funkce
Tento blok v okamžiku náběžné hrany (off on) na vstupu EXEC spustí externí program, jehož název a parametry jsou uvedeny v parametru cmd. Zápis příkazu je naprosto shodný, jako by se psal na příkazovou řádku operačního systému.

Externímu programu lze předat hodnoty ze systému REX pomocí souborů. Formát těchto souborů určuje parametr format. V současnosti podporované formáty jsou všechny textové a velice jednoduché, takže je možné je snadno načíst do téměř libovolného programu. Například do MATLABu se soubor načte příkazem
hodnoty=load(’-ASCII’, ’epc_uVec1’);
do SCILABu příkazem
hodnoty=read(’/tmp/epc_uVec1’,-1,32);
Název souboru, počet sloupců, jméno matice atd. je samozřejmě potřeba zvolit podle konkrétní aplikace. Hodnoty z externího programu zpět do systému REX se předávají analogickým způsobem (tj. opět pomocí souborů ve stejném formátu).

Blok rozlišuje dva režimy. V základním režimu je v okamžiku náběžné hrany na vstupu EXEC nejprve načtena aktuální hodnota na vstupech, uložena do souboru (vždy hodnoty z i-tého vstupního vektoru uVec<i> do i-tého souboru v parametru ifns). Ve vzorkovacím režimu jsou data ze vstupních vektorů ukládána do souborů v každé periodě algoritmu. V obou případech platí, že hodnoty vstupů z jednoho časového okamžiku jsou v jedné řádce souboru.

Analogicky jsou kopírována data z výstupních souborů na výstupy bloku (vždy jedna řádka z i-tého souboru v parametru ofns do i-tého výstupního vektoru yVec<i>).

Čísla vstupů, které pracují ve vzorkovacím režimu jsou uvedena v parametru sl (jednotlivá čísla se oddělují čárkou). Výstupy jsou vždy ve vzorkovacím režimu, přičemž pokud v souboru nejsou další data (řádky), je ponechána předchozí hodnota. Kopírování vstupů do souboru je možné zablokovat (pozastavit) vstupem DSI; kopírování dat ze souborů na výstupy bloku je možné zablokovat (pozastavit) vstupem DSO.

Vektorové vstupy a výstupy bloku umožňují jednoduše uložit do jednoho souboru více hodnot (v každém kroku). Pro převod více jednoduchých signálů na vektor slouží blok RTOV. Tyto bloky lze řetězit, takže je možné vytvořit vektor téměř libovolné velikosti. Obdobně pro převod vektoru na jednoduché signály slouží blok VTOR, přičemž jeho vícenásobným použitím je možné získat hodnoty z libovolně velkého vektoru.

Vstupy

uVec1..uVec8

Vstupní vektorové signály

reference

EXEC

Náběžná hrana spouští externí program

bool

RESET

Reset bloku (smaže vstupní i výstupní soubory a zastaví externí program)

bool

DSI

Pozastavení vzorkování na vstupech

bool

DSO

Pozastavení vzorkování na výstupech

bool

Výstupy

yVec1..yVec8

Výstupní vektorové signály

reference

DONE

Příznak skončení externího programu

bool

BUSY

Příznak běhu externího programu

bool

ERR

Příznak chyby

bool

errID

Kód chyby

error

i ....

obecná chyba systému REX

res

Návratový kód externího programu

long

icnt

Aktuální číslo vzorku na vstupech

long

ocnt

Aktuální číslo vzorku na výstupech

long

Parametry

cmd

Externí program

string

ifns

Vstupní soubory (oddělené středníkem)  epc_uVec1;epc_uVec2

string

ofns

Výstupní soubory (oddělené středníkem)  epc_yVec1;epc_yVec2

string

sl

Seznam čísel vzorkovacích vstupů. Zadává se ve tvaru např. 1,3..5,8. Programy třetích stran (Simulink, OPC klienti atd.) pracují s celým číslem, které je bitovou maskou – pro uvedený příklad tedy 157, binárně 10011101.   0  255 85

long

ifm

Maximální počet vzorků ve vstupním souboru  10000

long

format

Formát vstupních a výstupních souborů  1

long

1 ....

textový (pouze hodnoty oddělené mezerou)

2 ....

CSV (desetinná tečka a čárky)

3 ....

CSV (desetinná čárka a středníky)

nmax

Maximální délka výstupních vektorů  10000

long

Poznámky