DAConverter Class
(Automation::DAConverter)The DAConverter can be used to convert the input digital signal values to corresponding analog value. More...
Header: | #include <DAConverter.h> |
Inherits: | CDPOperator<T> |
Public Functions
DAConverter(const CDPPropertyBase &in) |
Reimplemented Public Functions
- 18 public functions inherited from CDPOperator
- 17 public functions inherited from CDPOperatorBase
- 46 public functions inherited from CDPBaseObject
- 26 public functions inherited from CDP::StudioAPI::CDPNode
- 22 public functions inherited from CDP::StudioAPI::ICDPNode
Additional Inherited Members
- 1 public variable inherited from CDPOperatorBase
- 1 static public member inherited from CDPBaseObject
- 1 protected function inherited from CDP::StudioAPI::CDPNode
- 8 protected variables inherited from CDPOperator
- 5 protected variables inherited from CDPOperatorBase
- 11 protected variables inherited from CDPBaseObject
Detailed Description
The DAConverter can be used to convert the input digital signal values to corresponding analog value.
Arguments
Name | Description |
---|---|
In | The digital input value |
InputRange | Maximum value the digital input can have |
OutputRange | Maximum value the analog output should have when the digital input is at its maximum value |
Bipolar | Set to true when the output value should be converted to range between -OutputRange ... +OutputRange. Set to false when the output analog value should be converted to range between 0 ... +OutputRange. |
Out | The converted analog value |
OutOfRange | Is set to true when the input value is out of range |
When operator is used inside a signal its default input is automatically tied to signal's InternalValue or previous operator's output. Its default output is automatically tied to next operator's input or to signal's Value. See also CDP Operator Usage In CDP Signals.
Example
Below is an example plot of digital input signal (cyan), the same signal with DAConverter(InputRange=64, OutputRange=1, Bipolar=true) applied (orange) and the state of OutOfRange output argument (yellow).
Actual Processing Code of the DAConverter
unsigned int DAConverter<double>::Process() { if (!m_inputRange || !m_bipolar || !m_outputRange || !m_outOfRange) return STATUS_ERROR; unsigned int inRange = (unsigned int)*m_inputRange; double outRange = (double)*m_outputRange; if (inRange == 0 || outRange <= 0) { GetParent()->ReportConfigurationFault(this, "InputRange and OutputRange must be greater than zero"); m_faultReported = true; return STATUS_ERROR; } bool bipolar = (bool)*m_bipolar; double out = (((double)m_input) - (bipolar ? (inRange / 2) : 0 )) / inRange * outRange * (bipolar ? 2 : 1); double rangeMin = bipolar ? -outRange : 0; if (out > outRange) { *m_outOfRange = true; out = outRange; } else if (out < rangeMin) { *m_outOfRange = true; out = rangeMin; } else *m_outOfRange = false; m_output = out; if (m_faultReported) { GetParent()->ClearConfigurationFault(this); m_faultReported = false; } return STATUS_OK; }
See also Argument.
Member Function Documentation
DAConverter::DAConverter(const CDPPropertyBase &in)
Default constructs an instance of DAConverter.
[override virtual]
void DAConverter::Configure(XMLPrimitive *operatorXML)
[override virtual]
unsigned int DAConverter::Process()
Get started with CDP Studio today
Let us help you take your great ideas and turn them into the products your customer will love.