User Tools

Site Tools


eeros_architecture:hal:scaling_multi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
eeros_architecture:hal:scaling_multi [2017/06/29 16:02]
graf created
eeros_architecture:hal:scaling_multi [2021/05/20 07:37] (current)
ursgraf [Output to Control a Motor]
Line 1: Line 1:
-====== Setting Multiple Scales ans Ranges ====== +====== Setting Multiple Scales and Ranges ====== 
-Within eeros we work with signals having physically meaningful units. However, when such signals are read from real-world hardware we use analog-to-digital converters or encoder which are basically counters. When outputting such signals we use digital-to-analog converters. These counters or converters all deliver or need an integer value. Its maximum and minimum value depend on the resolution of the underlying hardware. The ''scale'' and ''range'' key allows to convert between the necessary integer value and the physically meaningsful signals.+The existing hardware is often comprised of several stages. The HAL can account for this in the following way
  
 +
 +===== Output to Control a Motor =====
 +The control of EEROS sets the torque for a motor. This signal passes a digital to analog converter and an amplifier. The amplifier delivers a current which is trabsformed by the motor constant into a torque. 
 +[{{ :eeros_architecture:hal:hal_outputscalinghardware.png?700 |//Example of output with multiple stages// }}]
 +
 +The HAL mirrors the multiple stages. Each stage can be described individually as given in the following example.
 +
 +<code>
 +  "channel0": {
 +    "signalId": "dacOut",
 +    "scale": [ { "id" : "dac",
 +                 "minIn":    1000, "maxIn":  64000,
 +                 "minOut": -9.787, "maxOut": 9.923 },
 +               { "id" : "amp",
 +                 "minIn":   -10.0, "maxIn":  10.0,
 +                 "minOut":  -7.0, "maxOut": 7.0 },
 +               { "id" : "kM",
 +                 "minIn":   -5.0, "maxIn":  5.0,
 +                 "minOut":  -1.0, "maxOut": 1.0 } ],
 +    "range": [ { "id" : "dac",
 +                 "minIn":       0, "maxIn":  65536,
 +                 "minOut":  -10.0, "maxOut":  10.0 },
 +                 { "id" : "amp",
 +                 "minIn":   -10.0, "maxIn":  10.0,
 +                 "minOut":  -7.0, "maxOut": 7.0 },
 +                 { "id" : "kM",
 +                 "minIn":   -5.0, "maxIn":  5.0,
 +                 "minOut":  -1.0, "maxOut": 1.0 } ],
 +    "unit": "Nm"
 +  }
 +</code>
 +The HAL will calculate the scale and range of the whole chain considering the single stages. The range of the whole chain will be determined by the most restricting range of the single stages. The unit is determined by the unit of the last stage.
 +
 +==== Inverting the Signal ====
 +If the output signal needs opposite sign, e.g. a motor turns in the wrong direction, you can simply add an inverting stage
 +<code>
 +  "channel0": {
 +    "signalId": "dacOut",
 +    "scale": [ { "id" : "dac",
 +                 "minIn":    1000, "maxIn":  64000,
 +                 "minOut": -9.787, "maxOut": 9.923 },
 +               { "id" : "inv",
 +                 "minIn":   -1.0, "maxIn":  1.0,
 +                 "minOut":  1.0, "maxOut": -1.0 } ],
 +    "range": [ { "id" : "dac",
 +                 "minIn":       0, "maxIn":  65536,
 +                 "minOut":  -10.0, "maxOut":  10.0 },
 +                 { "id" : "amp",
 +                 "minIn":   -10.0, "maxIn":  10.0,
 +                 "minOut":  10.0, "maxOut": -10.0 } ],
 +    "unit": "V"
 +  }
 +</code>
 +
 +===== Input for Axis Position =====
 +The angular position of an axis is controlled by a motor equipped with a gear and an encoder, see 
 +[{{ :eeros_architecture:hal:hal_inputscalinghardware.png?700 |//Example of input with multiple stages// }}]
 +
 +Here again, the HAL mirrors the three stages. Each stage can be described individually as given in the following example.
 +
 +<code>
 +  "channel1": {
 +    "signalId": "enc1",
 +    "scale": [ { "id" : "gear",
 +                 "minIn":  0, "maxIn":  1,
 +                 "minOut": 0, "maxOut": 76 },
 +               { "id" : "enc",
 +                 "minIn":  0, "maxIn":  2π,
 +                 "minOut": 0, "maxOut": 4096 },
 +               { "id" : "fqd",
 +                 "minIn":  0, "maxIn":  1,
 +                 "minOut": 0, "maxOut": 4 } ],
 +    "range": [ { "id" : "gear",
 +                 "noLimit": true },
 +               { "id" : "enc",
 +                 "noLimit": true },
 +               { "id" : "fqd",
 +                 "noLimit": true } ],
 +    "unit": "rad"
 +  }
 +</code>
 +The HAL will calculate the scale and range of the whole chain considering the single stages. The range of the whole chain has no limit.
 +
 +===== Two Inputs or Outputs with Different Scales =====
 +There are cases where you want to read from a hardware input while this input might represent different things. A motor with its current and torque could serve as an example. 
 +[{{ :eeros_architecture:hal:hal_dualinput.png?400 | //Reading from input with different scaling//}}]
 +  * Scale1 : scaling for the adc converter
 +  * Scale2 : scaling for motor current. This input allows for current control of the motor.
 +  * Scale3 : scaling for motor torque. This input allows for observation of the motor torque.
 +
 +For outputs we have a similar situation. A motor might be controlled by setting its current during homing of the drive. During normal operation the motor will be controlled by setting its torque. 
 +[{{ :eeros_architecture:hal:hal_dualoutput.png?400 | //Writing from to output with different scaling//}}]
 +The scaling in the HAL includes the common part of the two outputs while each control signal have their individual scaling as well.
eeros_architecture/hal/scaling_multi.1498744943.txt.gz · Last modified: 2017/06/29 16:02 (external edit)