EPC – External program call

Block SymbolLicensing group: ADVANCED
PIC

Function Description
The EPC block executes an external program upon a rising edge (off on) occurring at the EXEC input. The name and options of the program are defined by the cmd parameter. The format is the same as if the program was executed from the command line of the operating system.

It is possible to pass data from the REXYGEN system to the external program via files. The formatting of the files is defined by the format parameter. All the currently supported formats are textual and simple, which allows straightforward processing of the data in arbitrary program. Use e.g.
values=load(’-ASCII’, ’epc_inputVec1’);
for loading the data in MATLAB or
values=read(’epc_inputVec1’,-1,32);
in SCILAB. The filename and number of columns must be adjusted for the given project. Data exchange in the opposite direction is naturally also supported, the REXYGEN system can read the files in the same format.

The block works in two modes. In basic mode, the rising edge on the EXEC input triggers reading the data on inputs and storing them in the ifns file. The values of the i-th input vector uVec<i> are stored in the i-th file from the ifns list. In sampling mode, the data from the input vectors are stored in each period of the control algorithm. In both cases the values from one time instant form one line in the file.

Analogically, the data from output files are copied to the outputs of the block (one line from the i-th file in the ofns list to the i-th output vector yVec<i>).

The inputs working in the sampling mode are defined by the sl list (comma-separated numbers). The outputs work always in the sampling mode – the last values are kept when the end of file is reached. The copying of data to input files can be blocked by the DSI input, the same holds for output data and the DSO input.

Use the RTOV block to combine individual signals into a vector one for the uVec input. The RTOV blocks can be chained, therefore it is possible to create a vector of arbitrary dimension. Similarly, use the VTOR block to demultiplex a vector signal to individual signals.

Inputs

uVec1..uVec8

Input vector signal

reference

EXEC

External program is called on rising edge

bool

RESET

Block reset (deletes the input and output files and terminates the external program)

bool

DSI

Disable inputs sampling

bool

DSO

Disable outputs sampling

bool

Outputs

yVec1..yVec8

Output vector signal

reference

DONE

External program finished

bool

BUSY

External program running

bool

ERR

Error flag

bool

errID

Error code

error

i ....

REXYGEN general error

res

External program return code

long

icnt

Current input sample

long

ocnt

Current output sample

long

Parameters

cmd

Operating system command to execute

string

ifns

Input filenames (separated by semicolon)  epc_uVec1;epc_uVec2

string

ofns

Output filenames (separated by semicolon)  epc_yVec1;epc_yVec2

string

sl

List of inputs working in the sampling mode. The format of the list is e.g. 1,3..5,8. Third-party programs (Simulink, OPC clients etc.) work with an integer number, which is a binary mask, i.e. 157 (binary 10011101) in the mentioned case.   0  255 85

long

ifm

Maximum number of input samples  10000

long

format

Format of input and output files  1

long

1 ....

Space-delimited values

2 ....

CSV (decimal point and commas)

3 ....

CSV (decimal comma and semicolons)

nmax

Maximum output vectors length   2  1000000 100

long

Notes

  • The called external program has the same priority as the calling task. This priority is high, in some cases higher than operating-system-kernel tasks. On Linux based systems, it is possible to lower the priority by using the chrt command:
    chrt -o 0 extprg.sh,
    where extprg.sh is the original external program.
  • The size of signals is limited by parameter nmax. Bigger parameter means bigger memory consumption, so choose this parameter as small as possible.
  • The filenames must respect the naming conventions of the target platform operating system. It is recommended to use only alphanumeric characters and an underscore to avoid problems. Also respect the capitalization, e.g. Linux is case-sensitive.
  • The block also creates copies of the ifns and ofns files for implementation reasons. The names of these files are extended by the underscore character.
  • The ifns and ofns paths are relative to the folder where the archives of the REXYGEN system are stored. It is recommended to define a symbolic link to a RAM-drive inside this folder for improved performance. On the other hand, for long series of data it is better to store the data on a permanent storage medium because the data can be appended e.g. after a power-failure recovery.
  • The OSCALL block can be used for execution of some operating system functions.

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