### EPC – External program call

Function Description
The EPC block executes an external program upon a rising edge (off$\to$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.
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)  $\odot$epc_uVec1;epc_uVec2 string ofns Output filenames (separated by semicolon)  $\odot$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 $\odot$85 long ifm Maximum number of input samples  $\odot$10000 long format Format of input and output files  $\odot$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 $\odot$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