eeros_architecture:control_system:blocks
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
eeros_architecture:control_system:blocks [2015/03/30 14:24] – external edit 127.0.0.1 | eeros_architecture:control_system:blocks [2022/04/19 12:36] (current) – [Predefined Blocks] ursgraf | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Inputs and Outputs ===== | ===== Inputs and Outputs ===== | ||
- | Every output carries a signal. An input simply refers to a connected output. | + | Every output carries a [[eeros_architecture: |
- | {{ inoutputuml.png?500 | //Input und Output Type//}} | + | [{{ block.png?200 | //Two blocks connected together//}}] |
This makes sure that each input is connected to a single output. On the other hand, an output can carry its signal to many inputs. | This makes sure that each input is connected to a single output. On the other hand, an output can carry its signal to many inputs. | ||
=====Predefined Blocks===== | =====Predefined Blocks===== | ||
Build your control system by instantiating all the necessary blocks. For example: | Build your control system by instantiating all the necessary blocks. For example: | ||
- | < | + | < |
- | Step step(0.0, -3.14159265359, | + | Step<> |
- | step.getOut().setName(" | + | step.setName(" |
- | step.getOut().setUnit(" | + | |
- | Sum sum; | + | |
- | sum.getOut().setName(" | + | sum.setName(" |
- | sum.getOut().setUnit(" | + | sum.getIn(0).connect(step.getOut()); |
- | Gain posController(174.5); | + | |
- | posController.getOut().setName(" | + | posController.setName(" |
- | posController.getOut().setUnit(" | + | |
</ | </ | ||
Each block has inputs and/or outputs. Name the output in a meaningful way and assign a physical unit to each of the outputs. The signals which connect the different blocks will be created automatically. \\ | Each block has inputs and/or outputs. Name the output in a meaningful way and assign a physical unit to each of the outputs. The signals which connect the different blocks will be created automatically. \\ | ||
Line 27: | Line 25: | ||
Output signals are created together with the blocks. On the other side, there is no need to generate and name input signals. | Output signals are created together with the blocks. On the other side, there is no need to generate and name input signals. | ||
+ | For most blocks you have to specify the signal types on its inputs or outputs with template parameters, see [[tools: | ||
- | =====Signals===== | ||
- | The signals used to connect the blocks can be different types. Currently the following types are supported | ||
- | * Real signals | ||
- | * Logic signals | ||
- | All signals are vectors of dimension 1...n. Each signal can be assigned a name and a unit. All dimensions of a signal share the same name and unit.\\ | ||
- | |||
- | As an example we look at a block which does summation. Two signals, each of dimension 3, will be added together. | ||
- | <code c> | ||
- | Sum sum(3); | ||
- | sum.getOut().setName(" | ||
- | sum.getOut().setUnit(" | ||
- | </ | ||
- | This is shown in the following diagram: | ||
- | {{ sumblock.png? | ||
- | |||
- | The functions //getIn()// and // | ||
- | In order to access the individual dimensions of a certain signal, use functions like | ||
- | <code c> | ||
- | sum.getOut().getValue(); | ||
- | sum.getOut().getValue(0); | ||
- | sum.getOut().getValue(2); | ||
- | sum.getIn(1).getValue(2); | ||
- | </ | ||
=====Making Connections===== | =====Making Connections===== | ||
When all necessary blocks have been created the blocks must be wired together. | When all necessary blocks have been created the blocks must be wired together. | ||
- | < | + | < |
- | sum.getIn(0).connect(step.getOut()); | + | sum.getIn(0).connect(step.getOut()); |
- | sum.getIn(1).connect(enc.getOut()); | + | sum.getIn(1).connect(gain.getOut()); |
- | posController.getIn().connect(sum.getOut()); | + | posController.getIn().connect(sum.getOut()); |
</ | </ | ||
+ | // | ||
+ | |||
+ | ===== Initial State of Outputs ===== | ||
+ | All outputs of any block carry a value of NaN (not a number) after the block has been created. Only after the first execution of its run-method does the signal have a meaningful value. | ||
+ |
eeros_architecture/control_system/blocks.1427718298.txt.gz · Last modified: 2015/10/14 14:40 (external edit)