REDAC Blocks and Configurations
This page describes all available hardware entities and their possible configurations.
The firmware on the hybrid controller accepts various JSON message structures
as part of the pybrid.redac.protocol.messages.SetConfigRequest
message, which are documented below.
Alternatively, you can find the full JSON schema in the firmware documentation.
Base Elements and Computations
All function blocks in the REDAC are made up of elements, with each implementing one computation from the following list. The list of elements contained on a function block together with the attributes of the computation define which configuration parameters need to be sent to configure a function block (see below).
Please remember that in the REDAC, all summation is done implicitly by the pybrid.redac.blocks.IBlock
.
- class pybrid.redac.computations.Integration(*, ic: float = 0.0, k: int = 10000)
An integration computing \(k \cdot \int_0^t x(t) \mathrm{d}t + ic\) for input \(x(t)\).
- ic: float = 0.0
Initial value. Must be in range [-1.0, 1.0].
- k: int = 10000
Time constant in \(\frac{1}{\mathrm{s}}\). Must be one of {100, 10000}.
- class pybrid.redac.computations.Multiplication
A multiplication computing \(x(t) \cdot y(t)\) for inputs \(x(t)\) and \(y(t)\).
Function Blocks
The following function blocks are available.
The configuration can be set with a pybrid.redac.protocol.messages.SetConfigRequest
message
with pybrid.redac.protocol.messages.SetConfigRequest.config
confirming to the JSON schema
as documented in the firmware documentation.
- class pybrid.redac.blocks.UBlock
A voltage fork block (U-Block) in a REDAC. It can distribute each of the 16 input signals to one of the 32 output signals.
- outputs: list[int | None]
List of inputs forked to each of the outputs. Each element in the list corresponds to one output. The outputs are set to the input index specified by the respective array element. Use None (null in JSON) to disable an output. The firmware may accept additional JSON structures (see JSON schema).
The configuration can be set with a pybrid.redac.protocol.messages.SetConfigRequest
message
with pybrid.redac.protocol.messages.SetConfigRequest.config
confirming to the JSON schema
as documented in the firmware documentation.
- class pybrid.redac.blocks.CBlock
A coefficient block (C-Block) in a REDAC. It can multiply each of the 32 input signal with an individual fixed scalar factor.
- elements: list[pybrid.base.hybrid.elements.ScalarMultiplicationElement] = None
List of elements on the block. In case of the CBlock, these are 32 scalar multiplication computation elements (so-called coefficients). Each coefficient accepts configuration parameters according to
pybrid.redac.computations.ScalarMultiplication
.
The configuration can be set with a pybrid.redac.protocol.messages.SetConfigRequest
message
with pybrid.redac.protocol.messages.SetConfigRequest.config
confirming to the JSON schema
as documented in the firmware documentation.
- class pybrid.redac.blocks.IBlock
A current summation block (I-Block) in a REDAC. It can connect and sum up a subset of the 32 inputs to each of the 16 outputs.
- outputs: list[set[int]]
List of inputs connected to each output. Each sub-list in the list corresponds to one output. The outputs are set to the sum of the inputs specified by the sub-list in the respective array element. Use an empty sub-list to disable an output. The firmware may accept additional JSON structures (see JSON schema).
- upscaling: list[bool]
List of up-scaling switches Each boolean value defines whether the corresponding signal is up-scaled by a factor of 10.
The configuration can be set with a pybrid.redac.protocol.messages.SetConfigRequest
message
with pybrid.redac.protocol.messages.SetConfigRequest.config
confirming to the JSON schema
as documented in the firmware documentation.