1.1 How to use this manual

The extensive function block library RexLib, which is a standard part of the REXYGEN system, is divided into smaller sets of logically related blocks, the so-called categories (sub-libraries). A separate chapter is devoted to each category, introducing the general properties of the whole category and its blocks, followed by a detailed description of individual function blocks.

The content of individual chapters of this manual is as follows:

  1. Introduction
    This introductory chapter familiarizes readers with the content and ordering of the manual. A convention used for individual function block descriptions is presented.
  2. EXEC – Real-time executive configuration
    The EXEC library is essential for setting up the real-time executive in the REXYGEN system and includes key blocks like EXEC, TASK, QTASK, and HMI. These blocks are fundamental for managing task execution, determining process priorities, and interacting with user interfaces, significantly contributing to the efficiency and controllability of applications within the REXYGEN ecosystem.
  3. INOUT – Input and output blocks
    The INOUT library serves as a crucial interface in the REXYGEN system, enabling smooth interaction with input/output drivers. It is designed for efficient simultaneous signal processing, essential for fast control tasks. This library simplifies the connection between control algorithms and hardware, ensuring minimal latency. Additionally, it provides advanced features, such as virtual linking (flags) of signals for increased clarity of diagrams and flexibility of subsystems.
  4. MATH – Math blocks
    The MATH library offers a comprehensive collection of mathematical operations and functions. It includes basic arithmetic blocks like ADD, SUB, MUL, and DIV for standard calculations, and more specialized blocks such as ABS for absolute values, SQRT for square roots, and SQR for squaring. Advanced functionalities are provided by blocks like LIN for linear transformations, POL for polynomial evaluations, and FNX, FNXY for customizable mathematical functions. The library also features integer-specific operations through blocks like IADD, IMUL, IDIV, and IMOD.
  5. ANALOG – Analog signal processing
    Library presents a versatile range of functional blocks, designed for control and signal processing applications. It includes blocks like ASW, AVG, BPF, and DEL, which provide functionalities from signal manipulation and averaging to filtering and complex conditional operations, catering to a broad spectrum of system requirements and scenarios.
  6. GEN – Signal generators
    The GEN library is specialized in signal generation. It includes blocks like ANLS for generating a piecewise linear function of time or binary sequence generators BINS, BIS, BISR. The library also features MP for manual pulse signal generation, PRBS for pseudo-random binary sequence generation, and SG for periodic signals generation. This library provides essential tools for creating and manipulating various signal types.
  7. REG – Function blocks for control
    The control function blocks form the most extensive sub-library of the RexLib library. Blocks ranging from simple dynamic compensators to several modifications of PID (P, I, PI, PD a PID) controller and some advanced controllers are included. The blocks for control schemes switching and conversion of output signals for various types of actuators can be found in this sub-library. The involved controllers include the PIDGS block, enabling online switching of parameter sets (the so-called gain scheduling), the PIDMA block with built-in moment autotuner, the PIDAT block with built in relay autotuner, the FLCU fuzzy controller or the PSMPC predictive controller, etc.
  8. LOGIC – Logic control
    The LOGIC library encompasses a range of blocks for executing logical and sequential operations. It includes basic Boolean blocks like AND, OR, NOT for fundamental logical operations, and advanced blocks like ATMT for finite state machines. Blocks like COUNT and TIMER extend functionality to bidirectional pulse counting and time-based operations. Additional elements like BITOP, BMOCT, and BDOCT offer bitwise operations and multiplexing/demultiplexing capabilities, enhancing the library’s versatility in handling combinational and sequential logic control.
  9. TIME – Blocks for handling time
    The TIME library is specialized for time-based operations and scheduling in REXYGEN system. It includes blocks like DATE, TIME and DATETIME for handling date and datetime, providing essential tools for working with temporal data. The library features TC for itnernal timer control. Additionally, WSCH is used for scheduling, enabling efficient management of time-dependent tasks. This library is particularly valuable for systems requiring precise time management and scheduling capabilities.
  10. ARC – Data archiving
    The library is integral to the archiving subsystem of the REXYGEN system, focusing on recording the history of the control algorithm. It encompasses blocks for generating alarms and events, recording trends, and handling archives. This library is essential for maintaining a comprehensive history of events, alarms, and trends, with support for various types of archives like RAM, backed-up memory, and disk archives, ensuring versatility in data storage and access.
  11. STRING – Blocks for string operations
    The STRING library is dedicated to string manipulation and analysis in REXYGEN system. It includes blocks like CONCAT for concatenating strings, FIND for searching within strings, and REPLACE for replacing string segments. The library offers LEN and MID for determining string length and extracting substrings, respectively. Advanced pattern matching is provided by REGEXP. Conversion blocks such as ITOS, STOR and RTOS convert integers and real numbers to strings, while a simple CNS block defines a string constant. Additionally, the library features blocks like PJROCT for JSON parsing. This collection of blocks is essential for handling and processing string data in various applications.
  12. PARAM – Blocks for parameter handling
    The PARAM library is designed for parameter management and signal processing in the REXYGEN system. It includes blocks like PARR and its variants for defining and modifying various types of parameters. Search blocks like GETPA and GETPS enable the extraction of these parameters for further processing. Conversely, SETPA, SETPR, and SETPS are used for dynamically setting parameter values. Additionally, the library contains SILO and SILOS for exporting and importing values from a file. This library is crucial for systems requiring dynamic parameter manipulation and the ability to read/save values to a file.
  13. MODEL – Dynamic systems simulation
    The MODEL library is centered around system modeling and simulation. It includes blocks like CSSM and DSSM for continuous and discrete state-space models, and DFIR for digital finite impulse response filters. The library offers EKF for Extended Kalman Filter implementations, and FOPDT, SOPDT for first and second order process time delay models. Additionally, it provides FMUCS and FMUINFO for interfacing with Functional Mock-up Units, and MDL, MDLI for generic model interfaces. Advanced functionalities are covered by blocks like CDELSSM, DDELSSM for continuous and discrete state space models of a linear system with time delay, and MVD for model variable delays, catering to a wide range of modeling requirements in REXYGEN system.
  14. MATRIX – Blocks for matrix and vector operations
    The MATRIX library is designed for advanced matrix computations and manipulations. It encompasses a wide range of blocks such as MB_DGEMM, MB_DTRMM, and MB_DGER for matrix-matrix and matrix-vector operations. The library includes functions for matrix decomposition (ML_DGEBRD, ML_DGEQRF), eigenvalue problems (ML_DGEEV, ML_DGEES), and singular value decomposition (ML_DGESDD). Additionally, it offers utility blocks like MX_MAT, MX_VEC, and MX_FILL for matrix creation and manipulation, as well as specialized blocks such as MX_DTRNSP for matrix transposition and MX_RAND for generating random matrices. This library is essential for complex mathematical operations involving matrices in various applications.
  15. OPTIM – Optimization blocks
    The OPTIM library is tailored for optimization algorithms and processes. It includes QCEDPOPT for Quadratic Cost Economic Dispatch Problem optimization, providing advanced tools for handling complex optimization problems. The library also features blocks like QP_MPC2QP and QP_OASES for Quadratic Programming, essential in Model Predictive Control (MPC) scenarios. Additionally, QP_UPDATE is available for updating quadratic program parameters. This library is particularly useful in systems requiring high-level optimization solutions, such as in advanced control and decision-making algorithms.
  16. SPEC – Special blocks
    The SPEC library encompasses a diverse set of functional blocks designed to integrate a wide range of functionalities into automation, control systems, and communication protocols. From facilitating precise thermodynamic calculations with the STEAM block to enabling seamless data communication through UART and SMTP, the library serves as a comprehensive toolkit for engineers and developers. It includes specialized blocks for executing external programs (EPC), handling web-based requests (HTTP2). Additionally, it offers unique input-output solutions (RDC) and a versatile programming environment with REXLANG.
  17. LANG – Special blocks
  18. DSP – Digital Signal Processing blocks
    The DSP library is tailored for advanced digital signal processing. It includes blocks like FFT for Fast Fourier Transform operations and PSD for Power Spectral Density analysis. The library also features BSFIFO, BSGET, BSGETV, BSSET, and BSSETV for buffer storage and retrieval, enabling efficient data handling in signal processing tasks. Additionally, MOSS provides multi-objective signal selection capabilities. This collection of blocks is essential for sophisticated signal analysis and manipulation in digital systems.
  19. MQTTDrv – Communication via MQTT protocol
    The MQTTDrv library is designed for IoT (Internet of Things) communication using the MQTT (Message Queuing Telemetry Transport) protocol. It consists of two primary blocks: MqttPublish and MqttSubscribe. The MqttPublish block is used for sending messages to an MQTT broker, enabling the publication of data to MQTT topics. Conversely, the MqttSubscribe block is designed for subscribing to topics and receiving messages from a broker. This library facilitates efficient and effective data communication in IoT applications, leveraging the lightweight and widely-used MQTT protocol for message exchange.
  20. MC_SINGLE – Motion control - single axis blocks
    The MC_SINGLE library is designed for motion control in single-axis systems. It features blocks like MC_MoveAbsolute, MC_MoveRelative, and MC_MoveVelocity for precise positioning and speed control. The library includes MC_Home for homing operations, and MC_Power for controlling the power state of the axis. Advanced functionalities are provided by MC_AccelerationProfile, MC_PositionProfile, and MC_VelocityProfile for customizing motion profiles. It also offers monitoring and parameter adjustment capabilities through MC_ReadActualPosition, MC_ReadAxisError, MC_ReadParameter, and MC_WriteParameter. Additionally, the library contains blocks like MC_Halt, MC_Reset, and MC_Stop for emergency and control operations. This library is essential for applications requiring precise and controlled motion in single-axis configurations.
  21. MC_MULTI – Motion control - multi axis blocks
    The MC_MULTI library is specialized for multi-axis motion control. It includes blocks like MC_CombineAxes for synchronizing multiple axes, MC_GearIn and MC_GearOut for gearing operations, and MC_PhasingAbsolute, MC_PhasingRelative for precise axis phasing. The library offers MC_CamIn and MC_CamOut for camming functionalities, allowing complex motion profiles to be followed. Additionally, MCP_CamTableSelect provides flexibility in selecting cam tables, and MC_GearInPos enables position-based gearing. This library is essential for advanced applications requiring coordinated motion control across multiple axes.
  22. MC_COORD – Motion control - coordinated movement blocks
    The MC_COORD library is specifically designed for the coordination of multi-axis motion control within complex systems. It encompasses a variety of blocks, including MC_MoveLinearAbsolute for executing precise linear movements, complemented by MC_MoveLinearRelative for relative linear motion. For the execution of circular motion, the library incorporates MC_MoveCircularAbsolute alongside MC_MoveCircularRelative, ensuring detailed circular trajectories. In the context of managing group axis control, this library introduces MC_AddAxisToGroup, which is further supported by functionalities such as MC_GroupEnable for activation, MC_GroupDisable for deactivation, and MC_GroupHalt for immediate stopping of grouped axes. Furthermore, the library provides MC_MoveDirectAbsolute and MC_MoveDirectRelative, enabling direct control over axis movements. For navigating through complex paths, MC_MovePath is made available. Essential monitoring and control features are facilitated by MC_GroupReadActualPosition for positional data, MC_GroupReadActualVelocity for velocity insights, MC_GroupReadError for error detection, and MC_GroupReadStatus for status updates. Additionally, the library integrates MC_ReadCartesianTransform and MC_SetCartesianTransform, which are vital for Cartesian transformation processes. This collection of functionalities underscores the library’s significance in applications that demand the synchronized control of multiple axes, particularly in the realms of robotics and automation systems.
  23. CanDrv – Communication via CAN bus
    The CanDrv library is dedicated to handling CAN (Controller Area Network) bus communication in REXYGEN system. It features CanItem for managing CAN data items, CanRecv for receiving messages from the bus, and CanSend for sending messages. This library provides essential tools for efficient and reliable communication over CAN networks, facilitating data exchange and control commands between various system components.
  24. OpcUaDrv – Communication using OPC UA
    The OpcUaDrv library is specialized in interfacing with OPC UA (Open Platform Communications Unified Architecture) servers for industrial automation. It comprises three key blocks: OpcUaReadValue, OpcUaServerValue, and OpcUaWriteValue. The OpcUaReadValue block is designed for reading data from servers, making it pivotal for data acquisition in automated systems. The OpcUaWriteValue block enables writing data to servers, allowing for control and command execution. Additionally, the OpcUaServerValue block facilitates the monitoring and management of server values. This library serves as a critical tool for seamless communication and interaction with OPC UA servers, enhancing the capabilities of automation systems.

The individual chapters of this reference guide are not much interconnected, which means they can be read in almost any order or even only the necessary information for specific block can be read for understanding the function of that block. The electronic version of this manual (in the .pdf format) is well-suited for such case as it is equipped with hypertext bookmarks and contents, which makes the look-up of individual blocks very easy.

Despite of that it is recommended to read the following subchapter, which describes the conventions used for description of individual blocks in the rest of this manual.

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